Merge mozilla-central to mozilla-inbound. a=merge CLOSED TREE
authorBogdan Tara <btara@mozilla.com>
Sun, 04 Mar 2018 23:58:45 +0200
changeset 461529 c842abb7cfbf39e0c1cfb9a1f3a1d6415cd10744
parent 461528 09894bd08b93467a61adab7e37c5920f775443f1 (current diff)
parent 461516 190b536928f8a8ca96e52101d2013c88a1a66384 (diff)
child 461530 1b5cffe82ff05e7cfbdfb839b11f017bd5db9a2f
push id1683
push usersfraser@mozilla.com
push dateThu, 26 Apr 2018 16:43:40 +0000
treeherdermozilla-release@5af6cb21869d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone60.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-central to mozilla-inbound. a=merge CLOSED TREE
--- a/browser/modules/ThemeVariableMap.jsm
+++ b/browser/modules/ThemeVariableMap.jsm
@@ -5,16 +5,17 @@
 var EXPORTED_SYMBOLS = ["ThemeVariableMap"];
 
 const ThemeVariableMap = [
   ["--lwt-accent-color-inactive", "accentcolorInactive"],
   ["--lwt-background-alignment", "backgroundsAlignment"],
   ["--lwt-background-tiling", "backgroundsTiling"],
   ["--tab-loading-fill", "tab_loading", "tabbrowser-tabs"],
   ["--lwt-tab-text", "tab_text"],
+  ["--tab-line-color", "tab_line", "tabbrowser-tabs"],
   ["--toolbar-bgcolor", "toolbarColor"],
   ["--toolbar-color", "toolbar_text"],
   ["--url-and-searchbar-background-color", "toolbar_field"],
   ["--url-and-searchbar-color", "toolbar_field_text"],
   ["--lwt-toolbar-field-border-color", "toolbar_field_border"],
   ["--urlbar-separator-color", "toolbar_field_separator"],
   ["--tabs-border-color", "toolbar_top_separator", "navigator-toolbox"],
   ["--lwt-toolbar-vertical-separator", "toolbar_vertical_separator"],
--- a/browser/themes/shared/customizableui/panelUI.inc.css
+++ b/browser/themes/shared/customizableui/panelUI.inc.css
@@ -1174,16 +1174,21 @@ toolbarpaletteitem[place="palette"] > #s
 }
 
 /* In customize mode, extend the buttons *only* in the panel, just to make them not look stupid */
 toolbarpaletteitem[place="menu-panel"] > .toolbaritem-combined-buttons > toolbarbutton {
   min-width: calc(@menuPanelButtonWidth@ - 1px);
   max-width: calc(@menuPanelButtonWidth@ - 1px);
 }
 
+.toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton[disabled] {
+  /* Override toolbarbutton.css which sets the color to GrayText */
+  color: inherit;
+}
+
 #main-window:not([customizing]) .toolbaritem-combined-buttons@inAnyPanel@ > toolbarbutton[disabled] > .toolbarbutton-icon {
   opacity: .25;
 }
 
 #zoom-controls[cui-areatype="toolbar"] > #zoom-reset-button > .toolbarbutton-text {
 %ifdef XP_MACOSX
   min-width: 6ch;
 %else
--- a/devtools/shared/css/generated/properties-db.js
+++ b/devtools/shared/css/generated/properties-db.js
@@ -2958,16 +2958,17 @@ exports.CSS_PROPERTIES = {
       "float",
       "-moz-float-edge",
       "flood-color",
       "flood-opacity",
       "font-family",
       "font-feature-settings",
       "font-kerning",
       "font-language-override",
+      "font-optical-sizing",
       "font-size",
       "font-size-adjust",
       "-moz-font-smoothing-background-color",
       "font-stretch",
       "font-style",
       "font-synthesis",
       "font-variant-alternates",
       "font-variant-caps",
@@ -5712,16 +5713,17 @@ exports.CSS_PROPERTIES = {
       "font-size",
       "line-height",
       "font-size-adjust",
       "font-stretch",
       "-x-system-font",
       "font-feature-settings",
       "font-language-override",
       "font-kerning",
+      "font-optical-sizing",
       "font-variant-alternates",
       "font-variant-caps",
       "font-variant-east-asian",
       "font-variant-ligatures",
       "font-variant-numeric",
       "font-variant-position"
     ],
     "supports": [
@@ -9466,16 +9468,20 @@ exports.PREFERENCES = [
     "column-span",
     "layout.css.column-span.enabled"
   ],
   [
     "contain",
     "layout.css.contain.enabled"
   ],
   [
+    "font-optical-sizing",
+    "layout.css.font-variations.enabled"
+  ],
+  [
     "font-variation-settings",
     "layout.css.font-variations.enabled"
   ],
   [
     "initial-letter",
     "layout.css.initial-letter.enabled"
   ],
   [
--- a/dom/media/PeerConnection.js
+++ b/dom/media/PeerConnection.js
@@ -438,17 +438,16 @@ class RTCPeerConnection {
     }
 
     this.makeGetterSetterEH("ontrack");
     this.makeLegacyGetterSetterEH("onaddstream", "Use peerConnection.ontrack instead.");
     this.makeLegacyGetterSetterEH("onaddtrack", "Use peerConnection.ontrack instead.");
     this.makeGetterSetterEH("onicecandidate");
     this.makeGetterSetterEH("onnegotiationneeded");
     this.makeGetterSetterEH("onsignalingstatechange");
-    this.makeGetterSetterEH("onremovestream");
     this.makeGetterSetterEH("ondatachannel");
     this.makeGetterSetterEH("oniceconnectionstatechange");
     this.makeGetterSetterEH("onicegatheringstatechange");
     this.makeGetterSetterEH("onidentityresult");
     this.makeGetterSetterEH("onpeeridentity");
     this.makeGetterSetterEH("onidpassertionerror");
     this.makeGetterSetterEH("onidpvalidationerror");
 
@@ -1829,21 +1828,16 @@ class PeerConnectionObserver {
                               pc._onGetStatsIsLegacy);
     pc._onGetStatsSuccess(webidlobj);
   }
 
   onGetStatsError(code, message) {
     this._dompc._onGetStatsFailure(this.newError(message, code));
   }
 
-  onRemoveStream(stream) {
-    this.dispatchEvent(new this._dompc._win.MediaStreamEvent("removestream",
-                                                             { stream }));
-  }
-
   _getTransceiverWithRecvTrack(webrtcTrackId) {
     return this._dompc.getTransceivers().find(
         transceiver => transceiver.remoteTrackIdIs(webrtcTrackId));
   }
 
   onTransceiverNeeded(kind, transceiverImpl) {
     this._dompc._onTransceiverNeeded(kind, transceiverImpl);
   }
--- a/dom/webidl/PeerConnectionObserver.webidl
+++ b/dom/webidl/PeerConnectionObserver.webidl
@@ -29,19 +29,16 @@ interface PeerConnectionObserver
   void onGetStatsError(unsigned long name, DOMString message);
 
   /* Data channel callbacks */
   void notifyDataChannel(RTCDataChannel channel);
 
   /* Notification of one of several types of state changed */
   void onStateChange(PCObserverStateType state);
 
-  /* Changes to MediaStreamTracks */
-  void onRemoveStream(MediaStream stream);
-
   /* Transceiver management; called when setRemoteDescription causes a
      transceiver to be created on the C++ side */
   void onTransceiverNeeded(DOMString kind, TransceiverImpl transceiverImpl);
 
   /* DTMF callback */
   void onDTMFToneChange(MediaStreamTrack track, DOMString tone);
 
   /* Packet dump callback */
--- a/gfx/src/nsFont.cpp
+++ b/gfx/src/nsFont.cpp
@@ -51,16 +51,17 @@ nsFont::CalcDifference(const nsFont& aOt
   if ((style != aOther.style) ||
       (systemFont != aOther.systemFont) ||
       (weight != aOther.weight) ||
       (stretch != aOther.stretch) ||
       (size != aOther.size) ||
       (sizeAdjust != aOther.sizeAdjust) ||
       (fontlist != aOther.fontlist) ||
       (kerning != aOther.kerning) ||
+      (opticalSizing != aOther.opticalSizing) ||
       (synthesis != aOther.synthesis) ||
       (fontFeatureSettings != aOther.fontFeatureSettings) ||
       (fontVariationSettings != aOther.fontVariationSettings) ||
       (languageOverride != aOther.languageOverride) ||
       (variantAlternates != aOther.variantAlternates) ||
       (variantCaps != aOther.variantCaps) ||
       (variantEastAsian != aOther.variantEastAsian) ||
       (variantLigatures != aOther.variantLigatures) ||
@@ -287,13 +288,32 @@ void nsFont::AddFontFeaturesToStyle(gfxF
   }
 
   aStyle->fontSmoothingBackgroundColor = fontSmoothingBackgroundColor;
 }
 
 void nsFont::AddFontVariationsToStyle(gfxFontStyle *aStyle) const
 {
   // TODO: add variation settings from specific CSS properties
-  // such as weight, width, optical-size
+  // such as weight, width, stretch
+
+  // If auto optical sizing is enabled, and if there's no 'opsz' axis in
+  // fontVariationSettings, then set the automatic value on the style.
+  class VariationTagComparator {
+  public:
+    bool Equals(const gfxFontVariation& aVariation, uint32_t aTag) const {
+      return aVariation.mTag == aTag;
+    }
+  };
+  const uint32_t kTagOpsz = TRUETYPE_TAG('o','p','s','z');
+  if (opticalSizing == NS_FONT_OPTICAL_SIZING_AUTO &&
+    !fontVariationSettings.Contains(kTagOpsz, VariationTagComparator())) {
+    gfxFontVariation opsz = {
+      kTagOpsz,
+      // size is in app units, but we want a floating-point px size
+      float(size) / float(AppUnitsPerCSSPixel())
+    };
+    aStyle->variationSettings.AppendElement(opsz);
+  }
 
   // Add in arbitrary values from font-variation-settings
   aStyle->variationSettings.AppendElements(fontVariationSettings);
 }
--- a/gfx/src/nsFont.h
+++ b/gfx/src/nsFont.h
@@ -83,16 +83,20 @@ struct nsFont {
 
   // The stretch of the font (the sum of various NS_FONT_STRETCH_*
   // constants; see gfxFontConstants.h).
   int16_t stretch = NS_FONT_STRETCH_NORMAL;
 
   // Kerning
   uint8_t kerning = NS_FONT_KERNING_AUTO;
 
+  // Whether automatic optical sizing should be applied to variation fonts
+  // that include an 'opsz' axis
+  uint8_t opticalSizing = NS_FONT_OPTICAL_SIZING_AUTO;
+
   // Synthesis setting, controls use of fake bolding/italics
   uint8_t synthesis = NS_FONT_SYNTHESIS_WEIGHT | NS_FONT_SYNTHESIS_STYLE;
 
   // The logical size of the font, in nscoord units
   nscoord size = 0;
 
   // The aspect-value (ie., the ratio actualsize:actualxheight) that any
   // actual physical font created from this font structure must have when
--- a/gfx/thebes/gfxFontConstants.h
+++ b/gfx/thebes/gfxFontConstants.h
@@ -42,16 +42,19 @@
 #define NS_FONT_SYNTHESIS_STYLE                     0x2
 
 #define NS_FONT_DISPLAY_AUTO            0
 #define NS_FONT_DISPLAY_BLOCK           1
 #define NS_FONT_DISPLAY_SWAP            2
 #define NS_FONT_DISPLAY_FALLBACK        3
 #define NS_FONT_DISPLAY_OPTIONAL        4
 
+#define NS_FONT_OPTICAL_SIZING_AUTO     0
+#define NS_FONT_OPTICAL_SIZING_NONE     1
+
 #define NS_FONT_VARIANT_ALTERNATES_NORMAL             0
 // alternates - simple enumerated values
 #define NS_FONT_VARIANT_ALTERNATES_HISTORICAL        (1 << 0)
 
 // alternates - values that use functional syntax
 #define NS_FONT_VARIANT_ALTERNATES_STYLISTIC         (1 << 1)
 #define NS_FONT_VARIANT_ALTERNATES_STYLESET          (1 << 2)
 #define NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT (1 << 3)
new file mode 100644
--- /dev/null
+++ b/layout/reftests/font-variations/font-optical-sizing-1-notref.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset=utf-8>
+<style>
+@font-face {
+  font-family: Voto;
+  src: url(../fonts/VotoSerifGX.latin1.ttf);
+}
+body {
+  font-family: Voto;
+  font-variation-settings: "wght" 50;
+  font-optical-sizing: none; /* disable automatic optical size applications,
+                                so this should NOT match the testcase */
+}
+span {
+  font-variation-settings: "wght" 100;
+}
+</style>
+</head>
+<body>
+<div style="font-size: 9px">Voto <span>bold</span> at 9px</div>
+<div style="font-size: 12px">Voto <span>bold</span> at 12px</div>
+<div style="font-size: 16px">Voto <span>bold</span> at 16px</div>
+<div style="font-size: 24px">Voto <span>bold</span> at 24px</div>
+<div style="font-size: 32px">Voto <span>bold</span> at 32px</div>
+<div style="font-size: 48px">Voto <span>bold</span> at 48px</div>
+<div style="font-size: 72px">Voto <span>bold</span> at 72px</div>
+<div style="font-size: 96px">Voto <span>bold</span> at 96px</div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/font-variations/font-optical-sizing-1-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset=utf-8>
+<style>
+@font-face {
+  font-family: Voto;
+  src: url(../fonts/VotoSerifGX.latin1.ttf);
+}
+body {
+  font-family: Voto;
+  font-optical-sizing: none;
+}
+</style>
+</head>
+<body>
+<!-- Voto has an optical size axis that ranges from 12.0 to 72.0,
+     so for sizes outside that range the value applied will be clamped -->
+<div style="font-size: 9px;  font-variation-settings: 'wght' 50, 'opsz' 12;">Voto <span style="font-variation-settings: 'wght' 100, 'opsz' 12;">bold</span> at 9px</div>
+<div style="font-size: 12px; font-variation-settings: 'wght' 50, 'opsz' 12;">Voto <span style="font-variation-settings: 'wght' 100, 'opsz' 12;">bold</span> at 12px</div>
+<div style="font-size: 16px; font-variation-settings: 'wght' 50, 'opsz' 16;">Voto <span style="font-variation-settings: 'wght' 100, 'opsz' 16;">bold</span> at 16px</div>
+<div style="font-size: 24px; font-variation-settings: 'wght' 50, 'opsz' 24;">Voto <span style="font-variation-settings: 'wght' 100, 'opsz' 24;">bold</span> at 24px</div>
+<div style="font-size: 32px; font-variation-settings: 'wght' 50, 'opsz' 32;">Voto <span style="font-variation-settings: 'wght' 100, 'opsz' 32;">bold</span> at 32px</div>
+<div style="font-size: 48px; font-variation-settings: 'wght' 50, 'opsz' 48;">Voto <span style="font-variation-settings: 'wght' 100, 'opsz' 48;">bold</span> at 48px</div>
+<div style="font-size: 72px; font-variation-settings: 'wght' 50, 'opsz' 72;">Voto <span style="font-variation-settings: 'wght' 100, 'opsz' 72;">bold</span> at 72px</div>
+<div style="font-size: 96px; font-variation-settings: 'wght' 50, 'opsz' 72;">Voto <span style="font-variation-settings: 'wght' 100, 'opsz' 72;">bold</span> at 96px</div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/font-variations/font-optical-sizing-1.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset=utf-8>
+<style>
+@font-face {
+  font-family: Voto;
+  src: url(../fonts/VotoSerifGX.latin1.ttf);
+}
+body {
+  font-family: Voto;
+  font-variation-settings: "wght" 50;
+  font-optical-sizing: auto;
+}
+span {
+  font-variation-settings: "wght" 100; /* Voto weights are non-standard,
+                                          so this is actually quite bold */
+}
+</style>
+</head>
+<body>
+<div style="font-size: 9px">Voto <span>bold</span> at 9px</div>
+<div style="font-size: 12px">Voto <span>bold</span> at 12px</div>
+<div style="font-size: 16px">Voto <span>bold</span> at 16px</div>
+<div style="font-size: 24px">Voto <span>bold</span> at 24px</div>
+<div style="font-size: 32px">Voto <span>bold</span> at 32px</div>
+<div style="font-size: 48px">Voto <span>bold</span> at 48px</div>
+<div style="font-size: 72px">Voto <span>bold</span> at 72px</div>
+<div style="font-size: 96px">Voto <span>bold</span> at 96px</div>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/font-variations/reftest.list
@@ -0,0 +1,12 @@
+# enable variation font support
+default-preferences pref(layout.css.font-variations.enabled,true) pref(gfx.downloadable_fonts.keep_variation_tables,true)
+
+# Currently, debug Linux builds hit a fatal assertion inside Skia, so skip until that is resolved (bug 1442669).
+skip-if(skiaContent&&isDebugBuild) == font-optical-sizing-1.html font-optical-sizing-1-ref.html
+
+# We're not running recent enough Windows or macOS versions in CI yet, so this will fail until they are updated.
+# Also fails under webrender (bug 1441323, bug 1442693).
+skip-if(skiaContent&&isDebugBuild) fails-if(OSX<1012) fails-if(winWidget) fails-if(webrender&&gtkWidget) != font-optical-sizing-1.html font-optical-sizing-1-notref.html
+
+# reset the default preferences
+default-preferences
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..98035ead8dea21f17fdc6cffd918a75fce0d5770
GIT binary patch
literal 226372
zc$}QQ349yH`Tsw&k}X@dWF4zpmUUQ???bnI-}e<?acn1!uQ<1JI44O+Lr4gOK!9+!
zlmMmWD$vr>(gP?hw56q`9HoVpwzSaeTLLYmEtdb!tadDAaF72lyw-Z2+1;7<9Q*8N
zc1HqXgpdLqMH1B4Ixy6*SpN3E5V~asA^cwNK&fx@*~K3rH1IeawSIcr<c=Rczq1#i
zK_mFjZ`eDzD@!_XDMGi6AmsYm+|~md{__2IAB26cBh*zh2m5hj;|mCVlSkZRWgBNF
zXEZN1pG2s)4UP$IgaqZw85xlO4dCZ)+_tcP*KaFdgZ)PllJZ;UrzgKT_Y*rp-Bk#2
zncF7!@4yxK@8DbEc>DIrZL@>lAF2kPw-9Ptw_|?y!qVf&2mDQBKjP5IrGKHPxbH#j
zvJeVO{A!ug6AXm>KD~}ly+LZrkZUw@g<5?t=URN@0hLLwRO(GCC=6BL_i>hRrVJsi
z*Dv$K){y3w-UJ(d|5f-0N0q~&C*ddy%0b8<b_L@b98ETzOW0gtmn;lBuFJpjn!;P}
z$g}3X2;0@y6@K!3zBT{F{E`<7U;Mf09n;J34?ceW^Pm6q9VmCx(j#00_aQ2PQX&YY
z1XDc%yN&a!OE|E?LBCE<D&h)wJYKbp1JkPu>O;YR$Lm$6rs{Y-?%6Pvt(0NS>J3!`
zg_CQn+sEV?j^3v3iJ~K;t7qF5tQ~`0y$h0PgTf^@wMDUCUs_vS(=Tmo#v?A1&R?6&
z#eT~NTFSbIQWwrhJA=OdJU3QJ>WgZj;ZsoO(g%`{xR-<$wjeL^Bjmt-EJ<o-ua6M9
zoC43kOSj@bIAi+8^?d{DRu6a1^*8mj^ftD0pIYD7KS2}v8alY|Erzi1=)~HiM<zxu
zHy!Mnp1ibqVlMXWk0k+-0oV$Gtq4U?Gr$UEhr*r&LaHn!6beE+0)-4bgI@0k$D2yv
z!dMASYU8w_Bu;+E)kUkqw#uP{TZjEyhp@(-eOn-`k)=5-v)Z6ff8rB)hqtUh<chtV
zH&9`(8pyhA_h9$f+NgZ@>c~)~*52AwG_@vJ(h<sfujYDR3a=?F+T$G8r1N{qdrYl`
zSeBmGUE^sA+VC0enyS*)`e1z{T#PUtUqchZcoaq>8HxC{3m0Hd>(VvY%e{@XP(xu{
zgu*%{M{1|n8?blHq{lP4X3daU%2@_i@61_q*V*guS)Hx7Z{9!ec5m6U)eCuyK^~Ry
zJPg4ajx-Pqsh}{VQpZ*gS~#hBXpNB7PTsq9&lb0Pe*b2>K6~{&*Pp#>4dhUX_u?<W
zXjKDWSmq6T!v??%8)OEV*YHc_Cv}fJqPs&?lyRr#kw-LlX5qbGS#7JY&mH^n<D;&+
zy6nNnA&)+E4L8eGA&3a>AY4b#FVGn}-1X5%=B1@;p0$4Od)8;+xV)te=rgDtsR*sm
zIf)+43l^G8X)2?=;#N&&3$HTj(^b4XH`)v5*{}pp;T)k2gASbyH(`m@N?Lb#=_7O&
za)go%Nh5R@2@guOTB<S`6bb{03=l7uPU2apDdeJqk&fH4V~-z@?EL5&hzD>ra9d!+
zWx%x{j<@BpE^xvqBEv|J$Io1L;`HUGE;}={HBh>FY+`evf2;hyXP>_Rfv3OlbyMrj
z`}f||)^pR2qc_!&GIv6pspNi$Anrn|z;y#xw+pg|T*G0%nkS?7GsnH^hAEFFGtk$N
zqtUCqmm95>T;)i4R=TSqmtVZI(rP4mL2Tr@fiail6|Uh#EFGl<TqP%yIea8*S<{Ez
z<N2O-LnHHY#r7RzTT1oiebIOE84oX&@M-$zTh{bf*!pW~TlHDF!!_e2WzDsnp{L9x
z*_V*Ax|jaWRY6&0%dG*Z@yp&7^waA<9+a0a$@r+lk)vDql+lIRlgF<z>vvwZW4LEG
zR-_e9^lsi;-Dk^R*Vw!_y~}HmmA3bd4UC(H`kT7LmAdq-K*74+_6Ac%s=K$TVRZrY
ziV13b2V6TmiP8?C+@K?f{c1A0gtl`#2tW|(jaRL5sbWp|3G3%SuX5HezJbqSoF1+>
z@y_bCD*T67j%jVRlmGqe*`s4NMQvv`)N%@Xy#ews5Nat_lhl*e&#QG9TwZ8qmqe_l
zlEcNJwGmB9-Joq~K73-lWYD9|#k(au=FH`bHhX(y-EH=!O>%viN1GlfQAEar<D=;c
zDejri$;*trm7Y1fv0zn$m)xs1LiuCR%2tse(U`7y`O9s)9CAr3<GFoT3|`T<t~Eo^
z)v)zE4(zR)x+;J3_`<~8=EzthFDajqKl-^-_xHAC%S=^e_kT9WxnbJ3t<!Y8r*gq;
zPoF%~OZvDK5Y|KO;o9+I2b2akJckbd0?)(-tOhQHPvg|F+qs97xeeFq7rWrP83o=^
z;5EP)ET_cDVOge6+#ft%;fhHP!g}0yY++$$c<RL1{`u9D`$tY6+VY8<iOFq;wqG(m
zGde%Itz=X_KGZ$s^t2B2c8@kRj(C0RItB(z^*y-_4Y{U`_1#@~w{>l`Z&gcUSw#`F
z;TVk69$?Bwh08=jA9{r=Epct6rb@_FCtft<j<Bj;nquk*UUse2KixgHrDWH>@x77C
zQ;osCMps~S-;T9g(gS*FI#;6k=FM(L?Nn&s)X+^cyS_Mw8&x*l<TX8)HFeIDew+fe
zay!RCOBx_TB}I?qyXg@jCaF|P@e_YhZ8RvA2BSLGsy6Dgvh+qZ<mH1H`7q?Af>H7D
zD4CqOZ#iP7iE4<6oLm(xL5R`&AVv?NREW{;pj(%c!p$!Jk<-P}@Q3?;W%;%Fm6xFO
z0rYEb0>3S)Cy2EvunlmTi+|-Z@%OFP-$U5FD6eo3a!b+m;df&yPPfne(ktd)TS%MO
zm;Qwxhkh|3Hyq^^!qsxL5^IpfB~|A&NyA9dRPW{vh1@>8YG&Kaq*R%q)n;U<RQKLz
zjdq1<h9+D_wLDzDy{>O#;q4DBHyV_-Woehx0%N%z*yy#q-0x%<gk4I`wOqCV0;DiH
z{TGLKaKi@SYJ(WMoQi+G@9v>n|8?E2M`ybiqWP6JDVCRa`l{B9oNP69o2+SVs?<_n
z`G(fH^CS2D<;eXHY`Wg34&5=D-y2EoQPsJ64z{$NX})Iu!T&orc>UVZGpp=DXI8Yd
zxo_i%dZkMDTGXe{$sat?HF~`D>fav!<n>{@+FAYAvI=!9g>O1C9Ib~MF8vcBi2-Wp
zL?xivAr|_=a1)Em9x)<=cyx%>^6MlHZwcpBN@S_og_<<XgF;d9MefD20+oj6?6Di%
z5{II2uo90<q+6_Vsn(!N<ukea7Ecyxcs@&^sS2bt4atTLSy?>hFJ!g#m@<6TflR;<
z?nE~OiwS57m+x%Cy}=QW1G<n9#k}l2!_`#p)@t4LIQObcN9txquQ>MDgU5DnI`#0C
zS8iN5`3c?@!S7e(@Ex;5^$IMVZr;7#G|}JRXX@@5tR^w51tQQM7*#nJ-=$s4S2gLu
zc(3CtKl7=(K6PfjJi|4;?!*me&#j%~(^3ki<xhS7;cs;1Y52T~oX>yez6YyZQl(T<
zUIL>CZrR-XP%jNp0UxhbqB?aQPL;~ljyu2b*aKhq+NYnq<NVj|<l)YAp~Atx@R_?G
zF`d8lwx<X$$?-Jgn8V~3zpFUZ4xK|Q-mvSMNy{{I#&kXvYb>!RaY5`Ai1pc8PRh%9
zTLpfv!p5H;(OF|Jnqr@~yPM9_5+<R9?0;WEd_d6rttq^O(|Tjy$HlRqXx(!(=ewHo
zt+B6~eg`JWw*xe|0$SSpv6dENIcaIJZ;1-m=~D6co_z9^M=l@FkPlsY`?J0G9xK`4
zR5`=HcIIow<*(fOsUJ1@wc76R6Sq#?HmX#7y3WP(uG&Xkq_kQXR$HJJex?@joE^a=
zFD{y>8i?1ew%Mc6c$%@M-lM@EX*~5<)ksnrWA8#rObRKqn(+Dh>+#Q+GXA-^DAt)s
zHkhf9DE@JZc)4{AB;N)suOgpSNx2HSkz8_@RCs$l7ei18Fc)V70Vy}Dxy`Kc)L?m?
zN0Yr~<XuzgNDa3`#5vnK6NuADh9IBdiZqx6E+=VxBKj~)E?qhj=)71a_IDE@Y{H6a
zXp_l8quu(rt;l114cEEK>=`&!?~eLnKf4buMpB6jm89&-*!6g>(4<iEJl4CkugBi7
zJ2Grqe>qP5{DyEgpEROPD^k(1ES4>=fU?KEJSR(xU{b>;toidl5L;Y`+XWZr2I}1Z
zvCdXw7gi@%?GD_A2R~g$hIL)+wK2Cg_SN#(x3%taTGV14_heE(bLETE+)axwCwg1b
zD@0VLY<1G8Rx@Ru#edd#LQ7DnDQ3{RL(4@?a(=OL=egS!e=L;2p*FaRF!wUbBzN=V
z>*(VXi_bjt@MHHqbxZBd$M>ABsXe`W)3qI~*T^6L$^%dT=#I_zPMG>{-LmDD{{CCG
z?6{>zj8%Jp-W;C~u(2xDB`RbIm9s7}0O0D&cZUvbJf?MzU4M9HXUV4Bck{L=gk2lI
zYpiuP_%IkaSUOreFd45wo=^il^2G0~-ekQ8!_Kc`tHRwB+}@jZ??d-K{>|I&xG$w>
zb&K}>-KXoIP77!1Td(=4ePlT0fhTYK$qS!;^a*L<K*;oV-!0prZtHI!-EniTShqK!
zZXPoKxTtU9r5c1{h0*T)cs1i4_1>*lY+U<wb6%cFo#GF;tk2w{@r37hHg2t(Jhz$l
zTFd5+J=$N`Z1P-{$MFX;Fz{&UP(^zm86O+qUZaNySe%$0r0VINR+z9eA<-aAfN*#B
zoL`wP**!7Qn>XCt-eK7_*1aQ5G1@o0W>r&YwtiafsdXDOM=K|*b1G|H?r=px>r5n+
zrEf1Eu8G#WZPA|Ux*dcdAKKxB@RW+Sf=iU?;;bY-G#_5?(R|m-OQfLKyVJ=0&ilN^
zGeJgtvo$|@(@oKQ>*5pQs8_*=^h2IvTxTQPO5qBB_Sh%MJzEZu<i!4=ol%Xa0!zTD
zzC=EK7++qM!}B@O*uwPs;B+(IDMpfOI_9g%tQ)Q}E0mW{o-cV48AEevZ4v_rEp1#I
ziaTT&ABp`|srJ}#YOh<9Ejyz$8~8Mp$99E8lcn}lVqBW5R>m%HCmdNkuT-iVRI#ty
zD*`3DqKOvVnC{8TR6_hx*%uFz`oeW5eHF?NtW-WHl<(K-^@bWQEKXI#OJ9av5(&O3
zc0r+a<zuei4HEl7g+?uxXDUBsy;EgLm#X!dw`IsR?xK%^PK`3QWc|^TluB;Rj;*&B
z7UmQ+7I0ZHsedTX5UR|<*IMjy0nf2`3HO=BQ6Nl%Uj94~){4Cx)=E5y00f+d@Wo&f
z?M1TB>s=OoX>|@Q|BcV<G_H!bZI(=B*74&?O{S^zZy~o{^YAk|t+(iRCAxI2_UcQs
zO>!el7IJVo*5;^qUXiXg>0fzS=gdsc06bgl?byq9NLR{Lw(K{bD=ko_WkUR4dJkxC
zNxoADS=xB3vdnS7Z?t(dzcuIzRnNH$nF{&FEPHmQ%&DJG=QE7qH<ZOj{-+vG3yj<k
zaK059GD9ZUXPnY{J({eNoLl7C;Db1|#D4lA8P1r*Zmtk$w1g&U5-Z+^ocOKSNv{U3
zh*bQWST4TStCMiNOwZkB&G#I4FD_W}J(rPDa(L+|_HiE~1>CdM$+w=vk4=)OIeApF
zpTzd{;#HLNEGb2JmK1wD8@I)uCSg>%bQHZM=9V12)TNUoHcdWulw6yihP*zyLeN@R
z&25HSz<f#zxxu*Wz}SpaZ0}#dYW$U0E51864sHLBr3bnCr7w|EWpGoJacv#x>EyW@
zw+{V?iy=9j528Qlhw-fYk+HE_RjBPYbL%wGs7CG_%vL~bB?`KVv%##aoIW!Phc9}R
zB!sni?Ok4&HVNT97$0L7n&wX5Jf~?}HCvt`=i7Sr3}gi|XJlMPbSzpqQ@Q=txkh<M
ze_vaQq~6|C(q68!W|n$KOJcu_=J9)!)d5qmPJKcm?Wiak0v0o{Y=d^PlQ|7UBd<&5
zN^UO_>;0h>?wDj!cA$EfiIbkSHyZS%!5g`h6yx^616!-MH8zfy=Z|;qSl=g)RBz$=
zYR(td^WV*xbal3$I^BD?-PF9$x_Z0++|1^4WG=h(0sbenhvTAoqwqXyS?a=Aj!!CZ
zW$l*w`uV0+Qz;qggFRz=YSx$c_v%w5lk(<ER&6{OY%NGhPs7%MeJ9#>)?*wlO;gJB
z-Q+$x0CoKw)YXAXlb`h%{GmV~C|)VcjSiKik4@s@pkv{(!s(&m1%nhD%ZktHoAsxp
zoOSKY?rjstdq;93>*ROuY(3Hw4CwM5@*@GBU))};<1dZ&86;P4z4UO)?&h}L^+3@l
z+|z7uH_uMiBRWTFV&;S$LczFo*X0LyuRjnQksMjyI-*aJPR5?cSImuU8<d|ue&)*K
z2V}=i`3j_|Qfnu!oY=EKMl#$h@f#8;awYCqK|gz^BoBw<RV^+JnD_5rKUCGAk`>g~
z4?g;+Inc^$!uY(YwtIc0%Am@rXz!>q#ny#2JehgcFKJ-5Q;aH5D;i+l3@ks0GB8ik
z;_q6V;sYuFMK3YpJ*-WBqha50ps?BN@cQI6xf`d8>r9F&caAATuFcHN*Q>LqCKc5(
zea^6NRoBFc6T1(u3LWm;GIp?YVoh(y%*Ov4?)B8TajG*r$1lm5%q!cX=QB!78nrIl
zn4{1%+gqp8QWg2OTy3PMXVTQ%+wJrW`v>tC!XusCZL4}~Nh=cR_)QoqMU47UC$0x^
zsHnv;5|6HYex1P>bY8__PO)yw<dnJ5e0|@l+UcmV&cX8mE>f-KV{fRfDTRG~8)6?s
zG(4UeY4`Niy$>S>Mn@hL-oyPG=D)U&l`M#?BmtXORA(@i+Kw6OOK*icnp`1=$Q;09
z6;MPIWXD~nG8)usgHd=Zm$#%sZ$QrCQ>}~Z<Vt?3m8Y(0F$GPR^|zhO%*cRyg#2C8
z<U#y!jfP+R!)5c5W6RlM(7uQ}3hm_ocsm*556DRnArDRI3nD=>iW4NWtIl933g5_a
z-;I>Xi@o3T7}eIhZz^kcV7({5F#psUW0P8FwhBETyVO@7c(}AkovM`byiBY8<TKT7
zUf~aa>C%4Ect9hAKP5n;S+VV8QMkH_8_(;*5nc~@M)dsRhJao;6I8C$3s+?|bEd&h
zW5mb%oblpSDs$JG%q8}tk~H0hn(=0ZRJD41ZbaXpIng=1Zo=4LIom!lvd&oL;kACe
zxm3;1hJtNQd&ksp>|YQh@%E11$+lPwDulP!t=`uDH@}vT^Km~1zWkN>RvwIH9@4!2
zGm_N&xw?&$#s>4X-BXimOon<h87LEeJwMsvSU(Y46pL$Ltry2(KSZetC{K8vn)2`7
zJT}iCzij`uqlXS2nB25s@0JbnE3dld_@SFloi<&+>9T!C4(&cgo|`Q#sknL039}?W
zGx7|}w-yo`T&a2yJbdwV#uhCy7%SQzm8PgR^dFf&I^VI$EaB1&#qCYiV*$@-Z~v%s
z{ky!rf@=-({PvQLt1i3#s+y*hV8>AyH%p=U;Z?h;nzvUSBJY`20nK@!@uCoUGc4$*
zfG5N}o%Dy3C5YR1@x9=|!Xg949H$JduG@8KaMyU>s97qxOj~a-mg-`Ul+85u?H-yd
zEft_P7S-g*+!gi{R}UX)_E*h9(=R?wxa?bY?mtn#&^5F@1U(#vVfY$nC(mk`9<Je%
zV=3+28eq`ZIIfm(%HoE?!s^WQu(PnEL|<45W#SR&#!H-4?xGyIs!|=EZGIX`gi^-g
zUi%Q2lXz0U{8s5d&8Jef)W|b}>snhqEnUO8W8EW>40&rsW8-i~Z7n|~Z*yt*aQ%SW
zQ<&}ah4O-p-Db6>!y7CNhI6tDi)}T7P_hn64svJ7Op0h8xGU*Ha98*G>AeVUe!A4u
zKi7xX8$1e`5%ag+>J94bTHYaV?ZdltTt*r$t~p?e9S()D)Fj2^y4AoqeU3AdR!hvK
z$n~B)k4nC)<FQR^_0?r}=-WD)*OyzOj<bfmnsZXAZdyLO7UPhPkKN|&^aTgYF)mQ?
zvDy+HzbUVilm%LnyD?stgDCDK!L8S?B)D<M&s3Jk_npp6lYClNEKhgaJN2f_oTBe@
zK7H0p_$7~=sQavP-Rs38X4PQJ{iP8jXnbDjj1`d*(;+H_pv0h9B2%P4K6L`M?_Z&G
zGI!$7XR7SQ&pAzstd!nNPpU-bQ=N64kV8vIWQB&&w9HJi|Ht_`S(#7d{^oW30(2xV
zm&;3)Z|82)8}_<!XY5(SU{98MuJYGfmy+CIw6<6=m$vvJ@GbodT4W0NYU9ttfx-Kq
z=S}n`@bP(5ir=m_K6tr7?=Ja~4(1(MGn>@9ENkO$bL<+^m7g={^DV!tuqrjGD^IHR
zN>>}N%6{_;WOgKzrCD@Wp60ExR2k1}Y>)mzOtosi{3vfvOGzi=UIADAXMxm5B9ISe
znk!G4E}DOOWD=#s)zCB?DK!2`VfLl`pwuGQn8q_)_Vf&scBecm%Utn0Ni;kCiCkaR
z)Zn`&qpv%F|6)mnxm;RCZuCiAONYfB$;T#hUK(jTNmi_7bWf9o^z8_=T?P>Sn|ad+
zJ{Eh)%S$;v4c`$vgsZ$f$MGq8{CjJ@enB5ISPKfTB>BuN9m2Q4Jx{y>ghwMmxbu>W
zS$r%^-UjGtY{d)FW=}&wL4&8c((R0vHbf!~rBUbc=GMFXA-&Wn)rA6gw>Fugfd}gv
zWt^<J<{@8&2};6UODeokoN=lBYTRXgSMttBMqro*hFjwd1~H<B!a<LRs%oE5ILwHY
z9HDVdC(3nKQkv*-Q-$xLnr0}ovF^b@)YQ~^cOaw#B7MkzS8FqrvkLRv6n=~-7_AT$
z4e{$d>=%N!SGZ%yR%PhRe7<J0vC(O_YcrfOgRjipY*My_i`*Kl%jpOO)XK8L8jG&G
zHcy?>TuENTqLWKK=qWBczTQczb*aPj#sro5Vq(1$-nsY&=SnPi;?VVQdNs@)9l{fq
zV0;F%yuye~V!UcPeSx0vs>#|IJ>IwOMAclqrE44}G9Aq=?R<*F+ZC}?j`|OcN^iJi
zW`9`H+9GMmBhwjkcWNwC<}Zf1jH1{r9p8=rjsx4*Y`qEzt^Zf<2JS`jHaTUv5oE#m
zrRRm__pJ2tzyO0oL<+|5d16~aCvk<1Z60fBv8RZ)T5ZjSjDtJ0wqv8cJ9*r=WpI<q
zkp6|wWf-$V-kM^KYD}SAoi8czXQ~3;Onq8<rb4DrsI$hp%zYMvuc>5sD(cf3Tx-@e
zx})VrgJH~~@9NM>oEig{Vuh^IGwep;z2`Y@f~$a;Xc2i^83tyu5=MMkXoycC$dVXA
zD;Sbw$Oh$jG(4f2u=JM}^_a)AMy(Eqc~muCIa;#HdfV`h9m7MrcAd-WDDG}AZO`h_
z+su52x{a@Md+YSA%C=&Q&bYR*VQj3Sacx{fat}jq)-69>A@e8LE{+&s8uRrb=y8{y
zMqRQlVtH-EOX~8<XP<rct3TK0t2N)qRb*lAkiNhyE3r&VQn`|R?dwWUjphEYJoC&m
zk&uEnI(Hbx4Y-NdLm*SiIO&tN%6wUy?=GoQse`n#lGwX&z}iyb$#&B9NOUh;k&^gT
zX|>{w_}bWx#m|zzWNdF;I?a{Akrk+Sd5-PkFMg65UU`%V0wCV_@!&`XSbQ2scH+wR
z@d6DuG24D%WUJlQ7I5>%%sm5Z`cqSP`345P{k82wZkI7L`|9Cz58v2U*Pg4g`Wua=
zs>X$)rd(rMdw+Lx=SZF`-4-bFmuj6l_2{ZDo>P1MT}AoPVv{4!@8_$Wd``Gw1GcHd
zZim}tvw2kVd~ZR}DoMAHRVwdtXYlLXTXD6TyiU%QWaDqAE0yUPnVHX}sZ?olg@QYy
zwiq=UqeV?W$^5o`=>y3N+{+LJ%E%aC-(-6)dP0$SK(Rb`m$8rH<p-a?<iPh29s1#+
zOMbY&;Xqf{-rBwc>H69Bq0=qfDqE(s61-tz*He2Ip4zkfo4fWsDIdLO=k|NX$M4y(
z{qFHizCF`(3+2^$T#CdV*>ZApYnjiPnt^pqT_d+lt-oc>>RYDgZW@F(2;xI98h#8>
zsF<#R5S}U}uTK(g0ic8Y;-eh#k<zE^?Q6y=EG-c?Ru(iimu5MeBwR*Kg}2fX9c!}V
zL;2MKuY_|J71%s!nTm=^&!_S&nLT`+I<GLbo#S!}aza3`8m+~z;BTT-qLkd;Al$_a
zuJ{N3!i_h&&Yyqhrkk91-nsUn)Q28<MEE1DWVo7}#RpLeS-Iv2I&@rTEQQlu{bTE&
zmzL<dGcJ{^SVPjJ-pPU9X<wm#nCADc@a{q{G=g}IF27N}sG}}P>X3eQR!K>g`oT@p
z^(EUCW=q$}!zC(B-+0ri*-_s`y_KEZCkJ_%91j{Y`Kl^+O~&o&bpDw;<TC!%KuM^8
zJW1p(aP{%KsU-d+k^4|af)5Jgv-nHGN;qaMOY+?7gTDFszE$({y)6?HEiF@1`0QwF
z>)2Rp>!_i(y1J{Yy1JL-)rYXKE-=1|7g{%YbzmQ-i@hx@5X4sNndLQt)%ZBRT2e`#
z>}thTZtSuVxWD-0I;HwMo+3?YUr)I_O<z~r->l6w|KR&!HHS4R__*R;r_<xM)YWEX
zWTbj?J3Wp<r|$Dot9uO+$~l5>hH{q2>xwJfbV&^$i{Daz(LR!q(bV2P&_7Y=U)5OO
zT0D(2)-{ba`tzEK*5V_Pa+SKSyuw#rV9GD@lm-2ArL(o$U1(RQq*vREMxbmjw+{V4
zd|n$Q0)o85&C~Vk^0R6i^xQgyV#X=gR99xgu{%IJ9tWjXB0jB!7EvcnG3e~V=?S~y
zD_y)ciJwpXw9<(=Y|U%))vfbeE!B#MJ&=~_+*ns!Taby<)dpqeyWadfkF`92e;+%O
z*IdvuW5?mxXi1T=qN%P;pP#+!fKQgG5!SFSo#mc{(UQG9gBC+u@|$s&+NJ)PUt6|)
zysLi%zs~Es3LOR4Jw4CsRrt$$d-|q$bHQR|wuzUFeDqmi?Ix~6XYrL}{aNxjqiZ*D
zok~wsj$S3KbM;^g%t&-XD|mx?I&XwQAoR-p8n3}%HRp%?5wl6}s%`$6Bt@4Zvv}-!
z$w+f5Ulg&EG6#jx6(Db~wegz7C*Jx{NJiIV&aBPIRuuXzoFcEcRGyiVlQxTw^DzHg
zpK7<tv$$eUrXsd4ErUF%$cMOh6yn~0yjotY+P0~oX8X4Kj-K9**3K?`XmEIVXmIuL
zpkX55o0{?kCdkz?2@&k4%MmQ>^&4~`%7qV{bN;;R#v6Zi=bg@*ZdxmbFZcs7ss^s$
z&k65J|M@yXUi2pZCB!NjdLO@!khuS;74~0%F-7)Q!~U;xufqP1{uJN87(btr3Hv=u
z&G;Lf4X$7({sm`x64K&pktBC<9`f!Pj%`GLME9(az88mAOn)A|o|Hbfoc<&9U{d<2
z<@C*<%kDuEG5r#_W+P+`lCTQOfRo=x|Mvw^oGhHwHL0c93JEp@n^)J=tZoV8Ou1EG
zx>!`CQE1bgv75aTM{ZtS6c5g(n@qA4qdBd%vbni3+T09tqw7+`rNKxf=nG31Z!o6A
z#95^%3F?}LWFrQBs<3FProp7FZ&ZEGmzP&omY3&?uj7)YLVuKy*`QDZy#dR_^*a8G
zRs_*CF3VNWI@GSzdYqNT;j8Dlk#t^;%{cZDE{eUx;m$lKm&VH%zu}8$W3O$?P}r>X
zMr`u&QW<v-XFGq0%Mcb0Wmu=q^Y+^F-^wt^R4F_z!IzPKZdvk>l~vH@9@6G;=etel
ze__3c(06%aU;mu+(Z|yF;=&cvpGUt=N<X!nz8RI%blf2vUnJ&VvSRvPv~9)o=aDTb
z{nT>$=A{`JGaPx_BCP4sC*Da2H=z~Rb&=Mu>#?b>zB<c1aM9{6Y>WMxcLbMAuU5Dc
zOT1z~Hi>N{=@rItxj2sB5txM49|Ef{UN@Y%V)|YjSTX&1^sl7!x#jd9p+}R_Pc5f!
zhO7M^h;m)%3T~W>lE@ksR`kc0^N%Smys!HEKUD9(um11~{ZmgFp8KBRTi@cp1NY~)
zrJqVL_dY~1Cuu)J;#~?2uyAkj%EU*JUbxJ>n97{Pjn$Qp-B&;B4cY7K!?iabKh_(?
z@;#?(e9_nz_xjuLIoCwxrfWO$))wEq?SZFFhMw`VPtI(<cf!9a+<)tq$+LxvPZ*4q
zT(jQLf6JEdK)r-D3PL+X#4)iX)R#@)i`!OAe;!Md(oZd?Zw6IO;*0POTR6T-%qK+{
zD`brB6z0<Gs>b-E4FAPTYrKgyCoK-G*3p9Hkpj&<m+dazyZuT{-qh_UHg56E?Yx()
zHhH&_ERv{fU0df^)7V>K<6o-jHTi^fCIw3$aL1tSYnPvj+PLJWqGZi-d?`}$8#O_5
z8bqOKh`+e|N%g)g6)tUZHFwol<aYWC*RN{c27=IAW!}HPcD!WW8Vk0J4(Ln!JNh@t
zYr@zW4XNsUrS&?ky}Z~PwBW&g4ONSG^Qv-upQ)m*#nQN|&0eH&mbe_PHFfRrI6>YY
z$Dr++#J;%?t(3kOeS5|9=h5k;^ryx2RP>{PMCx11sheM2PL-4_r@pX(%#|QjatQ8B
zerUNC`YzjG_}IH_`abZYmz?p}f$@dDUXSoT!6BUYm&OgJZ|+L3>{=HgZ@9ZhniUfB
zn#q~nu|esP+0J2Jnldptx=$-R+F3nVgz>;_8yavKKFzIPyU;7|T-Dbpm2~Gd<kd%Y
zW@V|jywMUIy=IqW@42W;lA2=fUcGv}-xTgJPfH{n(ZXTu9J=&UQpY|}IRE5qP{$Ub
zoerYQQ9PZzu_f)-CbsuIE2i&7FRz&XJi0Y0{Vg#aTJ|lH8h_(Qj{bv?+E}ns>Rug5
z)iSBi|B<9-3#o63sU+@#qF#Q7^AEUlC#|1?cmg+NSupGoG@K!<lPyo2l3wjMt=m+1
z;$YzstFu3J{b5sQVez=*+|f0o{%ymXcjm7jxMXZzKK6-<jeEk?>yDPJvb3o4wAQS0
zOTV?H^|hl_yE;sl?{TbaJJ`MT3=qcOUXhWuN{pWO3M~>RB=zYRTlUEn)AypkubBQk
zx+5w5X)zr}@`gm}Tg$1?-sHQQ=ysS96^h@wi?6W%H{TZ^^P>-R4u_6+IC$|B4_mEY
z)tfCkoyDxjr3Q;hr!!d$Le5J+h4Shkf(y}Wg$PcDyeNK>0=R+K_q955FWX<(l^wOW
zICBpjDDBCPzIb5LYK^^YYTAJd%ys#Dw{f<-Nyp~aYmV#q&N0W9o>Qld#-7Oa8=I$X
zu`N17HNIY}IefT!J*j*Ay$ETk5wT_OLMx^3MZZ}w{dsgODg7-m9oq00BsKmtog6(b
zM(-?P#3_Y0eIKHH673BauOs30I`(bfzkA(RnQt^Y`#+0QR5OX!eNw5x-^jf0lQ=4L
z{L9+hTun(${GFfF7%u<VOTT5}w?ty7$2-f)iu)d<mJ0RwA$~pf3Z&Eb$R6^%jHIJy
zV`qewm>)_0&b<IvRB6&%QNv1W$sO_UL8?8@<+p}+KlIQS?lU#n@LlPA8V7y*d|WoJ
z(dXk-ULFhPG@C1fytBo!>6-SIGtx)D^1#=y^!x_BLQsuz*Z6rXF=5QzF6q5-%Z?j6
zVa&l8m%IfL*abwPWTr&GT_NJe#W&ot=t7g`Z6`i)aC|4vZ(TdP5L<(T(~TX&yiBrw
z-P!}Zc46w^`i*n@wsPD?yb)iqX>ivn`N=a^T`@egYV^!5>EQm_kVjaAvUYf6%zVS#
zW%~{v-gOE)rgt77tt_nK6z=sQp*4Si9u~Ag{9Pm&MZ-d${9p}QRtBe*mBHqvcZH*c
zb!I{?)nYE!3hD9pC?uD)V)_+`+|#!#sqpLEOTs&e#C-Ll#V|5Y(qfp@6SAxnS*El)
zI5$^QUs@rTrMSz=%TAo=c$dQl4o_~u_nVG&tP0pOl{h<E(|DOFHgx&A_}VXA#Kp)H
zs`#@6@}|QjJSCOoWp^mDGrFv4rR7#jaT&Kxkv-@n>%dBC-0qqZ=4=v^{qg6@ejS{B
zyP_jIt*q2yEiFy6c4ctu$eG2pZg*`l$wxT*I<%VmH9Lc^6W4<zEdk+B1viLiBqjfO
zru;(9YBCX9U0d1SUKwp~=LRD|GQ|o;)c*WDpD!=pkA!kJ;@h~V$<qMrjK6Vk#c%aw
zwE0t0al5Ob!Ifu7(Mk$S3K}bIPNP&S$>sLz^@VCvrCx8>*vLE1rGH=<{ug!#&%q!T
z%Qz0p%w}<q<S$8kBp---P!)a;eT{ooXtVf}PF?&OgUamF<Tq9qMRMKQ_&rTt;pWr~
z=>VT1(~_^CV$=j@J_Gtv?5m5u+0`VRrGWGCd&=dLAdfA=cR!a-p=Z$Kir<_~oVkyj
zC{5$_CY3rLPUMgqzlRSAtPc8YI*HcBCgAWg|69Z=jJk8JAFBylF(}6i<y<P%%&|h<
zQrLtgA!8*J5&Pq^$<{lKX$B}|=@h<HXa&a#?eM>q!n9Eu(`3-rg-d7g_v7D)HmEp5
zSQZq%5v}tYLY(>ob4JFq&t{gWpL;Gd!#Iz<SXDNk?sNX(4^ChDe0l6ovDcIHAe=%5
zspJ*MMR}3;8eYNto$|Zi%^>dv;F_U%XJ#ptigd+u&#C8M$?{oGT6C+2HRfGV(jWf_
zCG9fv!^6Dgq}7-83MsD~y@h-5Tf&Sl>Dqd-y1&1=rmyd<NLzb2+};);N?~Z}Bm9!^
zooNG^6DR8rN0RMNetYql@cvPwfg3^GI46ECf5V#nB+;;Q>4TJoi+*FE7Ipr={m#I@
zT?J&s&*@_o13gWxU0sch-QnumaI~_TJKfXN(%s$A)Fme1KQjsOA0#-jX6?~qV{4C@
zCgwJ*Teo3uBKGZ%C7C{!LRx$+T8s6<(>j=A3$Gden)H5w96_GvnZ+aGkMSmxp5Kue
zL%zc9i~lx&3)<u@{E;~(C19{`5$;=F?iKM~FT6=5KT&b<H-wd(4DR|eK}ILmZyq1s
zULn8qFh25$RePhYQwC+E-`dvVlVW-7ef-9&DO(QKG-YMT*2;Ycwwi{suQ};$%S+dm
zHA+h^*_S<xP59WMav9FVDnDFv4!lF61;#uw_rl4lN~=v?rQ`~dJrb9Mxbz!4D}G%8
zA6BM0ooUK7`?s%FWLT{kirpF3g^Xi%Rcxm!%~r!}rEn+2GHIp+8?|-WGBw@-V-06y
z%Cxa(aFtf3jD47uuF<5Y<AT_uxIOk86^zETOq^$uJNo(@>E_t$sx%FWOCEe2-!2It
zo~&rp3h!Woj-WRF4RT?Pf?JqOhv9zr^-^77?4KVwM@DQqbL^|X!WgGzYw&R%OHXQW
zT5Qp9Qi}NpZ^+2?WGJj;T}LZEf)7i|$X#B%qtWNm!k5RxezD%m-{b!EL{$b(_xD#f
zHU#r(RGHep!fgpl<X=^*y(RwjWB5qOWlAY4sV%Fh(4?!LYIS5v@04kS{dGNLMD;*z
z?v#`Y_ggJ(Tb<;tH)GliPNtIL-Z$ZhbG*VjV2W)g*ZL|T{FJ0Z_{MhG^8M;Re`7nm
z{Pp)#{rdyGm5pKFU`=mJb7^bMRCjw<R&{erL+wy|VR3hD6yqv<q#{~euQIp`BE=Q%
z{E$K)E{#?h!iBust<9_`Eh~A`RBASay}5;Mvi=;1?gyg(r~^J68C^TtJ25fX)!Eb9
z(m#NY9GRTozH{ruQS-L-8-|DG)^8)dI|6x~lT;$BFk^Lo>>aXf`OVyN=1?ar_4I|t
zMuRm9r6bVUo@wn5+bi7@0e@RKS}<V6o%o1zq;LA#d{b(g)iQ8WRb+_zB3-72yt0bi
z%-$hV@+g#i6O>G%+QsjWlD~BxFE~tV^~*|MW|r66vMzhD)KTqS?`xge)>^Pe*V9zq
z62wOWP+pE}ep{AD8}wDQuirOw>{V~ts_yE%U|jVGGi~F)Sznr0RAaIf+m4wU3(4}z
zX`i?bS6r1XosekBO!Pmj%67z`m&D(>)3l4efVZMo+*qJWUc-&Ime2M$8-w=rw6*<H
z>+zMwro!0IfG&2Ows<J^A{-vOL0jC*8}spfrf6cBcSXB@RY|7FX~>YLIqP~lIs|@F
znY&`c`9@wiL9l3@CM7B4``-V(PI`m?BJ@DA_WmELH1FHcqpeo2=L=h6FLst`%6f_?
zr$77I<@%h}6?ez$Q=F(zNhQ=LEoE_g1!1q?%8FdFo{lOLTN$A)+^f((KBg}JQ*RL1
zg$1U~O|_-5-`Po<>-^Pmvj5V$Vw-ZWK%16*oa4W?U>pP5iLX+xSLb!bUhFE>M0#_l
zroQwgUGYGiL2MDS?pas_o!lbAbH0D!`|+1K8G0L`*kMSSLKxqM9|0|K2~r9vYar!w
z_;E;CKvp4T6`b{ekg^ByLP{MR^CjV|-ypM)G6Bb&!w*8rTgWJ+3`5HG!ddSu#e|d|
zIO|UQ0F?e)vGf5r=F|AgaLn%z7w3VLJA|`-kJ5yc7P!aX&%MH>0`u+U2v7yLao>Tv
z{w2!m2ru}b<9-1Cf|dBI;P?l)SHa)IljG}P|Cfa0e`6;5Ct&|M?s@RvGLrqn;9oBs
z|4xkfJ#hS;+*45AZxK0u0QP?xbV4fn9TzX(jPDSR|9#r+pd;>B@}P<Mn^W0}Z%)<!
z+nZAu8<JUx6gB?W>+Ros*W<rM4dz=Qu@_4N=6@3?KK|Vh;X5PZI2OL2g;UVakP#c9
z-okefm;cF-G|9_`vAzyHf|l?s-i2?#kKtGGA2}Jva|K+4o8hkHo|H%=e#vghqmu7S
zb<)++!_v=5zb1V_`l}RU%BhqWQZrL4Q)g1or9PGVp{!E2PIgT81KD5Gd}%XjXVbo&
zwv^tGep&j1>A#h`<$L8n$lx;~8GRWO8T&G>%D5@x!HoAagPEH$AIN-Nk*T;;@r2?X
zrB*qr+^2k2xs>J3+M4xv)*n@QssYt0)zfN?dQSbY`Xx=eMz876?1%r(X<pVww1>1m
z*8Ywk<`3~d)tPhwU8Am3_pt8ky5Hy)_2v3`{pI>+_3s(d3`K@P!$HG2!##$_4Bs}q
zVEDP=ZNvM9C1ZwhoAE2gZySGXe8c#A<KIl!q%fIGZqsVhv}xXSiRq;2dea@I$4yJ-
z470)PGMAbw&3ny1Fu!L0t@(oaBa6(Uu^g~mZaHiDq~&v#FIv87`JUxv%de~+tIt|v
z?XV78C#_qpw^)B^{iF5o*^+E!wmEw)dsp_6>?^Z>VsqQdZB@25+n{Z|?VRn4wx8I3
zpOcjn$f?ii$=Q-~Mb6zhKecDrYwYXoH`^bw|HiS(G3D6p_=Mxz&Rpk!^D5`v&Of`f
zu0Ge5u6uLUx%+aT$o-dF>Q=b*?i_cXyWCyjZgh9Khumx3v+ix~J?_Kq%iUMI&$&P8
zzQ_GtPmVA;#@;S`;m%*EC$g&khOp!vGB93R`%H!Kxo-Gti+t=7#dXp&;W-f(A2{4v
zG$#zTCUI*+CviKf;2uNeux*mIp-xFTXq;P61?~l<*o(&S1yl+9`XEx|;iI5P--fGu
z7V>%wb;7n2wkFuRVKc!t1=~j0T45W7Z49Tv)t!obBoEjI$S3{<vP%!3EfT}hKP4QT
ze<x~@)S)`=$FSXv>Lfhsklc@I@zoG%9z?m4Vo3iXs*{evzLT(Zpf>Ic;^(WdZy0Uh
z9!2?*7NnAp@6Nu9tWZuGckR-9P-iEeK!*u4e3n9b2UofD5A-*b#~nm1+}Dwra|7Gg
zfo(OgU4e?ZJ*b|01MzqW>O2d_9Y$sxL^5dyD&zhE+iBF#J+-vNJq3~RPbiH4g2wS`
zq~qR18t&6bA+12^9K>qw9;D#LK=J((&2V4FUGO;#<*%Y`&wUwP58E_s1F*@+F_7n0
zh@|gIji?>pgo0cYtrpr0+Mc8lcIcC^kahu8lMU+P<<6rW+}}}!&_ACN`fU(@7UjeF
zlTt0J5w~h+dymlWD{RuvrGJvX5c(l$6Z#=(gT5-I{lIR()g|c!oAgD}CiKOlkl!<?
zKxp?BHp$oFlk~;vi#MSk;+qz>Y@z*WKd>7aXQyE!eUZG8zIYlbg-;ku*bV(ziQ1%Y
zI0wcL=|ehRNS{G}Y{7$2CT!?Z`1}-H6W@Z*zb^el@(%O?LRGLe;SAV5gWRxrh3)UC
zP}mN`HI<KsQl3Pect6al55U~IYYE2X(xRjbW~dino_7JRu?ui_yZ~e30^F4^z*xBe
zIvwgN-GGXv8(}Q|0=73$vABN<wl(7Mb+ApqHZ0~bAnyO4jzeha4v7lxkWdL}5qSWl
zcxI7boK;-M+<VAfNy>c|7m@XbaBm@RH9F&;cpdWL21w<&)YOy|j*}im!g~QZJ-4;D
zw-whR<Z#BzkQU)wx{ou$44wRPrc`(nLS}vl=DZT2d>&HC?|>Ev`$>KZbOi2r19%ee
zhk49(+;_Ow?Y!M=x7nR`kG;%ZVSm8k1TBGtW9{hExF4^FV-JhRYVAh5)ovG#jf%(O
zrN1rxX6fmrT}vC5`j)zuqOsJ)zrOj6H=lU(t8aeg%`d(A;G6fn8T{pwY>WKoe_W^K
zN>U4HIymcudJ&s^^KYGKb4ZEyi?#$cpcA4kO*$q8W{A&;b}G_?28`P>)P(*i+G(f&
z*NApHYQq~vTaFs=!=jymYVdoaor$WrGSOCWH*#A=TZsZGoM@|(7}N<)XaadkNVGA^
zOsNxX4jEIrL|cMXDKnxi1$#lXQ@}nh+NogQAlfpp?-uPeu)iqUK#}r{Xv@KVNwhP-
z7TW=5g8f&~Rv=ZXRJ4^~^P-&vcCKivzz&GE8tf*~)_^@I+FGzFKMywL*MUv>^<Yze
z1K5<`2sY(6flc|%U{ihz*p%N2Hs#MoDjDUsflc{yz^43muqnR-Y|8HhoASHBru?~J
zQ+_wtl-~n3<@bV3`SZZ0{P|#0{sOQme<9eEzX)u~UyM{~l)nUQ%3lgL<u3!9@|S~6
z`F&them~fhKL9r64}wkkLts<>FxZqo0ygE3f=&4=z^43_U{n4ouql5vQl(S=8n7vU
zE!dR54s6O_4>sj*0GskRf=&6Gz^44oU{ij$7p7DGR<J358`zY;9c;?q0XF6D1e@}A
zflc|lkxEYad%&jry<k)RKCmhODzGVkKiHIi0Bp)X2sY&(0-N#=gH8EYgH8EIz^43b
zz^448U{n4vuqppI*pz=QQe{y7bzoEe39u>udax<~B-oUH3T(<h4L0SU0h{vAf=&51
zfKB=5z^42g!KVD1z^440!KVCMz^43L!KVD%kSde%ZwH(5&x1|*cYsa#cY;m%cY#g$
zcY{s&7r>_cd%&jrd%>ps`@p9B`@yFC2f(KM2f?QNmw-+A4}nej4<nU=@*e@4@?Q!z
z<v$8G<^KfOl>Zpml>aiYDgSY>DgWhQQ~ncRQ~r}+Q~oQ!ru?VCru<ieP5G|^oARFq
zoAO_cR7%Q!25icI4cL_bTCgeqS+FVpbzoEe>%pe{H-Js~&w)+(Zv>n2-vl=0zZq=G
ze+$@@|5mUm|7~DX{@cN({GUXsEXw~Wuqpo?U{n52gH8GG1e@}o2b=QW1vcfs8*Ivd
z57?CdGhkExd%>psp9P!pe-3QQe;?SC|9-G3{{vuC{s)mtMfo2BoAQ4iY|8&I*p&Yf
zuqpqeU{n4tfKB<o2sY(^3~b8(C9o;~m%*m|kAqG5zXCSp|0>v&{|T@u|JT5#{9i{Z
zHRb;X*p&a9U{n4l!KVCAflc|J2AlGK3v9~&4A_+a+h9}v?|@DDp9P!pKL<AD|1Q{+
z|9fCl{_lfL`JV@y^8Wy-G?f2`U{n4Vz^42^0-N&x7;MV_BG{DwCty?lm%yg{FN00_
zUjdu)zX~?x|0&p%|242F|Ifgt{67bq^1lu?<$nXIw3PoBU{n5If=&6~1e@~z3T(>%
zYp^N*Z@{MfZ-Gtue+xF{{~g$r|81}-|2tq){@;U5`Tqbm<^Lntl>bj)Q~p0A6;Jv9
z4{XZ+7qBV+yI@oP3t&_J_rRw7?}JVG{|Ywc{~Oqp{{yfo|KGu;{2zi%`Tqen<^Lzx
zl>c8~Q~r;@ru>UYrK9{Yuqpo%*djkn&{R5+pTl5_{Nz`Ebs|3p`d=sVbD;lqB0mTE
zUnlaD@1^NPeh&1%PUPo6|La744)niH<mW*D>qLGI^uJEz=Rp7KM1BtRzh30$K>zDS
zeh&1%p7MkK*HeDb|9Z*~`d?4^LI3M1Kj?ow<p=$*r~IJ*^^_m<zn=1g{?}7}(EobM
z5BgtE`9c5dDL?3cJ>>`eZ=n33{|%HM^uK}fgZ?*Ae$f90$`AVAK>0!c8z?{Me*@(Q
z{coWBp#Ke&AN0S0@`L_2P=3(=2Fefm-$406{~IVj=zjy{2mNoP{Gk7hlpplJk@AE7
zH&TAk|3=CW`rk<TLH`>mKj?oW<p=$5r2L@&jg%kszmf8T{x?#7(Emot5BlFo`9c31
zDL?3cBjpGEZ=(F5|4o!1^uLMngZ?*Be$f9W$`AVAMEODgn<zi%e-q^g{cocDp#M#j
zAN0S8@`L_2QGU?>Cdv=`-$eOA|C=a3=zkOC2mNoR{Gk8MlpplJnev1FH&cGl|7OY$
z`rl0XLI0a6Kj?om<p=$5ru?A)&6FSXznSub{x?&8(En!25BlFs`9c4iDL?3cGvx>U
zZ=w94|1Fds^uLAjgZ{Tre$f9G$`AVALis`eTPQ#1e+%UY{coZCp#LqDAN0S4@`L`j
zP=3(=7RnF$-$MC8|63?O=zk042mNoQ{Gk7>lpplJmGXoBw^Dx4|5nNm`rk_VLH}DR
zKj?oe<p=$5rTn1(t&|`1zm@WX{<l(o(EnD-5BlFq`9c3%DL?3cE9D3MpH2Be|7TNv
z(Er(#AM}4V<p=$rP5D9pXH$OA|Jjru^nW(x2mPN-`9c3@Q-09@*_0pje>UX@{hv+w
zLH}n{e$fBflppkeHsuHXZ=?L6|80~X^uLYrgZ{Tse$f9m$`AVAM)^Vi+bBQie;efo
z{cofEp#N=@AN0SC@`L`jQGU?>Hp&nB-$waC|Jx`(=zkmK2mPNz`9c5ZP=3(=Ig}st
ze-7mb{hvemLI3Aae$f9plppke4&?{^pF{aU|L0JC(EmA<AM}3?<p=$rL-|4f=TLso
z|2dQ&^nVWJ2mNoS{Gk8slpplJo$`bJw^M%5|8~j``rl6ZLI2w+Kj?ou<p=$5r~IJ*
z?UWz%zn$`f{<l+p(EoPI5BlFu`9c5NDL?3cJLL!c@1Xpk{~eSc^uL4hgZ_6=e$f98
z$`AVALHR-dJ19Tse+T6U{qLasp#L3|AN0S2@`L_&P=3(=4$2Su-$D67|2rr@=zj<0
z2mSA){Gk7xlpplJlk$W9cT#@P|4zye`rk?ULH|1`Kj?oa<p=%mr2L@&os=K+zmxKV
z{&!M-(Em=#5BlFp`9c3XDL?3cC*=qI@1p#m|6P<H^uLSpgZ_6>e$f9e$`AVAMfpMh
zyC^^Ce;4Hk{qLgup#NQzAN0SA@`L_&QGU?>F3J!3-$nUB|GOwZ=zkaG2mPN*`9c5Z
zQhw0?xs)IDe=g+*{hv$uLI3Ace$fB9lppkeF69UPpG)~c|L0PE(EquVAM}4N<p=$r
zOZh?n=Td&q|GAVO^nWhp2mSA+{Gk8clpplJTjZC3{&$P~643u{kzWG(-!1Y>K>xc%
zehKJ*x5zI6{qGj}C7}P^BEJOmzgy&&fc|%j{1VXrZjoOC`rj?`OF;j-MScnBf49gl
z0sZe0`6ZzLJtDsZ^uLGlgZ}qWe$f9O$`AVAL-|4fdniBXe-Gsc{qLdtp#MFTAN0S6
z@`L{OP=3(=9?B2;-$VI9|9dDu=zkC82mSA*{Gk86lpplJm-2)D_fme)|6a-u`rk|W
zLH~OxKj?oi<p=%mrTn1(y_6sHznAiZ{`XRT(Enb_5BlFr`9c4CDL?3cFXadQpGWyY
z|L0MD(EoXqAM}47<p=$rNBKej=TUyp|9O-j^nV`Z2mPN%`9c5ZQGU?>d6XaYe;(xr
z{h#*?YDDvB2ReXup-pHGZA1&mj(n&Lm7^e7t+00<(zl{n@Y>OKG>uBYs)v-V@Y%n7
z)^5R@h0j^YYcKqrfg^|E>;>5DXh2Bcgf<AdjtIxjp*@hxB%}`udw0YBc__n<qELPb
z{4GO%R0+rT!hfw`{rmj>Qx5d3#5v@Qp5?qY3G|b&Ex`UsAfH9s1g<TRHZPX3QcH9T
zrICCNKr6=gkTd5X&+YK{KONa5v=(VU!aE4wB%EtU9-)0_L~ju76G&#@+-Yd(<g-W{
z+tC!{XkQ`!nTzsY5c4k)dTRlWsX(Rh-#+2L5;!VRzY-{E9*!*qe-@4{6?2{kYvr@I
zF{LMR*bQlWfQ9tSAe<d<>lWeo1)(2F`!0yJoL%mXt?)Sw{&rzRk$Ua{dq(I%Qk#v!
zu>;V)UGUi}l)C+*oVzZ{p$JmgF+xU2xiFsp|B%fHp9{iBngXf?kuRR-r0~}XJvbor
z{s7o^)FAl8BOI&28bobCJp`Y`uZQcQAO7}$-;SDvb9*7h4%cTdq&5j>v<r58UyCqG
zde9p9?1Vk!7?SraP{mtkm*DM(mf0nYgxvz;E}<UVAeFRm{3?xKO|$<`?P`ZMn!l(|
zb_?fB3)dMr(k@)%+l8xrQW#N$bB92<O=wHnBfG`+n-Tken^2cY*b@86INd9pyM6f@
zI{;~W1cp5#Q~a7;_#b+ey&iT0G3nVILQE?W*tWtaspA~%CoSIvJ+=ubN&c&a7LUik
zUg0cK=Sd+t4uE|S_LoCMC8LdOWkPJFzK`+!j2~e9AmfJ^Kg{?M#*ZfXK8DA~@c0-W
zAH(Bgczg_xkKyq#JU)iU&+zye9zVn5XL$S!kDuZ3GdzBV$ItKt7@h#b6JU4(3{QaJ
z2{1eXh9|)A1Q?zm!xLn9f(%cP;R!N4L53&D@B|s2Aj1=4ctQ+Mh~Wt_JRycB#PEa|
zo)E(mVtB#~Pnh8eGdy92C(Q7K8J;l16J~hA3{QmNi7-47h9|=CL>Qh3!xLe6A`DN2
z;fXRlQHCeV@I)D&D8mzFc%lqXl;Mdc@x<FE!9#r?<NFyu!1zJN4>5k2@gt0%%;RHt
zd<>6|;qfs%K8DA~@c0-WAH(Bgc>D~HpW*Q{Jbs49&+zye9zVn5XL$S!Pk`YGFgyW<
zC&2Io7@h#b6JU4(3{QaJ2{JrEh9}7I1R0(n!xLn9f(%cP;R!N4A%-W!@Prti5W^E<
zctQ+Mh~Wt_JRycB%<zO6o-o4`W_ZF3Pnh8eGdy92C(Q6f7@i2j6JdBF3{QmNi7-47
zh9|=CL>QhZ!xLqAq6|-z;fXRlQHCeV@I)D&L_G9~*B0eT_&&z>Gk$>agNz?y{4nE3
z7(bcE$ME<V9v{QwV|aWFkB{N;F+4to$H(ya86H2w<7asM43D4T@iRPrhR4tF_!*u6
z!xLb50t`=p;R!H20fr~Q@B|p10K*exc!CU1kl_h3JVAyh$nXRio*=^$WOzahPl(|O
zF+3rLC&ciC7@iQr6JmHm3{RNh2{Sxlh9}JMgc+VN!xLtB!VFKC;fXLj5r!wi@I)A%
z2*VR$cp?l>gyD%WJW+-x%J4)Po+!f;Wq6_tPn6+_GCYZR=oiNh<w^KH#`iORfboNj
zA7cD4<3|`jna9WQ_!u4^!{cLkd<>6|;qfs%K8DA~@c0=XKf~i^c>D~HpW*Q{Jbs49
z&+zyeo&duWV0Z!yPk`YGFgyW<C&2Io7@h#b6J&UT3{Q~Z2{JrEh9}7I1R0(n!xLn9
zLJUuc;R!K3A%-W!@Prti5W^E<ctQ+MnBfUCJYj|>%<zO6o-o4`W_ZF3Pnh9}Fgy{4
zC&KVV7@i2j6JdBF3{QmNi7-4-h9}DKL>Zna!xLqAq6|-z;fXRliFg=Tp0AcOzK`+!
zj2~e9AmfJ^Kg{?M#!u$)F+4to$H(ya7#<(P<70Sy43CfD@i9DphR4tF_!%BQ!{cXo
z{0xtu;qfy(eugK&@B|p10K*etcmfPhfZ+)+JOPF$!0-eao*=^$WO#xMPmtjWGCV<s
zC&=&w8J-Zs6JmHm3{QyR2{Ak&h9|`EgczO>!xLtB!VFKC;R!Q5VTLEn@PrwjFvAmO
zcp?l>gyD%WJQ0Q`!tg{Go(RJeVR#}8Pn6+_GCWa+C(7_d8J;M^6J>a!3{N5+lCzTI
zVZ!$@zMt^}j2~qD5aWj#Kf?IQJU)iU$ME<V9v{QwV|aWFkB{N;F+4to$ItNi86H2w
z<7asM43D4T@iRPrhR4tF1Q?zG!xLb50t`=p;R!H20fr~Q@B|p1Aj1=6c!CU1kl_h3
zJVAyh$nXRio*=^$Vt7IfPl(|OF+3rLC&ciC7@iQr6JmJ63{RNh2{Sxlh9}JMgc+VN
z!xLtB!VFJ@;fXLj5r!wi@I)A%2*VR$cp?l>gyD%YJW+-x%J4)Po+!f;Wq6_tPn6+F
z#KSP6?{~`?-^ciV#t$%lknux|A7=ar<0td@7#<(P<70Sy43CfD@i9C;hR4V7_!u5P
z!{cXo{0xtu;qfy(eul@-@c0=XKf@DXcmfPhfZ+)+JOPF$!0-eZo&duWV0eNIPmtjW
zGCV<sC&=&w8J-}+6J&UT3{QyR2{Ak&h9|`EgczO>!xLh7LJUuc;R!Q5VTLEn@Prwj
zFvAmOc)|=%nBfUCJQ0Q`!tg{Go(RJeVR#}8PlVx#Fgy{4C(7_d8J;M^6J>a!3{RBd
zi84G<h9?mZ<G+#u|CSy@z7>Cd1Pi~v(ub}?(x#TKL1dmjuxl$a&+VGsg3Mbd7q%lC
zQVPf5#`-}!ivJ&#q{5jT`2;UT^d#V?%xs_EhU^=5O->`v)=hJhsBG)}^i~wwzGvGm
z;TOlTaJB@_l91nx1wT#XAb%w&9r36OZAGWit>{to9W2FG;W!Q$Y(jlFRD<&1*c#z1
zET(lJ@;ieaLK+8uF*+b}riq(UNbMB}z6HmuyuVb~|Fp0lFYo8k?~=S!^tw=nmi(Vm
zFG~NRkcVcO*h$uyf{#&yc%)1?;?3psg5`9Q<6qE+7w5S2fsp<WOn&nw!5b1jQ&1+5
zS)r6X^hd~%tX2Dy@Y#!{a9%t5GyLsB{|A42g>u`)+*Lw<@#H&k`(_q43ZvtgxWNJY
z<~A+}btBu;LK>dmvHKvDhlH(7NaHYRd!Kk5q+_Y*yG1`m^!=irD*7#=FBAQ7(N7co
zy`rBk`qzrST=ef3{S486TJ#B9RT7Uv^eK;0^eIo4=u;k*=u;lG=u;kz=u;l8=u;kE
z^eK-{%$xG)MW6B*M4$2)MW6DRM4R%MMW6CmM4$3lMW6Cyi$3MC!Dn9*PmbtQ9=qsM
z9*5{t9;fJ29+&7-o?OwVJZ{maJRZ@fJYM)5P2$NDeae$B`jn?Y^eIoF=u@5|(WgAc
zqEC5BM4$4MiazBbF>@w~r(E<Yk5BX|k6-jDPeAl3Pf+wJPe}ABPgwLRPek-7PZU14
zC-GE>KIN$teacfM`jn?y^eIn`=u@6r(Wg9hqEC71MW6DJD7HU|r&07NPm}0Vo@UXf
zJT0P6d0IuE^0bLQ<!Kjv%F`kGl&2HLV;1G<5`D_kE&7zFNAxLAujo^rKGCN<t3;pj
z^ou^_84!KSGl&xLko=D&hfpFO5`P#a;vw-@qeMI;{s>CML*lPNiFio-QIv>>#2-V6
zcu4$ll!%AKC;!imswAFuC=m}e!fzZV;vw<ZqeMI;{v=AoL*h@NL_8$^G)lxn;?JN&
zJS6@sO2k9rZ$OE7Nc=gJh=;`Ah!XLT_?u879uj{uO2k9rZ$XK8Nc^oR5f6#K4JG0s
z@#(cedFD|f9uj{CO2k9r??j1sNc>$W5f6#K8ztf)@fT1c9uj{KO2k9r??s7tNc?>$
z5f6z^#`b6u&jFN(hr~aK67i7um!L#EB>o|kh=;^Kj1uvX_(xD89uogjl!%AKKZ+9Z
zkoccKiFio-V<-_1iGLYN#6#jAM~Qey{L4`y9uofqO2k9rpG1jxNc<~MA|4X|6iUQH
z;$Mjp@sRjep+r0+{%Mqmhs3`cCE_9R&!9v+B>puh5f6!fElR{g;-5u{cu4%~P$C`@
z|9X^&hs3`DCE_9R&!I#-B>s&k5f6!f6H3HG;@^z^KknW<K5pvV|9>QnG@8-uGq%UO
z9VgCWXI}_ez)1)R4LhY!pj^1!C@pQd^s-)hEsaxX)7yRFmeSJFa_PpU6k56jQUU}B
z30cVMEMDSuJoebLk4Dn>dB&k9sJvd>-@iY}n$bt2k&eze&-*-&bk3OZko128<00uE
z0plU*M}hH>^pAn@ko04~cu4vuz<5adr@(kf`f*@9B>gjBJS6>dU_2!K1TY?w{sk}|
zlKv$y9-?o<Jqe75r2hvP4@o}-jEAIu1&oKJe+`U>q<;g9hopZCjEAIu2aJcLp9aQ5
z(*FyLhoqkY#zWG-2gXCv&jRBi=|2GDA?fFU@sRZMz<5adkHC0H`cJ@kNcsg}JS6>R
zU_2!K7hpUj{a0W-B>gvFJS4px7!OIm2#klMUjoKM(mR0hko4by@sRY(z<5Y{Comq8
zegzm0Nxuq=hooNv#zWG(fbo#@>%e$O`VC+_B>g5Z9+KV-jEAJ(0>(qqdw}tf^j=^*
zB>grp9+KV%jEAK61LGm-1HgDl`XDeKl70sm4@n;a#zWGFf$@;^5nwzdeH0iENgo5o
zL(<2A@sM;kFdmXV0gQ*FPXgm1=~KXXNcuD|9+K_>#zWG*z<5Zy4;T+g_XFc0=`+B1
zNO}Mm4@nOK<00uGU_2x}42*}QM}YB=^e8YMl8yu8A?Yz-JS3d}#zWHMz<5Y{0vHcT
zCxP*h^dvAIlAZ#_L((Z=JS3e4#zWE>U_2z91;#^+mAD)*9+J)j<00t+FdmXF0^=cR
z9T*Qumw@q*v;mBVq)lKvBu&47yN0Ew{L|lSSbBI47!OJFz<5Yn0LDYo4q!YaEdt{q
zX$cq)Njrh@khBbphooJ=cu3j}jEAHZU_2!40mehpUSK>V?E}U`(tcn(Bpm?8L(&xg
zUwKY?Lcn-PIt+}5q$9w1NV)<T4@p-7<00uPU_2xp1;#_t)xda2n&ST(&Ph)#FdmYw
z1I9zr^}u*Yx&asuNjC!HA?YSyJS5!=jEAIW0OKKPivK@xPI_hn<00u;z<5Zy6&Mdm
z&j!Xr(sO|Ekn~(&JS0627!OIe0plTQivK@<PI~48<00t<z<5Y{Aut}2UIdJXq!$C@
zA?YQ+cu0CFFdmX#28@TKDgM9rob;>!#zWHQ0plU*mB4sN`g~wKB)tk44@s{E#zWF;
zfbo#@T3|dRP4T~WPI@i`#zWE_z<5Y{9WWk}UJs0iq&EQLA?b^N@sRXJU_2y!F)$vI
zruhF|9@2lY-3*L}q%Q%+L((4t#zWFufbo#@rNDSd`Z8cVBz-wB9+JKS7!OI4t*tpH
zJy!waA?d4u@sRX2z<5ad!@zh*`dVN-B>fR!JS2S`FdmY=9vBZve-s!GNxy5$@22NQ
zU_2y!6EGewD*q1$#zWFK1LGm-e*wlr(zgKPA?aIz@sKpd|5u)qo{t0LA?Z&5<00u!
z0^=d+PXXg0=}!aWA?e$I@sRXqfbo#@?Z9|Qn&ST(&PmVbfbo#@9l&@<`t!heNcs!F
zcu4w-z<5adPGCGF{cpf{Nct{dJS0u=|0m8#&%XoXA?dq;@sRXAz<5adUSK>VeIGC$
zlD;1p4@o}&jEAKE0~ilUQ~dw=bJFu=U_2!KpTKxXx)T@=NvptkNLmBNL((x|JS5!(
zjEAJR0^=cRivRCDCp`}V<00vXf$@;^SAp@6^w)s#kn}cSJS6>fU_2!KU%+@s`WwJ_
zNSfk*?VR*{3m6Yce;XJNNq+|z4@rL)7!OH*4;T+ge;*hRN&f&C4@v(J7!OHP{QoWw
zkpujH1LGm-9|7Yb=|_R_ko1p%@sRXmz<5adC%||}`lrBnNcwSLJS6=yU_2!Kb6`9q
z{RA)`lKurS9+LhgFdmYA5*QCj{|_)8l70#p4@v(D7!OJR8W;~r{{|QjN&glY4@v(H
z7!OH54UC7R{}&h!Nk0ROhopZGjEAJ31;#_t6#rj&PI{gL#zWH21LGm-KLX<+=|2JE
zA?X)@@sRYNf$@;^Ux4wD^k0GTkTk{rH=L86?Z9|Q`bA(oB>fUF9+KVxjEAKE4vdGS
zUk1iQ(mR3ikn}6Scu1P!|4*Egp4Wi!kn}EKJS6=(FdmYA0~ilUzX^<oq;~`3A?de(
z@sRW$U_2yE@&D(~NzdEBcu0C5FdmZL4~&PT4*=sK>4U&{NctUMJS2Sx7!OGw2F63u
z6#w6QPI`_4<00u|z<5adI4~ZP?gqv~(kFoNkn~AlJS2Sz7!OIG2F63uJ-~QKx)&G^
zN%sNcA?bc#JS2Sv7!OGg0OKL)L0~*2Jp_!0q=$j=kTk{r@A43RLw*z(4@t*?@sRWw
zFdmXl0OKL)abP?oJpqh|q?5pSNO}?&4@pk}<00u3FdmXl1LGm-3@{#&&I02h=^QW~
zlFkF;A?X4z9+EBs;~{As7!OI8fbo#D0gQ*FO<+7EZ2{xq=Cj>JE@tTwIAA;^%>&~h
zX#p4yNmKlPB}<PW0^=cR2^bGaJAv_#v<!@gq+P&xNZJjIholu?JS6P_#zWE+|KD&<
zdVIimNZJpKhol3*ct|=3jEAH{z<5YH42*}QBfxk_x&jyvNmKm)iF49Z1&oKJqriAb
zx*8Y{N!I}5A?aFRJS1HQjEAJ_f$@-Z127(vruhH!=cK0z7!OG|1LGm-8Nhf*x&;^y
zNzVkvL(;Q=@sM;YFdmYg4UC7RDgM9rob=2E#zWHcfbo!Y8!#S{ZU@Fg(({4wkn{pz
zJS4pk7!OG=0>(qq6#r}Iq-O~*9+F-PjEAI`0plU*<-mAIdIc~Zl0FX@4@s{C#zWHQ
z1LGmZ#$=BI{dZ(XJ13U^8yDr?yVJANPuM6*bfBjxtpaeNHTdzUVZ5?xY@KVdhSuZu
zMvMfTu{CMI7OfSpZZ=Y7E|$(bEP?r$`b8M&F2iW{e2l2pqE)R!&+cN(y-i4%%kX$t
z;roY?me*sBd=y*F8!__v7+UA8_}OjvojWiRzY~w~C2X<p=>WJNbM-;2y`AXcbRmTw
z!q2{n-qtrTV)!=J%J2UNz#~Z4M=?VA3AWNd$4K}|OxtfT4NtGfOGC@}BSvR`!xDZO
z&$SEpc@wW=H@0|hVXL_p^I;#JfB%Q4m&2IW<39#Ch1b%Dt->IZX9TY~iN{Q1KIJfy
zEnvFMqnL}Y0Vg?ta~%NA;{z_}2Ci~dxw8$|a0_tFHNegM3vhG(2Hb+%fLr!+;Ld*$
zxHYZ7U1$Q=fy+hvfZKdEaF^h=E#Cp|%1Yp_`&Zy@I1Jpa7XkOLUjpv-8Nl5k19z7P
zxO+YU+<jfZ-H+dW;5cyF4Zy{Ig2nd(;2u5$+}H8=-+p9z`2i2yBY3PI;rox@0`8~#
z$`9hWU*NfZxd^x?R{-}vnBJ$B0Qaj1E?MAyjo0;?*Ma-(bHM%KN#I_<^ZW(R{TDp;
zUv~iaw;utw{bAr<#B{v09=IKNjep0_UkTtc2HdOo-PfK1ZkGn!>o)`U#-+gR#x%bD
zTj2KL_x58x9Ki1##Ph!s0`ADyfjf!EJasp4r#}o_PdjkEn5Vtt!1ZC?jmYJj_uS|S
z;NqyqFpm=d0o*tqb7CcMNjz^d4_pRy7Oy9V$IRh(^H??o%<tm2fHQtnz5&gnm%|Hx
z0p9T);KfehrQ3j4o(10XIPl(Y0Pp(}@Sz^ytM&mOeFpey+*b2t;A^i3zHSBZjZxs6
zn}Baw0{qN8@Uwpa{Jaj}+x`{!_AcNT3<AFxKU?}W;Lm#s_|-21f8iML>putl#hZcO
zGz|QuxX;x$1Ah&^Uwb$3AHg)-h@anT0{_XM0RNe%f&c8Mfd3+X_HVfDo_jG^--`h`
zZr>WgKo!6HEj-TmXJSz3z$J~r;3*6MU&o*i)BGd6)<-cdKgKjYb}0sKnC_oeVt|I<
z{h5r*6b55>?kDgXfAL2QwD8)W#Pt3TUi+^XU?B7I4(Py{UIAaL|E;6^O6ySGK0S4m
zKkq27(>_q%XZjQ5%(t*f5J9-b1^?Ke2y~0{-TkI@lN+}QJKnnwx8uG0IB=WHj?+Q=
zNbERe&F^^c=dk14&ttI<_$#N_i7A$BDVA(0mN3PVEya>8#S*4ivZYwErC741ShA(K
zv%|VpjX@{m%dheB>)Ykm%JS>V@@s4PRW83)lwU{7udl2BKfb0Gyr#LfYihS$Q!8H6
z9NRU`v0YOuUQ?^>np$nw)M~q?R@*fNw(r>f*B73rY5Em9tk0@jW!^9aK`;%z3xfRM
z1<e6ra&l4#)Gb`NunwA3s8>Dprs=AjwRrL3S(PqRqu#oX7dzlF-!*fc-QC^Jxts2}
z=blY)l?oqHJs;Bb=*pY!zyJQ5Rz`IVL<pLCA#GTqC|X87l}hEoRADat$(#io$AQIl
zfl^VI=X{a+`ud2^rSUGPQ^8O@2FI21lcS@fllc;-fd$Hn&2heE>E_Lwm$pPTJ_;LE
zEF@1}5YqAPH{X1-JDwIaFd(Ssbt6;A=ktY3o+i4{7pFhj6nMihc)`RAo)HT3p-?y+
z4oy#V!Bg}nTV|<PES5|Q_quNWLTUa2n&!`MZ*QLuSE|rWe{xALUy@$Jz52%!`SI~Y
zA~8Pw3Wrp1(4Wln4q28RJZ16o2lvGf9yoXqmwhzB4^(i|pDc+kOo&UAy2^FOhjpjH
zR(EFD>P|J*ooZX%skPM|AJ&~}TivO))tzcv-D$Gb9oKMwyyvk;9{)bX)NLTnP(E_O
zrOP{@llwG&x=qC^<qqN19@3x<xNGY+!clk>UWBdOI?mDA!F^1H@2TAPzK3rbd=6Yw
zXVQI7KJwHL;Oi=ksodBYzG)BvSIRm*G&r@V8{SeOqH>W4zG*N9a*y%&&K)N^pTIi%
zpbAS>Zs}5d(_jy{<obMg<z;g=U`^NtE=MLGZw!Pbv`T1GxwbZZ)8G)e+-DNIFQ2p6
zkA@1LQ@PK54&OBR9-fn%GG9Nu>mXX~dlDn`2q%l{t-GurSYM=n@@w6t!XA~|vj^Wa
z^oFU7He(rWvX#*$TN!P{GHSJzQLC+tHewlVvX#-M|Bv>)4wHHpw`0e<@7K|Ld9I(H
z&4cE_bKlD|+vBdz4)am<324@fhyz;mKxkyRWTsL@T1vx%zCdVn(1-Tc>CERno>WSf
zRSp-YET>W)Pd=|oXlV3744TuEPG>QROM1@yU9aSdJw1~pT(Ub~oH={`8!yd7Q|xrc
z;|&cxJrxxyhl{hKqNk^!As$zycpT`17&LnQmgV(YmfMxfgOwP!tjS5sN=*u)q3eR6
z$2y&nh$sdE9H$~oR42y;0-}gjM~Xy%KESkiy@KHJ;NtaqYieq$XUwRs!38I;2RC@p
z?D4{znq+x;X=>`g>Dp_jmyV9|h9<Zg_i9Wg1tBpd2veEN6x|&_e@*9k6Q^V{p~Dm=
zD2Y=BCzZp+No%x4m6A!I4=_QZgao2ROpaGY9lX~o(c*~KOeM!FYo@UJc4Drk(_Sy;
zDu)Z^xYwIbV{S{b4D<mW#^Wy(qyR3SqX*Al<C2=1{0>~)YuBGRcJRD)C$O@2Vy^b}
zH8o+ba=2iQH#PP3VQxzm6+j>0VNxl>NT+c@mJJRL4xKtRG>8jMsWfg#K@Vk5PftES
zz4Y|#!09)?nO=76C~xS2r*SW`ieI5s+-I|j`)pQm4_d{2HmkVLW)=6MRor8<ihFEU
zaktGX?)fLH*kWyQedlFN<)3zJ-}CeJq^(a0-~8n-e|f9*pJhd}*X%FPz2#TknpfVs
z7)!OAW~=$^e)ZGZ%$?O=<ncfq)&phZ=@eyu>Wpz(RZa{kO1_{M^LiqwB9lTOs5L{Q
z#f(07a>$UQGKgVC@j}u_j*bqGC1bEEm&>ImCMJ~X>RL}OH+lvOB9+U@vgmTTvd50~
zV9|3@Fc=JAQ<6Dx;zV4|<=j}AWwOUGkL{}*!qzhqjr0tRC&$yplG<#P6pstbb#ye*
z(AZQTjVc0!s}(EVf4ns@Ug9en@x&t|qrHa?9jfcNaDCIr$eVw8>7|!?M@AwMPi1B0
z;7@=0OkX6z1=`x$=0+ls{wJS&a(858q-Nc^b(LhnVaen5S1h>Xk|j&lE_vp~{YMY<
zPUh6+LbkRcS}63s`R4vhFS}~X+SQoM#TV3>y?^@IE&C5-r4^UQ;5<R#3~XaFnRFgq
z5TN$f643j|(u!pj)030ABJD6ay$y|CaNxTNDa>jUN`_#n?)+pjSt^;}-~>(Jv2E9C
z+@WyL!Gl>6EEC2jQVvlRbbm0+=_S10iVBxQQ52z2OcpCDqLtX_`YS5j?r=p#MMGO#
zOT_I~0=UtQQ{}vQ^Jcp7(^9D<BPBY+r2;riA(L@%>5R|glwFeSR2`xtS1PGBiqGxN
z717U0r%RBZ${XMgr958QX%+Cq%a=zKba0%B<k95v<!e?hTC`}^^5r!(i<U26e(CME
zU$?BLreO|l#6qn(|MuH&zo};V^6G3h8%FSShBFhUOLq<oxP`ufmbyqd>JJB0hvFW|
zq}7_b8I{rDl#z>{8OT8VWFpU3&+n;kjs!{*n9)2sJm}*E0$~q2Ar1%mdpu4kc!ZOQ
z@0Nw@=&11Y&&xfyq;V&eFeD0=Q_4#!XIYwrUQq@tL3N;s$d+1T<O?PUqNEr!*3Ggq
zxuO69KWR7xykMu(VW9<~lgB%q&dLB5s_ArQvw7TDLLaP{&87;tQOAo!4^GHuvAMv>
zfv%tGFo3f-)jc(uNLu=2)}%+XR+;fNk}u#F=?Zkig2_ZWWny#S_c=YHiKh*PTqc$m
zo>dNnLMvNwT@QtZhQ@FOtt^)u8tP5p`XmBwOp>Irp-?C}H8rI`0Z&`9ID=P}le_jF
zHIt_XN}R(|1@uD&t;XLndzK<O9FBC+gk$@9PnBHWTx)BvUMb>fEej;_a!tcDEvrz%
z{hZitxfR^#cDZD%P9B*y;z|G)*==DS;)J=ZIs|mXO;r({qKIpB=L=8E@nC2Uo-65w
z#_NKmdU?^rJS}iVL(+8%&uW^I4{Nhw>UzmE$Md)zFinIAu3-CCRasqKSApw66mxJ1
zRhwo7=Di7FJS$h!<)Z5Lg?&mM1W5sh<`4zQW4=3}kSQ9Rm2v8-SM(MXBcBkGDStL=
zo{es{A?I(iasD<N=Vv14Z?kc})5dujIlscj`E@qVci1?;-p2V2)*a@@&5v2PNuAFj
z%%17|kadH#s62nj+G^c+cKtJA?6>&wFRn8;oBv@xR-W(0^%+K<W;0}7X11JNUu14E
z?>@WF?VTOQZgnd^ivB1cfnkjwgrWvBy8da)SD<t8v2-n;N0#S!1(_lVQ)kYc$qJ#y
z#>T+Z$m!FkN2W?x?egh<Ov-TD5eNiSNaNAblr$0D3Gn+>XBMf)gVV3R|7MIc7yq>P
zB1ht#citIw)FDEG&Xa%s^Ph*E3$D20irJ@jJ^l34ub#@`vEzL&eD}NG-PtS8or_^t
zFP^6evL;H9fmyRu=g{%v$3+OwQr~}b3<UB+{_ss@axw#o-|tr-J-O{YDhA5~7cAx#
zm-6luQYxF9n*(kRE!(kt$+Bh3mM&kqWXY2Am#n?yl1t88I=i8vVLn`lX>mbb^XI`0
zy6!C7PZkVaegDl^@8)#CkE$OK>#Ohpb@jD4wbib;=9+6-YdCB$-4{a)9>j%a6=K4F
zKKS5+o3N^W86JTb%JbKtQ~czXEnDuyTJt!bzY@KD{}@Cel?s6${lg*1r_}e~jCp}A
zjPQp)f#CC}roIK-R&+NhgypzxJid2PE@jW=ORk(tOyRd@&OCkcTRaD*=Cru!DFz${
z!e<Xc2k7n|fV$S!);bvM-u51a2gv6n`CC{aEDZxxli*=mTV2Eui%4t5zKOKa!J+HA
z1B&9d_bB{+d@K<D7LQ?f%xO$dmWJ`Ti&myJ9s&JKP|y{`qV;ZjkBXJ;{!eK4-?7>K
z%Qm~e8SVZ%HoO0}&F-&8yZ?&K?zh?O{%bb7-)6IWPwW{?^vLVa|6$LbJ%9MPb(=NE
zQp)oj>l4;@P2D_Y?k>;&h4ZWCVRM(c$2???m?_-$5}NkI=D*|o0ybz~^ygx@xJ|?L
z#Iq;xxQRWFKef^N@Yy4-v2GE6fT#I2beMOks!J3hGoCCtb-(6vfF(-0H}mJ`yCjTC
zDh!?L;!+vSn-!Arp^1EaBn`S;>Jkj28g2K&nUz?lD(h>*b#--ZZHrc~UcK(ho95P`
z+i}rFS6sVp?FH*LUUvEA>({Pz*EiIyoEh@YUa;|o8*aGv(hIL{Lx-@=xp3o6H{J9R
zSdZz@9THb80GE}tr~nR^BA-9g%s8FtbQ&A?YV;LCp^#b|PeC*)TO)%5Q=G#Sj#gH=
zKu;tRMev4V;JfjBjB-|7vT@0#O`AS{#{(PT`{nrwcnyXew{2d$c=6@%Yn)%hX!;5G
z5zbG*)9^CtSK&$0LiHt=UfcoSaNN}1bnCxug8zlS@_ZOxg2!Qx_&M|^H~#xY@H-eT
z&qq2t;D0drX_t>rO@J`$(=bQnXkA4Id@FcU@k}t--`_uUrg-6|rHdCVSfJLvbsE;J
zsWf-Jw7r{mH!NDSa&;A?-+ue;32Vl}7;NQvC-<-;n;7T$htaC|NXYdyKCN3@Io|Ow
zIASr;;gkf<`ifvW!{MzSY=gyY*0RPXky2_Djc9T*4PL)bhGKeZ(&ZMxgSP8Y@w;%L
z4uwJ?m&scAHd%6@wdF>8oS|qmDoLpnkG^cFsDtS7MBOeSEd)ZT<e8&Kk9PMbdP>*|
zIGv>gdhKVxjhD=oOo!XWn^HlG8eo-lYq(I;V4CP1AOw>65?ZXT)+$asCvW)zK^Kp1
zSV7OB<zmahbD1orXv!ELA0HVQEaKa-40%rRx1I^iTeWIcAkfnz$wDEMoCI$}!`hlk
zxyLzoLC^6&Kl<pSPdxwjGg)jeLeBhtbm#v9QB{-kCG>Jd-J8^+MX=IS#?HjLExL}e
z2G0w};+aV#fLdD<!T^>tTIROZh+dbGoEp*r-O7L@^bf|MOTai7OTb$dGR%h&EBrvh
z_!{r#u>=I;VKA@+a>=QT!GA??8i~Zil2lVG2sPd=j^{OzgUnPak1gtOx(gjW$RipR
z5Bi*(K)JHjVSz*7yWD0WZ=$yv&zgc-mvUHw<n{WBx{3Dc^as2OI+6xZ`4}-(HuVz6
zm%!v=E?v)N@<!IMEY*W{=J9z78O6f9Q){z17#@y~$g<0=r2G1YlW7MRq<zqqF%>lp
zS`be|?(tdZ3T{d0a_i&cMb6=P^Gs1z>v~-14K~eanaUKfB!aVBn`_YNE$|8!WiEzR
zn#uB9)++Lr=E|l<&m?jKInz`<ShMS9){md5GY=d%pw<qKz|Ng-ycP~uR@e4E|J=@_
zy$aus#@8H_Buq*&sRgs?viHnWi-V40$}qcJ5_kneHyUartuAb#TbC)6OrG3e^q<pH
zm?us%qm#?1x-7ns%9=VlwVKQA!a&a*Qg~kVP>40s>+mKfu)S4lWf2rb@|hTjO*kS!
z#mi3#8Qh2Sy3qsVx{qnW;ocHOXrhFzqTn%lbfe4d;~L~#R=?~bzp2(OFons?nTd?f
z8yIMueEmS*DXdbVd_TI|JSK$`CVJv}%BedvS50)$vgX=Fbxu+BU~TJp?OFGX{YMd#
zYHg(lYHNcndMSDOu(GJFw%K`7?oTF@&{V5Ww@E>4lY+K3snXUa1+h&E+S;U`txXDI
zn-sLQNkLni6tuNTL0g+7(%n+nqtd<UjT-!Q`i3dos={gf)1aB|k*=eAq)5QD3Qyyo
z23Lbf_eJ5T3KITlPy~_ghr%%x;}R%n-~^HGgThZ#7{@;iLLk!JPpDMkulT3IMiA)+
zC?r&9#y<^CgGe_%VZVwoBwVc_u|>M!i4in7@lS&S9#lA4q@;!LPlNGtey+j%Tw=@5
z4YvFYV16#K<>yLUe$xLz4cqdw#+IL9TYlEq^0UKwP<r8HcX#*67uH!1S`W(mr6Q_4
zzZXC0?67WA!$#5>g}x~-w!E8fUIVW@_Vj?Pa)JOAn-^m^WCj**-hBPPeDtcTuDbqX
z*KLMPYB*U8R`FvK&S1X4yA{5WGn{Uf3kL9n&q?>sLBpAI{}y--=Wa+q54=^LPr)c0
zgXgf^o>jxglI<(Sy@x~Xi3zEuMjRh01Zz~TeK!2?VY+u9V;Ea3<Pl>PWAPlKJr^Gv
zJFx3uZ*T9xHx7=$gc^3r`3WoJE)*nv@WhZ+HLDS$F|JSm_rAAA@ereL?c4Xw4(l$*
zH=cd=*>81N_XywF2Zz*fAToNyXsa1dcqjk%#7^V<o416MDwjx}Ju`YEdL~78VaY{(
z*j-ao9dSW6jvjIhzDn58%HHb3?se-fSXvE3yI<PAop!cxXSB==wquIN<E5QV%hc!v
zcRqFc^uQGO>SoNCaW(?n^ggxZ{QpBOS@VCWB>`J4srrCg!u|4>o6%Kkvf8Z8<#~=(
zXI+I`FSc&CE<U>r*UwfMdEn{CUV$|?Z?4b<?^GW|oyqA66OW%bbR5g**gGfUalQpZ
zmlnQUVcbq5hd6ihg?!LCF~(N~i{%RA+r9hA?>+v9Km6e*-~Pq!-Hz+lPsbnpbq<)W
zCN;sr$hcTjBTXdQLx=Z@E8COP)uhv%&lif=Skb+KZBWtBuwwmr^XAPvf5UkV4NYNe
z>BCLsYEqONXH{84CkAz?P;iH=iM(8{Cft@S>*1^L3)sfrcH3?1;T!N2eBHfe%ax0<
zQC@syxvC_?TW&tz*!jfYCcTOAnl|IeXk@yobh@#MU{O0<<+Fbktgm;vv5LgA;EGh&
z)NG?&wr_uF_YhPsy<pwCZ5UB;Te05YZeEW^5wVhCWx>t=s8RR{R*pI!ObwhqeQH~|
zj;z2svcOhH7TD^@Y^);-Y;|OTt&YsbI?`^dBki_2(r&9G?Y27Ne(cfio=1ARA9?K2
zM=r9iv97cp!Q~qMk?$j9ma0ySb7WBn(4&ZeAj+wXqG34P8S*%DX3nWVTV3Pgw#AKg
zb6}<#oQ$7xlqSL$yt%^@CCAD5q{?xA+`B$FQW^=?!RIc%;(^aSaK*)+gd5ag_wHZ2
zvhOSo^L%viJ6YFLZ+5F3KMQ!tNNdWJ?wBe-I-7+;GS(^O@+m&RyHv^L@IfY@>jG>N
z0#3t;-rq#7IEiyE1$i~-4ps^vrqPGZq(u;_{D?3s3*b`&VQd!!-=TQ28|U~bY!ZUe
zc`Ie`_6!@wV2>B%Rdb>$XADCpCk8YnBnxgC0$%*Uhe?Re3Y((?!>TmgpMb!uXcq)c
zmk1Tuo}kwX;)DYV&REbHc6lIgr7UaGEP&z;J23$T2o|e7uoQeXC0`Oehun}1#Dbwk
z(MD^$)MJ__ib<}%dPzv-%y9@>7`vG0=vuk}#S%J{g;+2<HaY=r#mjL%j|-9`i7e)=
z8#)8n<{L1cFtQ>f^C@gHW5MCQuOH&88=3@RMpGpmeQobB8gjH;_u8@U&G>+4sC8KP
zX4vZ9jQ8Qw3|rlsVXJ#HY;|wOKRt=K%({#_dUO-LW8J&P+-dHl_vuFm0!?c9wF|uH
z_Va}TI@VGk0J5qSGZ~LZl02SF2B9ONw>Lg6N#o<QXZw7!XG26)k^=(`4S_&I!@vO2
z1;52jAI>nakd0WU;Bb^ms!%F999@9He<ouXxtuEGa*$CKbZtwee7;oTd6^zJfj6J;
z@6YE)M|pm96b4kKLKHKZcs!F4#R__oWIO&h!RvIIrqh{B7K>O&c~y}VC7mu7(`ob~
zRjx>3W~f*Ug^nGYnmTq2##ALxTie%{O!oEF)&^8`ZNVuB3i|IZmx>E0s*<OeNR}Pw
z&gbb-BY0)GzFw9qD^0Vq5^7Z?uIq|YQK6ul9jB*=<#L~c<=*}Q%xT7QZ?~0uyRF=3
zV7bq>mHTX4xzDzh`)pgehXw}rY~Q~9@2|f4>VZ8wckI}403K62WyQlQK9|Gm)C3tq
z=-P+eZn`s!B~%Jl&t9}>Q6sEYJN=;uMi{(Y-O|?9Ru}R+RQf@vV0Cr4rl!V~%jM=>
z_^<cfci-iBrtjh23zqOMMTlH@{T+AQv3WtOOQoNOQGG>>Ttsxd-Ljm|=ZmpUXE9%p
zIF85YCifKxaU4ApaC$r*L(gJFl*Lx3)1S*)x^9$GQ{)nqvL%(qhKI0tuwe=|G&B@b
z0|yTt9EQWV@9=<`nJQ#^PMkb>vOhC~g>{lnEGvpa_W;w`46Zq2o$^${Nb+VT&uifM
z3hp6dkVO443K)>!6mxOo6R8aEz*B32gNJgj57noHLLm{;p48KL9a7B2?>}^U(BU;x
zX-#lBI6Rz*yXCME;^`hchqb+A#9XF}v-ot{lq5|kSy1l1qWVTKKP1d-AFp6oQoz_S
zDw@KX9^DtvgschWjw|Jw<bR*IB4n#c%KO9>q4((<rr2tdVyj7tttKgU4=0scM_vqi
zFss#vplrKn!6TKGBPv%}1)^o4t&XU|u9Yiysocu*;UNLD0jo@@gnLJ$80iagp+LSv
z9z>pBy&Bf4LO78KqeqZ{haSQ&RE>^SsodxYuAcw;>*uT7>$`9@?{s33I%Ql<gu@Ay
z3x}ukr|EqNJJ*&!_5TOL)?@xeZTZt+%b$8%{xsO~$9wSYef##keQ@udJ$v?|kvR;*
z(u<l<)Gb2;0lW=<tZ4p*c^6!8!8|lB#Wdw`6WUc%ST@nFcyL}i8|&EYOK)EfKc<<x
zy=+%Xu^3r=HJa4bizA5NJ0#%prY4#BWFnDB(p`q>ySeBpa~!54gB-+gdvbVqcoHoM
zgKM*tM<dE(NUl=!<sHz&;jlh%eCN)c$I*TiNzyZ;XgZ@A9a)Lt7-!@)DR0PV5;C4Z
z<jXf_c~PU^J3vID2?_!|zjMUskysZkpvbb{??*F73vlDNc#dvXSZEydD+o?rz(|N5
zkV5&+$l1<U(`i-&kpg*vNKwR3b+g<QnYu<lfJi0n#gca0O4@BJX*ZU%+g8$UTS>dI
zq}{fXcH2tYZ7XTFy?<WW4%7}@9)eEC>3j_~IJEZL_<D%rnixW+LAbnaX5|z{$h3Cj
z%9F5?J{=w&7{CA>*9!U5r{D;!jgSBC*YGH<x!l#&&_Zj`=mi(RM{up216N@VthMF9
zCAJ)xk2$c`mIE7XInanXaK0@E*4lDlr7Z{6{!>i6#qq;KhYtPM<>edJJIk|<jzy!{
zcUE;<mDXkA!!P4rf9kOAFS{8kAAtdlPr{_;@CG22(HuqzYO1=RzC@2eCrYx2Q)%dp
zKmF-Xy9P>;B^@0d3j>(DD({1|7EXf%6%`Q$vWa*+K9L7sRYeSI{E<_qP94gGy<V>;
zxAP+F-_OQdUlg|ImVJ3W{ETMd?zvbvDnAqYv~VBzVa1AN^)Rsa%{SkCCl0e#ub{q@
zhQ^n`i<sWZiH>b5&x56fP2ga1aw?C$DOPZw6Y{Ca7}N(mXlH>y5SzkipnlPsHEWhN
z2h1^yVJ02WglEcvM+>{b0mWiA2Tp3ZBmvS>#TfYJHDQc2ci#N<>({THbIAi6;F0pI
zxv!p6-238-FCKNl)p&@0Xw<?{KqoXg7>7_4zZ7sm?}=m#x-fB*Uq#OblUV{m<1ygZ
z=m*8DhrsHBYP0<C+oY%6rdcZCOHnsDz;_Kws!IECnm-;N9EVU%MMXtT7{&+UcwM@w
z>$r^LYf;Z+@ojQa=Qw=FN}W~di6EziF=yb-H@EMHh3i+WSh0Q)?El-F_+^QnmWh%V
zFIAMv!YP+Gi4GB6s)x#%i5?_|omRQW1(Y~+Kk9wcQynfIUw|HYRaE*EH@+(hI$CP^
z>cV)P5D0KNaGA+u(v%@51g7u6U5?hV(q<hiZPu{@tz+c}+%Z~)*0IuN9cw<oI#$|S
z%I|-FqqWgmXKgIcUl4!so1NRYfAd4uwboK=4qD9g_DigdX55TVJK%oI-cml%*3!~a
z6KxcG4ylgvefTb@86506LHF(_k`sM>NA|wGKi=BfI&(%OLS1kC!C){f_Dl>74dp~9
zWT#Yz7{zV)y%%46=9f6VaQN7f=b!)Y*w$^k|K(r)<;IUJSwcN${21sj@;r0+<(FR`
z_J+8@6RN|r2Df!VR8jhAnsO^aMG^BuCkD#;uYZko`q4<US$AV4O%<LJo-LcjZFsh-
zs`{G7#>Ps;>kI}P=Pz7Tf$VpHmwLB#Qp;E1+!<^ccvBZc6{>^F;x_!=>eZXqU4HrH
zt7@8pZEaWFdEdRuv4*;_Wv6Z@eryjDLbRWrmFQ{Df)%Pm7{YCs%6vXdQ*K~tIG-0P
zW-s-Y_5As<PU?-Mx_$flaOxi@M(4z63!V#|52p)V`)p>iSPaZtv9cPKS3%yE@LUrU
z6N!YBr0%+foaMzdCK9-<3w+6BBp5{pX7EgRGCAin>);{yy6Xbm(pcNkfhN)EKYaM`
zzJ0!<V`F3E6QiXWn9h9%a2uY}<>E!WBBe4EmE}V3(c@%+89kLkYv}Z2BPTht)p&jA
zM5YG%REJY6$6#oYq7MzE=DY=~D=Nl+|HH?TBE`W}PY+r{C$_S3Ff@E&b#=9i=X+jw
zR&|6txNW-c?q|^!uCUp{_3zU!^m3ameAH$O7oja|vDv~Fn=Ndy*}~;^Tj=lKY~5xp
zHZ$hQ@;qfNvhHwxx4*v+>(mohS$9~A%+%S>1})xNg?o3K2hBs~JLW!f4?QlOZabvS
ztJbcbbzZY3j2cG1%U8W<{+bKdTzn&5win~JE@;hW-`@Auu3fwK4)Ni(wlGE#Io?6l
zqPi~3HxKqsrt`rN8BJiG;!-?rKcE9OeCW{WbW!s;J??N_ePv)VP79VT>jGhL@GB2*
zupYGTq`4vXvbgB8pIw9@$B5`|!~m(|;)T+OU;6#=-gw)5vZ%mkYNK_HHLcd$Z@>M@
z_rL$UzA4QUY=|z{xcU4!|AEt8>*&5*7tE}#Ho`M-YN(shQa7`<8K)Ud&A6e_+y57_
zg{JE2nCc%$7D}K5vB{~R+p2EOX;DA3sY5Sr19fI?%R=Pt;(Ey%8cLxn<&**yXq0k3
z!;dd%pE<LoGD4OYNOkv~8BPwT(E>c7kWZ8}Uv7Nj^zNOz_F@Jlr$$G+06n=4*WJAy
z9;UhBfz5%^%P*fqS1cHqcOIT3m^dRGc<{~}ZoGcwQnJcG&lCUq=U0!u+K+UuYipb3
z^=iV%!NdQ%9y9AU>kCc|GwIOD*I&nL?d$74*4@+7Gdk9DD$zGV2HA6_pZak2kL8E^
z`pRU9snWqQL4-_B6R8tuDy5;f2*pC``1Wnknoe`+sY0Qk=O^N+iS*>;WPEBofo~)I
zL)n9_>PX0&PEnI4SgF2I)kXc-d5pgbCC%yJ^HbwfLP+DBfv-SoUmw?Z5(|B5^w3+U
zkMtZretgf#1N)C1JND`euMB;&@`A++X7u$?8z&gu&%Lg?s<1LRv)RmeMsvCyW2g3?
zlon`QXbv7K6snt5jShfA4u-uU1(6#KR950!^OA+pIv>w*Vkm$%uKJrB=QM&MA<W&_
zGP*_0Sv1_$?aLR=(zr|<57pkj>81<md0(V$adUfPdwcupIV;YaKY#vp4}59u#Vrnz
zSK8)KBj~^O!=K&))qc#OsMqU@`ZdQ?v1aWTJK!ta{WojencZKR_7%T^1o)(l0AI2Z
z;NwVuPuU3YDH{Q9MFM=vMu1P*2=FNz0Y3FlzTzjHf5cKgbn@h%uCP99oo^1)Y_+4C
z_8`s=SWD4K!P(km-6cPCs%IE$$AKp<x4vjCJNrQcQei%R!F~3tvbFB4KRKC+tB}<A
zN>SX(V`Q#LCl4Lk-_N-<#pPYntb+sn4q57gC5050I~NT4^8M)Xoz9*<T^ifHd-qVu
zIdi5mIy#yxT5cqILqk<9wq;dbi@eTyPN|qRtK3uDT}n}pb6G5<@jyq99qY@KVi*ef
zd?F79J!b9#_xLFc0Uhn_Gvj|;Z{16?_`BiX{x-9BJzgfxwJ&9ZAHAXO_19lNk~FH<
zu3dZS<*PTWU%h&Di-ibj!UnT;*-bZHKz+WWS<D8i6xlum%8ws=?2l)%oaT|8Ei=6m
z6dh5CI?r&hs9_em1GDGOoj<pszP^6_O>5TNasjT)ZLMyd-HKFcZm5}oI$Bv*TZiur
zjWG<WOf@`2UAcr>p1NlmQ%M)OwyMCDFkVx{qEN~hya#cCZP5}hhi#IT$>fyif&~j2
zd{tGhS`1u6qBt^~<f;3nNO$phM?j{#I6gnQzYPx4oSHJRHBA?3{0%mHx=9UjbxlpR
zmoqh`q>oKf=OMFLGVv@;bdN~y?;ojOd)HleUD~pGb@U>PdKY=UyIwtx-!lv^7Esh7
zwMIgCA<Zr1AvZX6{p3j<qk+DZrO<siJ);W<rnMV3tZfqVnvzTHJ#HDMRZ69cU9hO<
zFj{@zsZ%e%c>pWrpC8}7`;nJ$<=~-sUr#S)dGA2H7xh?jxS!sS9>na*ODfFNl#}@r
zltNt(wul-O5E5>ygqPtnrJz`vN}GvEyo}^1It`QK<7dXmGa5WGIC$a=R-Hr~w@sC&
zR1)=g?}33Sd@mV<t_Ds(FS&?bTyo0tQdj%5E>S;$D)ik=-O!XGWYT&G1Njs<@GM7m
zV_<dcz=0Ru9>Un?rC;vY@#G7*^3Lw#hu)#PVBIHrkDWe!`kiOC{q+QHPiKf~4V=^O
z^G&|=(o4rrm71EG@cL5z24viMrBb$(DQL<hoaxVGvZJSZOc$P|qA3!IxI>}lTJkAp
z%&MtrsmGPN+F&TGpsVf=`hysegu@{}Iij+YfY)H;F_=qWRt0=PEPizQvMIo9Geptt
zP@J0LEcq0JlN67Oqk>;?+0vy;>lZG(cHLU^KtKGkj*ja;gw<>PhPL(v)z})&ZEKk~
zXU?33%NEUU#qAYU#KMMB;z)P*J`7x1o93ZKV*MLB&0&U`ic+i8hBPIZn^}_+eDw_#
zPCQGQi#NZ|h?yI0T)Ysuc#(~Zn{8ZNj9gs*0V8HEvT<>fjf)ps9aaarMY<)>%w;kk
znO-x0WBz7(&2n2|a)GS)S<PEqdFveOa_g2d0%Ke*p@OiLOXRl7naucbd^|B_#Gv`L
z*Peaul~-Od&9{8MsVOY0`X-O3;#Hhp+x5o26GP>3G$Hf|T==OPk>#l=mygDv$#Nob
zrn~#Zv7U(-Ch`uP*I+F38Jf9Lsl)oR($aF`1eVK|s~Q_uT#QJk`E%A6&`-MC@z9ey
z%42H~6tk*MooZ1d;qa+bRkKh-IJ|G)3qSk$laK%YPz)L!|Clg1bWqeNIULF9Eh%Nu
z@>nMZ7t}Wj#I4h7G3Qvy=}bqj_y}HLTieDp=!Ti*oM5n}1#6$PR9Tr`h|{8lb7waO
z$@_6qpA$iniZKekEmWEui3Aikr+Bh4;O@9%9Xt&`tiS*M`*r=3^XA=f16Dv^X2pu0
zd+)vXo_qfNwvS&vpFAEX8LH&<CS&*_QA?o7OP9{Aui>lfhw)OV!xXyb<(Kl5&+9r*
zD|*pC`S-uZ9)hWFIG3LnjV=*i`XeU3RN^hVMQoINisMT$Zy19m>MLHfI3r5|iDR55
z6>?jr*ED&_d2?&(W-ORbqh@kB(W36;xpX!w2$(q&W4YXR)S0PCL&y(PSmHcDlWC5`
zB-1RfYw+a`_?mS4hE3Pr`T48xFc^~n20>1zoBCRz&H6%;MB#<(lm!Fa6s0&RdUtS~
zHzsjhxui7tz$>Rp`BZN&=3;X=oG_6Sp-^ok;&9;F?D?V49E4XzMWrjxMJZx&dTElR
z7AlGIx(3@itj|in%EWvB_}svB6n`Ju=M6Udywzr(H=upqXtU27ZT7hZ?ek`veco)d
z&zo)bdGq^>X#0}$(H%Q>ys%@(wo9y!qrbAsESfzuTZ=K6zg779Q@?xcVsqf^JZL5@
zk$>zrKirI#a2dut<z3BD%Vlkt_E&^(FqKxhhNvctk3dP|G2)DI`K-nnhUU<X;r?V7
zw40No*q)WVUOkcS*^NegqJJcn8yWKWuxzIcoj0s07h;#s&|_FNEO~rYEiLnBVdLll
zzKHGmWJU{M^RRdS{{3zjIjQ_qBHIO?(y?9W{N$RNQv3U#-eBF2?mEu3zj)!bo{?8y
zZk#c2;`qsY%8@rtMG?4S|0%j-7V$UDTz&oZU;NmbHEZfQX%gGd?lYDe`0jTf)4uxE
zuSUt~bvsV(8|VUztH=?+!j@b$N(pOak^Uc#=(a5Szy$@<oh{IK3qy=)4W@w+O<@Yt
zo8z1o1;Lq&`R<g|HAhL5oeqtDRJUD@R3OA;(+pHAb@Q>!s;j99DgMgJNON=3j5@{P
z@>G!*UR6VJj~dBmjbbV_IED=n9-E%ZxLks&1OmP=W*v=^Fjd|kc4K~rmadpJYgUD>
z&%Lnrk~<%K@WIU;9rJ7FtXQ%1nrp7Uc5|(}vT<b%Hax30Q23)p#s=~eJv}@2V5=ke
z4GFytjJs52&YW3`FxT{Q?@7LOaa|X92gcKxOh(7Q#J-`T7B=-nM$f0Fd7-C@sboNm
zae5L%AWM)-0$4Gjm`ZpxJ}=7;b0+42oJ?kPsudyuMbGCkF3Ob1>ndhbS;?8p`9q<w
zFCHJ8^h&td9}SX6F`HsV4$|?F5sZ`4WR`BRNWJz9zTC?bUrf^zbZPXTkJ<}935#JW
zkw_*^4P?>8VPfFqa3C-;+B$#1qL#Pz>^<J-!_BkSwv#6@yJ)(39(vz=?X}nb{P$i3
z8}Mq+B#rGUA}Som#>lPI8{489{l}tq*#znsq$r+nZ9M`;QhcF+lQVq*hbS2(uM+U(
z0FRy<&yWXEDVQ0sfF8~{E9)ZEx71;xJE{6g20D!85!8m1PGqO6MrGcju_m>(jSDwk
z+>W)Rde+jm5E!%OxV^q&rm1dDa~zO3@dJJ2IaE500nPw#2<yS}OO^(b$)w9r3`6y$
z=$@2Qz|&;|y?gu1Pdmz7`ttj5=@uK8u0k%|@Bv)93c2)A8<%dhap^`Imu~#0c<M?=
z*Up_gzp=%-$eM)?#Pra?o^oUqwq{vZ@PFU=-7BnXtc_Mn`3A}!^9{3PZ85Xc3URd2
zy4CUBzwF%c>kjMQvt$|<!hTJx5aQ@SYp%-t7#4?~dF6oS-k+I;>wG@mm%wURN@Il@
z7|rsSd&QF{<7sK({5esNAN_tu$vTN4)v3JF+&;f;R+!)<6iexxR>u{`PoJj9yHpV%
z9yy9dsI1Ic=zL5SG|pWagN9t+u3fvfzcD1vojW)A)Kj~A{r7zFlWQAju!bvZJhdKi
zg|quNiMkJe{?0pYUPx>brZT-FS~EYn|98Lp71A!fY%cmRZagfUciyO3dE&&039!uS
z^RTfOCCy_{Zx7QHuomSERcNU!SsJ=kJVzrMYSy%4t>a@Vucu30U}=&UgCZ#(j0GJ$
zJp#y493wW*bxXy`7_|G)nf67SYHLGuGhkM2T{M*{@Lo5Dk29KGbI}u-5fZYKscfoH
zejecBxma_7^ZI-Nddgt}HuoSz!%!?%3llV;O!NfhA|APg0=LzdZP++}{`}1!``G%6
zSD)?~cQi#YQoQc!=qK;K`|fMooM%q-oH>;wA_)<Zv$W=MzG=pcR;=hb!$QV_ym|p7
zlNZQ`(BK@trumU1=0a*x^EhOg2HNFxT?n{T;qZXMX=qeMLz8*w^fRvj&y`}T;A-;o
z8qe{Z3cAJ%MqiB2>Zay41Sekj;1S5?u|gOnddLSlStj*@HcVc~q(#0Q+2zbap}?7w
zgGoWur*F~-7>{ezWlO0*7opNoqGy+;<{cf)a~`x~pHgj(jbbL`Gk7r0NEPUyh`pl0
z%V+w%B8?U)#dVCbc>TnSN1d)zfBBY;<g4^+yo0yYx@G7Xu2Sf6JXbO;c;k&Rt`URk
z8TA*I_Pl|Ic6q3;yBMZNG9r3EA|^Iakuj;BJ3?+Gy6A|`sj*6~O5%}FoE%DOylz^m
zCr?8{i`2o}a&RhoG`gjub7t~m26d5cuWG<=J3@;hm_@E=G~%_un7e#Hr(?R?YB6y2
zxmSOx!zflQAs7kS?!O<=_;iU=>k>$!zHx=J&@J*12&9Y@`EQOrSsF)PCQ;-2{4PVY
zjYKs_q6Qm@8s6u3N}6pXYPON6*+!yf8;RhN4s(xm=*Y>FJw4s)2rb+rFddW>^IrvT
zqPMQLs<J{aIvf=gZb)dLZ|y&FM1?pujr)GTX~U|O%Th^~YdJ*>{I+fA5Pq58_M;!E
z@KzUeiq5jr|8S@4A3lLu2EJFBH#V6{r+}}n&Xb!jp_x($s)B+CuK(=bW2bw1K<wy<
zlk+ZN<Bm9*r9y2NQo#3L-vqB29qQ}rJ2U-^41H}ESzmcnDqn67z53d}|M9u!|DsdO
zK(4fl!jxh;HYqo0UPrb*8V-dhYM}>Poiq%pkS>pdnogu^X!F`d3+8(<PWF-qOjnT{
zFv&!wAERSweg{kQGq%$Ff~_<^jivb+TWNmIR+^u{(!9-9nzz|X^EO*)e&(Orm0KK7
zBEG-ZVcjNt=Y<zuxE7<jD=qigA?K#G(j227Z!iy9A?ssS?ex0YZF$kxy<5O<et#40
zKlAL6bp^LRAmCws+F^Zhx{Z-tqC<wHGv2Ss+2rUrgc>XSnm-b#t@lCR61*TdN0VvI
zk<rV;?UouTa$b)23=ItpS`IX*Ks7bmPICZTir4lJP)kuIkG%c%+dW1QQQ1n>OqFFp
zF!I@AI;FLs^^0!B<MUwb=@Yn8YHZw+m2kvo=>>W|08Y0r2G#kK7#F|r`0vr#f6-Ks
zy|XW9pFMkau=Ljr)3^VvJ1V}m-Sg>Be|k;D>sz;O{e7YB&O7hCnd+@7S2*2;#NcG#
zX{{w+G(6GT#+F7{xNxS-XL|PTH^cP{m$n$`ae8vV1#4!;V6i($Jv1r|#7)sjeveU9
za0|%f@D!4{JiSMzADhxnx=GzBpiszLVz#8U7*I%oNe`1JCyVaN5ITAxM`p4(KACsZ
za6jJTGBEoT5gX-j6b-{)>#L%lnQ;<wLrTMvB}<mhtM(#qO718P1ou102^XlDk`Z$z
zFI#S})*^`#ujf+f9O!zsn9W&|%#{jyz92iv%@a8qvIljw{-&m;1#9P{_q)F3JUsZq
z@CrQYg4)Z_neKpC#b+;QK6><MCb|a0>Kj^J-QC@zA~jrcN-vbeN~@+>Yw>!6&P@Dt
z{|KPlo*W)21uFUccxrUKGC)I&eSD#i!@P_4qesuj>C8@@Mh<#~N%HZ>v-qln1?plp
zl@bV|rc7?41M{v3E?(w!ucTqiSJA9^3;CkvFQf*>&?^`(S|C@26h0;xY2AexS4gAP
zdokb9_ObOc&3tB(?qB7pqm3w<Ma0q+Pt4%VQaYV3aL5qNX-Qa8c}~!rJcv9eI0dyj
zk(iuF<t;}cKAuSw@Eg>X%q3*9B|Ojg8T@jS*Nq_pm!P`<<7c{YOL2_O<53DptoSD#
zA<St(&-C~AC+Yb+p2z1&=?TH5wFtZq<C>7mg8loC9qt)7m8sqD^z2WFPDdTuLzQ!2
zAcN-#L@~r4=jhodCsTVXNE}7@5v&=0D_s(>o&;n%DP9mZi8A$m#H&bVIKye?wHDnf
z;KlLSlu}*gWe51H!=fl#UY?Tes%oypwr}aYH5C;V2L*Z#D^?UJulx?&;$JcoYlhLA
zb7AW@r-Ga)iKn}qk!orJWlQWnBNTjvQLQDTj~ZS@$Xn>I7n4%NZ8mo-2zo1xI+?><
zs$6~5is0FnuoKz&F&jHSYh&j}k)5~L*!giAJ3or-yzv8k@>^`|yybnyi2UjWnx5EX
zJ%HStW4>t~vi#Oc>l*Q!e@8a{@Jj1?tIj-Q9xBgqYY8&+BHWTH>x4Dix?X$)cl>s_
z1$F59M9NUT4Os1t81?wt_s&32^VBxM{v)WQa7BGk6Qaoz<<5eg?djp+;jHK=!O*TZ
z51k%LPR8T$f>|PHx_C#n@8Fwn9!c_b3l=Ph5+g%Ow0X(0xmZx?6nQlGDrjK`uNMu7
zL;_x~oI~_FbRirAH`kBh#(>wIwRWttzF^%K`R>y@jvRaIt+yuhyr-q5rON3Zdj7xG
zS@&3XyB;|zZMy5OyVf8XMUJaod(D5M{d;di8ua&!lYetM;nc!zDLqx>mModm)EpVX
z5Ym;F7gJA5PU19=sF>-DT!MPbAvrX`$Yym-6ePD)QH9>9U}+%7BG?}3rYv*l1s0Xr
zSbr63tfYl`cf<wQ#Cm*&>7?Fh$&x{xF6T=U=7f_Iy{@Wdi)yPXWD%L-@>SPjTwE2B
zd^NKcEt*^HH4uXaQZRy{GsfYGaWwuqiEd&0LP}l>7fa6C2v^jL>14`4NT;0c5+&U2
zql^d(9`w;WU~BWe7p+=eK|l6W(Xw_O2FEMs1zOhq>jMvb`ogCC@#Dt}2)_u@BiXxe
z-vP}2i+m#(AJ3Ryo6y3O*}%HR{8TF0fAlo<)9VRD)6~6`(=E-T=fyxMqrg5rnaF5@
z5Qum*v5<`y6N9S2n^=gDh($zE@QV374WtwFU6|{Wa+^!@lm>SXSz<DIraxK0ut%!R
zB{k52GZk%)F*%;i<x0hoJkp)|3V}on&1KW+L;_uJtK7*jM;?4AXYod10)sh2q)tKx
z=dxlUvsl2&H`F&UC0Akq<nv7oW3*AM)#m8k2L?yS@)NJc)A0!!z6u@*-$sXed-olj
zoGMs4{aD2)`S78Uk~24PXy3kl1@C^e_nc5^#6m^9R(Sd4=U+S#TDfY~s#z`X?2N&D
zK84BjG}MKBA<5kuj8xF=374Q#??=C{GEi0Hc8i!N91V+5)QDyIEWz!S1VI>?h*C&Y
zN?2Oh5CVRu<@NYveJYK~vJ#>~&(-ETd-3{fKXl3bmUd6=t?f(Cn}x1Nm7Fo~ZC2~b
zd8<}Oqkc)GpEj9=7{eMl6C5>7euV6<Ll<Ce^Je#%S~%~VH#=lDHO`8pPWND*nFj(5
zR3pm_TZs%?Wn<VyHij)jhOM$OY?X~+OORnpYz$jrW7rBC!&cZBR(+`ayKsm0<Lmx&
z*WpoB$>(#KG(F18<nk(S88j-(ur&I2TGdrDHivRm%gU82Th3jFHnpm+Z!GUXJ9Om7
z`mjBYG`F?2HAkqwtDgtws*1tE!HQKMT@PQUS^lVP1OHL@tXlQlb9>^R*49=}e9v>b
z9$E6?JMOsS!%HH%%C(B+uCTJ1Pf}lov%O+zHHJ}?ULs%HEa`@dEf+?zJoPq3&$~KX
z?jf5^4h#$=&s~S4iWS%GbWqnN^b9dB)#)J~M!g*U0u59T>ezhigGaY--+uJmbvUk8
zwY1cR$>Wg2wJn06rv^`+JUN)s1sb7%MwZw3yeVtE{O%fJjJnJ!5_Kt8{IbeBg_6dX
z1gA#-rn~BFH(Qa~(R0^h3RiBar<WKY5UnoiMO*c52VAU@?sM1aIko7ZQL?;46jX9s
zu>7cFu7Ka-${lk#gKpWKyFQ(VG}gED&v{tIQ-=nLFOm;??s^RC%4DWU9sM(tSXT;$
z1A}s-P_8Rf=Qm)Tzvu({u`b6tzu^P=v9A0-^weAX0sUAT;_-vnw(Y`p_sGH5F$Oqt
zw&EY82`m1&BPIMaQsO;^K$q0ubUMg)M|5~AXQI<pXS0FM+E4`EGl=3`qfqHTq(?&`
zato<3o3Zi+j4UpGKSSuOU9be+Grr<n%TVcGf2%dNu@*p&ba<ejIMUxc?qX}Xzqn~_
z1>Q6{Eh=IIRLZBv#>Ub%ljy9?W#K(TG0wFSl{$Cx#Uigom1s1Y9_`t?cW=MVHactV
zBQ(x67L_WLT0_GSE&92-OcvW_8Or_3p&XOjMs9SW8$h*6;JQGKygP=YSRTW{Pk%$D
z-^A;p;T-96hjYZ}XPo%0*kadN);~sd6w9MJfXdMUR(YH{jqvDw&j=5W79P)NLM66@
zcn*O=AfATIm_W}HjPg*#E*kY=o;&ITfjK>l)xy(5r67z_zj}&kBy#=pP{hhpRLMTO
z{%I@-(Uz!S;Fr&i3TZ|QirOqFYO|n9w4kWXf}%DHs(hbO4^f*1MQs)owR^tiPVVT@
z4du~f-R916pbv&B2y`Q#MzqQj&r8yL`bkV_qT~qXz@>7*Ajm#)$^Oj;5mh>zb<Z1t
zDwUfz4<s5h;wU&`ouW`Od2~4FZb~QpmLZ%{A)`uu&YILgRJqAXkoo?8p8quu1FF<2
z7{^oKRk`EGLCPpfCSzdmBdCHwKT<~!mW$}v6b}|rN<l|y!UZ`MjSl3gVsUEf8&fc*
zO7q;=!&NY%a)%G&SrtWv87f|iG-+{u5sQQK`$0DA>rL|`CN}%haYJbJLJG~VmHp~&
zwXJljZKV^%()oX^y$5_8)wMr<r|r)6zN)KY6-$;S%SA47L9PfJ8)Gmv5CefEw7|<F
zmG}F3b|o83CqQ^1B#=B30?!G7XK(-~bc~G)#<FF}l4W&iRaRPU-<|oNb7$q4#s5eC
zpU?l^&$gM_+1a`0e9t-eo|2m}I=LC6WBeB~r{;cBRB}tpN_oG$fBKaUj}}Y=KYG$g
zjDL_wj9xEsdOeJfHflCUCq;2mV$5dPk&`2FIXN&u+R@U|(GI7xLt;uxh?Y$^pO%i*
zbc~NK9F}E#z#wU(lao=CD8gt=28ph}Kas!(43l=aqhq+p;V6=rjxM6b`7nI=9)ceX
zhb1l?hSAZAlar!38U=KjoP-?%0}?kd0K=nooIdR+85sf0INd>XdOgeH0|rPdn$2P`
z8ikQCn}{wqR}k<4L!@<=l(<3l>XMj}B6W-k{zVST`UVbi{tFzG89AQGLBKu@@<DiB
ziA+RCh))?vi1ShQVcAY(Aj&>KuRyjc`)D+;A_GzO0eS_pRoN$*wBVos`y>I`lN@Cq
zJ`}QtLSD)}K*T`HD);pCR3raT?g1hOT2{HoV2C3B_;@Z##FUTnjx5hW?xDN`OgxUG
zj=U3(Z$<8*yaP-Oyi9qAHyFkYph+X^0Jj3us;uMje2L6MSqHckn3l2*j>`2gDpzKV
z%6BtH<x&`xD>Fvr%8XID3`XVhj8VBfV^l8B7?sO2MumOprCqC)TWGZGMnm&UX9WSs
zS!CK?U8DR|-KzY|{QH+)eRcQl-SG6<Yp?Al4azkVnC=Xp(t1g*#3i^ahnMqki7DSX
zow<q31cHqRgF$^>-Ktf^AVzgr`Be=K4J#JR&NG7?Gv`$-Tehr%tdOjQ8m-7PDKHzt
zXU_BnWzK8k;|Yco(v;XZahFbsE#_+Yi8E);WUpRDn#mu?AGBLRAZ6FDyK4>k9qqp&
zUhxNOOF`0<uDx{?c?LUkEBw`8OV&+ho5RRP!R#9P^Pk^76W4fc`pGGlY)T}u7Juuf
zKmF;q7H83UhM5a$h-MZvkHzD0VW!ADPg!Yc>8yFxHS<8<nO9RabLPw{a-C$YQhN3u
z4{@O86ylVmMduZipq$iKp|(mu?U<?6ikRSt#D>nE9Rnd64n`vAC>I!y;UttCn;aMz
zm?RSt7nPGKNssC!<}xxdNv|!;@R%r&Nku0>WtoVkXr$&$tJPTm3K0o>^2QrSK(_XE
z4i9&Bc7EA<Vl)9JSz`1wsC%bLyJQ_rMWQkZm`tYN{P_#eQ_wcR>O?ZiaS?y}p+kq-
z{SlhWd**weXp;M(ofzrr!YH|pww6P1t3KHG-p3!q+2HBD_ul)EJRoTXL$;-ht!A%g
zAQ&7EjZJxhXc%pD5cC2Lb!XI97-m8$fh!9}Qn47Wj>SNu1SKRGJTnoPn1DwB)Iij`
ztm6dC?x5gsI2hD6K!*?%OgJ=7^Mhl+2<8W$$+oeix3{<39~mEyprg>Jzkhgm`0Sb8
zZKtrcwVpU}qLs8t))pqAM9-RlZgA3BmrB41^(oQZB8jO)bZTlUnn=M3b&hxv2F7V-
zL9a#6bA#Cm+KR(i>~J}qPL~56&0WC3R=vOnCaos86ni|Lj5C-iQ05tpUJ@CWM;jXz
zrkUBbfpA$_*_<N5YSo}OZGLf?$K$Ck+EP2OuC8ug?E-jSKvqfCY=idHnTir1gLz<f
z1y~K7Fkxh@*^<Z!=<}izxU?^yAJF2zGSK3`GSFfxpv6lWXz@-4TC4}Ocs>Iyew%?7
zzs^95UwzG2$fIoKo(DSkf%1KMSbkOBE|;YSvCB?*i+q>tm0yzIl6S+NSL9FSDaESH
zNTY~J{zQI9{)haae4l&=9QiaH`7-Uz@M(+eN}p$e{DAzl!g9^<D_1G^D@Ag@{G9BA
zUwT&VRU8T<AEW2L54QY4eoa2A<fMP0e0xLcRRAW9(KIpc<v6Xt_=Hezd;5`IFK6@g
zpY<}qgv590-FXHtAMht8LtfUJWAbsh4(jC@V_qQX<$8uaKyDWm=CK%eIvEItBaui#
z1`RhcH8B<lMFT)}-Mtf$&_qnM<0O!cjSm68^bQXa8~Tryl+3E0Yp<HA7pD3L+B$~=
z3Hyv0GaRHBFV0!$7QH;rq2Im$_El&i;^nluSOl2RJ8O#5m~hpZOhsa7k_$PxE+7Y^
zQArW2RpiAmPRa*D8qw+_7j0al0S;~LZ0#C=Ynn<%WHQy=e!R8Uf9kW(KHIameW<T(
z+*ysYNwb8&Cx86oAK(7$BW4!ZXIEW)_4n_&-+tFkIi~LS-h1(tPfktMTy@n|bIIFq
zjh49^7dySYUKbt@dxg=i-riF~Ue4hj_j^ggJF8o3DYgL`vb{rN1Mt617p+<da9B_v
zM@eO+OYa&83=R&S>@_<peIWOnacO<0R-p@<Scy_@=HwWolQ4T6+=WM;5Ev0Co_)fJ
zIfya-(4@v6VhqG&#A^-&`nrc{mN>IWrULNCwY(l~bYA(a%DM30=FO@sD=I9TSykrA
zF2GcO^JW%S)mE40X8{8jl+Rw)*x0ye_JSOAhe+_~8)diXtd64DRZAAmt}1tcL1HHB
zF)M9&BE`~RO_uQrTC>&aGI+Vzl-}rNG^~_kPDX-pTx>B2=-k1_#)EO{;-pAsu#S>p
z5p5;24g`RY=pBX}xYKL4-G1B8RskbJxBj2+-*)5Wn{K@M_8S|QU$So9x;q=lcGJz9
zZvV+W*RKP)vUt<Bd)JX)l0CFPNbVv&+eK(TP8#wnW|frYR?OLqzMPMf2gG~s`1Tw?
zo?_rj9J6p=dqnW^(Gbx9I$38_R4nj#xsje6kC!nC(yWq*zYEmHs5#H%v;)eGo#-3`
zc%BHz3<-tep*|NnLxKVs2V(+Yyb1jzc7hJfVY=efv!I-@&5X!5v%FS-A(O+y!@<-O
z=*We&C44MH7%vl#dwGs?6nUCCg`oY-4h)6hs=`Dgc#D$JNOUp~ibTUxVf1!L0AG!d
z+XaFd)Iv#x@p`mIBf*s$|3LSd{+^DuWHb(^=fKe9(B_nQIXXEy<>eDeR^WU*Z!!st
zmrKQ?Nig!`(yU}~Y!HLMSzs9qv?LQFlb9Ah%*iAgRWt@Y4?s^slaVM~-1{H(dU=08
zV=;M)q9a4Yr(1dkM+SNZ(3@^@WN5ObWwwc6PPM*}!g>p=g@p<l#0Ngu^XK>9`s43H
z!xLckYBg~>VI}*3fJQrx!YM;jf<X&H$2en#1ul<XG83PWW`)mw`Jw;x>C=39K@kQ(
zk=Dbf+uGVr4QLX??@!tDatwecN>AsIA1=>i(t3G~9`28~5dG$HwgWUJwdpjxC{9FU
z=wrtw6<-0E7c@h@-fT1(jaEmB;MyF^3o_c>QMfu*qt^+T=~xCOO~7gyf|^kXC)Z}N
z7LkhsD-g_5ivGF+jcDb0MJ8bIOiszvl^4z`!?hI^TfMv`+XzZZA#XI9UHLAz)#h|$
zgXWU$v>M&+4u1fnoVak@SCEQDG`P%|JEO2T&r?wyXW)NWH5!wGlPv+bHaJ(d(aQ^b
zB9`(BMwi23<N?D8!|s?Rl-R^^oZyK?6Hyoq*6OkW3F{511YGP;dru;XlRyk7q<rW6
z*fQgS?#YmuH-pT)HA80JdV$Emn=@qQ%^5QD=5L4#f?F6oeP(cra=lU~AC&jW@5;ZI
ze-1qXy+!^k?Yh<}kISQSkM`Bwe*$Ie@OvAnNBXO>U&&Llm6^(NWvz0ta+UHu<v!&;
zu%3P{`Iw4rU|hy_3Mn%7w`X3E_(Sjb6RBohmoom*-Zu}Ar2r{wLBWg)I=Nxt!j;SB
z&mS4_cLO$$27?pX`T2n1GYg&0!jW)P20+tW98NM{+RoeUc29-GXXRi<(?WQ%IjkfQ
z0RBl??3m`17z~lfU~B7%j$tgc0QOmY#Ndvv1N|Fg>;8*8OSY5k#fJ}nzUQNlKKi2b
zO#AYS*Ijqrb=x-1pTFtQ;7Gz?v*wi5&V&229e%H-rl#>$iC=ON<{vGDr^-1MO4~`l
zUyhYl&q0s+{QTkJkACyqGk-eJ+vg+FY-DM28nnS)8Zw-2Z9|<M@Ua7)`g=}yoju##
z-PzXGan8X${Zbg7ZkTgfeMe$35}g?C>23Y|z;U>3$s{Yv5k1gUip6|C<rT%n#d$7w
zQ7nl*XJZpOU8pEG&uumuMOIOW75)a$xBsNXb0`ud^p#JgxU7mYmbGSSND3F(Qz<>s
zdy0#*^^5>N5{(M>q(3*nicz7WV*UDU-?`$7E7mMpym>U7gi$))?soTWX;{6etf0W5
zNy(%Fegrt`^JgVqq^Uv+;VBW-F1z^#L8z#=k{Emjn9F8z8?V^9EQdGYy_x~~2&pYA
zD@8-9ww$)I@>*9(Sw%%f8Emvy)K-?26cx^_onPboPe!A8P?J@$c*7;P{6_=XLGHtI
zIBZU*s5O~v4zt<qHrv3Q0AZ|&p%3;%U^11OFj$NlC7FmvK|WKLe*Y*27Nci>A+A)6
z0lbdt^<yJr<Kys|L?T`NNk_KZVU&aT3-e|#nCG$<7tO9IEnT><qzZ0#X?clxtnE}g
zv@_9Ydw!|MEQhB8{;reo3&)Nf`}_-ur{4ZjAv~S@^6>rx$8vIx9R@Q1K9j-0*Zw{=
zd-<X{`N=cz3+_M|%=kz+>>n5%?e3lmf*mj!3`Qge&S^4oI4neZ27@xgf(CAZUjW86
zXh2~@?-Z$!I;m(4I!!Xk<B9~j4l~Twi%ZB<G{!he@jsjxJl-Pv`v(tvc=YJry<HvM
z-Q8z8x`v5@@e(9DIA|Dr`_nTKfMIj)O!x(?lVX*4vjNj@x@fe3Bg<uuM!|9xa4&$z
zO4369s=b!&9v<iBT%Yy{xDW8{#teM>VFtb}27J3A1K)1Qz_%j6x3wAg)|i2BjT!jX
zn1OGGmX@cVc^cX?Pq(ye1(afN1`hfd;8wPLRDOf@s8Xvutt^&f@*dg)N*(j`)9aKC
z3a6%yR&2@*%+sVnzE1*`Lg2V&-GpG~MIk8mq?!zYU`S1!ZAcC8Al2jJqk}`xdPl~`
z9Wy`&oIiJN4Jc6MwtDl_*|TRS%=PuQP+wnP#8FT3rR_REEeD^R!1xlK3_21^qDq35
zF#jy(aSVk(z9{htQ2Bkt)Y9_BN1sC5d#I&l&eqlB3EH=_Kl|Cgts;+LXKtR|Kz^Yq
zIrIAKueZ%uNqzwzW_7>&?z=;^uzfpO2R{kGRcnZ}VK|B|!B{i`GnSg-CEMJ&a}6X2
zcm<+To@hIA<cN<v&MBZp?qal}mlz)0uA`tt!=al%?h8DqE4B$toQ&b`AkLFC;kl1g
zn@pY@P#Lmv3rr@XNvqZB7zXPe7_3tk&zw1PiY-%92G6WnvvM_4qyVl8a441nQ7H&s
zoggQal&nn|6ba+~IMwe@NU|o_4JR)uYHUEYbj^mMqM~AqbP<F~oDQkzD!cSYKl;&?
z6<uAP4Y%KZdxN=)Y=Dzvz+aTbbQWIGln5!&ge{WmwZUes-UuQaa{_3JO;}dvaV{}B
zn%Koe!d^1*;A28;A{4b4cYq!lXeOx#$iqbA<wg%5?)MUA2a`;CG4Vgsyj@3wglH)-
zysc5Nc`U}1BH7UET9&bn3&1(6fvfewNi1IOi>9Xcy_n*P^D>dBmrUW($aWot4q9)_
zs|&FsBS}(P5S1kxjK@?wk)54AFfc#_3yc<?CkiHHWo5n>lUwm%4G3PMSFeX6LmcNR
zygIF76ghTuoM$8(-Ks}FevVT#9PG#Q_`O{9Ew`+u=MlUxR9=$hB^o#nvcEZqDw9`d
zN#)x#+!rSeoP<~#3}+{3nrPXiqZvofMfqi}FlI*iExSOJ-<k{*SPCex=o?lTmu8^A
zim!PFt>ym{Y{943D;s5h+Gp|$`g{g(;ClWs*!hb~lt#rZpO#xe@oA;~jA8_3X0If%
zMiTadU8N)vvVvtE3cQ*q$MK1Q(I!${W(Ur<mCpo5&jUGXFIxbTvY~F_;$_R0FJHcN
zE?GuXr^LN(R-WqV>FV?Q{a^`sJf0cFMY&l9wuxwOm;-z>``b6IQrTHpGc`qOZrDhg
z$QQK#4usuK7$KZ8{1xp_Gxx)Pdlp^V$%NOfNp`>a=4<bM{`u$q#JYa{`m3(Id}X~y
zXd;X(ds#NYdNn*F6Q0w6>JR215CjvCV&*8hiD7_3^;VoBRIs>2fCxrIDh_`QJ?#WW
z#uOR0f&z~@KGoILHJ$*7LW@VEC0h9X1kj2*g?Y~nm^ujV6%C1-3dK11{bCM7g1N*@
zppaSX*Eg0<cE9%8YsZ6(6@5fGvlY}6iJc-QuRAOoii+}`KvN#l4?4zBS6A<-#@K|3
z2EA;`AbT}a(WFd-s8?VOIv$vi5%oTamC;mCFtb)H;bS;B&P3vYkRamUkNFr@@oF&V
zjiP}1o=U`&I9g;W`1cC)fK6ittTT{!PfyP{&$6Ia!Pnv=UN|kBDXFkbDi!exU>%Z)
zke9(!-i*RFVQCthv2?+L1$oTmn{U2(LN911I4xeS2!>07@oEH2za_&R2kDF@JQ!Ah
z@3L|;fg5f_RMRO4q&#6$8aV-96?45T7lOeuiacm6R<B?%*`h?}Wwa*vqijOKU;qGu
zLObwUR;o8IFHa<zh&3Ko^Ny?qzFYAP-Yn>wzTz8J_R%-JD1+~cz9Ac1X3aoDd;0@V
zJPYlKhuYgWDOJE+kI;Tn@hHzKtL0<oKCh-;>$iY(jR~UI%mT$Vu`y1+gLnb~I+Z%y
zI~WL<vu4kpovp9e54N<l3>)f6xhg&Fyo@d<Ue;l=Nutx~%(m&Nw6wRje*O=fIR4v5
zt*s?XfAE7JEXzgNnETOFPd&9ikBY->syM9C$6HYxvbD2kOX9qF^On!frQ+|m=S#eu
z;>2{_6Cd#yjV1X&JT6a((dcy9Y&Li9lx6n9g$pZ8QzTmzXvvgJ1sXdQi&04i7B7`x
zE|2G$i|e4RzsBR4H@~W?YGFfH*`4VWApC7Jy2x@>Y=xsKjNSCIXGcdR5jISWj!`-F
z+oy^00C@@+knq#ehgPxNDUOVc3@bV+Xr3at2J{uFvQs>K`0)Nz78M{*k<^1}Q9;WN
z>_j#OQ9-4`Qz#5lst7QfX=ad}A}WI-|4+2P1gLIZ2Gwo4Kwh+U8B}*^2G!|+>Q;V3
z9iWvNRCm$Wscu^5Yj0mCw^QHFc7XF^@*AMltyBa>V4i+_o&19Q4%oZ<X#W_1{%Pr9
zE|ogSJjhKEO#f3H2&j5o-$)=(Guv!7YMA=^xpV86$c#>Js;VNnY3gHAlW0qTD$xg2
zH;Pgo^$~~3)Pxjx<bBlF-aXXX`op_t%qXz3E6J1ON#_3h@%3>r&bf1o?zoezQt7ao
zi*};jU^{c>9iYD>Zg+n_3{&0Q;^HRq2(Q=c^!jF=5@YlEl<C8XNsA>G6GdwI>>$NP
zqbFO{zl=tmK07P7cz!6vaiPe<^1_0AP~me`5{)YiS`?@jWD%Msf<u*nlQH*|&Ewgy
z3KgxD8$6!uycP8;F9*w5=;;x~p1}t4fcC~s8`hN+kp`7k11XN03^ud5o`E;08lZ}m
zzzkK75$-|4?EF2EKuH0l)<}TM1%(Axg;qG!Fz&+Q0>bzxDNp!aPBijuiZaf_{S1e7
zI=H)08zwrG7@Nt*Xe^Q@NiMx?LuHEA?bPsfo3?BqtdG+Ase^U2YKSeBI$?xcI5?P{
z4L8(ZiK8nq<3S%24Zx3*$%*mdK8bO=B~5Q{ATU8vKFSX%Q!tA5vW??(m^=Z~bkHz7
z%$g-JUv~JI@m3$-(cb#$K8ablP}1z(cdE66Bz%-z5=C8pw1jP<=vLs3AYcVYlQ4?O
zv(9D4UX{T&8!u2DcvS}9thzvM(TWVdsmS1)iVVJ~_}}@aCEZWpGvymj;dt2n6ue!o
zEC+^pO?nZFVfOVSlk@|V%${vF8W^#@e$E_FhL$g{ttB3nMXU@3Xvq=`j*e3ni9{G1
z?4S(t?z@yh4!5@6efNyQT+XR7$d7-#24A87n*1mC)1Q*{Du<M_NknSN($)3FNf^+q
ztf3*c3U;Xc0qxQM7sj9)n@FM2Se!e}7<zqnZf<cYrZvVnXFtng%}ivAgu+t$+5$ta
zvISQ9qzT~)J)SGpsMd$alb5%mVa*lS_w<-dn62cXMnmdUW|&H08WfXcF&G4yG6PuV
zI6KlrUVM=}q)~wQJ+{cB=Nk?_Qv|6!649v}o8Y(<xpd<tvxXl%AHsd6K^+kF&`?$u
z-H68lDF;KrsYfaG@&cWI^_hZ6O1rX5As&z8NJm#sSJ$Iy#U68@1bwEi2qn@)!ellf
zbWLXi$n*!utnfDX0{#HkWKd`sQ0RgT3a!ha&_x*(y66Hcd_Q7aTU$3Mw<~$_VfnT5
zdYe+F+{(euKW$Mi0lPgaf0W+yCqR0PhuRMPW%>2=)>A;h+d=c}A~U^0SR|>`SubZN
z<C9)<Dph3V(#`4ttf+L0$z+ms6)ah@Bo9pCtcopLwyddeihdaH&bEPp*|Qfe0zqCt
zR!Eo#lJOQON(2mi3;-ak376rFnA|-~4ZtZGbXx5qCy<+_?$Y$~i?AjTNG-i>H91WC
zE5`54cO2Necke4NzW@FYey|3#|6QaRJF@}q#q(5W=Dh_ed3fKxzk}L8Ml{86c~u1j
zCsEyQc<N4gnn)810uNVk6AY*P%16-u&1(~BMY33sN{W#Y;1Ve<Qb?uAsL^PwCMPKD
z&XN+3jy-$!?5N;!mseL;&tEZXmfg-_MN%u)F#^kI!doCHyun~W4j}?MVWwn^Y-cc8
zB|~ChNaPiHtX6Az(L5mR1=n12iJN)jjW>>&>K5O8&pr37BocYfaQp4m)gmSrsszPJ
zVvEQrZ-F_b&&w+VT8t9|8wdm<2|r5<R^qbH*d+crZj$qoh{UF%9Q-*j6O;r)tD3Nw
zU6ZM(cnl6=WCpArmIYlN%;IN!gf1%BY@oRrNo)+zYk0Vz0Ip5qX(8}t{0=Da0&q+;
zg?c;tH2sq7wN-+`Ur0ueBVv7a>7^)Nc*>9XB^hot;U!kjfq5m%PvbX0Uk7a;IZ+@{
z^y(CZ;bE*{%G2B=__dTd<s~|ab&FB3FXHgE6nsrkP@@P2jbto_IY&(g4xltawQF*+
znR4g1fjjTc;LiIqxN{M3=iM3HdH)6E$7LDZd1(fBUY5a~mu1S2j*e&3t)pY5a*J{c
zPd{8MKScX3c)SOF1N4XFhtpftceoArsYgLqze>*nd|D>GMd|{9u>ooa3<m<$)eDy`
zUApx6@#Du%c6S#R7FU!(t1K=o?Cw7K1#E_$%NABw<J5OrL&J$($$+!HM5j}Q5#nn=
zW@&9S1D%5lhZ#E+N~Tk%j=hI=!`u5$ox1m4WWQ%Y6^5Sk<daW6{Oq1RmtA({tv5ou
z?aIq8+q36CABN3q)Fa@?o!q_ml9{Tsn#09#%2zVrJg}0Lm872#$WJ6SxPTxTa57Hc
z-_OmVGVHDMg_mTYFR_^VNk?DQr2<2GnIJ9H>I{bb95hC93k-&M+>Z&a7A;z|?4sJ*
zf&#M@_gKsY1+}#e%V9HWYW{c}r|qc*NEn<;matN(KxCOv!AETZqM#U&3{+3#I1;A<
z(4Lpq*nq}M!-l-P$;m@4U0q#k0HUz}lDuH~$xqg=pHYbiRL)qx{wF_KLtY@ysQX1Y
zwB^v`B)KiEF%k~tjf85W8RRRWpQyb-QsYSS2C7$zA_-8@`PN&+OJrb@X2LY18x!kG
zzhQQ$nxiU7>7d%|k%$8|4M|5Ai^l#*2xEHv*aVfZUXt{YIGpHV!ui0IB4DDkJE*ih
zd90>-dXTDX1_#woR8g-v_RoRE$^Da53VX3uoVFRSj%~*Cs&7&|s8Cjfcw+i?rV?1b
z7C-6eCxMwB0wRE-sZe1JmYa{*;6(J#MtvmQOa%D2gUW8jG#Q${Lt&8JK@{N<-qlFZ
z%ue4`#te$5a!#ht1k_mg4RZu}fEo)kP-Ef0pmkPdphi^&YE*q)>wNy#&qMq5^X=^`
zF%ypV`QPB@-#kx0ZEsK-q~}OZATZvKKC}Jffxwa_i&iXy*05;F5=y|RU=o$Xarnnm
zX)ZRjwjTfc0cd|e4oU-9ACHlTK$rYwy8jkF!M5$>J1VDED6w<A*%D=EQ*M0jE8KV<
z|22^uqcJxd11+<2u`I{%2(J8%42MF5Nh^?y%2hb<pqr_jljHHM#-v%b%T{|leSQ0n
zfX>o-WPe{D;Z%MIa@;u%uyAR0@ww+fN=A_Y7?EuvqH68?M;)$d(stR$hAA<FCB*s|
zcErax!Ny{ps^Nd|Sk3%t%AH?x>@!NM5@X<f3~%r;;iQjAhSeEkQ4^0$Q)MI}h?EW`
zCQpRl&hs(-VK}^Boe^-ECP$|!ZgkS*I!9wGfX3>+As2M+zd&P{E50;?#!542tSp1Z
z$}(t-Z*SlKJKtKG=@R?>%6~9>_B1N16-+Jrf6i_H3H$3-(xBu?J~lYXJ;ZS%0kAZ4
z`uc|3PM(3*2HM{2+0__UUF(R(NshE#4>#U4El;#mp6D0=56e66?Emev{|)Vhy>GpB
z_uZHtRQxHl+K~ygl=UzQ#cp?k(i^4-JCSg+06@=e*P~xijHu+M>SS1Si2$@`)08AL
z$}98p1tEfEvlUw|dLM7csTxU0Fch_E{&oVE24*0yt6P5UwyU7sblbXhCX+vaj!u;g
zC8SoO)t?9(;xN;<BvQN$nauF5=bDJ}D1(lTURp36u!q~VT@Qb6xPQP-!IY=aDk124
zX)Q{iO%aZPzw+5XKCGENtru0-q>nM`eFU`2C>#TqXSQin<imyOWP%njfP*}_KH_dB
zBXAI0PRT6OWMo?92?Zq@`9Z0x8K~>t4C;C?gSxJ`fZlW81u~6anL%CGe1n(r4PQsF
zX}u?nV5;(RJs8fP$RE?LE;*oP^Njpg`CWOBQYZgJ{*Js(UMw${*V4XD-YoyS{H(GR
zzy8cQ-RBkwZvKNBZhj!llSq@E(Iwjf?C`#LHIe>SuFSygB#Q!pp&rzZ&<vk5XVD5!
zfJXe|(1wR=YG#)e6fClt4Q6Ln)@aMVz57_KHoFY;qnT;+WC^8UBh`-<o;u#q+fSt=
zVCsm?X}6lqX0MLbXgkYT)oM4jwtl)76{Np|)qdZ7DEgmM)gRO011F$;_Sp}Ac=wGP
zH#C62uPV(inO|T3#V;C_tCdTYs|lahlzva1K~3o<6@M#v21O`cI6n!u_5scFPrmZ@
z`(J)38NNLJ<rjym=G9b`mX>;T8jJmv8--aEpP$rnyqXzR((yuk<jf~M{-KB@oIc&z
z)pcgqSJ2x?U+jAQIn^pVPoJn3$3{j*nl*`%G_Ef)8VmAJU&`?qjnU``>L67!OG-*+
zR90H8Hmfs7uADt@Zq>}0i&t;lu-1VKi$kDG<)u+yRw(Kl5%rZ0yWOZas%*(>?4f8<
zY1W~$(_k`2<w1qVvtc#Wq#8Y*(NU^N-SM4kuDRyw?|rYLVpe%=L*jdP|NQ57+;Ynr
zkXNse56C-Yw{9LBb$mZ4QEOG9F_B79HZ~#~r(Uj}ou8dYx!NdLt9wR6a<h&%XJ>yH
z8mHpqNv*?<Q<NSLpnOc1S8>PE$_lF_)Yi@_Evwk|1Ua@#H#S5}4}6Amc+HHd^FjEI
z)dH3*pGv`Z!g0<}oo6!%66Q+R==8hPIgC+N^D@#|=)SltYW1ojrqkFRAD_nTt4&(P
z5=l>OJgJ>ov3T)fF%pq<Q+?yQ{Cn0`6`LfCo-@01cAY=pLF=T})a;u`IP6)~)sj$M
z?Y36eHYj)T|8?y2>C-+@k!KF3r$V087UqBzo1@c7I<3tR_y4VJEEorf1k?!ycd4`8
z+Bo%wG14Ln1xqU}TG%g%iMYw0nE38u(@rfr=HS&ilP9&Cmw^q|kew~@wwl7g!3Jd`
z_uH1vfFy)Mv0#7auIU+aoJ^4fI#CY9|BUeca)(XbQd}KuU&#>AIf|Qg3@aR+N8KvY
zm{xOvIONQFn=}4}IAqkyYBMlxUIwPk%fPgG|01TXqiFV#{NcGt^Jk^!NgkMHebc7d
zk|j$}H{%(DHLI%X-25L=MI_a`6{NfzOcxId+Oc=3ne|y~>pH5SJ+6jDkY_|4n^#$X
z$DO1xjSfumoVtA?HFxgZg$?=nFfbRG3QwzP>1pshqjB0WLN(2gRZeEk$j{9&nMjtj
zoum3VC!8~Xu*wEHeKwIik4H6faO%6S?_g_3N5?H&*EXyuDZ<KJ99rViKaCeFZa{a9
zCi49ApfG7UAFlXO$J1eRk;kbjZR103>$G)ZbzuU-5_Lw~0ScDJ=wl`VUd@5h&6muj
zGvV-ekAJeLYT5>=T6pBh5%Fr4#czy)Iv5Z77^@9rfqyJ81!fVYZPq@iOq&@bh^zg*
zvW(w21ZrWR%g0nyc{PKdpJ?ryo~+hZw<o48iFgNW7=H)R2`O{S1+sj6{{mS)zLi0l
z-_4-RMHk4tcWnk`UY$Xi*Jf6GKc6z6y-H5VOKHBdrE)zy)Lx(7_8j!3^0M^SK1H0K
zRk%yJYkNbgReG2#eu2!U9^6R1AUZb~-*Y&e`52j(2de$qvmbo~)EV$=wOX5l=c$U0
znh&3()<y&INgR^2#L*!Y5cM=?B%w!Rp0+^V*+U5&#N;aSE-6rMG}YG5TelqAy5+UC
zZ@jUFruF@I?D|s&;9Ilj8Vp3M68$WFxCM#6fw_d5B_|c70x3a2O0e#hgf}gvR18Ym
zXu3%S-R&pe{d#-9V`yk-aHzZ6_Z3zlU!7DC=nKMCS{TkY8Vji~%mrcS*VLDnXXO<_
z%gZV+pE+~Gnw2Y8R$&ny64&X--1KaM%u)$R_NAu~n1rgJ;x3~k=w-F6ipk^IyaxGe
z6^On=)&}yVY1_8?H5;L=TD)!B%{Q+h`^auJcuIc<R_h@Fx10P&TI3}JD)KPmOPwu1
z{!3$T!XpWJi76`VB(2Md|G?>z3M%T?UVr^{>2~hjraIW|c2!jP9wvQHk`jrOJP2R2
zsm(4GIP(hfzS{EPVP>bMrm!xf@BFn_iOAF-v)e~$@?ZhQ;#j35c+x^o(#}pdsbIm{
zjcdN%O0-y|p}U~K_Z109lGJ>wsZl)(1^V(mNw_2}^(5^ijSmk_NLg*C2T!NlwBIQ$
zVB=$zK){z??p5=ol8>pWmq@7YgtT~&;D`Gt@T%#jZ9k2Uj;GtDtl#|p!<SzAL%N-N
z_x6`wP9d$WDwLQ_st{~Y?x2QYFh~~^B!P;%gOYG2y})qJW8u;ablIGNF7<#emwv<A
zu?5iOl5eP#vMvK%F8N>4Wt05ux&99H>!JU1%d^vHqWV170h$y&LfRiBrPF}YJroEO
z>2x{{7_7K>W>tB4Ii?uXYc(2TQGvv)Nz$cb;oC_nA8D3p&{IB2<3}mr$NwOHy!ml!
z>t?Ji;?B*z^2(d;+_r5Sro7Cyo6V$5#fnl(h%OvAka0fLI;}__pMY_=olnEWL)vbP
zRDs71Z2^sRo0#}29tbnOVtNXlX&fk>#(_MLqFI=pZB}V%UY_2JiKa06Uj}$g&n6~i
zmaZoYC)EWsnpm8bgrYRxmrnEjnvEXM(yd#!ZoA{U>sGDGD+R;agvsR+fPm@Q!Ks9x
zr^NFtB_9c0Pc3lj&1vR-h*Ug6T6aB6UV4OFhfHfR)5&s+q@9Zb){b@UF#&K0kDm%+
zA_HXBkuf`6T^7!&Ov|e;!o{#hWzve03TVX@lJ@@U>gtMWROx#LdU|@gJ3BkOIt4*x
z&d<{mE5hq4ld7u$Fbc2puuo;n2x<kPR7BE#gz+AMaM-KEl$~^$iC1S`3_>DIQPQJw
zC9l2+hXg~K3;Tlo&|>{Cpx@K9wzdwn_V-Kr)FjBd3e2RWSLb9rreGh%!41KQa|;IW
zaXaie$8}c$*Ikssb?Y*?&IMd|(Kq<#nJ*B1U6{djMHyUI`ZfQ&YEA-txm@`VrCNSp
zZl?VyxeY!I$iGQ{{-ZppR4d!~Kf{r4HsH*lyiJnWY$AHO3NjhO*b%}oUd*^`0^PD8
zO9x7vHY*2I#nP-SW&pl7z-Cpf+OlQK>Pk`#-xW#9>*R>65SPoUA#qIDH4!JG&E+HR
zCGJQhVq0?2{rBI0ef<*d{onuo_aE>}zzF*zIYRp@>}}-V;4F3$_d2yCnId&{6&5ma
z>fphHrzVJVcAbyB@UUfKA{Zmu>8f>;6FyR4)MNT(BUX~j&M_9$0w+}G8kw=PXV3cK
zT4>oixUvAz@VMSA6BgA|jwP{Z!bdCx*;w?aU^!6d@)ZRee!7b6z;3u_WdV2W_19lN
zkR)|*jzJRjI$Md^K#+?FhqR&N$hbcU*Yzk-B*HY|Eo&z5;qiwpe*Z|A=<UGbc0CD?
z`F-RObRNV5l?NZT96We*faKJ`wbta2!7mQtZU)nM_!vd@J!}yKIR+OD*UM{2EGgiA
zj9kR}eVDH%3CEaB(J^8}w$|CmXvCyO#9RrqxH*FsZ_c2_GN8rH8ML_h0yUa5*O)V_
zDrT-RXJ(`MiWkJiN|`*Cp2F!;a+I~I|HFDZbNIBfS;?2rq<2S^GU_1yvgBhJZYO6Y
zZu>)=D~ITIkn%uapa*><dcZz17lXZ9TWG7VuWzVdu%O<O9KsSHntD?F6_Ma|bIDXP
z7K`yF3~DhNjhbXUth#`=wtny?u0OuHzqPgG%IW+xKiODyG5UH#e}Ozfnh090<x?NO
z`R1EvETCI$$3(1DP*|y;@VdotEHpkouAhNnESMEHHaYyo7hm|u%jb)PW`_ubsz#z<
zkt=Q5`>ot)EXqSKiu^*OF~<RdPG__N%mqdmCS=O30MIPS58?DA)h<$0CV1U3CXSiY
zsVKng%b^I%Qh&H|kP2(jr{dyG9?yzeP{DHwE8yOoJj}8^MXPT8;SYa!?YbTe0-{Pq
zl*$FKdyJdFT<KIC5YT`7`Z+?K<6eH83j;$p^YGL+@&Li2rzH6ZVRvAxW!hWYuZn?Y
zM=BnVQ|KoH0|P@LVxX>bUR-gB?!t^r8m~@KXgyW<`d6U8*%1X)r(jP$_~3(2&&s)T
z=FGt_i$0=zgv5OsM$OitBE3;X`ep}*QEqg-2g3nHhER_?F9G;*?LyHI@ajN5;QSWP
za=!D?z1gA1FnmOGf|J5-furtt$WK28e!A)#aya1n&ejZmy6ytmPcpMRW%5&|?{z~4
zKdq5pllQ|No1@I<y@0@vT?L^2Q5w>ZD0RvrrBaRp1MQRd!JZ-c#jn8q5BRswhkKEt
zVXBlAc=a=h-NYR`sme-#9E5&nHo<vjfmG<3@c8%?ke4Yd7X-lKwQJX}S+HP17CWel
zf!XU&3{-#^5J50&c(aQLUKdB~4owuD*+VXuO;ja97zBmQ<%L^o&S867TF!!8C|t4<
z<if?kce}}7$lu7Hu&x~O>6Qo|s&eA)HRQFg$O*BpFJ?BB)DeR>S3|1jT1SFFVSROV
zv+SzK7+{IBs?JOD$SaS#qF9hYEqJPm4iRfK_()knVSY}I4Ws&vS-_RzR4@=j#w(~%
zg-Buug@^<~1m_!NIXOnAyqW-kKk2Y}tpZMUsp2FVCGltilMm)>*nG*#hH4-seL+14
z6<1GZ>o`UyU-F~#M9b7C)1pN*nKX$+_!#N-YEF^<zUZ7;UaJX|jIb(X!XqRw67-TF
z{1d|Lz<Q|6BV;>9IWP}k>@Cv-Y}5>o2fUoDq~smhicG@j7e@U4(es4RC<vkLK>93U
zAK>AOEaUs9NRoIZnT#jl%W-9pMpYd=_{CsaL}il!6j9sZN5CF?fM*D1Zvug}3#FCB
zGnkESM>Z!=R1yf>k7?<pC9#x%zne^?NOBhoB<IVJWD?J6MYDcKw#H0R$OMQJo|bHO
zGBz#Q{v9~+yBVC=oWY4JFHi$6bLIqV9bJ*ZiC1KB;+70fyyAbG)4M|Xp;DeMqrxd`
z;q{pO5BbmXOY+mupOyb6ACkY2JCqHok+WX82l}(hT4kZ4O@B?V+)ACcpOqfbcLtB7
zIKm*@dRc}ScX6?)P;3X82a>M~O`*<#Kwweh=FOY8d~5BRl`EDlUR+inM&em?9b)d>
zr6svIf5DY4CCgMPXyR2VsGmrLd5y!4wGF&Zg)rv{M1WCMAR1a*-+K+Mr2l@ewRIzy
z1bfJS+7FWf@@Mi2`7gTa`zU!-_|~P);XwVgr^fHdGtAF_-awwxUbD(NGBTpO0p4$K
zAiq=v<qW+lDD`c@euH`LobrN#0<Tk+x$|VEF*wjqW#;2Te<C;Ap=;tm0gditJv#ZT
zu~OoQqVMSH1r@&8aGpG6Bu<s5^T5JVy~#nIhQlC_k|Q*OhtcS;WtS9V0i@BPP$+0L
zI*W>maur&>^gMgZtG5eIl8T|52Iq6okn3qF%LvrChhG6HOTEq;H+wvN1Gutwn9~?A
zj<mL7*;QBAvGU*kzP_%4`~@&x4KgiudY&cb)z3D~C-KqoB)}vLNiuq#@Z~I4qZ&aa
zEEfmIrV>rS;6%TZ9pv;6J|@-)fjkR_TObQFAe%LQ%J2XZ)CD84Q)ATWFzK8mM3aeF
zoCC=4u~RZYhtPb!-PR<EB-uMWF*P*>Ba)Og8dZ4X|B1!LwD6AjNN}g7z@25_1dSw&
zL_?#KS~!)D?MZ07MBjYA7;h4tO!#k~wRLxQd!6w}++tBhIsj_#=!7#Z(m}kKb_zYi
z{shl>1-;B@_;J)MSUrY;CBI_J;gD<RWMN`FuTza!r_!Frhg;dSw9odDlAW5p2Mz=c
ztc<f(jKgr;OQw8mc5Kp1VqdZ9n#6+%>ra+y;9h&3CYP1&K~HXIo(k<b9ROEIw|#@(
z<|TkU-_AguZ)YG+BOuR~Z&)F{A_IA@`I_HmgYq5CulDZU`{y^_ZdC39<r#<*yJA)9
zmFxLO|M2|t&u>s}1$>z!2WTJ0XQdbmh_kR0Gdka;T%{DJzn2f{K$j$G1U@k=2sK`P
zchF>)L)~X$R=rmkCUEzAy*iBuh!jjP;y@Fbql{oJK|U)xOP|8zk&{zny=TsxiR(+N
zs;Vr3K$O_>^Ye4(uWVSjaG{G-Ns?2eWn3jC`51;72?zSmb`6Y=$G!GYbo}gDtTW7+
za&z2ntHq^lBIWYo*Fn=3>zCJOM_^y~>F#5H+r4}Dc+Pcq+;PXulP5=&Sr=b?@v5~%
z0yuh64f0?YkUQab%r<u6wb!o2*vsL;Q}4a;=YO=cOnUA8qb;w${@mfihqcA4RxVmt
zQMSO|MA&!|-8nV7R4lcFC|*`!(77=hWf&}@LKFo=x^E|s`AI@eU<~tm>hfvAtn?;^
z1qfwWL53TWSLgv9+srX$cOd|oC)aIp6&4oeI<T5jURjyPjVqYiXb|&R+A!415sx#<
z<m3=Qlc*((-t2VfSfAa<1A)3hCrL)5DUiv4*l_yQn=V<te0hn;lrFxk5!$N76$>|Q
z+O)dX3ct1Th8r$kTm-*k^><CcH>-#PPCpr76YcGoEZJsP*xZr@b6tYZo+rACiWY&g
z6Y-BkQju_QPzSfcpkd)}r^1|xYsN|@EC7vHkVP?>!a^#91L)BDcB0auH1RTt4)TC6
z7-y+dh|G{wDiOr+IF9w1WH}Y#F$Jt%L);FmI%5R=fJtIHdmdea3F||TQF9W*J0_#?
zB#HRP2}?_;7@a^LS~12E-fBc2G7SKONsdQ`jW&!#vXVt}yl6MTNddGXLqHq`($ax2
zBykE5vt-7!Uq?@m1g6O7=PiWyp;R!=M>i8!Ktl`_g%iz$Nu+!N*p^&E@$#`K=^pUn
zVEXtJ)`IbJ36f<;AVM!#vqEd_F<K2V=DC!F7c@adGU0NkjyI)9VkBr~;3kIRvR7a@
zy(XCO@?*nf&j(&Mh3RG3XjEq{@^TYoaWy~?TqsC&Rx&4H7z{FNvy$A^3*``8K`JGg
zaGJ@bFN~4k;jRicJ;PLgfk?E>9J5syh(ueFfk4H8Kz08g^C~aM%<uQ=t80{Nrn{!6
zr?+o#uxBGEIT#FnFkO@B+yNLO1OT&J`YrLu@&E?)6y#W~=83@4`hxs?hq<Al;gWT8
z=8##^c3j1?h;YQ%M1Q|z=<lBxgAeKHTT?Rm{yxwSHms<un9+V}C3%|sg1_|Qb#qJ6
z9}@dp<geV1e@wm)C&I`E*O4Pfj<x;$?~>u~e{VYmAJX%-J4~U_R47aohUg6@gJIgQ
zfzIMLtCRWZiCT{+mUwb<az>{>*VpMe!EU$Z6oFknHmuG&V?oA566a+ZosK@RxL|r}
z)?>F{gM53m2SmCnTQpQxS1sS%*VlJ^zuAo8b|_+kA)JY2Fnc9DFf=Va8M}jHS)RiX
zM~O=%WO-LJPv`v8FAt&(?lmRGyU+FzMj`nHxi-Ozo|XnG*|V~;G~==?8Dx1}10P2H
zX@@o?<~2>V?0MsFgq6v~>sM78yhH=vqQV<=NNbC_*4bi(4@VEAecKq(%jet8W(&sn
z1cQ;$UVujU78S#AuaxN}U(A}JHKyI%IER;CH>Y^U3?JXwHF)f8FA2bRP|lh`bxWDm
z#a?p?KG<iR^LM)$sD0}<R3}^WFT_dITp;Vg+Ha_8y83JKwn(|nLQ5g+jYgZB_rATC
zmXf(gsZdz?L;3l1|1~@?y}>QepO=4gZu>iO2&n%WN#aBzvOCe0KI!FzsV}()Iqv9C
zs)<xuFd!m18DiP>>$hG5u)b+Yg&WHY%TpkTva+yDEoR;)Ss<i2HWj4taqtw36D=+6
z99I`U&}VJ}G+m{M=*n@%HPYG3^Nr+f=q=<l`6%6=aNoKF9W@fYevVtZbnCZPVOvP*
z;ryZ|dWJ^K!BfWsaR3bzr6$9j)4p}5Cj$`>cuYch+^Gytsws->_OUTFy~^N#Ptvey
zk2@QEp~;$izdWIC)6$pL&WR?Xb(rzJ%_SB3{inNdK0Yei3M--2&Mz-7Dl*&fe`h(#
z47jkQqHyWBI-I@5RnR1FQDg0>I?h<N%|u%}1J|1?>m=*JgD?H%J!pfD%1yUH`w^z#
z+O}=;=8_tKoQ5TH$yPXRD3ubYmqPS{gl>FcLmAC%K$+3VR#@PEG6wE37bDCnp^FS0
zM!#{G-<ZoQ@ku292#I@HS8e@6Y+VV)ShLJyE`?FozO%ChK@@4GrKHw~g%OFmJYu6S
z{vg)Iv{=<`Si#oeusRJ`*$GaPVCJq{Mw`)Sw<{4``mh)JFw{?78nMxrgB_oJ_F1I7
zT-~OnFBNmKJXBJC+?nzZqBm_|LP6$4S4Sl<0_WgJB1uE?=<0}qk+i|yesvoKw)pT_
zfD9&-dd#9p9QvpYTYD-sIM^5WF{ci}DKvy8GN8c~lfl#^+_5uz-&eP3>9&J!wKSc}
zVvt#L@XidbzUl%s2Qz2VmIGH`mBH0lWpMRX-&k{SG52L#ONS)-d|zUQ^bhu33oQM8
z5Lb=LQf09+Psvt9VDArTl0)qO4G)Zbx(oWt@aYfoZe=mB_FdBBLQ3Iyj4Nl^UFe?9
zgAo>ErP7NoYTSJJ<(FU5xMIoN${B?@7LBYVfGeX!mMs>W%Vy0*8Nvr>_M9B_eV7Qc
zytAlw>FUO%vp{W2O-+tXFJ%t*HxYh-5dwm=p8OX2o8(}+zeWBBjPl2GetO&1O&67$
z<H@Pv;o(sx9xpGSy|8NLDwH*R>rv!kbSgd3epaKKzvXAE!D{~#oaSl$_p4<-+S_@2
zdZF{Pf52~rF}&KBMeF}6@o+da6`Tx5qM#^Y0Uu7%w6#qJ#>cyT+tcftIq(E%kOb{m
zR3edBGHH~F{`@6SIIETC^g5|@a<cslSjYVXqXDeKWOU~j7h_eOs_K%G88ht8+#CzA
z{dS(C44y-o9$G9E@DC08C*mAY*ncjF@*JGGLgcgEQfWuW@BZ}KYp=cc;nCI+#p1|c
z+_?41>u<T`mhazl-E~)8RW<jbhB9&$oLQuywK<gUp^f&Q`26D!51tN)JSeh;bC@8)
znezl*Yw*#;d16A$1Jfqola=LS4I+TFPcwghf?+w2Zx@z9EG4b2V}=<eMS4S`DDMfv
zJGELt^cC@#K2*>;vONWbMMZ^qc{v#4ZU$q?VhP2f5fj`-nsZCap-ZjyY<py2Afhwq
zNwg&2#45V!l~pUK?EE~N)#&gQiPRFY*Dhbb>9Wf=Z(O@><$_tWW|fq+ww9N7kB<0@
z;H)(?FeV4RT&ia;oip^_KL%a7x$MZ*jm2!zHNDI_(*<YknwX4^`HJEg2N9Y$+t%9N
z*>SdSd@77pK}e{oYGfqeYIO$TtO@GxmxGHD@x*xCS?TC`^NoF{<3~<~jdpQ*(Uoz+
zSzl{EGu+}U3J$=4_q4wL!mnO@<>fct`LeSQ196!CJMK7iX#MQU+Ou$0T1sAxz?cY~
z2+aT9{JpDyB`;F0*1tH}{HvalTKDuaEH_`pm7Rbq_hjJ8;~BVeC*aCG8Mxxhz?IE_
zEB}^(D?2i9<;NMgvg2#n<AcJUeQ&)pI=T{P`82O#+x`3RC?!gcVvv(^NDj(jFvl@K
z>*w+h<(uVg@=fw}@<w@WsxQ@<YN!1)Jc7_4fPOIbdFtcTA^CgI-;;ye8&W@!9??yO
ztTv0uYSdvsgdrPr)Ld60xeKcS3^tL49b@BzgOii>_3PKKhSrefvY8C%nl!t3MsX47
zV@2awylBKfIcYTJWLvFONsXB(z!f8?CQ8MKH+_8_Jqwqu*>HK|%4Mlk<0Y4FzHIBa
zt~+(AyKi_JlZLt_^4lh&`Qw+zKlretqmc#}|Bbu@u!8+%@?v@Yf~pyL*}1tncVBVU
zmd%%6dFAGoW2a7?`uxD@(}jgAR?M1tSI9bp$nevL4o)i>pT4v2l{YUY50YP!SI9mJ
zaK9tZGO^gjWDlJFALKLgDLF~{Nw@Yl&+plHU>deQ*&{V5AUbI@VBA-QRXecGW-<|v
z$K+IOp!-bQsS_t#TiV;u2j|rB<L|!v0kjW0hWgK;m?iDftY<~N&cG{-WC_W}VnJp@
zdhsi0CXp!I>l&-YovYJDquqmu)d6Rgr)(x5S%Jgt%E`%cIo+#QuUN6-qIC@o%a)Z?
z&aHK270x27C7O6ljffUBqRwI0^5Y$CUBeTSrLU*$<f)^dd{&%e(rM3OoFEb4rsDf5
z%9pHiyGKX&e2AqzTIVfZf5R=eeCO5;wTtT-8kX11U%Vb}{LAUoHZPLbsn6Hb<Z1D`
z@BZxPbxSwi4wU*b{JiQ&gl=Cpmuq&7Rd@1_FZ}sHt0cVh#*5EBzY|Mi{YbmzqGFfr
z92lA;G9NJ<fzVea;`AiEGnfGrz?jXes9m~z-I~=K)-{4Yxw>)V#_O-&a>bS_Hq^O1
zzQ?o)f1iIa4CaikKr{TIA|?xn=23#M!^m<nCRIlww8Bj)$!p-8CXFncONsz%-DcyW
zMGF=zn7?SzqP#q}+vRc#3C_1Y?Pg-3FAj%&ytlLci^KnTNfLhXtKa|n4^ORB{$06U
z>vWkd=fW(|qih}gBA-ab0#feqa74{mtuwpw%Ze?Dc-b|VH8!qaT3*;lc9Dm`#=?&I
zoOY32x;1MSEv#F#&=l1Bwx?ZFOf~6t{O#Spf5^8|xk1U5E|$k-MR9@Y>j7SWQQoPY
zTUT0I@fDAjzrs~$bvmO<s?N?fh`8cw5Ezyu6}{U!(b3i0*F7ALe)Q3S0|yR%{N|hO
z?Z=OwX!(NWW4`TaZx#!EiN_Mz<)wM0)ti4RT?|+J0NDXz{b%G6vX^|Qjm3y^E;a<+
z)Ar!-xgGiQrQD@U^Rmz}Ki4dBawwIva8~QfumA0x*FWv?H!8P-GW1j0f24d*S*NVi
zz4X!(PdxSbLxN!pahf`%nWz^KXnD)Oef8?=?_EjuGxMa2nH!jEnJvtHOdWF*bA%aY
z0%H=Fn1<~s^krL}p4WH=uzP0)cE6H=-Cn@%<_zp^&cN<#0K0t|*zL=}ZeIp=`!e%)
zCK9`M@7dj;Tw{Lrg<rieIQYN=4`F-sfo;lGPzUXbiFPwQs+1}k_#OaAk1IsktZ*`z
z=<=w%SKf>1@DvV?a?tLEPn$K5Jo&;4FTAvSrScP6p?a_6<C7#oxShb?4i0VxyNl<E
zK;)hJSja!cMM*dgAIL>4>mN@lTEfJ`TJ5#h-h9K=S6_YYHH}La*4Nk1sadh&vdgyJ
zbj{^gT>q`_-L!Qp#|2{;Lclqk`5up_tjcQLPOecys|xZXencqAic9rFBg3Qlqk}`k
zRKLV<q=6p2lX`KXDdKQD9gYDFs9|n8`2q(0=Pl8cona^X?e<ON4D>J=BJH%FB^{uF
zJ_dkIGj1_I`u9!bdFY=&pCnUYdLAUlNG};+coHNh$O(ric8vjYShaKJtzEx<{kQI@
ztb{S>RD-!LT{rysM~LZGcslUup-+#lJMzK)&yG#&ukY{8onMDsWW`|LMf2v&{lGkL
z<wXnW?2dO?Dv>17Xk-do6s_QBloho`Xrj|OGBOpI41_fr)ezNSWm1hM*xQXxqP^&K
ziO#!IVOfs>E|PUx7;w{XB=yA=j-ZRLy7UC^?bE47n}~E#LAJ?gw%Kw#EITkTFgh_Y
zF*Y_u%VTq5D#fzH{>jkz=t$2%BH?xyV3IDAO~<2xo0!1TOK=;2S)(ydl@L~n{t7Ql
zVR2r%iK?ucq-v{KX`BqF#P#qSaWyhhx@f~vPeDml)kPZw;lmF<_ySC~qhIzU6p)Cb
zBN`Qi{RcbyT8<rk`@>*x@#6LKi;9X0s<I6_AfI5n)k;Ryn6{CCXri9MxH@7mq>QF+
zlg&tHpd>Vs4W@9AM$KB$QCJpJf$Rhc2PWwhmUo$G!Z{)Id9hjr%xDaHynwc4Qq$L$
zmnWD_R=6W^>e!mX?3r@P;6|6=9Cuxv&j&0KC8>u=;88X}lwG_+LPXw0q~$h~)umxs
zxF-V7>$G6e#$&|d#2Q3mEXMPJ;Mhng5}t~q)r~p;nlPio7{oQnf#^VjAB{#G=Lp_z
zG287^wk(U4$_hQ5iPTajW6Cgr$;sfjI65>kJ&(4$vbem?!tn|cmNCl)a%*Col+Oiu
zRq7la)$3ckzC6<H@9&vFs_<hi?0_<P^uTez@eYl~N5lJ$j`~%HN2KKH($eahp6aFL
z6&Q^rAt#hMZO6Wt=7f`{JI)-pAN%yk(L?H_oF^O_>6N3AcmfA~EJ(|*3p|TH4lbut
z^0;j|MS3tQ3|Q6KN=Hx&REC)$CnqO;G<q;KLR8U!RHQJhk}#x_0!M`gQla2Jj|xdj
zX7~hQQ*zpy*)uqB?Cr$pFr8lre0diBDu-i^0bX_U=S!Z&vsP@*tE#QcMT)7afb9iv
zA`V@fIyyUjG&V7Okf`33NJFxqNd@zwQzi{k1)Y$wEEZK=1^)q9wHkex2$7WTpB|V$
z2RU+Ah8+22h8(&50x^ttXULJuL5|#+AxG}akRx|y$dP+8=f|IaevPtix?7I6oeGKK
z!GlK+;G+8e=5Hzg7Zj^o=-$m>+T<zuiby+9w_;VSST#rf5-bH2Ea%RnlqqE(H}*?A
zL1u_Nr(r@4i(bHqAi>2Gb|>K<A~3e$u(w7Kk=4HY-5=h4(@i(sc;nSqZMt~v#p~A0
zomX95U7R~}=4F>%cID=cTefVu{_4vwCs(NA!K(jsnCkvn@YLUN`qarUkm7oVhTG1b
z?Ho8KCAvNqt*S`SX!`pZhA}x!pnPp+c<3`2CjdP5Q8EI8;RN}Jyg_!8zmmU@SH=7P
z@4ffld*!NIZn>07hEG5y>?a?jJ$w2{8~L1kzP*7QQ!_<ZW;ZDJ^82ZBk6C&4{qYaK
z`Ok+Q`OiQ6>8<^rz4*poUwMC8?f>vE4a%LoYbM2iy-{rnk(0hs%w(Qa6phB<aAqeX
zDN5>z>}*-?>~8B!AF5)0I2_euf(R)Ko@k~B!b}Yej2}24>da=tH1r$v(>PzJ*XO%|
z*92C}Bod&Cp91@~tJCktTJBR*NzB-yvzg7QRCIhYI668y&^<9h;wrc&5>6TsAZ6jY
zpk8mZ!Kn=<gI?6i8dd4nQ`mQ<)GSGL+1ZVY%gV|OycM|Tkw+f-4VadHdG+9twzEBF
zdU`?u0Pd`+l9Fh2^kiq((W6KIv8TNqtKI48BEx(Wozl#LCwp#|rz$%)FRv&!%Vmw*
zvhCAgE}H71A&T63m7xP1D;RvGoF3Coa-f5Z2S%LPRtIfeT`XIcQ(2Zi)Yr_qh_aK&
zO@@@EFwe2Rk%QZ!>|_;E^dQkElZhydMQ}2ZkjkUcAZF{Iii`w8DIKrj3p^lyavWMM
z(363~8q6}T=u?~?8I7oM(peappXD@Z%d#DsK=0X8M$uq72iImnn|3$XgWw;7M`uTC
zP%0l8>1=OpZ9O}5_;g>yZLsJ!T(Wud<`r|SR+cT!*K=@S0v;+LA3ip$##?8>)57`%
zMYijg*O*WI?X}+&I6X6GPvdg2*$#&y2<t(UFljUzv&F(n<$AptXOl&~swCG=_#})S
zm=`*CR+gd!qgdohBZJDJBCk%9t;+8#oJ2_yYxZlO9PQ;yf@pS`^~^K?Ydi@-PtjHn
zLKFjc%4U`eQh8opSr*(hm;R2+SI;K;a5NYO>6W#qz8;8sB;|kuv9zlSvDxOO!SM8?
zY$Qx(EnlfDR_-+IdRJd+c9hi>XS362>u3y`vd^u>)B&>AWFYH`3}h_^WUa|S)|w1t
zwE?ou&Op}L8OS;-16gNfB5NSfASX0EJ)J#$eLa@|JQBr^snld8?aIIbMD|EKF#jDG
zmJEhPx<oOwa86}qg{ZyaiktIl>g$(%>jrY8v|Vcjmh3(A<(HBcGYnQ%R#!I>*6HkP
zAP)*Z{@!=L<FK!y`C=o?+8<)_v|o^4l0h;A2sHxVt~he!$ll$LKQ3u8qu{N#-Fq*H
zLxDz)g?&N{Eo6Q3^t7j%kbVa-%W^@FA4ne*nb0YxM&gygIGMzCM3k`x5ZYQKiQweO
zNE0z966^PT*4El8lb)XEYpoJ5x3-WDTsOqPjl9}gNgIU`JKJ&S5d1igaeApH^!VYp
z9ls<xhT*M|vmIv$D```lwO~dOhBRvZVDt$Csg$I3`ThPe8)onWwNGC@{MSGInecE<
zP38Knmt*2S?dJ;@F0{N4w^LgOhG<K*D8jMuJBr?9w-QAX7|<lfCz`ioxNkyND2fvO
zE2K9Pfg_{Q7|AWEt{^E%-~y-5w6wvIXf--FyId0e8_B(Xe_D!rfYypKXl+ggtyzH9
ziZW=e=mJr@t_)gpWzd={gVtP`w6<>_wbiuy-rWc7-F<1xO}RySf>=_i#>VTe1;b_i
zwbwN^l8YrT&3`myR7E4u-v%&<{)cpvF7i&gcflvv2ITWP9FF>2cR?i;Sx<Psk_yG5
z(~XR@bqzx6Y8x3L<8b&tBg|mG+kN!t3xD|#+FxEcdX%)leyWgDEgDXT{_4Ds@H@OX
zXY916VX+DQt@N-Fesn=iI-aJ9gnT3f8{yQUL^?dCiS+qMA8ds4^#)D(=g`0mBc#t5
zA$`UO>0pHP86%{>KyFf9#t7*$Mo5=2Lb|W5;WSF{*p9C|iO@lEqa=#&UM4I3#1HQz
zZhRc>9&9QjlWyY1cQ=rZ#bhzvnMwg!;+wu+(o5g$gK?s7ESO0d-;`I73V4J6-F*S-
zEc^e7I<vlkI<qqVyScCLg>=JrBu$pGJTig`&&Y@@UvdeMr5Z18oWgjx9mJ4K{y&7h
z2YejWwLgBR?riVUs;sPH6<fu!W!c76a>LjdObdntLLh`BJP3i1<dK4BRxV%&kU$>4
zm+}%y{v-whp?6aZ24iDfWedr&WJ#;GT5X*zGxI-ZR&v7P&xaX%SGzMi<<33dbI!fz
zobUbvID>d#e>U4rUL~*UoiUdYUe<^8BDRr-{xi;U8?keoPftg1`#5fR7@9MefuQ3R
z2iwi&Wtd*zYhGqH@7V*Lam!SiA}-soGwRWZ*&Y8Gakvd53b6DIwS78ja6Vkbwp>i0
zX~%TnUmQ+^`>I6&sz}|g2k(_yp-)Dm+j5vu4o{^p@2M2#J(a?9FkcqtJ(W^;DurM3
zRPvcG^PdViyc$gUjp|-?kG7FIN~XDE6{Sm&2!nL3X6qzdKm?JDh|I{y(GiKjr^#$d
zMVDz2@rY!v$n4$wyS)-wM1<_8pFH}1pTx=UruJrYd#BYz){+?^agq2$#^)>aNuZX5
zNG2FBi|!=@B3Ujn%a<=+E`e=Lb8FVMlbz5|AS~oTk(7x{S((2~0x%MIIv%xWM?h*o
zHkg8f`T~iJ5W&t4oT^Uj1uX}H!Yo>J%OVNvblBU(#<&7v7D-TKg2CaSM0`ZBaXxdO
zbrC5M$$KL6-g_UuCz0j3XHy8z#+CPMT<4G&SKhO6og*97p7(6*dC$h4_iXI>c+PR{
zSU3g@grg#P68}-jO9@9IA!|g$W*dNST!f?P?ru=B<W2lXC6_?=W7z;RX|qj=6vq=z
zRjaE>wMb^-Kgu|OBZt?ZNkP7e|0v_L@RN8vz%(5`+$2(8bYTZp1B^8iv5HhCOORbQ
zz*P41R3Z~BeB`(Q6LPsi7(j$|q|5>4P-EjEk(ybZYsqcr@NdPumb@HV@|L`oyd|$C
zH$Y2X`85%!oAX-o8~Nj;J0I`r>Uwys)~1>D)uheW?i4^tz61aF{_`84C}&S?GHWh1
zst%|F@E4AqTC_&(d)ij*``VnT?Hjmf;ApQ9bZte3B?>K3rG*l9NLsepCC0XIe4>Nt
z?*6z(qGbzoNZP<mc952ADw#}1M+OH6gK1Y&YpWMA%U@i9;n+(Sw6w%VhfWX1W;hc=
zLqlxix^?RokQz}eWm&9;LbGXbKi~)%Vm7lZYmx<<J`yxA&>JE}MRt=jkw{W3Ujz@I
z5NmP*<L>vq^UgaTOg7%xj%gf*RycLhx|NrnpG)h|huya$9g_9*C-462?Y@n(gS&U{
zHr~EUw*+1!+qaN!!vzQ?tJmY<jFA&3PK1VsW2CecfVOzdJyRbCdgG0M9w94MRQqNJ
zgCms5u|lLw(0l2SMA#1Ktptp(0A_oTl*I4?&ju*kBoSjkv{3PE1Uj<;OY~YqCVeKN
zP8pt}1DR|H+)|cknkvU)i2!M_*bD}Py$pQH+7fm=5>dewR^r5rVJ%t4U?{7aIjhn`
zgc8`p8PUnpZEypMMzUZ4#*n@g2b<ZHtZ7=xMe81mqoAP7MPyk`53?+#D735-s<-&7
zpnYd;xaOK`Zdh&ptg9<iR#ui8Af;$0Cj_^9<K}OE?;G=orw#UK?1qkX0z^zKO(|MJ
zmX-bqa6rR?z?;M4&;VnNJfn{nEn2jpo{W!Y!g~dQNz2^0PQ6Yk0Ey`i5LANmR20SR
z027#{A|W{&pp=LNHjgOCLJHhkLemmaMMkLeFgux&5(~z-ik#VO0*e+&1O&Z2A|)~^
z@~6T79YQoqSWJ(FuBv8nvuIJ2WICNLDlG7LJka)xnWH+`T*(55)oP$gEEbQ&EEcnw
zqhoM5j|a6PPcsxUvFV4ko=RvYhA=t-o)X9Hq9v0WhK|~{q!oOO86v}%+USlcE+j`)
zm5U*LeFJCuO8x#)3)=_BO~j}A36<+7>JBSU5sjlY6?3F%Ean;z8ICegBA3bHxTwTr
zCsUflYeXMh79G$j6}&r|N~OW0h){6c!7~!!13ab;frA4FR(4oz3{fn+n$5te7zdVW
z6fGvk&Cql-j-?ZzRprhxa7c24cg&tWeHlsMSQ3dOl9`^IMfqbuw(sU4+t2fmtrd{%
zyLrfVLmsl#o&(vwm4|HK%tN;8z7p$qg?3%RQ!hOCLO6W*1)REn{-tnOe|zqUO#oVL
zsyfBuHm22S8?*{_Wa{&PR;q2}cEY}Y1t@!5lqm3O7<ODyJ2=MJ*xYQB7z_ELPhy99
zm8>Gsvy>AZq#3D<T5A*~dIrnu42~!Y@+L2DYin(qJ!j6Gx$~U#*r`*ehE?Y**f0kJ
z;pl8ErkBL<SR-iHizO~kRc);cygrsrr%7?KlO>6<;o)I;pvCa$?)u3}@*8qL*=G56
zD%JZM#&Es!F;1oDf@c3n{zU!??^_*r{P4~@@4V}m_56WnpMCa2rQxQPxoRQwPsumn
zys7?vy<*0^if$bG5KEfoZodBdMxN(Q9KcR{`z#YReDI@>K2j-1dw^i&4#NJ1ra1b4
zMVfDH6#uh~IFst@3vIVzx((6uZCH}cAXAzeo`@tE#)boHc5gAm=!LMxLuoybh*u5n
zs>a5~>H-61D}}&h5^0RO)!B|1ULQ9rNhSLG`r<ezpxG>dMU0uostSe(ZIR&|q3p4v
zT|q&pJP!-qE@%^k!>}AYcqBr6B_$<J)ivj;+itt<+E&Nl!Gi}6lX>to!COVMc0zFI
zgJmV-LodJd(it4{S1QW@flS4W8Rs~<8UHxkJCg<9;y09*`GZKCB9RBdA-8Tv|13o?
zsL*O8$!LIZ28I*N#VF}mv(JJ#aRwuYa>`R3477|9(_Tf|f@LW&Bx58uI|1U{bM$Cf
za%Cu<C83bavKkFGy2fNfa9B5Q@szB@j2%FI(TVIb9HlsYHaN1uL93d?C>jUGo(GOy
z($Jt+!};XnS$bV0j#GC%{P1zf6=N($a`<q_WXgbTSfKK;!*J|mil~_+n(1KEh?xAV
zNpOb=%tDp{GbDzk)davV9D203SFc%Pb5LroW{ujoXi<UW;uSeVI4(YtFxv3hr_vl8
zIygaR;$T#Qt)Ir2XIMnD*3&%<2$>vV1Qrw?ml={s1de_1`RDaQHB~i4pIWA)>D$_M
z%C7SymqiXmL9zGk3l>+~Y&K&!X3k~ueD@snQ7$=04&m3;M`;7JS&@e}ZFy+3JP&PF
ze#L*ind^A*=+UFkZvczwo7xhLl!ukpDE+-nyODhuHvi)S?Wfw!+IgBsL%QtTP7A<}
zjfx^W)CcV-@m4dP)yPcA;vpj;ny7|&MwP=Iq{_i!al<rg#@M=Ybl_aIt5&UQDf4;C
z{8iBXi_j`6lanBX$O*=iiT?fxP&rwecNP~F7ZrG|W=29I$X#n1>+S6gn@g{{@x~iB
zS-{zA{LV@})Z{74-5Zw9+i<~^puF43b#TD35zeTOq1(yPmtQ#ywvNo%X1BMkXkWCT
zyi|~MqlTpe(19pb;wexXimC;S6vJ3h_0U=XQ&Lk|=&N)Z)UTr$@W7ZxN~MT_Ff3O2
zs^axYTC>f{Lg%*?&z$Mt)4^acX|g(alL1TyFV<BrGg~zUwI96jW;5C?8I7ZoDS0xP
z$Yeo_gMm`z@RfiUTUJ$WhR$BK@|)kB<%qoh{`(_Em9w2bC*VR0)>1F?S1KtPdS)t~
zb(EGw;T)5SjU64II1wC*$DyUb{-EP&ylh5+Cxe9v4Llt%DspyQMg~F#GhR(@Gl)vs
zK`SCTDVaHkf!2sNM6zjSE5_wh5?BEW9Y8Q3N+w{WIg-kzG1oqz6R!stBx@BNW-vGe
zIyN#C92})7hSKzy-vBg_%!5vc6OvRcVC1YM9FHLXA?E9{1{O|`($b1(_k(5O;?I2i
z-h1zU%rOF-p5pN6s*slSRC~CXfKgQ_6Mzzu-%4~A%qWJ-P^@TofdN6K31>7IO@vi5
zTQQjkj-6DzVToq}k5h0jCM_$|Ucm`RQ{en+Vmz)&j3aIkM0*oh3Wl&|@wh!D#E^_`
z&3Qccf~0=$YodiOI0v)q5Ar1SJdo6@^Cb1^udxfR{)(h-;vN7Map1}CXt!z0)UX<a
z^^AHtm%R(?pgOKqX;o)GzoG7eHTQQ&E7oq%N~bb?ecCPD<DbI8o^8|qdkdNhqJ1xE
zsKNM3a7E-46Ha$fqg03U=+V=JQ9}d`#2GW0u?S$~-0=wzfJ7=b+J%*<Fo^B5!>3Qz
z*VoUhtE!3)^!E=sWcV`TtUj;3y?t&mS`4lj=uS8YhIcqUMX_8&v0Ep7bq)=MNl7tJ
zW5jTbFa~!?fXw>*2qyNA_kH@r-=6y06S!>s%?mHweDlq}{_d4m_P+7*tMAkfKmPdR
zU(|nd6?uR>jw|zvcC->)r%7=U7~MrJEsgc_m-pu)isvrZL)CZhK2BD(+4#PXKmNFn
z80<}Jz&uH7TUmpdW2gs67R>Mo9^^tzE1Cpmdte89YWMDc9hr`|oAPFyVD5k)1XehX
zLD9NPMCO(v+cnGCiyIs28=Js-n$x<dstSA>gU#)(u5W0l5lY}oKN}qejEJ*nJGctS
z1Xl4?5(zn*Nf^-pmY5t*O<|#(BvYJTe^ibrtd<NA=bGl?;$pL<y6v`GZocg&U@w6)
zxRw0Izj<?cdAXx{-n?sWx$VEc?Og{OHkeO;xM$CvGiER#MAss6q!VN%F)%Qehz9js
zQ;8YVL+6()sU;&5cFcychI-Q$EeOpbP+PeaxIS6!Ax8Ge3gC&rPykg5G)iS-<7EpU
zaE8MX5}r&FJr2V_(pc1h%BCejkrPRxshSp`7`DS?0;CvDrcz8c1~-RFnou3!OfW>1
z%y30A$fZU1f7vqwdUA>1Zw8}AW6-FeH4x$u`W6w%Add|OH6^2TP)19K$w#u;JtGq#
zA#nz7hBk1L&W_Ev1@Mc^!8hL=<!HXFN{@Sc^({TEWWxqO`TTQ*XA27pIn`nhe-20H
z1W8~`Ry&sF03R!x=`ckJ!x$NW9L@ojv!*KGYk^K+<Sbz%v$?X;q^Js`yPT}sp(loX
z{&|@2oSeqW%?_(P7H8qmHn$|0N~&s&f{BMi$HE<^UT}1L0_S9`H4;;*BvTSmpgD%(
zG%uOUH*YSHv$8<x@oLSp(AsnE*l~>5tm9Ek=B)9Le%f!H;_A8@P-;ycN?n|XQnLW1
z*5skonmm-62`JT+hf;I%P^u*lrCPp%QrEDLfW7d)7=5r*m2ssHAK$qVY>NdN4<8e`
zFSXg)e*B~@({7;u_96HyU0_9n)gZAM22{UfWa7!l=p>0oWz2siGh8aP2J5V7Zf;(=
zdhV>5{!-ltZ}0EZJk85VttghD`@yovv&?~nl$Mq_%?vRb$;8BjrjMbRnlfNL2(vHy
z`OkmePX0!oHvZy!S6{I9${+vu$KPrrPp~h)q|E#8HuA?U<a#(97=<A49`EVXrj;vK
zu3fvjvD82c3#lVVj%c|N5skW^MomT34)nl@wvA8e94vA4=lQX*NiY~dAZF-xh+xF<
z`{5z5zwItN^lHOs?JS2O8X{&mo1PK_hKSL~q*AFwDy7m4c)FNh!05vlGYZf+DD+_<
z)1G%GXjgS(4SeC=cf(Efu2YAI9}a?S>WV_8eLkei8w`cgoDqyOBrW1{!xD^oKdnRo
zt1w#uE}7m&yWQM2j-!afQ6Z7?0NO<N@S4U7R3a;psK`)6$#&f1b~unIIsr|rB}gWN
zY%4C<+h~Bjv!()i2u$+RxOXbqArfkvd)BPvd+)tB40o;$!-Jf?V8McVL|b)-LDkeu
zoN;iH!3j15g^+^H=T0Qj;3Or}nJlqlO0OP6O{j>x!vHrH?K9O`CBv*VfyPl%@Dp{L
zdthL~?RE#j{wHPNXeFTcL~@q)W{`|a@+9Nid6F>?B;%4i$++Yk%*8EvlF{-t6?pR{
z!yF9mej4=EzyQ2#(0-;}rnP8ZeJ$35HRo!ZweQogv0YoItz+Sj|F^XrlUKL2X{*El
zWw8Q~IwZObNAB$sne3pfmhGfE7MtjWXB~^dOWab|(9lo<DC?<Sx^(IM`S7xK@xq0q
zN!-F?fSF}rK(tRJbq?zE*x1n6*qEFa`GEnwzB9lZA%%T?NB;>v=jqe%GBD%2x88c|
z>QKnoa?OURLcUlSC->L$<RJ`6-a_tx!($j^*;{Xk_G2TMbCHf5II#P`fdiq4$iMYg
zSu<>ws0<-HX_mH1y0^_fxP{l1sogGOJr<Lk$fi>0b1NV`cKg&+WVIl;kd;BeA`ouO
z>f|iN#U29-at6Nd<m7lHoyNQYUXNGA=y^^9D=|q^g1~{q8EBC=nNp}xK{pUm?RGaV
z0~jeNfR{ObD|lx!R;`-jFrGYlQkLQ6^PX^+C~!bPoM6c36YW;aJsIODIKLi6DDpmE
zD2OH7DF*K;kq${*BpOY`=?CtiA~A_GyFsp!5>><958E}8kuaN5$tn+Q;q{2Vk`fWL
ziDZKIU>KZ_Dl8KDl9FkPFgmM7C7f+d#Z&MTeYkDaDjd3(OoE9u7#0BfEm|(}t5!|3
zg@HwGkPu>69$I!Pg;)gdTrw%LCd(MaGm#ScsVrmsg^71b9O!(rgNBpnr9Oi}k+NAN
zQ+!+<AIETw;~|j`2LH3dXCKJbi+OVOVxC<66y)k(d2;oyJh{3Z<mz{Ma`kYYTs@p8
zSHJs;#`(DuJ=FL9xaE&8z4X#Uk9@dy@818p3as4?+8oWVm8mhXc@Iv}gy+^1>QOZX
zuB`uT*@|Y^|9jkTAN=z(&pdOnc9XVIYt+hh3p=RQfW5tV>Tmdkb_@G^INxJy;U_Dm
ze%_*8!)%B1wrRfvbNYQuW=xI8C&NgI5D&^{KJF|HP=ZUs!XbcJ66YYQBNLXmbUc<N
zLO|%xVC{IP(i0FqiBDz}#Y=1*ltqyUM^<EqL1~>jJ<tyZabGOa-`^k7G@7$m>@HAq
zc2!NM8H=m1w6xT&X_zHuHphmEr>v~Znh6gK40sdS2=rH<ON)aK990EyxedfAuAu2u
zbYf&^Xm~6fiDY7<vJtS|Xz}831&7sNK>jG6GtihfnwAyX=mNjAz-r;?f&wAg?Z$Du
zQ?X2e&E_Up;A(<6Y|wjDvLd<npa1;l)6c*4+GCGB_F~`QE3dqANKsi!X=zO}=+c^O
zHascJXj*dq`RCUus>S36-?o1bnS0@d7nVnlz4_*w-e9uZwrtt5CiTpp|NQ6fOaXZH
zE>bV9;Q5JD$M^1j_oMyCyL)1N`^E}Dvlh;1sj8~-S}4FkP*Jqa;^I?q@e`v-z7Uz(
z7gd$n`GpJJ!%w;Y3d^&n;|piboI`rx`j3;knIct{CR>np+gDp;m8dYYjpMl*9}jjc
z#_p*ui<$)gH_9Yqppg2`+z0j@sKy6Gv%uRdY9c|H_@ugx&Sr}xi@>rJh0zo)&Z=%@
zDUEh|x6_l8v8{H7S0=;Zs9tc-Oyc1HSz$qJ^Z5KeEXnL(old92;dXl+zGAG!=dZ4=
ztS)le^ctuRr$OMrBq**Z!jwCwy#R}Q6;~CQ;G$RuhKrTBG4RYrd}298ab~mCYBCB2
z!OB^S>`@$kNQE)*S;LWaX^yOFDars?$?_~w^lH=SYQxdEBCKFH!)Qz^N`%n*s7zb|
z_|eD;{}RB>`772f27SJ=&I*p-?7BJ43uZ5GL;m))-~8q`u3bK>ssgU9rf!zgi;-#V
zmo3K`oQCSfH{N)ow{7#HV$jk;-Qqj$xa0h0AN1%-vP>+eX>*CMysEgc(B&yJSF}~1
z0(nV}pTN;0Q22}{%^A-q<FpIF*z7P9c?21R*fd3h|883WU7+eBpEn}Q-GstYBxFz)
zsi+E1)*~?|K8;RDw1Y>VhI~4pSR{b~rz&ymv}%$#Ds4+~;M&yH+($(t5~+MZw2Xzj
zx}r2supVn>D{WAYA~T&)5D*oInFPC)WmHv;+(W3XLNYu;(0``3BI6WAn<XYq+?+%U
zY_@}EctbR+v67Gh8#fDn9wV73O^wBnmxnLxuxlm;Wh@n+gr??5R-)0zz<Cl|MvhI!
z<s^6-U^N-|0Ig=D60IsJ(TIgy6!1S%SoMRZ3^cW!85@fwI_!~zJQfN?H9K@JyB0y$
ziSbEHglaNMwA(0m@CJwTbW-IdA<D8OF)$qC14cD-rf&rM&r-OeVk9D)2o0Qso@^mW
ziIxeE6ELDZHrChGHyTXK23uNn*(ixl$4^Uep%a>h*PmwN@laL*DB_$Py`BB+v;ILf
zVDAc!e0J#2X{8FfPnFVr2pz?+#MrG-Ricxsv4dB%tQTuT2)v^3g3ChEpfzdDB=8ay
z>Fu!7X(LF1QS}#NegvT<8r??%KAD}RjV6+g%W8%uR8qz|I;=yoF|;9@wSoigpajmu
zNSvmUjFR0B3KUu}V0ZJXfn~E4#-nqTg5H{ZQlhKM`U3Qr;_Bd2+4wwGjY)zhld-#+
zDrwN|;K&rY0VclqXNR2$d!VEH((6_Z4i5H13(@%W2$-{WGv_O&CkKbKF@Yh$5MGkG
zR<g02Q<kgzet!+^w)i-S1LZs^%iCFpBPE9e_GX*nFq@-{89KF<NluL#|KJ?;pYA*d
zZ|8M+I`_JB#6Y&?>D=?brmA-SsIfa9-=|May}Yl#|GC@}xL8{R?b1E99#LP=%k}G@
zG?P}Rt><^(eoy~ys$9SNpcuf!>SPC3)wrO(zFcCW95HoJ=A^``S%qV_lO~#u4&kg+
zUnG^nf(a{Du3bKF9*(Ot*ZBRQ7UR6D5jU(}JZH`{H-+0F>%&X-wTovK7rUWD63VG3
zSy;x;0M?x958FMtYW^(S`#vhMm%Bru>B*?SkUx_r$us1Sj$i%iXRzG$?e**7!uxDZ
zx39@fM#1_t`7QI)pOOo5flG7i#t-AjLOXem{LcEV_V#8>DrRQS*J(~Zf9>U$Uw-=4
z6V>zdNW0%)aHOsBk6)s+W#r*uZfd4nGGmG-7|T-za1%v2y=WE}I0Qkr566eYbS`(u
zQB(vLzu)K3D;bT1ve{{x@=TftdTQs%u2aF_1eQ4k^H}FcVJ(<2X)&a7gf&eJTq#aN
zEv)l;4<A1K`Qd|mk8^Ges4A>mwhSDA3zyZzv7*sOhd|R!ahQXN?ACKP|MJ+bJ$sG-
zMj8MWam2!6D#N08rH=4;E*6j)JMqWgFrcWD4^n39y<|HvZfBKvgs9tbo*64jZkvkC
zvge9+kB>*f;Y0^JuFo!7O5Hl+uYD@-Wjp27wgO}ibrWT~84kb^Rrj8!DE{^zs@4-6
zxz7)r?Cc!u$kpu@Eo+-=Yiny}&OEe#ir9|}5N$h4SsaAg&ZGAYdN44}>}TQ>oi&Zi
zat1JZI#@jdTC^mwe5=988FF!oI-eh^dBT*`-A|j{rT|Ij$oxud@`zrzJ8tzZSTM7L
z)l0jHmLL+cx<JF0{@bR;80U3)@_kvJd{=>dugjC~b?2y=T$Lx^ReADVl_%d-dGhTD
z2H)TH6fDobbo3~^J-HK8O0Tgz_0+Ci@ck3;)e|_>qYJQ->;UKOcceU#80i6PbD-zU
z&`?WD%i_lJa!dNmnKNli@%;Joi>Iln3f+-meSFV}S$!lFf_@5r2qYa6DHk-x;NZvq
zcmtMyy#DUHtB9ztzcbywX_G(l+H0>x{Ov1qwOQ$Qa(zzxmd@?@NFUg%UyMZ@4<8N_
z4|qo&5<V<ajo>qw=-e1B#<+jEI(|;#9wg-kgS*hJ^Vm2X0KDT7nr1A>C(Ec{s;HP8
zj#4Gdyxt3(X_Otp^Keu!mlQ(tB9$hj-0g1G$p9BFudBn6@ot_M{H?96ej(l2*_kGp
zob-&0+KTjHy)gC=;&8A8qk+<db%<0LFImMzG@@U4;4%2DR}3dOhp7hslU_PUF%WtX
zcEN)Bpnc$g*)Q`<<f1ij7hO#BDwWhUXGD&_GM5Oh?*e|RMzF99ovTo6wMO(zTh@j?
z;DfpTItTje>aXFPEQS8M`fKXVd!WCT=JnUoy#88}*I!HW`m4XIYu_{X!}9xGZ@mR?
zPwc(_xA6Ac`|p9*d!VN-gPuCp%f&mWf$oP$*_kt^`%c4h^ouiRK$WnAf()Nzp>Xcp
zxrKV!Zt!v}OiWKjqOxgZIm+v$Wv{>f{0q;+^2n2~y#`9c^tN{lK8<-7-*wkri!q<c
zxNzaZazh_NjYuV;qWLS`@}azL33^V>CH_A`%8-N-YkX9c`Fvm*+6%1i88c?Mtp?~8
z24aEZqp>c~dT*r6cG3KmzF5}WylfR#>bq>?^5xLWYZjF^Uv$w$&E;4q$4ScI7@#v~
zFYnW<f0a~;=CAa_hfI2pBMjD`3k0Y{=l`C)ZoP-Xb&rgU1bg(dA&<beFL%O^KmPc=
zU3w>kZLHq=M699GvBikV2|m4ohrS5|`lmO69F{H7JKZC>-nQi&v4{8P^|mXZx80oA
z+x{!Bx2=TUc70xNyFRbCU7y$6ewdGr;c(9SdEq%dFy~*pzNuAdtQuD{xN0SsCZ`AF
z;F!Tdb+2}X=2oLR%NADW>QzH(QscF9Z8Hl$|HqDL#*uwFgGlW#DkUj*|LIT`+zu}G
z>67LRx0To8LD`K)QLCaP`gEfxq=)LPST@^Dfy~l8-`aZKobs{@)~{Z=Xz}8uGYuKl
z13O#<ACTTk=diKJIo>YX?5!$bB4Z=N;jm~5heN>un-#f7B_mBTJ!ZQ*XCb9hLocI+
z^wQx}YV}$B=>G{noXen_Xt(DoN<T#3dC`XR$t&ayvWq-Q?$?vBf6rd+h-K%ko%-2(
z@bz!WZ@09OM{>B`G-Eu+0LJ;}Z(eBZIk5Mm&Q8(P*?DNs8<iDkJV{25#QsrI-JG+W
z{4}wdOyHQ7&!6w{l$g)#IkV?jCuY3$o;uY#_$6{caIk3F<FuYlm^O@jATM&GePskE
zKz2=M&@qg|hsH%=NiNW5(o|AeR#pbix5>nsN^9aNf-b!(cuNYgtleNFnI!BKF;Z^+
zPcp?5A=)7D1|!RgCUBO$RY?UkL_lCnwnQqI58Wz&%ZrBA;#GRQ&!LmWtFG9%apQSQ
zmiT-^$@=RC$Ei}U$)tE%S1$6y4)1mcgTyptZzYIDuh!c?aENob9d57LESk(_XUpah
zIfO%zM$PD}3WjrpfWNUTbX-y5@p#u8ZwwBeQP#GR`z__SU)Vl-_U!tGhQ@mTz4vo!
zJU$Rg?V#+}u7oG&)qY6c0ZWD^-t;|KIS;8Im<~Th*VH!wa@CZS2!g8FN{!_nr_Ev+
z8HsZy9t&vaO8JhDdvY|*iFkO7Gg_T)x5FV~##m{C``~FT{|xP;Il;V}ssm_1mRduH
zpXRUq;T^DCyJn5YlTmBd7GB&kyQ;kWlTU^$MRtiwCvug24<2mJF>DX^AK!0rmp9Cv
zQ&%UN>gsA&{b=5{7qGUo(P&m1tkVQal*|MuR)%}fhEDZ>HFBz}D<03JyWbc)GBy+n
zhbzjg$*3$*f;m^|*I<zKqC)0q(rjYYR3a{Cvm#~=o_sF8%!3cxn2gDz#K2G07aTVS
zDDyZtr`dO(dm1eLXCHfPU?35CqD{NZvj2Dc_8dNTY}1A1W4)si<t)k7{&l%Rxf(;g
zBV{FK5+3Xi#p5Cqk4K+e32szB`2&Mgf|7Bxdvu>ppFNfPg4sz8c{td54i?^qJREGu
z!$AY!U{M|p7U$t$Q63H!=i#7ecy($KS^ceDyF<HUOPh9w_<Q0p7~*4C{9s_xU|6+k
z)%y0ibIHOS1{FADootPD<mx(@oz61{P#?c>(&=2C3+92|_ym2|U2vXzb6Bxx)~JpZ
z?5ssOEI_W3bC_}+1RV83rx^op3Nsm`fjb5A8q3LRDmzuLYl^GW6OS)x#9FznOXBgp
zd-uNf%*Y7o%L!a4o+Bz^<Dr~HQJS*#_v8VhZT%8E7&|p&58KtP=P<iE;3rc=5geDR
zSjA2az{5>2Tc>#@WB<0XrhI}w!qeWG_p~3$d)k+rqcX|8=U~On=jqFjKlwVIKKsDH
z?teTE%QMe)c0T_2A0D|;yIO10D0M^~Q2Sy1K;5FQR{c|JnM#yVWpwJ(di59TV`l?X
zy41JyvXs+h=Qm(D3M_wqupP6^btb<6V=xa)cF<n0Sz=~bturOsCdgX_C5v%S3deR(
zibrA;#cbG4R>WdM-Qd{w_naObZJ66UcXrFHrn&Q4<~P;PgQc~;x*9gd3?*RS&25=g
zUXGtkCAe+joQeukmFt%t=Oh-S65UQG&$6t`>9pZ=GVRbSqM3&W`uh5U6S<KD^Y929
zWF+j+RVL0YJ5Hb8{dW|Dzd!%!r$73|&+qy{8`;9#_>*7!svR7d4(=zn{2G=vvek0)
zwb#D#$}4@&)xU(Ljfj?;Hf;jj=qp;2+hZqt=jE4^D|7vR-t4Z!;5dlx*|V`yWy9>*
zGvUq6)i&!m_|aQ0zWCw?M;hkkK79no`Q$`xi$2?CB5){<&MK<N8d;j+{{AI-p(iFn
z5})YoOsE){o(pR+yRdqm$u<4S{O?Z^=moOEU??a;ju>C5&6bQM<3z;~W{!1Ztrx$~
zUtPUo#fo_|OE6u_VDb4t+mxADM1pXbrl$$T<fIj}BrCcj5e$l(jKw1GmQ1U<FJd;C
z;nyZZDu=`-jGz|`$)rAkrx8-&b}w3vqx#F%RaFK1Mh2-&rLVwiF*T#LyKdQrYpz)d
zMhdLOzrK1kR^WG(Enj}~%{O0IY{D8Vot+#<Zp=yf_(*vXV1?-J=}AD>>gw<B!r=aJ
zMyDP$`-+gZ#vPi-eWH+c&@nQi&-^LazKX(W6kr6Qvx&doM`tpO#2c%s6ox1}_#jRj
zD#2}hFr)vm9j|_;896dCsWhPot=)&AmOCk0-8sd#s}J;JPELT&PEKYiqKT}oFQFlj
zOO2y)1wpXlJba?{ZBp*QLROOjtq4t+%>5Lr+)Jx$dgl}-A^BOINWcHSCh>Atmkb8{
z6hgs`mBVwgoc%Q8-=Fk3;hkoRr8tAp0H@KI`)EpKc2X+0GY4usru$_@y0+FJ@mxWH
zQ6<zA#EE9N30zHYS+352*=@y7etv5H(aabrv%}|Np(#wz5*guMn$B2v=G;zO0`mk#
z`rF@jNxZqWwLl?^m@7OiQq3h2-@0M?gJ0qoY|!<jKEr!9&NiRr^t*ZJxd71fnmqKp
zJ`X)-0D7*>L(ld+^lZyR&-Sn8O1||ZV%(FD_x3*i_@6ducWcYFI#oV9C;7hmq`Cvv
z+^4A4Xb_*pAN*x&yLPj7Gq?v^a>FfJ2VGJ!Au$$*4uYJ-&OJ{bEUk~l2Em~P6X$d^
z+BkRa>>1S+<*-x~+U=iz{`sI<)YJmYqQ>fKVw)Z*&6W1F*zF34qk)?mCLJCIDVa#-
zhDmjFt2ll7oxi;X%hS*I_TKi(U;g0YZ(X_xmMfN2SKoW@y>F+N{bV)f9qH?R?2o_o
zEge<$vC(e5S6OOmu+*Z{lEW&?M<2cP(o4ria-*U-utI{H(X4hK^pX3%3{~Oq;B*?1
z#iPgD+C5Y1zTRN)=`0&X<wheGO|lx1!qDw3tgLKpZLKRv;V5KuBBm(1Yp)ND=7=#Z
z;V@S1N#*Qw(PF|e)%ZkiTvQjSVz+zA8lB7gQm;4IH<&5+A*W$;{h}+bSV^|xYW?n_
z@ImxIj`gS0y5p}8j_RFJv~+g508T=|9DrDS4uF%sW4V#h9D?wQ!gzUxx|h~e?Y{fq
zR&6_}!L&rH(Lt=Qtzw~i@HZHiCfdCWAP1%bZTk}EA^eE%U_<(Ng~j8-ITFS&HCU==
zzA6&2h_sodb~0Kz316HYDQ(i92Hn|dJv&S~uK}kO1;^Q8QZ_)C0GvLnYC9R)VB-E`
zj5Mut9MUspXdSGcxh-1s8AV%>{p<j#DL@2?R~RjtR^S#GM}g%(#z-R=M<G%hH*TFC
zAJr%LYM0ji=lCeHik|m1H6WZI&FAGw^LcsF%%3C2Hh;XS_-icRHtjn0L2%FRy-?e%
z%~MBl)oQdGw2G;}>$S_chhT^QBW>ziqDZH)H1imVNjirgsKHnVDRMEGDd(sFE2Ppb
zgEf({&jL%i9)sb%G);j(sx(DB9+t+U8Yx=v=s|4mCPPn84>jwuyYIgH8*|4&<43D+
znu>v^{|oc`ybOn>!ZI91T3Srp(6M93LY${Xk6HV}PV?ksoLF)b(31gDBw%3`yBSA#
z42GiG+FFk#g8}Ts4o9LiBuF!849R48taQZ@jn3%tXhrUl;^N|&B^Wm1a4ft2`s?SH
z$M@{n6Vz{jQ80PJsTfH#YE#f0rxZG>$DsWIOz3;beT3RUw7^dD*jSiYk^78Hj$x5Q
zTGHbHq2uo~@85rtRLq}0zmlBXkJ~hi8YL8L;W&lhSQt+-9BxrNa`UA-%~orY;1I5z
zOtUuq>KxTs&&Ar5U!C=~yuLFB`p)<B`pysY`pysX`p&KSc62zr>zQ4!JohTcJ+ten
zf2`AP)z+w*dJtF5scqDLV0`Sk7hc|_kF{^mu7GuwHd{^P_E1l04*2}v%#*OaO&>RU
z925hcQL-I02);zSIV!*hgU9wM8G0*gFLrxO5@WZ^&~UA?Jlu_Q=0j1db=JIj3z}!w
z)YsQH&T3w|bji}iu&i6!+-z2dySlp0q^vVq;G3DmFPe-cB_+kV8V(}ua#^HuDw9=J
zb)u)|=#e2W7E3c07CLz)J~}u!7?NdDD3K(wjgRkn>Qh+WJ5^C})7@a(ZWn(3gKvW+
z_T!s=b^-Yx@+f&2{{MDreTn>!`R6|`$$s?26HmN0QE|~K&?Wj7dNWxsnhMvfS+lZ9
zM<tPNY%G(?>1Z4*k7K)bJ@W8-^I_|n!X-=Ut@6OWciwsD=-3#uL?XjvCuZ~}cQ7f2
zHGl!8J@{qS^7-d|JD9q~i<gKwjY9N%FumRw%jgMVtsLhsMpw^UkWMFJ@o+8=j8!vX
z@MCc#Zg_~I%&zjr#>UyDmMn7cBI~Cqi*^69`apq5$K$e8p2Flsns>WPD@>^bY|f_B
z$wWqF!N3KBib@06l2)^M{Yp4i<AO!uaIm-k*d);#I1@j9_|O3yjQemm!}uF6x$U;w
zzQ4vFKLOupq*XM<L2O6jZaq7U9vB#t%EK5o!8n?m*Iw)k4`Il8I6OQOPhlt>m9dgA
zvf%Ax;C_W2jG&~G+bNoU@IKn@F5bZ$IehrF?Y3w%mLj}fZI9P8#zf5RpbV;Lc7j!I
zvY-m(j3TXp#8M0^QZyA{HI3pqj26i0sR_3p+Fdg+fFTPiXM|T{S($%+i(c!OOirpM
zBf}w&634TXBDxwPl}HCDS4MO+c)af7au=M(R!FH?l7Z8kMVg~DNl;YAVF7*P&dqon
zIMS?#de^-9CPpG;Ek1ZHSigSV-FF|r(!S)xiA;&lXwxgY+6^akL=`E@7@#I;(E(DF
zjzp4hb#gqd5Q+{^2~DIi&6cGoRZio~evb3eg7c{v5#+}Pg21K|@S5%K4}S209rMWu
z!%PNaf)!3rX>x)Q(T)}=#uuPYa-t(F$0xhGf^eeIfpC^#;rv4ioQP#GJ2f+oX)^KL
z^h-rK&a6g7`z^Or0;KX0O!-T^`sxQ*9QS5V^-QFT5`>fQ_IfLz0r|}6u%P3tj(v{;
z_WdLe`vT{{zB}`<@4xe~uK}>{<~;1XH4po4$-}-M<ze5&m~F52PYoFK>wgVQy=S#1
zZ8P`VqeqXvzx^t0omQ$Qr?z2@(>-eM+28c2ojSSX6|k2x_Z=vyRos@h;m5DEX}<zU
z{F4|kf+G>`4~~yVG7=+`(n5)z$YeU0YzAPFDV_m}nDvzs4HU<s<HtY$Oea?F>FMg~
z9-Ih+`iMnBLj!|D;o929MSzj@3+FdBT7@v|HO7@JK(2~1QZ8B%8H*f=(bK2;`^QoN
z5N;0im(i$~(jS{}7Ng`A70oChDL_V$M~k-zp|R}INAK-;5|*d_@sB4S|NHJ^C%U`4
zPxl<&{np#>9>3v++uO+f%zwdxg)=16?YEbEI$`I}tgBX&ZRAOP-A1n`n?x(Z;)>d#
zPyhAo%P;Q-$AIP?W{Kts3&kQ7h+_?H2#hOMY+Ojj0T)lC`56mWATVwR`v3z5?*ZG8
zD1Y8EWngnPs{!`?_t0N-b?N2wr-}jrFtS1}-G#w9s{mOvXU?)#1geIHhNd}<GmBgp
z<?is$terKh+UYd1sP=i<VzJr$uve{@4h;<rg&9&HT6JtxQ1OF0;UtF9VhM@nX<Dzd
z&l_-iGAqlWFhOw4CbVouMs%bwbpKJZZT{`B-1ei}Zol)kE0;BbS?#G^_pR%`|NU#~
z>kG^{7GdSe%Bm{Y!(P|7vPa&3|NSllStME!B*)UEymfw4(+tpzoN_uS(RM8Gk0nqY
z@lk}y@$sXb!~!Up2r7y2IKt$1O4Ts__8t=c>vnG6i(OqGb>BnRI2`u@Mg~WxGhkA2
z9V1yKAZVHjE<UuIWXLAMu|zUHCX!4C#e%b}WwOvMk?RXAnk^Re{3oLdZ7we670GCz
zRTX2q1_$*@{BCDhC&QbVm`t-8G%BrdTxKE%lQy%A)46IkLuueNL?lDv%<=xA;WGzB
z66v5!NjMp_Ei;;BS)_*uY_UMU_`It(Z75y2(kV+u2b)3nFZIqldWHTu^~aE=fgC;B
zHEB`-DY=Zr96mY)m5MPSP)PPebAlilIJ4buWLQ8P0nj>5!O0j#V&Do@2`i3l!GLXx
zxxg%>PMu1#k};vs$i8c+tJ4ejrzne+)A>3LbQ-fi9aecf%H`nFCKn<F4d5_gjLrg&
zWU!RgRr>^!SERg?0cwB|X@xgPOfi>EOH?)ur-P?3qhx{4G5*XmVVh(ek-<__6wi$}
zibXi6OP7};UYgA|Hf+kJ(j4qJ{~Ir_J_qklKF{8Qb8zimk%yPnfR}5(CeG^oJiJ_+
zKhxOV{pA0L81c7Pdwb#S|F&(=z6UPHg_!3DYpwqJO<2Fn@4)?@+%+{=p!vWiq`;Et
zVElduBhhBJQ6$GCw(s+S47Huqj*WHeV+B3neAUjG+p=K6!gg57S=Q|-uEUYh#jQ<E
zq-|<s)IOn`euXxh(**r8n>c;=@TVtEoH#X}w&pSipeNc69QgYa`WV6cy}j4}>=)+~
zk!&YB0KlHet)@+8bMw5FH-h7GcRP6q0PK!C;65Ll8YrkarswpVD=TLefin^dzVP6K
zZQ8F*fBMs(o<2BPF-IRKfEL_IK$~Witvo1Tfv7lg_8$fvGd$csfj+Z&0!t<vi>Jm3
zYAu$EVh=1uKBEyUOvdHpBw!5da%l{k#SzN!!Bh%sW9l<|ia}50FARsH8JxCOjSfeJ
z&1Um>O?ov<eSDy{tn9K?II6N@nb$ko-`jI$EO>HcWW?Oqm=%n192WTOt#BAiVB)Yq
zM0V+Q><c?Pd!snvoi3=WyR@pRs-?vzN2Z4aenasLMv0TS$OMUj+j$?8NI2aRS|Mbf
zM9(Pf!Pz+qDUd{inW2cz638nwomS8`Q{^dY%}IwoJOJ{BUX@0%q8Y2L7g)84v8fq2
zIt%;LqM_8lXeyYy5})R{$rPGi+0oo|#(@*HbJ3=P=4L>-X|z!^FKKOUU0ALh`E+WU
zP2~b`L83t+G^J%h_K8_!Oca(CVGDATA4Y}N<EfaUB8vt(Qd30pD46dV;|#_;HJ6q#
z2PiHh8e}k^ltf06NRi0+X~7VnOp9_eC535TPg$hf+DZeoK~0I~eHf}<v`P4Pjkvqd
z5iOa|-n9m#_*;2W{H;7GUV9Fn-pjv+Ei<2|w@tgnu<O-Vk+kdCwc2gk#afHLF4ZpM
zq?h;Y+xLI#v|oTrw?<#j*I#et0*}L%N7ib0XqRb=rhah^2)08MITfA*r%CoN<cQgA
zF&XrvuL`R{v<~XCBUYO5N+cTAdsCw^1xi<QIDBRR$@D}hJO&DmxMs|qJJ-+ig0-lk
zqN1Rvs2XIxip&(nI*NDte8|{L<k-aU>E6N7EI1JYr^Mr<6B82(=O~_0T~q2Z>d7yS
z1rzVS`>s}7yQ~BwR*xJy{@Di~d_bBmy6djHE^s)!<tr|`?6QT+mtPA)znNSO$7dW3
z%a+wc2O?v=M?ZYwpYME{01aPYmCu~{<k+!eNz1I28^3k!`Ar29g)OfIP}^;%<P=DC
zfTc4TO${&%v0E_mR{}w?#KGf=u^FOqW+MYqAzAeCjWj3`d3;jaN*Wzjun<7eXf_u{
z)tCF6;47O9W@r)GW)pZMr2_wu#W)IN#&l)XR3d?eQ!ShkZeHMxl;nzKG?uj+3?M7<
zM0_%uR=}xltSeu(Y}pK}RjFzQ!)g7dCG~Z6b;S-;H-@Szw?l#U=1ndm2I(U$rYoKv
z8yv*iA*I$LLGXB;1+3&c9R<Z+tA{uD4-K5`i^zB<4A=*z?TkhW-4d<R6h@#^G#6mf
zr1KPV=}Ls#W~Ad*g^u(M$r_*%21H9n%AxSY+cJyB@e-MlEMQTjH3}LUW4n;(vcpW%
z0)>>ADoJPb(m7y2NY>=&=x8LS0j6YC<l&@MO0-%r#or20!x%Uf^ZUmI$pU~7Q5o2R
zNq_;k7>kNT0+>~%kja={5sKD0O|*_eXYT3K2$hMa^kZgd(OL;TuCS7)iQuwi@R%lK
zFBfSViBBmlnF?Tn6k$bUMzg^MGsI!li+WI0MzT`y7*r+$UELzUZg7=IhzSpjPZEX5
zW0MTtxeu-)A<`@j))u7%$MJUHnBcC)lq!kgNnHgp^NKVRg*F0vFUwCds?F~P2&1!f
zR<urr!(m&HPLt6CT|6~48rcr`(w2uWm*(NiOu(16JbY<8N5#LIJbbCi!<Xtje5uKw
zTX_8CJ$v@V;}bncyWfYu+O=P4zvAJKH~;c*pdFy)7xear0foLViX<s<V19AMGq+OS
zl!Qcp(8>IzF6{QS)mKznR=IKG`t=((Zd|u|&4%^s*Uu$uMA1yK!^7zeC)n&@pPPn<
zy``YDYHBPdUGH1gHX_YBJ7e+k^Dq3yM)EGKSZwrNeSL}SBF~UF^>1FMehF9nEFRIc
zXHO(*^;Xtmk?B2qTGw86)m7Jidq$B&afEE+c&p88GVK7Bw>@C6+rg7pc~d|Dsg|+&
z#^g5QPby#}P*gUVil^m)fzeS6J{=wz9vuxv$poB((F6e=dNvx;G|?moVHtG%WF(tY
z-Tsjj2phx1L*c&3(YN2;x9{z@-+p7yCwo8n<il=q6n<||yk4G>6Q>U;ifHnBJF)c0
z7v1r=j;q@k=>C)UQc7m~R*s>qW+HE;I+GF-W^ChB#_XC|zl{-CN`*TpEaZ8Rr%XU7
zEbP*09tO9;URjI3@#>qmF)kyUg}s(6vDt}|oD2v{mOS>ti!Z+T`tEIHI}1)xe0&>|
zQV9b)$+Ds<3dIEkSuV1JL1H!Gp=g0IoH@LWiKq(hH9DG3C6ly0AdHT-)m2wlm-)7x
z<+a?D*K@yd4i?w1%ZbG}<Mnwx_rkoMyCJXVUhvhL7S{Wo!R0Mk#<zRE0bc!FHLa7}
z;X0&_V~Xt5r%rW1r?c<U(+c{uLh$tO7eyva7_EcmLZJXdGe^PaaWfq>IPzfhjgMhm
zd??2AOP4NPRO_OL(a%3Q5DtS&Kc}InXyjDS7yYC}lsG!1$0b`!N@rA7Ru;P)6S*Q4
zx$53@C=~4=#?KFY4$Gl_n{5^OAAP;Q=sQj9M}LFm|K2!$96a`)-MW1F-lzZZw^u-P
zB#u9%hbCKBt-a`qE3Rm7s6D37hOyPN^m&&<hu|vz!ej}}b_8-2CL~K1X+7jA+PdkP
zd2n1@a6?5-T)YJ;h9!?DO?t^b@YyPG?8m5<l+@KXG}XWji9Dy}YEfAyqd1eAlv8e_
z9{dv5r@Ls62dt&qWjMG|zhHr)bar-rKJ1%!H9FQm`T1p+fe-D;tX+HKt+(BIEm;Kz
zG%F6|2@$Pby(nuVp>R{79w9TJPnOeQK)}rqdizcs3e2P)Bx!(P6>LC76LC@qykV@j
zgPCT49IVJjRqz%ABA>~6eAvp?37w=Om5oi&CFPz0ZLuJjr}zLRD<XgpO(@QU5&K#?
zG(HZP0nOB#RSg0hD;95As<R>;{q!K*(nO-KS}!Wa9@7hf&}C&v6RqjivmM<_(DYc;
zM#JU@CsGwzmLiIZ<djS*icMwh)58>E;dCw~faUatqz4DH9b^lE7g{H)R5RgVB*2&o
zd_IXvz<x%e%Al}#qcGmBlNG&m5|gh_9}lPX%mCJ0pbysW-W{LPEZ+h7yfjZfug#Os
z3qd|F&6Ced^W?J;<a1M=d~V8<&rNyqdHGl5bCvat4?d4Z|MHhNK6vAeH=cg#8{l4k
z8*J27+A^(4D_3PTlAH2UPpkcU74(<%^*G39zqU%}To#GE&0!L3EGe(#3GepGyd5wK
zNh)hc(-~P+LFItbS-+}n!Mxh)DxcMcPc{QaUumhcw5VtfDHOLb;Zf)a1$v0YM21*A
zvl|+`8H*Yo8=EGA3l4S=ZeKVyn#o+CtDe`%`#SIJ>qr7e?kT+cJKwr;S$QSWq{LDd
z%i6WG*S4*=lPrd#ckY9(Q2_np@WG=I%|G{tx8Bwon~~|<|LHWr!w2tl5GIBGl}8Uk
zQWY%znaE_(Iuv*=z{-h4d^oU0XXz0w(_B471HlswM&p-g+d%LtEm-z57(8<Z9LDgZ
z3bvWa<}Jji@2VQV-|H>1JDm(TKwB6vx}dk|c?VgI#KPgpa9klumSxWpvw<G3y`sFt
zZvtid`fHzj^2zb8G~@A>RJAT?TeoiA=Ihq4U$CI9cJ^$6EQccsZtQk?20~IL{U?rh
z9XlhFOv3yn(n;Ed`HYlgSBa~@>-8Zm0w76N2_P}2;tD)qpo@J4pqQA4;D0ie5q*=B
zat8e|nPF{Cm(5&NUQ|@%n_)1BYzn+R8X5?h6hw^ubAy-RB3iJ&|HPq2zr*61rbx3G
zp|K64p}6S#;*0S~fbijQgR!cisjBqqjVo5HSiTW=45wmo101hmHi&lt4k0wPE@&d!
z2d}*R=lg!VzGg<#G}~EOAskQUSz7dYJRG*9z@_ByL@3Mkg)lFF0`J-bH=lsxVcND>
zfP(-TIhi4<*<x!t|HU58piQ%wSv+vOkk!P9zUF2#mSl07LSvnW4<)VtI)?F0N6X7a
zw%J!zH3-Lx%TqjMq38(MCfO4I%%8NA7qmA1?^cI8O-feQobz3G00P{ehX9YBgG=)E
zJOsEu4*@O(1h_R10e+f?06)${fS-NUcXhn={#&~<nO(c|BJ{7kv~%kX+U=Oar+rVm
zP+O&jVcn(vP2H*fSm&kvfqH?uOchjCC1=-awOZM)?8m>AG`!+|QA`3<_5nQ5_ux#M
z!y$+?ATC()29wBnS%L8UJ(zMD>>vxrB9kK{>GY~q8_r+8eEH(V)z$t|f2qw(IgNa3
zd~|fA`}l`@-h1!8SN`?>`=?Hg4EOeozY{J+o&q*EYgvheV*`VsiTZlX7c4JS6xLL|
zyuE!@m1B5lK<7<7ODB0>2jLI&eDTTNaCn_gBKaoy7x|;U{+2xCy7t-&&R@4?W+`1?
zU=JPK_vt5pe{>zR#}Bpd>gxpnjyGvH@y|ZH_k-vE@mZU84Rd0x&UUEtb?B82_r3Y{
zp`$n7yb9FiUvcF(ElH)!Mc1r?Q{Y(H-;Gz!`sm#^Uix4fe)ha1wyE7nE16X?=|F=X
zbEPQhlq@Gf+%f|=b@4@4Pxq-{5FEIXU|-({ADledb#ng~Bg1ETC3Dg6CZowHuslx(
z9H2=-S`~_zzKl;IhA1p7ve~^w434NFMcZUpRVaqxtd25wNm<>zmX`U;S0cIaC7Z9k
z<dXI47cO11X3p9QimX4&D_N<(F)TkiIy5pegk0jZ7731w^u;qgI3oNseleU#=7TG;
zysEmjO%V3%dG({ihYz3VOs6<Ou$I?tXkN47d%wCu4=<9Sjh-U=$fsn#zIKyQoq_mO
zSa*{Dr~4Z}C(qHBGSG!zN0LcB7N=5wGg=+{_rJGy?|Y|57=}@MKG?hWrGco`V8|7S
zonn}5BLU<nWC$k&SOydR#A*lfI|2$?%jdN$T(oG>g4X8pa-YvvTwYhVX_Mby;$O7L
zRS>w}z>wfb1{6fVkV#WEuUAl^kN<|0!w~@rvQ(g9GKmb6X^X|`bl3#m&O1Ftr88!f
zSNNNn8X6kro;P!*&qrCTHm8?0!^89G#!#isiRYV9)qm#1fde1D`m(AfBV$AT{bvSx
zXZW!i&lGyvY&uIPE1VgLF@YIhjA22cNSVK4R$Z0HQRAqeyZro%HeP(m`a6Ge>#eum
z)kYpLUv<^erEGcm%=-DJQaIsqon^*?hULP=7jJ&$^*@W^O6|Y2joKPlCNtc%|J|2g
ze(mjlZalxWwRIX}XI6=19-LLSnFTe_Kq2j2MvFx!M@K`6<fs;#7zqvz4h)X<V45I?
zs`d6VlhIftl)(-f)xotAbD@Y5>SHW*EiEfIUdZ#D+2z52uHuOlZ#c^%X>^Fhpu3;!
zcx7oprlTG!KSb63-sAiC9~lbnQ%-m8+p~N3o4fZt^)%Qn?>za&8_zw*b)GuibvU*M
z&exNfCYwo<)Mqd7r8lhB^9r9L?~vU%g<jUs+}u33d1YtF?l{XF>8%rqLyw5lvHAhP
z>TP*g{r5bqz6-E=dmdJA&%^4g0IS8X;f@r)hW8hwXz$*m`@qq+J^GhFKNAc-3d<k<
z@P~&VyiU78tJZ6m<hUTc+6HZd9;oEjJem<cUjzSbnoW&kd3u1aW$?LRsytB<{PITQ
z3vcY*yZ6JFcJ3r?>VVk62r{AXg~uVp0gyCsQi(#;ds$i-%_KyU-A)>e##Gj5V>LCJ
zWZBCvzxv9{FTebfOWW#dVX3TIy7c0Uue{>IwHq(mbk!vnUMRYtlYr9`an5d>GiT1i
zMSefIB1a15E0)KGrz!A8f<wb&uHZob;OI0P*zh3jDV(OzD=Y^0E$AvJF81aK!U_vR
zazT|zNuL@q8ZRJ+VeKbhkR$rK576VU{Eat!=R4oI{Hlw{qp%_+*hz96n)Z3HAm1l@
zNe}Gy4td9>Y5NWh4GoQc(eT6De)`j&wv&6vee?wvK+_+~QARFpAKm}aG*RB(_jm8v
z-}J#-ufDTynlkdkci5Ii(?oj<+gGo>_=CoUE8AQ3d<Ib%o0yzbQ%N}%Fs85)M+!70
zwawJi6Pp+xj~NBCE#S~W+F(qa>OFM|{_Es*x_fBJ(S}V?MdII62B^*#W-)mZ={%~)
z<TQoYicH33(Nu7_N&xEz28K{yPK+gy3(RbDD@rOg8p$Y;cyuhPX&z6N9}T)vV+`4|
zM#mLp3rS3oMJCyQ)AZ@NG)be;D4Zn{;|wI1|KQMVt4vC^QFIoqtqfd7G}`D_)7ABj
ztCkDGTW{?~%lp{D5uXo9M4Mze9Nym*lY0hFAM90>mX^)y!4O!!uAuJ}IC=XI%JLR6
zm?IjS7&TkX(^P#{tIh2S7I-~w=QP8Z#X)p-5S{8ThWl62Ofo9#SstQLUE=czpqd;3
zn@;>r6Ty)yzap9%8);`jfjN^+h60WZQaghL6yqF!QAuNCU@JX<LZE>{Qto9H5+>Pu
z!48UGyqhSvU3RD4VmBHCB^1`Trxc;80-bD&qFAjoL(}Q#WFjfLK&_*8Pi3j_L?jYP
zW=cwOEMybWaIW|=c6F!IX?I0jcDv0!O+V(a(c#f)Q3*{<%4rIIADPU}^$2rjRnM-O
zQRnrFeu`p{2#ia6uDo=^h7GM{$z)|EZ{V27=`V(dMOQi<!SJMsBz^oChCIYqug;N^
z9X-`KYt~t|$ohs^ja>~jHI>!VtYouha-9dJh2ZGXlVcN9cXv<siQGJqFfbMwi42~e
zm<W_igeN8@q8WK;4Bl0<(Ks<d5)oM~E_FIZm%-pK^msfzUs}n)g^YH8@=0KeUTRYY
z$7Q+`;Q)Eo$p}V)o~9}z2BUVi6OwEyG{mG5u|zgE!z8?YuzO$6TQ78Wihfl+di>b2
zV?E)~_df$;L-zZ8hYzd4?(y`B)w5=c@W9tCnKy6Vk|p6(1YER_pVH}<a$IKgNI9XW
z`;f-4B+)2%eO_)_rx3SKIok(SIdtSbV|eIvFnM-{N(9aEqdd)Vcb?|B0W`;t@-)Yf
z&XLi2W1i;tUY_Q-DNl3Ul&3kEuCCYbL-l^8w#jz*P<K?8pM0|S7y$m;PhGA3O1m43
zTiB$n2hV@mfB5{PYBy>W^>JALqV82Y)q`4<wnV!~`yT!0E>ILtiV~NRDMx2$yOSp@
zU0)>#6^#|EH!*5TQMYr){<8InLz7#{{E3P2v9XcCNF<z2r<X6kX#L8SE0?#<t}F98
z?E*a+!eWN~vdl2F#lRUYCN`TQtY|itloWf6+P^s?$A?G4tjkliU}@{DlF8xW;jt+#
zG1hZD7}3BB$JiUoks}8V9N7Ez7hjwRqlNzmSU(`IlfUWfAIP?{AKbWcenYi~?K<+=
zXP@nUWpvbF;L4oV0)MeN86qapT)1XU`}{)n<4>l+{j(4Eb{ZS!U4`kezb9LbH?2DP
z(VjgA4jtAvf41v?Kj=}Ng@qV*BO2&zJV`4VwWA`9LkWsP(kYFi)htEhAQ_dx0NhYG
z92^`=Zrx&<j1HcP<sxx(V#wUMLP2?1Widlde-?AR@FbPYLW2Twdy0xn3??JTFk@p!
zPeEIZ#xrTc1FG9+R8~|})Xww!tE#Gti_41Ko&uMFREp+oGMQ4<tXmJ{Mpj6gW9ad4
zGSc63ru!6Qz$|c92Xnz!KX0a;&So(tXTING)3SW^8keuoDhLM-Jo3z*J$v@|N5iVq
zSL(0Zc-a+KT=AV>uV24;^EE5mH?+;0x3IxQz9E|9!C+X<#GC!ow2-`2U=DSTbiKCg
zjlVx5I2{hV(X4~EbLq{$zPg5u$1xH|G{lIvM8HvBN}#tEIlU&mMj#F!c-+Os<zSb4
zz2!ACY+FTEwRxj&J-~nX>}xN)n^Yd4U4@pd#H6Z>#p&@PYwgww-IYQHd5^cWd}a+S
zm43V3<0)`j44G6S8cQPlj!(wNdtLTv5=gK~y)GL|vhj@7YqXoKh{>V=8ytdQ<Y_pG
zqFBlr<}ZjOCZipdDxg?g_Lk0^-MnDkrB{9Xy6djHd|ge={P~Oif7adv&W^Io8+~i9
zI{SWlPcP{uovq0NO#)<t5DAe$U}O|9f;e2gF4q|x$GP);UFUQl8AS0z<|2wRDhd-&
zG%CuXF%b;JKo*iTNjm8zz4z&}pHrvS`#g0T25a*D^#0~n{Z3V#sycP5>V3BV`##I!
zrcfa>etu{QCG632!*9Q^Y|(q=A6N9OShZ}S*D8+}S}u=wENJUmwse^+Vps*-Ux0^y
zVOh>pby{TI?qr)`VX7{UGb(DSFgrdu4yN{Op;Q_h8yQO%E1FKZV_5l-*9xwsw&t}f
zKUOrgtfkydotJeoCBGyvrlD)H2r8ZSUL2k-!QY6Ypr!Ln*j-njY*Ww)2}E0EZf<hq
z&6i*MEm+uZjf{`K^wPdpPL8FrC8ntt1*JbbUjKhpBOBv(|3_vff3)VtonQF`Ki(b<
z@LIW;mqk#)Z1b;w_S(dJ-tF#7)O)<lAsag{QSb3Ghiq&F*|^vt8y7od<6?(wT<omb
zbmR!udpuH|K4j+2ymhFW4e-6WZ@qa`{(nexaPX~Y%;y$TnS~2iRt&-I?dZTv4T1>F
zmr7l{C=2CyJRYmBs{<YI%rnW=SG3j#kDmVMN7sX5N-LrImYq8>ErSpR_BnR!H@}gE
zskLj@Ua@K8Mo?YBFo1QM_IPS)m{=?xi(%1NZnl~~h>OfucZ^0NEAxtJQ9e%~kXhc<
z+PokX!kj>YC5j@$xZScqf!%_oi~0$*a^-r`7dk(qn@n3%SJ%M(_wLxfZRt`>@`J-)
zQBka~mjz~KW~P*xoW#3G&6ipo8Y;e5bhVGv?<Qjp!9l5faq#@GrWK2GhBqFIXlk-g
z(7;|4i>4_HJlM}=7fs`JqLaUQ=0Elo^5f$t%B{V<D+^gTHNSrS`p_s4rQqMcfB$s7
zt+Rt>b89>r<^{h$P$(*jDu{5ZJ#a08m=Z8zk;>Zz$Aj7}A6c`yClG3H?;0J>q%wgp
zoQfSHI(B#pm}HL`L^}`Z?C*fiZgtSvtqwZd1ax+*gU)Vs&{^*#e7$b?3puscJLv2>
z(64vkU@gwv!_V#C|J=jd-un*tY^&7^^LFdg@9ks0wQt|Iu7CfGPs1@dqi?-MWSK}+
zFKn7&NNE>iWf&$&GbFH^^mWW)!uGR+7cLCi8#AP{b3xk@n3jWGhwHWlot<z2Kg&vz
zo7I()&m&P45cDBv>taP^-8@lgkau97u?eD+PU^__Vfx{-Kl#bCKg6vg);;&!bo=LE
zy8piW{vOx2-*nGCBqsY^u6Vq`Q<|P!*b=AGrBWgU#{1}8R;u%nJXhb`xpL)7SAvwt
zE-q4IS<Ut6Rp7IeM6sceWcxXmcFA6zcmh6`s48luK=g!w`5Q=ys>lM%xy?d0o9!o^
zzFKqxZK#dMYwh6F+5q~VV@6@6QnAaiqmLzt%6=SeFfE$pG+hVK#U?`7B_$A3GbsSD
zB}_w%p(muXZ5<Ze+`O*0cim>(x~2<G)X>PraYkIDZw^^4`wb(fXgcR{=kq0lFrEbV
zDY(K!EozKpYLf+cn|4LMUEJI(!@P4gNsJ^>lMFpFq9iHS3%aX9n8{RvgIh9)YnQuB
z3?s-enhMwft9)5W&d@2UqM>7q&%iOPiw6#j+F4ducuN+^E3C@{Ji~Yil|YvlPi&!B
zF&MFMZW<jMaP-Pda^)gLr80N}Tm^sp(gy2p>u&x<+waW<S2D=ZtklpjJe-o637ZIF
zA&)CQ8cC~SaOCMX&z(Mf8n478IgU5YfG0`Vq))`w@-{bP?H7ts?fZ$uMO|Y#QkW%1
zA_$5{)P~a*F|67q&af@?KEfwCAH2QJmL!pqB$#AcckEb_q=fvgq<ckgtWb3Mtf3>M
zl)yALq1?XHrd77C+2;CB+dA-9R0tLSiVC43@U_dq*RH=%A=KsI>rK|S>I_=qF)aR>
zPD>Ig<JQTO@i>{nV(RFknuI-=a)h+uG0X@;ZpULdK#9jN^;@;JC?;tmvvz4v^kl_d
zmetxy>S4=%{@eb4lxrVyJpVSw^MA<k{F@xlFC09$_ZxjMZ32?o0`uKo{PvB#2M@mR
zUEI3P`kZwWfQGfO{2Y&azPFd46ziu0Kv95`GuAG)L@*r{MbRMJc9G7Zp^1wqz1|%h
z9KiL(iJ>8(-gZUr?&|7Zf?M@GNU;zLQYzqe(_s0!S+#;XE8z!hO-UYKNzqxroorQ#
z{q&~?UcxdH-+T7i@8J5S13&#~aMKrH`rLh={N#O~!>vtzkYXVhNU6@|dM;0Vby9Y2
z6l7S!Un-@kc+0}c>5``b+YzOh>~qn`L*=<S96z=UWK?c!h@vKE_w)(qwPw0GRu(E$
ziJ%Nicy&^!fLIe<zJP~-dDj_@#_LdeVJI)I>*Ao5Nd+d&q9_Yp)GC$>q*%xTDW#Q6
zi={wr5dlM(5`LB<rmkxoOIxO)Syd^vdi5F{6x{OR?c2BGdi|Q!tD^*UdC{P0!&dB8
z9Z0c|ffdpxHB(}=qDsODeG`5ULyS^B@Ah!IrsND;ipf+?PcmX-BRnII@uFP&V#A1p
z_9WdD!>Ag=1OeuhcX2LaP?+XFHOY|5E&_tm&PLX_etn}YC@2|PImz*ufu2p;dCG!t
z6WQr=1(7i-;=&lF;7)ic;$@U#0kEKwCl*|YFC%!OKD2>+k9?269=8R`c9!D;5zF#O
zNi6o$7X)E-?#-u1f})y^eDsQD5M>E3OPZzB@Nh$eG&@8LyerObu(|W+F)@LqSTelo
zB$v;ExUHZ+16&B+ufa9dS_ZMw!yw5tEdhdZwm>*m)5UnizAMU8Niy&3-8-11(xyzA
z`6PG#U7+b~k}8>S5qP0x*S2dwgqf%J<wEEK>@JZbLzd4~EW~<ORO|l!?O%~??W(^b
z+uBvY(bqaS`dSA^U+duLYaJZTo_KTrPafZ4eaX5Jtdeb3jYZ6iIclCYPnd_zx6OCW
zltrw7&C=c0C)vlJ``r<{3~e7qH_>%uB;n7^8OCf5cv}gqfhFcIut<|qP-u}iyb-^P
zwX|{|81RUunVTw7q7)#a+)(B{k|af39I%Q&OHy_gL6t^h#f7q6xU^|zXjY8+)s__t
zYg}ews%y!j#;~fM|KkJ`iFJ{P+%V;D1|xiBoeyAMNQlMGzCArXJyu{*icHB=EJph3
z4G<6t(NvQY{Xsv5?9s*4^z@uw&KHw?lnNGy$#UpC4u%%bCHSU=9dKi6KWQqfN-k64
z%d^?CPIDLnqNx(&t##?8Vwx1?21dcsO&J|4m@}+tMzCrg(bE_a$H){gNz-(G_T0dj
zfBNXTnG)lT8ircP$6d|q;>C%Jr^uMxAf{))`aNBY!jh9Tt!D|)B2_#M%a|wwg~Bs1
zyx<m!grzhca3|KMG5k%fjddKuG4KqckPrl|1TVjslPN__@Mn&mf^$T81`%GnqB8l}
zY)Pj$DU;4X!_dCC+fvFI&_NB7T7ZY2Eot!LD*$Z$5qNqxXQI<BypeL5G)0>u%1oBO
z@YcD>677i(ymNXq#q+IK)*7?Z1E9Sc;@Kg9MMuVSXU?3Nt4vR~UlxnS>OFdUdwWA%
zrlzM!lf;X@fJ>Dkeu*_T96RLrvXP%Cu`YKI6kmgZh=vKUWz4Rj)ATHk<r6jt%d#PZ
z+#yXdZ)9OteKyv!FzPb$GYrFfyi=v2-%q(~8@fSdHYh;=IpQMs3@o)W#~pnK7};_!
zg5|U#Q-V;{sRD2y@8Ce*!GSz*An)Kn{u1%$yn_RI2M6*F4&)si2uA*GauO4k+shey
z`L?}`*~?yg*<mk5dl|Kt)AsU^JYP9xF+5YZ<C&H^o@og@Q@7)px*gBd0?*X_7wThl
zJDzEUGuGw#z0bd}@5NvK@|Q2}`xPvIg|+EqY+mds=hy_pauo0fW02s2H6vD_5$h-g
zum}VQZ`nU$StArxoI3ON+i#x%i6LW08rim<JnH|2*>%I0zVxLVx?DhNE^@OBd(2-j
z%=qiy@9*#b{_Ep-S(*e-4sh=L@WF!zhx3>sUnHiy$rz;D=r&`}{qvt6qn2&kwrv@8
z?B`&W^47w7FGju!-cUnBLx?oUeo*zaX|jSJOb)-mqO_+-FkpOaQ!7$ruyxty&6}5z
z>p-~}2B)f0xD5=6wy>nil**8x8-OfF*^g^y-z2oWOJvYPj<HOpp9J5X*|Z~~f&S7W
zOK-X5mZkXI4QI|Y96vrqHC%StWewESanMr~p`Lnk19_Gl6;|dSfBf<M$}estZ{bXT
zk!+X!Tb_Dq%U8d8fZ6;n|MD-JnFC*i`-G?G)RS+_lmtO2&0P4?pZ;`#oRs~*&}JaO
zSp@*l1&a&7OSK5?&OW-{`m*rGL?{%Rc;oqv*8jwrexCfB?AO}cwXUwPG4ke{Z;lw@
zF1x|r>+k-UgVsLgptT)9Yaeyc+D9F<cJn22S^cep);{_da#?M(qbcrT_U+sEwL7g_
z?QcCWN9H3;hs+ChRB6cG>oL>tZFv4z!HU^?@i!k~z5$m2X0&blKALln+f}y1wBN3U
z*dZ}Q;jj#1Hm}P9M>H^fGTtOvoXrk{zPT`!%?bjJ9z~7e;j$pGE>{4@@jU|AhNO1U
zqD3@7g+4*kaylSWQ*JV`uXu8B@Z#81ED{R%MV>ZwjWmr956|iTcDVGJGd~9i{@iP4
z&IE%Suf6u#%axz~Y$g~KYic`ju)Zl6Jaficf8Txgv4B1LgnVJJR6@tCCKc31=CvO`
z^U}+&U9oa`XGg@xYNZ0X@pt?7ohU85D@kaNhfVMl@9`80Mj}cPO*0Aw)6zil(v*g!
zg&7l*D$AToG>fJan7{&nv&S9wXJ?8;;INXAEM)ybH)UjJ;BM>c8p7dlytb|`5D<Mn
zU#Ow8vnCLTgd-uehr!aTtMg-#mk{70na4N)u=3<43f?mf)~Lbps$S7G-2@h<NKx{5
z1$f7B<&7IR_w@9v*|c$ES68I9wRQ3Jci+9Ht7}!yie<pu9bops5v=yI3~-jrn{5n(
zm6n<qqN{98OS9q&WJ<GOk{GPWGh{T{xB#&CX?P9AqL$z-wODjxRZ2~jgN)lvTLcqc
z=(O8i#3Ej#46i{VUeNFfj<NIrV_|Ruh-0o)VJrr$QqvU_T>x<x^Lz=KmyvirpRd?%
zJ*HX7=S{VOu06SQKF{;Cg%ki1U*<qOfGkX4^e$moITo*rjZc<o0ulq0`(CJNY>80Q
zXW_zr|5&M1lHz{<g$t>Y-Ok#~g$qW04l5^|J9*)P-_L7sKnIPS;5?ki%TY3h_ga!9
z$F5x8`?~{^0^xaLm<D<7>JRN$$-MFJaAB6k!2!!;S)RvIXO;!;j^|lP#KPZoHL%Gt
zm{G)qwXJx)pcy7K8)s3xRw&6aO;rW1VlW0)qojztQl85itQ)Q@No&C**2|I<2rxhp
zmhSVp0s$c!LrZ<*Re^vc@e&+}qmMIJ9?2IgR)RBle`#b=juo<*us2uYl^IpnXwo=0
zee#UrYOLk~ISw-DI}RE2J%<eXSCB#9amb+WIAqYjf(&}xA%h-w$e?dIWYD)9GHA2;
znyFdsU?Xp}?zH}yf9UbYUwGl$k8Q*uM(fMszdmy4(4$Y-rJ`=PdabVcwEEL_(mc&t
zZ{39{^S<}^V;ijP)^_UAhv$FDe(l#MPd;{&^$*s4))%eI;iv0O1q|~sFwK8tJ`MBF
z!BD?w3#@evdOBipi@X-#yj&`OerRZP^o+-i<<||PXc!BzWFy1oM@C17hRz9$5nI*U
z!vh@41AJoyU>Wz=tXfse>n@B>&Q49vq(+7=To}a!%j4r0E?gKH8ylNc1HoWWJ8@z}
z^>%i4wzsw{Th`Ul1XFX{!ayJxp#@i^An6*?yO9T(w+<QHM24zVKstmx9$i%f0h-bg
zE><epix<(e-((~gz(K&h(T2LtRV#bi7A#oM+0nUtxv+fM(#trM6{xe;J@?xKZ~gJ$
z;iJEL;koBt{3S^3-~RR|KY8w#ue|cgA99P9ELl?c`qzJzY5Bw_K5@rwJO1GxKDl%2
z)~(xax&32Zol917q1yDYR4h!+&d!!EfY4k?<6twu?m~KQ&AJVX8=DH*Y-cA&mn$F$
z)9JIn`OT4I$ByY@tPZ4EHdngh`fKmmK$1ib{?qL@-E`9@KK=<XN51&QfA(OwJGwAQ
zBYdQ-wPtC9n@SKm0S{>x#G)+~*xU|yvl6t+$6?rOBEpCsFGB@t3sOhOpz>+r(<-H;
z%&Qufhv#J<$4Qh%yl!`)Fav@Z!>HsaGNwn*z4K0?;C6e7MtD!iODEhuMoFjB7spgG
zmFg$!R<t+O)zpN7@w#X<9<QmXsn(-`sWB?RvS#t(j-b2hJCe)gix_Y?H#tc-fdoB#
zLx)tqptHTbt)>a&^*YO9Y)=PTU~}bs85kW@1mgishCP&=<ndt0w{8N;fZZN%xlo=t
ze{Lv`&JUWF$p`>FW+jofY^!G7|M=LA>#x3g>Ehn?t5>h-UAuPelEqzJD=;6|^(%wR
zmMy#Hv!DI=;<`zD8XO$D2*fn|&cTC*H(+)*dav6lUAOI%cinaSH8+C9UuPJCJ)X%2
zT!WJrQjFEq*ywUKmQ)oUNpi=VnsP3etE?6&AM9>iFgY^$<}**fFjOoSQ~A=sfG{v{
z>PRfeLsNlPm%8+c<L?X|I5T4;h?=0VW}m7hXgZ)LKxor6M<?j1Q4QLaNkqznufIOT
zq%QdLf1LKR;W(KyHNg%OKvzRW_T}?arjKNbMX$G=cmXw2JS`I~5wu)g|L5IaZxOJh
z*G!*3bhMCg&uZv69TlcY(AN*LnbPM{vtx6-WM~SOFRGM5rC@gkLy)5iSO!8Z6bdDS
zk?U<HOPzanV9q2|ZAc16d|qBxDUkPyTx(gniT%nnXPiBK4zs7aT#7<fK+n@ARgv3+
z7*X9=+YnF`mrD{DW$MDa=TgABIn0}@n`)}2#%*^xE%va=iKB15a>5&}6lOy38t0~p
zMHM|EIZFp>8Ubo8%#DtYPAQ^XuVDxMu^)c#JI8g4x_W7>dsRnEu$ZCr3aF}D(=4fY
zeaTb#!MA>#R#<;+Z7M})cr2X5q~-R-U=FX?vTpODRI0Wn>K7(od;U8=JPJH}ejNSG
zwDi%duWAHiMIh@mN{H3fw%1Y`Fpq^<utc7hcm&Kin95=eB?ePadfgPTBG@%_prxfH
z#JD_jCAOH73fU4Z8iWQ_2QLhM4n{O*n%-C|SSunZMn(%TB1SxmayurCF>>Q?pG9*+
z;CNTKeqpm8^B%bDYU5lDoh#ZeY+a7^_ini6uJt^i^Z)@<C=><D$OrF5Cn6}xhUVrP
zQGljjP*3uC1NCs%O}E_A!`HW*n)FQ^mCm0T<syp7fu^iAi~u^XM%{+i+<RLq&4zqF
zo>w}gaDwKou-uN`jivJk9{4`b`+Sk0uko_YAKTvHcDonVaOjQ}yoS3l48%=WvEzfF
zOYd>$(t8}blmT6O_g~1a$ov(x75`GzQP+vXPrmx<t52R7c<S*T)~Bp3)=~@mKo6Nm
zOv6l>C+&I4EP@hz%`948IO9{)<3G3_)}iWAu=TfC|2GX+sn&3NOs-c5<0D1QV7y*C
z{28pGyh>a?ktkZit0){tSGA`>gJ5PvLdWS+qD$dwJU}SLxzuQxLb^7n(r7xX5z(d1
z4Gs>@X;N)%Ee-+nEe=bfsg&l3gtY+~-kK}qE2z>!1fzs1#YluV3KJ6(1%r>+IoIel
z?0BLp<+*x6Ba<ILe(cxNbQy%5!c4w+av)E|>hdR^efHTC`RKZJ>!N7iFYbv2)tT|*
zR@@8hBKpna!$WD6kJm1>rh$-BV=Gq%E29Sv92l(xSK3K8UU-2lE6{eWW+P{Tjasvy
zX;EVs<Y7~7tZ7m6f}oq2!6wj|O+f~@m;piWqE(|rVT~}5c})OOI938Nq-q+?;?Nye
zsaOmzf#t?nl>{-#vJtKxII2b+G_;z<Yi_#X-Yq>>g3i6B_lEnn-?X^aP#16e+~+>G
zZLtLMKmu{?;xbB#@w);flS?!y3TU^en<;~7%;BwiymNCJ@5SPDyfz1hw*45YJ=rdY
z|GBcK>VfLl>RBp?JNQZN|H}lD2!0~klg;%YIdCP~+qj0WeD!PfED>Y`{3QIJ6Z)*+
zI`V-X)xGmaLcqN*RC(@M;JG~xo_o~6bN#?`dmKEs$H8+S2cFyG;JG~xp4;Q#xjjz%
z6{C!;hpqo%59(~8_V3>?zg}-`^&dHz8Pl{whYkZny?Si0?`|+icf#=-tTxMS4w$nT
zD`s(kp|7?8#n`2y_L{#pRm*K%XY(Um>%BG1F*qw~MQz4Ry2LI~#6YD$U~+fBUlY3U
zOQSMLV%fv{@||tL2VE^afq)mx9}wBQ$-3d;vEkFFPmhh^=VZA;EQZ;<`IfDKjknye
zsG~j{<jkqrbUIT|!LH4hbeFq18f|OCPg`xcmaau!MYqeEDCihEo8`DEJ1h~S(NZ&0
z=TB0U6pGQMcSlpzc*P(r3I&eKW@$Q=@>YvYh4<}y_2*AK@x-gI;^&*w8Dfay7V<Ng
zkC2zhUVHu}dAa>lAHTL|sYiePt&=BDU(CGw?$FR=xwii1%P;@PNAUBJ^_Q(%hrEp@
z&sD3A9b?%uXT07&+Hs{A!gln{*Y-ZfFg44r;3l7Z@$Gl)(o{iMj1GIfXU?$fv185E
zQdGgr2d8o#ux2u1`^JJGs;C%EZ<(N|Xhsf?jLc?>g_%G5MY1nw8-grbE=M99XFDB#
zAoR_&R81D%_fQMkD~^jq%4PPwbnWXJ8iK(V3}3|$pm3eh^)qMQ9i5s2TS8GOQH(Zr
zH^*X8QD|vF*DOh(;&ICUP{9aK^O$ND2a}649H;9PrK*1012krPfLh@;ie@WmHqz!Q
zE5weXgGD8;suZQ`99OR9f?v0J^Wr5tcI>FH$ItB|UlNPOr=EK1<=0<-{U_f|W$9@6
z@-3garMLI;aCpa#ojY&4J|1Fvdl~z~boB)200^o+9F-nB;&!9AVkXmWhn`@NC#9In
zZf7_lb=uYQ(Yl$GWe4BEA~lrBfYGP8-7^{61vv;}Ec*Ub6Z6+LCnM1)?u~&wKtHoU
z$i~}pxT~wqCx`+3!TgV6vE(jE1hWI1kr)p%U|M({!3=VFjuXW_1YjTGnD-{p<B?c&
zfFrj5pgR%_h9c2OQ)5j{JQk#B5qp?u8f<v`Lt~0A8f0akP2*`vDikbhcD7oI2xI!}
zn;e}SpPWj~)zyT2cJlO~EzD+TEvrzFq;%ePNM6VD#Kpfig&P}dY+rUd4*IdSZWRW?
ztXgs7maDE>vuZKJL?S*;=h*kpXMNc6vv4Co*~6!!(UB3$dh4y_cC0T31FpHEw`bXl
ze|Yu4>u(?1c-1mHPFhBuS={s1Tb4C45{;g|V7n!+({%<1Ww7T(*UPiBb9RMX3zH+K
z=cd!yQc2b3(xp;aGd!MBsbbO=T|F5CK?^2rf?T&_o{E(00yW3G-PN4J7)4mFl+{XI
z&}E1<^+m-XmG@kgE70a(YDzLoDYo;&x^h{VQ{J1VkGyq!9O*|Jcn7CL@0^{SOy`fE
zoSd94m7AN##^zMk<laBu7*%Kmw1qvWc#+U_H0t#>HfD<Geiwtq#hIy0X8n>zExc~a
z=&VBQs!m9+xm07L*BgyO%TB-VMNtFV#^=yBK8LpPfVS~Dw2jZ9Z9JfDd=72nb7&i{
zL)-Wq+UENAyeR(6o8loNp*O|6M+JOCkBWJ(iie1RUKO@y1suT<`FZaO_=esU^Bxv(
zo;g3^dFW*^?`Z+w(9>ex+u|W2Q^2rQj|(`29vAao7Z3esRpe*?LM+fD@V=gPysw{J
zqIc;#j`#Il$NPHH@xH$QU*b0J7oRz0C#4>J?mFuW)@`POvvmjc9}lg!z9jA0yLa!m
zzP<P9r=Q+xeG(LGQ}wu+wZnpLwYFl0*{7fW=HFOfv_57nw-|JMH1ie(3R;@K*56p7
z<+9^HGw>~Lt+oD+?|<^C=bwK*x!(FL_0U6@jI0M*>YrtqpFTBkYI0HqBs=rmdh369
zo_KA9^O4D-G39T!5?muUJvmuQbOZ>;n+ltqAm>MBvgh)Xq*zc=7qcv<s6?GA^1<?v
zgRdM<l67n;3mBFM4CJ!L#>NajH+liPn$lS?nA2s;<M9;EozoNqNIp_9undh?Lfzyq
z<lw~M#fiC!PM|@(EFXz_baGK{0G!SeHWmxR$*ekY;^fd|9t`xk*^3H5-sNm*=G?jS
zSa;l{y|Mb*fFLoH+ocH<T^pgx`9d)_Gd?z+wOENa4cdpM?mGA688Bi4H{X0!tq#_Z
z;y?G|^Vsk7&bz<={qIjsn~jZ)!$0~_aV89+sf`{{YP!0*7Q~uB26hggd->&;gD?K>
z_*}^no12^6z7;DQ%j7q51IKwimZ!IOIh^dt?*H1OKRs}McH-Enw_chSwZwAQ<l(2E
ze)jCyvx+J-U%u&@j&Mw18tRH6np?kupT00WHu$Iguk3%<aK-(a!nUEsOj+np24au4
z60F-pN=kw*GE{=1j3jnKnVOYw89D$!lh6^%NJf|l)=Z>`R<JMyAsBL+;KP(Zgh_-j
zCsUDRW>t!JOVr4msnL5vKEL1ZQdxmm2;{v1N-z@<qfRs}3ohz%Q6@zL&f&Biv@nnE
zuC$&?l{r^?dpng8>oMN4Cg{VF;u_3k*0OxLD~7$5tUD00Gh>9Xvx;tP=;-JOcC<DG
zd?FUL4*J!i9w2Mw2FqeZ$pe3fb)ChQ)k_)zlumoyV#vtTiRC5M4~hmZs8Lo$QHz#f
zdE5-;XIvKGJjpB4wB!<9UdE_UfpA2!fx3^y(!cqmN2k0sciwp?dn&qV`_(WlZSU>v
zy>>0;O1tg;`)hmau|vGBYw1!f!L)QyPfriCb@R@hI|HA%eM|SkSRBCi;*QKjrHf#R
zET3Trk(vh3GJvv-=&kF?gPzZC?q<teYdpMIJI^GRkBjXqSGEJJC^G8YTz<j|8jZCg
z(=OH;d4-EL$2dL~kJdGdl{uzs#mYE3>R?Vb5Mh{tDZ!4OCv~v|9j3ViZHi_!SCW@W
zxFk2JSODkFs|>XBEFu?!_(Ha}F=*l~PCz@;rn1}9y((npE>0PXf{Lo_Axgr>28wCI
z815j^3u2i{M9fn~9-4@#GkJ?ORf8f~S3{D}oMj}u1|VM(yS;K+<I?&B&5KL|bB2U%
zw+JxMbYD|_Tq2gKmb66Fa$|_DRi;?0RDl;mF~xF)PRb0+5k`*W0hXzG)@P+Bhb9z`
zw^*QStOZQVVXX2Mi_l=?7b=XvyLd*lWWJoP=oFYzE=rJG0&Agd)K6%)rU1xC2SpE{
zw+s0jzHnWF_C=)xt?_0e47%P@7_e5_wr=XJu?#IgkxNAN1}|U+YnE{v6KRk!lrT1(
z<>2N-7sbkv;dAHCrO&(C$f?&}`2DQkrMqaxz!%TT;j4jQuUN&LIWshz=0btEj}IAg
zWb))(i4FRIC4$k0u-l@%l8b^jmuJKT;bd2ZMh}iA|Eb@+12?7s$Fe2^Qb(pMrj~Gx
zp8@8<+I=1_5oI*Y|K_jZl?uo>mM!GnqR$OCS1#%mIU>NW96f$skF_jqGV%p5-ho1B
z9N+534%uwh+Y)mHB&=Gkk_xc95aFmwHmecdR0|bKU^H4S!_AF&V+j(F#W`*q=;r#4
z$JSdnlW%}9nVC({E<;EVRi@KQHsSjHQ%8?a(xT7T<WIz<oChGq!d~xG%7wn_L&J@c
z=30u9WoBlySdb%F)M=30|6K8kTfTT><=hkloWUn(rc{)>FJPgwGo3qD#TUj5ZFDR{
zvNT0PE4_4j;9QOhYMJ2_2?%*AJyRVEx)rqb8i%%C<IvX2KwGbIXzMi&ZM_V%^>T-{
z?r~`A9*4GG?$FjBv6`(0_%zS2Tj#f1L4V$Br&{<dtUm+G&)D;4?Yu`IF2rg*Py%T9
z1KTpC6-h0tPESv(th=G1!96pKHu6jXTb-okcq&!YG0vaWi>VK8%akijYNgB@Z@iI_
z8n3_p`o=eZ{_w*O|NPA%IAMsKl;g*ajTNQ3x;m*icI<=OGF7*nP`a5AO&z0G(O;a`
zb&QZyZH-`O^+!&e-|8o|kvf2VbrC<bwZE<vqi*Ujy-<WKljDFjDBCEbY*&c)w`J^@
zu3fnaaN4Go?I7ygH{OboG#gj7wzjS!e=o;H5ts_gU^0MRKCmrQs$%EU6Dd2nI|nk4
zw^M;|z@apYB^p%1Cf?ubCo#${bV;EPCvE?Vp$ObZzYMfxKMR$3f2*IwSpkd=fu%9c
z2@Al=BUZPQcs}-+SI@6*!TA<m3<Mi`SrY@tyFf2elm+Kw^>><iuMRwJ^%KFcpT#f|
z9>cVIu1p*ZGwjoW5%}uq)vc-xe*ma_w}Z-eJE(jsQ2A~Ll|SyF@~eT$zv7_sJ_nWm
zPY0FvIjDStS+ttiT}O`|{nxElJ6Mp1&7Ef0p6@dM2o_|(+ClHywd+Rf!<HWm&MET|
zd;Y3jEG%nrRs$Zs)w*RqQ2k+Zm$_&Dq&FScI|SG3VE+~VY}b0Lxo^EOD$A@lfJV*b
zN{R7^q^72|jyZqKb|U`cb1(b>vtKba&Gq&5ZHt#IX%5xcbpSAyilYf5(i&JKg%XZR
zD8)h!i)dzYg<15=C@YjXGc)t<v14--2Zl<N)>Sx;p0oM6p_3<1o}Vq~E}&Hr$Z7)a
z1Hd-RBra!J0$Y(t+^bJtoCNc?k{KHxIeq%{sOoJ7c4(}v4SHRXNW=~NQk<QgEt(eX
zj=+5kkI%x@XUB#IF`L+_!O^3Gpo*qu=*r>4hrhFD&k5Rl#~pX9=E~WD6UX6#BNvYU
z<k3eT-FtMjRCn2Bm&ND|`90i+QX(!fak=Cor7~Hu;>y<Yo4@(PAO0{oclzbu{^E%z
zp7?dH^=4qM4_&i<NlWdDl`ETgVq83O<j6(cWExf`$-kj@E)8#J4{d2yzmG%DTn`KO
zAU?aEe2h?ba#=6tZIvtq<G@OUP5M)*oJx2<yb?c8v}_6<sih%`dCeMIIxy|Rl8)w%
zIuL4+nm`@cP#?PKrbR&?*!5~KUemE?DQ25!?YQFFYp=bst2rj%KoDJrDat@C6HQNC
zu4x49fuW(n6yMwpP2%%J7Phs+h1<l;8GzE~E?k&SWruP(4Xjzt=ksyEcxZIi?zn#S
z;>C+sUBBb5FMQ=IU-`ma+jnjPl2~zd*T(C}!}k0VIYbVH?p?g_;K75r?%u0E{;4nC
zfB*e=+;;c1<g4U)dwxW^cl(+ksHE5?p!{dxzT94tFD5Q8<cY^kUU=a@j(WHKA7CoB
zHLbei_Pf6P<uBhJI{nlmk3919^UuA0^xO-BgIR`XXiIo?n#&KutENo@<V+@?{|2!h
zAl9D8Y_Y>@vX{0;SnZ)blW0jd$FcBD2l=2|GR1O9(np!rE^I589bamj>g9wV)5m1<
z<#JgCK@CR|0fXWKfIC70so0s?^`y*-fUPSDwo)ddkYp%|r4t>zz=;w%=Xlu)_IRSN
z1&GGk*)mY7h^azNic)6rpD`6M+y+f2+?c@=HsDNSCefx;D!FqPF!fcrl%rYfT2g6G
z_quiKmiWx{@%{VvpDw}QhvQ^=F2T-ClV~u(!d<$AM280<Kqo+-CUN#8a6r18<3)}f
zIWkETBerto$_NPHnIriBz-TNyF9=PyWeZ!ZZcVupen}7*fPEmaIYGkw$pOwX^T1^}
zgA#o33?2&pK9eFLe}eUeaNL1~Un_c|LoXY}LJ?h$%e)`1U~!^a0rS{rm5789_q59@
zn?C$|flsi|II5O#L;KK}s8=(&`b1kK5a4@O0rm^J!ZF5{{(!450Cx?R8UI3fh6d0Z
z?7%Uyv^~MLFD0kXCs;!@(#1qadAbOQ5+ug>Y_J_*A@N4CsXS?GGp9(L9vmFx>&ywg
zZQjchb0OdB&;g%w=zyi51MYR`fO{{IQSMfU4)};e2i)Y)0k=DJ0RQUG;Ld-sdlQxl
zh51Xay{``q9XoO2#M{sG-Cz$X;QS>pckZ>r+Wy}92j;Q;&pfcP`UC!<S3%N_+a<l_
zT3_ZOkUpoNt8P9|#5lZNpE0Sr-Ln70iDSg=E|eQ#-%x6{n&Evpg&mA4(f|_%h=_T^
zU2!ZEw)%?ItAiqA>9t`Vj(S^`ELpM$3=z2&sDfcx%g!B&<y^3cHDhqzU{LlKiv<#o
zdwCHJ9!84WV{}nw9GWJJeX2swmXCit4xChf<&MqOa$zuk6)Pr(y2FC5tXm#{(^_u%
z{O3RaDKK8-T9=`Ul4Q<~jEtO}nwl=TkuDUx9oc{J;s{x@ro|JUO{EHAe2qO^_Z`Lp
zo_i!Iq0A+=pxtA~49R}%)GZW>CSR#28Yvf&WH}Q6o5*9=CNq_E8q)zAx`icd@`VD!
zyL}$T#Gz$g0lRP-7+0>XaBdJS76;fBkPy10fTSdxSuV>czzKQ)7Fdq;aCAXNpWEg9
zqEIN**an2zrp}%`i8T`y#lkS1GebjI9-<+ohv8^o4%G8u04s8B)?1I^cv#=CF%%Mv
zIcV1`@v4)PvcIQiIT;zzs8P@dEpBE+#;nudVN{hc@YooULa<|+*~8f70{x+om(Vm-
z$-v!tv4jgDOw!IGO=y|Na#nPOdO*mk7Q^u%&1?~c2-4IEC38MM8q;79ieiGJtn^$u
zE&C;jCB>prDgw9jrdEV&@=0PQX-q@FW7cRUjejBw=kkW+_5<Fc6eB?dylk0<%eJ+F
zAs&_iLWc3OCqW6x{&-v@qodQa<Bg3Af@*FQE^A;79l+`R*hSAt<^uu<HWMVYk)SyC
zLD@~ym>tAI`EFqu2{pl4G*;V`{a|YoQRD>y-h&1Y0GCsfl;}c(5RfjW#qdPIj$vdW
z4ER1%DpV4bm&a0DvYTScg;L4DEGTeYHJ^vuWMc7}8reTHlP9rQz#AAF8_kKHSQSC_
zfL!Tt$d$#Hs72i2kSiSyxl#vmrOhE%7CPk0LWf*g_+LgNH(6hRd6U&{J#4iLFANR6
z@R;@(S#M6tUIVLeVgQ7_vcm%W4Z&c;<=0;hri0M3qJ=Dxy}2Bi0VFrSk||g+o4dO=
zZzK<redIwgSSkf?`IlSB=VkBUAZTVXIKPr9SQ1`ldDX4*GQ+DbHQ7g5R6l$kBz?Rn
z5`9cpWKJoZFA!1o@;r_=^YbeJCMuj2jgr#KrIgI2M*m}!L}lOw<mkZsN~T~*6foMv
zQBjc@MI001Ul^kwJ`WPlf?RF^ZPAUHOd~P+y_PSBT7G_IJHvZFJUIAa-rzqpFz_Kz
zwMnnpdLApS&96{L6K^39C>Vg5qEVF=;2cKf4TCWAD?2>JJJQuPqKHan_38{0WRhM!
z6R;nry0RY!>7xngBj%uwn1en-Kp!y&eZ(B};R5=IIp`zippTe?K4Sj`d%SACN(~Hb
zFb|ps`!E=ZJA`J_A)tm{B8-gCG#Ce>%z;=52H`n_1`&SwOKc$$kvSoo?d}$2s=GpD
z22ohD4|D=RTuLWIXlz7RU{aL1Sh<|d#$+lxO@u95Mn@YP$(YRbPEVgX(<@VF4q@jT
zzQg1mA~ZE&&TVK>&fxiU8t5|35Mk?9RpoJ5i>vtkr%qL5>Xbl)(NXj&CT^LVmL$J_
zTBiIlBK-Q-jg6z2yO=u^i*<Csvvl;nAFCoc-n?{)SQW|f=A}#c=KObKRpj;7TDhOd
zq%0?>SR6K{V59d+(ho0Bhp#p8wW7er)v%FDk^X)>G(CmOLx04jAmS2K4L;l3@N7>w
zp6v<8vwaMn?Fq-T{n+tr>n@RTZMWmul8$HF^}k27w_FO*{_ha!r>$mdJ<O}E4f8qH
zqOi3Z_rZ@|w{u)SW<Cc$dBl9s{Acrim>)4uRL=xloX4yauyqpt;BkAtV7bvd;sYo*
zT1C141;kQ(&4Vn(j9biuR1KfBeNqf`!n*{#&8J7-efQmwxq^xT_M8I7`V1D0nSl)r
zhdxzZRZGR<=m^#-B5)6Mb{529j?f>#xl$G91_BZ#H!C2_6k-t}fZ44*Rrdk=?o`uo
zdoYDrr4qzZ8uYjW_5ic%5`g!@$zMJB<dgf3kLH4a?!2>aym9F8OE4Wi^u`;7Vx>~a
zmok}&v9T9_0oPWE={C7DZ$JC&v*#)91ISmZBHu-eVzk^m12}ocGD&0+0SMHzcpN8G
z_f%f1)B_fm1L^c)9F_sd9^tIn;o;#VdBh2NA7N?MBS;CtK1gx=p0C$Au`c<~S~dN=
zDhjh%%*!_K4nYvL*_EU&0f}4NR{}a()zMrFMgZ+=TCkwGt{bMh<^>CCFxNp#W7|Ub
ze%Ug(!RFcqcSEEDfkb04@&RnTq>7Cd#bk(%1|X$VEKvxye8wJGhu3FV9&|}iRm`H5
zL8`#xCWUrJk_4R~`L?^RB?<DBJwLGI?(ORv;kCDJ*|u%_#`|E}xP9BUt2b=fvgMX7
zw|@-2|MUHDS2wS}?z)vbKf1A6Gnm=Zz4FhX@{%f420{}_iHXHxtU^o1GzKY857^n*
z&|}4Da*3&#Ohyj4-2>C8C^4%7gMQ1<Ha1fJH&!cVv_gUuAEX#-&)5G8KK?oz(2RO-
zlH#~sq79-EQGWn62Pnc|fl?p5zbwFyyq@4_^bDnelT>(npk9p!In#t)%&zwkbF+<@
z;eIL%F*z*Nty7Giv75i_vxB`wiseBg=tuy9U?=1w*kQ^_(C&W@o-v7n)B-qVp~uXh
zIehr=1tr08wmVIdPylgrB^r}{C=YU)3VZoo??LBg8#<HIr!zcJ{fibY@>Xaef0_U)
znV7PZ9VJ9d^fH1_nwY?(XH$5Dz;k9jF=*vK2hjoG5DH5$lr0KNfBD5EXQ$LKcQY<G
z12=0j4{{dLv9aqt_}py6XJBX@bQq2x@m{M?!Ti2F&lRy(2yQ_u8EQu3dCcpEV1viQ
zZnc7LMt=sR17L%gGiT16nNS(24(>mk<WzKTQEiL7rcnZuo_~-tDA=d$dJjW4+ZY<`
z*uq89-~kEdZ!$-7F*LCJ-qGQqp`nCG7spGPfl?qK2Z}{6c5vX~`b>IYU|=3i$3XuC
z9r`Ee&_90AKS7872|DzTAM}skp?~}i{o{A&AHOp<5yx%7gq>i}oRs^h+iy=$H&+Np
zQMnvguzgfr9jHy%LDPeSm<pNNxG_PktzdOJHp%3?UNCcc0kE9e-cH)#_~2lIx(GWo
z?an*NU9jVsXA;y;1^7X+m}HioJh@b+&YdB4kQ?JG6nrwJ;pKEa$+Qj)waV1Q7<}cp
zBr_Kb&dHR^4PV{vBy(c%;uA8pu)}_bn=etz**W%d*(Jta)?K0|Wv}BM_B!6-3dcLV
z+}R_M{4qe?A180H?zC#``A#eO{`MW!!#@HbVaV+2)t&Xgwf=gHq{B@HHxuMA5mZ!E
zifSZ$hB^z>GOLPBO-&*x$Z^c%soVK}D@tRdsLp^+ol(U`Fa$+Xo0}OO9i7QlFsdc<
z*0;a??IW4U)~#D3WLS>R&ZcukV3%SpJ-cN~ICBJa-jPgri%cmIOx#i(QSea2E>=rW
zq-j{nh8PJySnI&A46&m}2?OfA)()rhSEoP|JVH}|nw*@ZNQ)e&X-=?5kpzw&9#(`n
zaDH4+hN1OL;%#pSHfyg=T{q4bJ{Pxj(FYG6q{$9B4xAc@)YsQX0&afazEtSS&wlo^
zSB6siWU3ypO?6boNPvx?;s^z617o^Oqy!DJGC>!sgBHbp(ifwF?P+3<bP#V#ON)mT
z&YwS@PsUv?Ota5%fTvtzV<kQgvMkP*#(>^R@H-x!3M3qeCY3DMv17*qGQ4;1-r*$Z
zf^Z0X>HMK^%`2}=1+MtJzx%r@0#mQZlxGs|4GS<n;L4vncdkG@XiOyIx~`T=*jHUr
z^~OebW&Fg66XO*(v{;^nU(63>c`S0_M?d<}5NW>i&N~+*<HcfbdIH4A#B{E>WlQbc
zfv<h-YX|0Pp|ytGRoQXnCE~5S9dzIJSHxQfFA;Cu{TJe`yPdLQU|<u1A#|pK?W%*-
z4r_<K57stF67AfC2$W>oSuhDi6{Kl25oo$n2?TgPfQcFUe6bi&i$$=Oc#o%8RAsEw
z7sN<{xjCMno9pcK`8qoRO8KqcUMn*;*3=XTG&PNlWn>D}Ym%z|gJIa{NCe9fhp2U3
zW?+j=5}kkqk_E#k77e3ZmYH%H@Rpy_G)kmtT~`!cr*Vu=u}E-ql%^GBbW{O@m8Pes
z0fYIOe4dGNT(LMaQ!H{^RHkMO=ifd`f+pxPK`>20$YfMCgUJs3u0p}ZV=R@bV(1hC
z+!6_@YAzQFscI<n?z_3%yYB*I^Vg4z)CcNenaRLbJ!1ATLSe==%)7=gk|e_iV4UAV
z_W?8*M3H4pQ;{i=BEiN+(-cLJ5n?Q6n(#{NWxwWjYcm=wqfyw>W@IYLRjKJSKutF}
zsA;={nyvwA+U}sH?G9?X<`UV<w)}-kK3kpCG&Ho?+G$;Dtppf@^A^{x{U=YJ1ViQR
zpY?s%+A_a;g>{9s$r`o(9`Mc@JEPfJYkeOI*H*(A8_0Q>D9A8>Dpk~c9@wfO#?-OH
zV5BxTiz2j=#*l@%+}kGxfL$+Egm72~MV`}5On&Rh9e4YnMfqR=#BN`6rwOJRWr6*W
zo1M+7G=sshx>lIHh*GSjx!EoQwebA;U0-_=`1sdz;hvu2p+koTi&}i?(xnT|J>0O6
z5kz12A~GVkT6b$D)<f%n5(bYP8O*XGj@_1uBd@=7#~pWka>va#TXwvED;QtVFf8&e
zUnGM0_Hh^(R&_N7++`#ba=DTT(G_)7!k8{2VY^+qtZ-+Y`4CwsNlTY4>FVlQ7_d~8
z1$iy<fhe38TF_HwBavvt?Iz7~E0yEDjB2Qu($9nGP%#8sr9dCWKmbn9=5m<%#v%)&
z(J$QpxqI%p=Z-ETlX1a?Bf+lAL6|SS>C4luRV!DoY^*2S<yPi=pjntx^I+u)&COAl
zjmgps-?_2(?Afz#92p#BK+GDX9^^r;08id%=7B@tTUlW+cx7UY8<B}_^HG9Trb;2O
zxG5Q3hm%~MnR<Jedx*$xpIgGwez19UB}rSfk`POzd4zX)eXaxwk^sjVDgY-`QMSbi
za+c;S&D8`q<PO{U0Nt(iQ9w9d0$(c4B^Z<N>4ayD-1G~7{esqd0GAQCj@MP5vpjx`
zHl=B^q8SMf=h5;tHvqP(TaG@i3w3=agGtaP%LYaH&|)=97@p;!PDRTAf{VHaLZ&Z}
z&naf5K!HXon<g#t42b>;<0_xe<#N*((PMjIsr1&sAef{FrYj87g59sBF##-sX6Er#
zlOq?;kCcj-ojNdhHf`mHX)N8OX+k6*z@^ge+UdQ3nh(Ex{(N=RJ_(%tDF<hN%E8%x
z3!MEa2WNlE!P&O~XYX`y_D%<9?{skXP6ua8k30wWHZnByvq!E44zCuX{9ESH=bwN0
zTI+A@RPk3^_ehU^Bb6G36QA3?)!IJ4_d4q~m|Nz5bF0nfOEpb73&u7`Zf!O*YsVVo
zc}4&$r_3<^niy;}dZqEaqDS+`H4x|=S#FOpnjR088wHti5l3Q1z{VO^w1x&AexD^c
zgv)~@g%u0TzZ45YnGA!_oF!%W0S=K`h+7H(e=#kO#WS>SnHFcM)#%dY=~JNQ)utxu
z{EOfG<~Lskv+V4zz#iM5Ds0{y0KGm)JZ)`leo0bWTU*^A6P99_qb`aIzz}hhsgaQp
zpl!~W1CALf6o@wj>;bs0Xy~Tb%$UF%G+Ao<=tmkGV>R!4_}ANB{!uLX6OG1#xD5Mz
z_Bx5R93%F9i|7*t&|Fkpz#Lv0`*e5l2vu3e>L<&6L9lVa5*GrEn4K@^^@iJk(Hp$s
zY}NqS?)Sn)edsd@t1t+Wr64lAE=e+U41$pC?4ZC*IF=w#l&+v>SxGlsfO9Ks0R9gS
zE^k{5W-VJRM!Rmf_uhNAcQ-fpd}Qa&o!2$@oIP6sl-}070$$SU%P+qTglrFpmZcoW
zU^ZR_n8NLi+bKmwjWC$zf~Jczlkjz-q|~}ZHs$K(KoM$WsU2KWoSaNy66ET10X|cy
z^yFmDW}Y-G=c->a=wC#eSlp1NX6Rk?bd&=Gh&tWc#T%-o6|t1&a@%F50`OWhY;Som
zFy}+U%4OV8bj-p~nVc-ywx=k|_;Tf%ayp$Z<v2k=A}um*czte*fOJhrv}t0w3azZd
z^)-y%n46i&<twuoDxOZ4aZfIrpRofwCW~Vj^!kTCj3X`uAtloS&&f4YK-1&reE|6Z
zbB~GjKwS;c3@luq(*RZ|BtMzO>+=|{!SjM7p`mUGf+fKop5q09v%~c`?B;j7IhJKn
za>=w(R^=KDnPB}m?gjfL03)iZ;Lre-kW6CHJVWsw7OtN|N32L7-~o!PuaBDHuo<_b
zUcG^U7d9GIjDrMFiC^*{&SZLSCNI~ZW3{`T24Y9mXFqC+AtqrGq$2Z-&&39sJ@eJg
z{sko4CmfRPpB$2H4M?`T{=!)F6(HGec1X6raY(jX9FpyCoOLr#{t?WRKmDni+4q-U
zy%nsI8?8{)(S3d{nEUN|X0T<6re+bV0fgTD?uVb-f9UmJKlhVYUws*%;jd+xp=;b%
zZzSI!7f4E`xm-R$pZwjR%;s~L7LJ)dbZ9CeYS|gu1qO-IPkJJJxm;E-6a=$~E^CjO
zpiMSx*sy8cHP^I+!G2XGmp>c{18C`7wW@(!Da*X8F1FyZP1nm}qy|eAhFD2v{YW^V
z1ampirA9dy?C7Yk_4N~JWdKYg0FZ^kCcF0L%jCQK-`}xX1IuYM`GGw@L%vI%Bv1Nx
z^l-B?xoA!MWh;A@^<4dl4J1Jl)E0P2kH|7xx3Tx8f8IcTOnxqlE3UyRhKr?`%yzVO
zcXuZkeQ+?95S6LH?oZrx?Yh=}LJ8)#S(>mM)z4d%q9)LQNm<W|W;fl>tJuj^){;yS
zo;Ja_7A#<QfdnpQv-nPOK+}R<vk)<HSr_U+mH<ubfJ}LRtg#^`auncb&9sVBQ#h0+
z^LnN@`iCEXUlxI(fxUzfFS8~N_9YmxrpBG%Xu+iyD-V*Mvj!GT2zcG@U;XM=ho_Y2
zhTCty9W%QDxd%F~xM9oXF&|UTXL7nR{`%{~SgDsO4UGMIqxES}VqsaFDP_mT#v)4t
zGOJ=gU4n_MUE7f0xL{rBVp>L*K59<=HXPI{Mn6wS7Wn6i20D?vdNOPD<8do#`yM73
z^eo=RDY_UAi~WQbt8O{FiS+>1N(`xb1vFHlqD-C}9+@s-(j~YK2bZ&w;!G}s0%m$r
zW<esR(+LJKb3$}CUlu5rC>FGV5GHUrc({JBdMUW5V#uLvVa~MtBkAei|KMl)-k2~c
zzAh>A?qj26i=t%l@Yw<2gSQU9CbO>{J$33-f&u%}lMoti`AX;HBrWYCykcjww01FA
z$?*Y7WaJP}xhUF*38oP8dZ=On2ghZ$68EuGl2=j%+n*6L=rBxzDNRk~5@IDYCDn(B
z2|`Cmadw&yv!A7DgQj;;QBe+gxf()OE)VF@%i5ahu~EHv5#Qq4Hi=4#sS~3%WHV(p
zhTaSbX6lcBJf9FVr(UnUZYg63RU7I?kTh!@l4k8CMyJ<0B+Z8$l12bYQ|FL0bq+~W
z=a4jYPIR<;_qEnm>+@K4$J)y8`yE&aFYmj_9@p7ze%jnOKR;$ZZSR9^JP{10d*viW
zt$c`KiuGncg{I~LK($#QbfVcod%A9x?R39_u8)oR{TP{tC7{9!c4Gzjx!GDfFpt9A
z-3w-B4xPJr@uG!(5=E<2(xwpKyMm?CE3dS-gW&4JI!?<!yc;W&op`HS1d95@ANt9^
z_f^Lyc2}!}RV$KGXpJujg*qd(wY9n(^Q^C0wR{66k?v_*wQ9{804pouqS!Aru^UTf
za;^-1ktwWz=v}(>?#tG%U$5AC`;|?0`K9~G4>`=V`cJo4zyB}tzv#wBc#C~-AylXP
zccYVwt7gCsYojoi`oBLxp+OHfiH|(DTe4%PQz;C^rD|&IBN!cfe79s5OSQLU>Z+^k
zBiMJw?w0J5G`wAqjKa9of1j@#wp+4o)M^beYJ7ZNleGeUwL0i)(IxtUTOIV(dWnAE
zfP=mQ4*Ci>=quo$FYk%Bj~+ex_KCNUf60?r9>u7Zi=+(9IKmNcli$w&*nQ14*L0J$
zvU_48XL`V1^O(5_nTpjC;l@r7X`MHIdSkWF9rbCr@;7Dofdl8XhAXbPqCq=%K&Gy^
zhEQ20!7JHmFn6buUnkz8iG{d}S@d}#Y1!>^@nAeEicaw^FyBkWJEn!hVQuWp!Gj0S
zkW;d|rpC`GVCyJg@5|K8B%uOgf)@idShoQ#>E=H$;deg{m-zhHcNxI%st!U!SJ9+Y
z@O!2RHcc@zjWucEyWKulLHn$Bw9jfs`}9Ejta7x^Do6YDK>MutZ|0{Ef3SD|kt6$m
z^Mh|}wC=~*_3-mgKDqbFzP`Sv$a<?w_CkXh1Y67_a*?RaMWZ?iXbHlRxUSj8a26dh
zC(~(~M;l%wCD~glDT)_gjYxytFLQ1Wq3KeBxJbNIJUK9M^5U7}2M!!Kc=8=S(7tNb
zstB2oy;vQvr4@|x2#<jiTzw<qgvkV{A(Uw)(K$20nF3SLD*!!`Q5@RIqDhyxz$D4%
zSp?InOyzkJ^mx4<kJl9p1N+AUA%UgPQN3RFV(u>ugU40F#2YJ>XiH@=$#Sr<slBPG
zy{@|l2(h<oSwN(*<98DlCIq7r3l(8Okdn+zPBKQ?PNIyN>}l)>;Bdr9^<mX}1Q8+w
z=C{de9xs>&bGfYH5@pJ*5E?X~%;@E!mf#pupBjTFVUkgdUPiS!i?Mrdjw`9AN~*mY
zG%Z@Pr!qZ;JsW~re(j}MtX&^P`g`lx+i$;J(b(ojk7puV$r!v$c~nAMWk&We@T8z*
zS&z4-o<ldPC<;_C(ZM!n&5~*u0;LlTp$J20a~6KWy4-m0p5_HtZ}ujLmc$&cir)tU
z%XDc|8AS<DDpgW|b;K$qZ@omM%0>qzcK{_{<DlegE>R6*jf0ZcI4JpQ2PI$aw3!bd
ze&oBmcklk{4-XB!bM)x1H(CE^-DM@MFVhb{{O~3q?OllVZKPj|uR>g0oGfBtYR)xw
zRy2&oc8{|CI_l@<&W{33kIxh;>4}N6Z@&KacwJpxeT&zN-FFzq7jMeXPN!0-ibe7>
zIhk#W!_I!<JAQoci$K`F{nJSL)PVy(++h8a^*LAnZ#Qn-c-^fnEr85xt>w#?uf6fY
zkvEPVJ2q$1LvIXP){SdnXBF!|z)GCSP%^`o#wQ=@6Ks7ZhJCx}!o;}zUS@)NkEbDQ
zLvoQwfk4gT<;`{I#H$2@0H13qAn@V@@5S&#Vwv6mm|PR+dr(a|R^QxwUC-*(t9zG(
zNvx~us?XfNeG{}aGt=D-u(*~1rXJZJXl+0T3{z=ZOc-YW2<)sTQ+t4&N)yGD8H{j!
zXcrwWq<7Jt#<o2aG<-cKK?J%}%DN6~&KHfK|1{WSwB3gWuPl>st3`}W0C;P$U_51D
zCp;1kQNt%SRVvaf>uOoG(hXk;KtsFN4AjWLKz(KuB<pl$E^h(A7#M(^@JqNh)?o-o
zc&y~@kr*kA>AHC^1+kM19>cQ6*pLTA0uTI8%dCYx7740C@W%{VfJ>K$!?0?ubJr}z
ztStd}bK}*vHjP(ZOEJxPAn3uGpa$U2u>E7?f$M+=Ryla!N(T=Ffd_gWJkWcIk(0QC
z2O1na5OMH8#F^3l+s{Bd{_NX(Hrgq!*HRBYd9C$@`ChKiQ%}C0pk4#1z7i|j%63l3
z1dzx$X#fkOfnc&(15CnNE)n5syMZK^)Vkq%?%Iyt-rjc7BcsV~SqUltID-Q7o|4h~
z&w}4v<4O2D*L?aP|M4F`yRHr-S^c_?ZzNyEnZApB8GeYq?Fp)@OJ?bJ-g$?XNtf*-
z{OyOZ2!-ud;v%JdlGK_mxG%vh0o9aD30}L)EDR417t!MvKG@K70&YtnWoW}P5ft0C
zx7MhGTa6eKps6ObIzX;<+Q`0r`$mZYzccMYA~xYprGjJ@7-yCQQ?|D*+yDr0JC8O^
zFbn=y?P0e)54kg$0&!yp0x4v0H&Y#31J(18dthLcGy=$MB%=dp2wD$51hSK*40KST
z(7pAm#C-T6cR1{3%Ah&Qj5|C(N`Lt!d{dnxZGWwA>can~Z|WB7GZq7%ZFWrGHtRKO
zC-vIi4d~uZ?Va~fB{rm)UsXL+17={+>eY*s2_@Lr7_>c9iO=W5v_tl)>Y>`Dcip!E
zM`NY?X7<l4*|KGc?Vw5kI1diauWScZuUHl}n$}2$fVEUi0<N(7@k9KsR+ng+qNfG3
zt&6sUDth~%3x>V2Jv#k$x7CF;E!=clQ^+tvwu34<+n|qxy|Nutz0-kdGoLpJ{-NlF
ze=(ST{17j^gHgYKlrZFCAaF71wLo0veAfJ`>Y-}z#)};tFH#cqo9^!4B)uk(%=uPx
zepU5QWp!4{WF$+ogj7mMdU2SWSDE=$)k9TMr1<I6aU)}dj~odn?dJ((`1#fQ9;(4h
z_(^&$;V0?-3mGoZLsfE6iR7RXkAq4)4k{rv8!Y#Hq*_14(}Yz@92jg55O!wLLw*lC
zIYML-OTr$r(G51!F3kUGY(a4J3>;QX(nrz%FMDqS9!GWMi{Dzix~unYwOZX;t;Mny
zTi$nDmKO}h;Fu)@5<<)pCJ@3TlLSKYqN<j>kRgy52EWNVL&z{g5*#3eAu%DW4#u|d
zhHXi<7E5la)l%<UbyfY(EwvZQCV1ZDF@E3o@3N~)Rn@oZckj9PoOAD41_K?KMbMra
z4=TsMUU>6DbTvN69t@*?xDSR@I`r6H^!()UCD#OX2{mE-+th@TQPFudA;-wcn#i1B
z&(y?b_*1HNovDW8EiLC&1EM-6Yr)~IM2+~DO-nYQFXMxJ@G#n6sD=1j+fk>k7R;AG
z59W`l1;ZuOf<AAIQC|ywTnkL07BWx^TtbFg=)jzScK2trijdEeM6${Qb<sg!V~?Th
z78ELj!!$t+!VT>d6+vkM9~eJCquN2L61p)y7}|j5!U3)W8`J^+F;QO(7oi0HB6VQU
z)qz1*2L@do7%qrna#K6}7f?ZfUWS$dm%$+jThWi(;Xe+E2|5xv7hb;ukx>*CFk=Bu
z(~Y_XJOd5F{j=y<d{F_u246WS48F|BjK3;Sg)li^!~<^bV{!)Jw&!%Xx&J%y{qNDj
zrgWlqauChN-^5GW90(ktcmSU-1E~OiUj<AapY`IiKnr-kP}`r<_AdttS@kY6gtweU
z$QBUV&ms(I2>Aj+Ujd;{!{gHSGqinL+mBtQ2p>9&FjYW!`YggR4WXleu;D{(XbPM=
zPH6kVGYBmg>7ABK;8^<J`8PpGJccm90Fi?~NEI*!h$;BIticQrx1zI1Er2vYr16cF
z05(AMqq7(}ZSU6hDQzD-gV%H!;T0#rN*F`62G)eZ-c$hV!+;_h*l`W4f^R&ifyEVs
ziZp1fwzq5hOyCT$W2`R$)+cmWf1$(reZcyJ4(k&-tp5wJeqV?6`#P+T=&)|TFqeGy
zk-i8HE`Bfh*kg~~q;67Is?|yoZ)%ykRN1Axto%yZsXPRm1Y5WAp0Zcljw+{>urg$L
z=GXuJ#v5<!eENDVe#J9NSglp7)fwsvb+x)yy-EF|dN&+-;a=EOFC5=T?%1)TRlTo$
zvZm|5zKy1FjPWguEXTWk^>cyV`-ia1b-Mdhx$p4%V`>=dCRmj*fu4dR2C=CW!{_*_
zs;cs`(vp&rnQhZ&FJ3Zx_Sjf#0OxLx#$&~$r8PA*Rc^PtJggE7j@)VD%j`G;ZyDP#
zZ{ECmJZFs~*_F*On5jZ+HQLNIR^XZR25oNHVMs?Z8CABq@QsM)PoEy>JK1}3@RZT0
zWMc5BSVqOupP+JDt-+wVH0s~DapToju4!#;{ni@vOY{%W@=u^AvF-cRefxS}dj0j+
z_Z&Ofv-pZNH{X2o##ysxU%g)@&2G2TUE;s0-efXOyXs4AXdB*$yEKw($3gDae%)Eh
zg(g3Ih3npH@RWT6?3$)GIYvJSg_LaF44iZxm6pEt+V6hz>t}xRpRag4xlqq*uf5h2
zl1l_41Tw_(6Jya-Xnb^ZbbNFe_9NrR`;LzHz$Z9->eQ)|Cr+IlI?)S%zWtY;p25?n
zf~QXn96NOA;Ak+BNCZd6`pCY%u|PZar%kb1UINhw44WaGDqbmQz^i_Vtbt8&Tp|G#
zhb`T+S(n*tWhRD4hSKQ-GV?rdMu~I)hvPGwl%&G|3Ny(VLBk+YMwU{r#o&~wpwg6k
zJr%h;E+m^b8q*anx7}<u8(Efdf-37|H1E|6bi#HVelN67mXt!YLpdu&5_kckK{NLu
zY!$U6X)k6~Yyg0>D{>}hQL)`<m1UaJoFgb&(p1>xnM|2i8f<hWlS$fATvt~|4twlI
zslNWIt8TdM#v5<Edf9>vkyIW}gQq;6;D(l&(<;i#J)qjoSPN<y&yIF=b&bJr(2hg#
zy%)$N^M#nOnTh1l0lb*e06TzOd-dlSrhbuC8OISEGnq!0clx}=Q;VxJ8J?rDD+Fgu
z2n2`QZBhLce=W`r=PIi&FE1~%&u*II#SzgfvGGS!b6s6ob!~lp{mRys7H?%;S!qRO
z<NPIy%csND>E-4kvZ%-$=paLKUO+jK%^@WzA5UzhC~0I=q*+!`lAZ3o{X;>;zi{=M
zOvZt*YwkF5WCHMXzsv2!Rc~fYR%~TJ6xoYiR;$Nj0IIh-999}<h>Av2&_&}$1FcGu
zqU5utV!z*CY?9JsIxPd$fbJd|#!e@B(U@1EjgFnhOE(QT{NhAtU@&YljgO7vf8!{f
z4u<nady$is$Hww1;cz$zRSMy^S=BPTslL3TqQdN*VzF3wYHt1F88tQY<~bXHXc`);
zO|j$0y1Tnaa+%BtuLDRdA?1_f-bE`{u3YF%1j%4918;NSz=8MvJU)?8(xNe~q$iR;
zdjl^QHNfuBp?6<;<v>ZvfqjP#?S;QlF!=U?RB`>hCO*A?e@dYn8yjf_8W#yI!-<J#
zBnI6w7Z2l{9>jQTC=?D43}h0Z!%sxwQeN}=PsLLyLJEd6f-SF5Tx@h=Vq!F=;?S$`
zGT7?PhU3n#qLC$7tEogw&E23`d>dU(HlL>nAW|IZlpt=uac;4RFjmemnQ{b<Fli!k
zW?VI|4jk@1+Pi1Zo@n0zZ2v(XIPsr*ySiR}In;mh<jD_?^uch210fIg27^rGt%D&M
zr6pt0$+wRlJ^GiEN`#C=^6)m;cCOZHVJVwvv{BXy&oUog6)Uo6D{|8tt(lC8qzyLg
zlg%(~D1(ln&5rrSg!lSydc85K7?2lJiPFL>&1T?uU)FKFb{)t25^%hGbsX>SbsX<{
z;CNrralEhSINp6aj(4Bl4}f7_JJNk3a;xgX88wtj#SdGpQlr$#gIey5b+GjUcPmrM
z6;|OC3N{|k=_nE9IPgE%)cd(zf84ce*9$M;+3<U`Q!Y^9x`CTnR<)u4!CCN>;EzVP
zQQmrr>foesZ|{OKD`N@}y}g}i4oQX+5@ihK^9$#f_)0v?nl($7tXW;;E-EgbH&2q%
z5g2gQQk>7WqRMJDB@zs(6WVc*!;<=W6EPgl^T-eke?}OKangngXdf*&D;o@!m-<S)
zm|sa!I2=GQVD2AC89eW%(<{)U=wW(U+p_tV)o3SdPr|kn{f3@1Ywp6uE6^6S)ssk!
zelRdFAg{rRZ`WU6U0pITU`C&xTr^&OS1Z~|9PSYuCr>{4>i+%vJ)Ys=nKNfzb!}CZ
zfFm0=+unTh>a}gHOE52r$M^3CvYe&)*rgSvr$;;L(LU!L!so>M2j9n^o}MFc3H1nt
z+4_{z9k6H%gRvMvz!(#W23*<&K%SVq1?6%!8;;OtR}`<ARg<MKHWk-Ssjk0LsB$<E
z*;Lm!t-<H>dTZ-JCUB%Q3$X-2SZZplxLR5GJJt6NDLNRY!32Fw0Y-uY4Nm|Iap9G0
z%H<l0q_SzuKCD)T2_Ty!Ev>XDLu;$67cBbRjW^%fie46~8X6FD{}=AP`|h^ZrAt3|
zC-C^jU=*7!4p3C(%{SMg+a{N{ho5Uz??;RX<L8&WIP|N;ad3L@U@RuMa9n1trR5KY
zhQ>!QYpAZqeuBcR1^5Hx)bioatn-fNwk~bOpO%&dEiLt^Mc7Pa;vJwYQ#j^0o{Oav
z1yP#`Md<+cJ%^@!e!tJx08)`-#>^R0V3;+T98Oo=%vmiCr^DgGF|BzC8<S-vl0;6Y
z9XX(Fa766zxWg(qR5ijv(b=rojF)g61R=QKYBXXrj)%uW+F*`J6szlVIIe9~+lsa?
znN0Of4?OgZ8ylLMN=llVTE6hmcOPh)-q<*Oc2iSRX&hVqMdLJ0G&R+uMtB^I!Ta|g
zXsi(&vV6n>^fob3Q32F9HjSbL7hFAlw7B@d{`cN3jMg(};>S4^WpHp{V6ab7#=<9i
zdk=Mm!$L)Ptm{B`Pj7fM93B~haXTEv)`f9QU7^r8jx@|_!NM3tbWjwhXtsmcnSeoQ
zSr%M49jK}(46V7_G6+)&CO)Suzx3koUV3R~F1L5zv(Nnd54Y~yCsgd)xB20xo_c2A
z?yj!guk72mudBNU#@gfE6m@*xzJq8lJWVq>ut=hV<2(vBeTWSW;b^7dOh$0QK}N~t
zEM}V>hx0%NLp+Y3c1BCo=RelZWAT@e|ConymDi1{yl!0Ob>k|3p&ne_j!on`5Tngn
zEP*2<=uOzXYzG{Bv=r3Xs|L|<gA*Cxqyk6HAi#AX2|L`tWeLyaVD+h8TONQzM*zD(
z;agE;^7r`c5jez4u^&An!2KW02>dNP;h`pO*TNQK74azYY2QCaZJOq9&=kk1g|nMb
zD|~n23pPzhtkw2mZQoVU7ynk+E=4z{J|5fJv)IN8DE1YwsfGEf$+K%UY&cms-t*et
zA1I(D{|nftPp;kWK8tN%0fnGp>pZ{FZa>#(gocXN_KLR8{k0h!{(o!+=QX5dRG6I9
zFaeOsNe$8m@Cs8J8Vb^;UDKvCY5`|qN<$8uZC{iRoI_5XKYw%C^goPN)rgNgH96r%
zzJl&Julsosp`BffsEc*Kv9sOpZ;I`2(~`T+Vv`Ek;stDz-H$0?vufBb?0#pO?o1E7
z6m*|h4<rtrMHecddsjo(IZ2z7(CW`M+xZ<(J=*~<zy7yD!&T^ier>K$>wl{Oo!0*d
zQkyU&CjjHwDMf0s{}B?NKqOQ=!Vn4uNRYVs2!=aDqc;NDYjkLD(xIIKXs^+sy-tVL
z325teXd88C>vd=wb!g4q-GRq;?AQ?u!tT*l^*cm&_cdyx(xW`0Z6By*>JD|Ka^URW
zD~TODR^Zu1Vh4;<w*%@d6CilLleB^EL}n?|!>BeA(Ppev6?TKCA`xpbh>Bj*B2)12
z;lrc+qD6_sA}q^Wuo6V$$QueaGZRUd!y%a6ZnxKA0s$2pwFZ#q=+WJO+P!<XEW_^Q
zSB@U7Ui6i(d}WER6>VpIZ$AF`<GcMU&~~()=<kP9?O1BJV2e`I>C+`8`QspDieyVu
zlVF}TYu3^xA4sAlC8tjZ(7&}?G>wF1(`n6uc8ggHkB%cKq|+=LK(%IbEp`B+uxCug
zG_%?50h!z5OW2z5oTMd@sH{vNFFX$iu8=hgXlyVjl8J0qz`l~XY!-{4GIrA~DJ%Qj
z+PQP*avbcgzN@Tk*1X2X#(AxMwfDB6t$5?^n$p*|abq7^3PoaH=M2Z;&=Vj_iex{?
z!)C0VgvYU*36}sur#6H3C{jBLzQ8-Mpha(Mw`f+kJfBW$islwGHcnTKApED(JdfjW
z5StM%A|7tlOmF@EkrB-hcZ(S$-`#RC2<{^zet#ikhx|ypMH95KSEH7qX^R>D;wYSU
z5qtaM`{d17_>-YX_*ku24%h5-x0vB?7e{O9PLj#OOoR0jdi}-LxAnaqk7ksvA5b47
zD^V9;8Jc@$;ba2Y3JWLX5mY<5Y@&^8PHjBU)=ZkwU6X4jot+>0cNxmKcwO%{Z9E=8
z&D!_x&{xl6vK6REJG&mu{p(Ejla_HW0o&)!VzU*n)fKQ!GFi5O&8}hlXeN7BKDrF$
z+(~@l0=_N{pGJ<w1#pYcH5~chlXE|@9;dBT-gc(Lv4E}6;cNi!T!%9O!a|4hqPZ9C
zaF?MB5h`HQWQZ~in<hi7)v%o>!zVO&nhY_3=6+a)S3X*Xp8;sAbZDpO&{kf8r$Z&6
zt<s^LqC-1HhjxnIlP25;S~M{jTBF{k98|j1Ta<3)pn97Yt%7%1>_rwo@3Pxn*c3dB
zEcNb0(Nx3fj5iZBAWq;}FBMkYXq+r&VmRlC<&N3?b2m9(4=)YB=|paUw=FTepP!{3
zU>2HB2!xtI?IyxNsU#t1We~1-LQ-iNxR5FnI2*5uEC+h>-G^c}Q^;hCp`^g8DM?8u
z;!-|~)7B;tvV8yP%)kDyx7Pcvx3(7z3A`MPOTmG@WHQ3Y0x<-&EKxF&WfH+A2Y3>@
z;lf`O!tw4&1zC=cnM232C0vm6W>H4qb3xe!YPM4uk*wGN#`5F66?=X<zRdN8YYCpI
z;-hb7XVCkI>C!uiDFQ*5k!5-fUE5@hrixNgE8+#7FfpXjY+-1FLO@-?Yku_>?$-ON
zyMyzB-POo1@RZlWc*`q!-Y&sw_|YUah(HaW*HOdWI%>G$A|9N#>!@KBP{UdsHC(Nu
zhO2eduwK7P{o2o8?e6ZrR{f6Jtn$inWw-LI^0e}n@-wAV+a6br!<7e!pZwtpwOKi>
z{IqcX7s_s8N5>j<gZdL?uX0j#z+Jb|zk#x#FMUpEr#Z6~aUwx80wYsq6ib4rAsR^n
z<zjJ$Laq+%0p|;#=_O8_Vb@S><v7LTuLeP;rntCn>MRd&8cGYP3uac%NaiiY^=%tB
zZiK$sPUIv3;aILFfuW%&MHM}9R8(YV(ZsP2oUWp2V|Xn$nnN`KRM9%!old763u|4j
z{QOlnef!(rzGczETW|kg^NH7<dg`h7<W}^3!?!nlV<=s@@b;DH-_U-%wWGg>=fvW8
zMUSxh1ctY8C@+hiJ~Vf3y$v1u>5l0$=YDbT9{3!KqR#{nna-&lY(AGu4}{a5WI8n1
z$>rih!BmPQh;8kp(ZqIuCL)kFr>WCpL(ynFi)?;BCr6RXft_;<I3DhFnZ!BYd9$me
zq{`!T+wFF5i8-H*TFS8{d_!q0O=YUfon~UZzrP=OprVz04%ddNh|sMNON&q?IE{s1
zC6s(#Qt-kSLy<@dAYX<t;H<ahEv>B^7fhdBUthm;S$S&wc;)(Uwc(J;XtVuGYr98G
zp_{InUQQi&{`u$80_=U3j-iZ5<Ry{L#gLU3JuHgH6B43GIhBa#cq~C0DHMi!@Y>l9
z7TfxlyNsPA<0<Rp40f-_VCQ)dbjeUK(Lv-Q0-1`XJ5d}5XX8>6kw_YihLQmwj{zvd
zZG$r4O<noC(#hoVd7L2vC!)y9tkr6OVlv5G2ccwfS`2lII}{pAA%f-9WN0jHz<%*2
zG!Es=th0Bp_9@jfQc0<ki6@fSFxtcz)5)y8dWsW%+D?uRMLUShxIoH^(&<sro;_Ws
z5o0fs2lnh8bwZs_FF}W)tY|9V!RAugSYA;(8CuS(1Sy(S7|GOBIwNak8H`K^K^O#*
zVd+i}i5N!7BIpPd!9c@6qtGl4q)c`Xr#jf^aOgxb2k&Lbr4))1`CKxY$OnVr3{sWN
zAiEZsI|$Y;kQN)?=`kSCBF2%uqLO1QgbjPt86CK=%TRvBbF?>Ug3bsk*1q3Hi_Vi@
zeQ1hywhi5IdCk#Y0=D&Mu_*;?`2w~{`PE*)R<B|Ee@}kB?JT}<0biGfPm}IS3gBAL
zHQa^rt8{tJ(^3cnE68|_fUO|o-2?DGB;%b1kOdj<b-;P4GTvooIf<=bcMFqB$90<J
z<U+V|K%>c2VLCIXUALf!c6QQc(yHxiF4mr3zKGoNbsfTbK=^qb!p~m>p+4W!3?0H5
zI)wUsPkeXxj-UPnK0n>j-MvD+TfLjs{=PzORI*B!wjEStbpeg<`O#IHXVFj8R+Ur^
z7cMJmE%6f|if4sRf+Du?1XWg6HYM`%u3#|OX@uRb7lTvaQ~(E42@hkDVmKU$EL=Em
z*^(toO#YUZmRdIths)+oo3_M~IC1RQv2k(<suJ3<_p}`;I0Udzj#q4v&*w8M@lhxh
z;Rzn>6%w7uV=qS-!H*v8`qR7c`BT@?qifKkux&v<M*oC2gKyP?4?cM7EdQ#>ztPXo
zHsXt4Y=tXT1J44s_h~q8hbC^vj@k99^Z~ZCDTm!rqOGm1LOQwo%{Sj9a7tGknf>^Y
zqz#@QK+jEDnoUO06=>~in{9H<KN^k3vd9cV31Byy%dpR&tGEn@r3;1OVzGncIA;lt
zlQkYPnWC<`8O_bjQ%XUSf!Dxm`jhb#1srjTR-gi6Y*{&oGNfiB#`C<d%!p%_Lh)r~
zYZu|w^+jvT%7%va?gx=?Q4?_R<`p<>*8X>WzV4P=zxlPVeeKh0yHN`ik7uYTq`8up
z!_J&Lc<^Ai{i>@$mZ7wKy?(!c#ab_pMhYnZ4bO%>g~PuhvQsmY8V_schXSqT)7@qp
z$3E@|Uq~YCMHhhEX-Y(Nr)I}=;D9#GCeYf~Hk)<|VMC^2vJu`J-wpyOQaUwDBZk$I
zqYIkDer}shTgb+h!5Ih~sRZ8+awN)kYNkL|OH9ikOKTHv+iVtXAsT1!vZFDrg0!CZ
zT;+vX%b(WuyqhnQgKDd;=WT?Z_n@xlJ*ew>59)f}xAYOa)k?LF3IqZjH>zJ(zouTL
zPEpIWK;3wgRJ-a`m#epF+gjD5S*BXm)$0AWXP<pG5;^!g_zH(%*SS%>NnNk{l$bK6
zgp{Ldsd_`<ck9(^)i_zA%E3VPv>>o-5+wLaw`h?WB1;iAyPV3i6fY7(p$@|44UkeK
zDO!!#m6RbRvm|HZ9NB@EH+jm-%bVsdoHM<-6e`wX<;>8^UblfYmNm_pGbbFDMuvxn
zqfyvJOy%`UufBTGhMRA=;f5R6ty#BjU28jP6NFNlwAt;&xFb-xSZE@emNJOtOg0>A
zI3lo^lx#yof_pH613a5C70_mm;q6YRjTH%KI_ACwP~2CrnEfacU0=O_ZDnO;;}lmJ
zC_GDNJ8Yh-;2I9s5U}mvpLpxlS6@AT9CpXN>+ZM~{RrCNHS`0t8x5cjwCyO`g`R`|
zc>9<3Rs>a4YNG3=O<TMesL~iY@$R9cBZ)AwI=!`689FAgK)<u<{_qFE{reBd;^N|R
zdm@qGOI?=IsneTlZ6Z+&O-u%GKw-^?9T^@*%43u&sf37097JtwX%Y}fMK%eRG`31i
zQmGsTg0LK*EjTZ!$Z8{q&9;ThBQ3^O(kKwAk<Dm1iPMY66ET^gtR*ESR-2Z!j<Xhf
zi#P>}f}zj>)yrawmm(|8!dPKWjf~>pgmFbtvh9ckh<P%SNJJ7joOqmu4kzbnQk5j^
zg=sVknz2#RXcP<<Gj;~d<V2&KQ*ugP&SyYJk`Y?YG$xbDlYPB8D_7at+FD&dXDWVT
z?c$|#T=Mbb$6YRGGt{8n4!b#Zyn~9xDo5Yhy?ggxdi&wA6Ya<j?~!DW4h$UWi$o$S
zW%609xdg|`$>b>X^x`rBM^qac^m+wDWtkC3WIQSw(+N3}O(ip7&?qx_<w+IUgo0O~
zU^obGBMA0UTBWTdye14kB#ZWGDOE^@J0;*VMm1An&Vh=@!B{4Vi24CxbBhMjS{5Xb
zf9Yn-sYQzd%3oefC7aEra{&hGhNh$r!pLl~L5;}@Ntk(@e+Q~gYs^xLlxSLthT#(@
zDUvZj>ywIvS(w`^u-b^}_X}<XyBQJ`2jtBexU8H<G$>QprL`T@IE!R9qO1~v-ZwE3
zj0G48Xv+}qAd0Q<V8)cqu|!2F4~o9UoDo5q5=sq*IPi{RIPAtr!pPd4CeVD9WC@Vz
z>?HyVLu^;q>eYf<!qEjt4!e=N+@5eYrSSN{Bz~|}v~ZbpjwG=Sxyw~z3owkuB4_9h
zA{g6ZQ}RhgmXy9hY!Mobb2y5DP@2hFB`J>s{urrLHX9jF<Z~I7gu`qqCus3;4e7Mt
z##0N}))q&pB&1@42_+Futco8zMYOoW!3fPR1kN|3d3mkKs^-edOc=EMH@e};u^~x{
zDZl>RJBJS+KHlfn!u6JphpXf9Jck2fbEBd0!|xAe#=}{v59)XbMiCgEoX%iSa9a$}
zZc;1^BuwNZ%bY%X06$r}EG=@rb5_#qL3P^qFVW}E)Aptyt9JHARQvJT-sNQx@Dw@&
zjW0keEkK)8_T&Pzj0WwDGIVie@A9(<*nSpWtbndpL#L^FMFnVc&$ZgcRlPHs-p6H2
z`Q%nAc4@dYy-fsQ+B$^@$j+@&Z~(5bO5xJh3onCJijTDqBlrR?O@l4hkZBt1)f%?*
zG}yETPt#z78oY~I8g>5PqRjt(3m!g8ndJq_Tz8H#Qw7Qlo}o<rYVMnW<w+fuXLMNB
z0G20pSbn6#vI4L?q{AY7Onw_tKfnIiFF=iXd<|%x&Du6qZBxI_{l~6df7-Qc*Y4-;
zP#=PmW{{!l)lv{tb}FK>9&c)kI!_sgzuT4T;qPlF&nn+iUQh<%?nbp%{Rg#Ey+d80
z&VqZJ)phi9I40T}P=MDf8<Y;^We~f|U~Fy?1dc?q!r765?W8E#ZWF1xRSV{bbcrPr
zIUq8TWO4#0mX7xFqB)T-bMX{Ug;6~26p=T8meX=NosN%U3vt=iFn2CaIb$j*qL|`}
zDK*6vz_8m^wM?z_`KlTl8>iSERyIpi*z>Vil%BqJ?b><Viv9t~IddsAn9xAbjKO3f
zl@yLDolZ-H35QQ{*Ef~Hm)Vp^sGuwRN_|eA5<Q_KAq27_%>jodXhVt7NCPLQK_EiN
zVoZZ@cw#rmY#(G>zNCe4a5RGyU)(yEGcQ_y!)F&?1A5~M^fdZa@k3wuR9oBi_uhN&
z4bz%xY~$4W`c!XExAAMM(2Lr(6+K1&_Jw%!L#^n4x1-O(dr~Hg(^ttzr$Mdn9T`cG
zem|(lvo_tg4!$Z%`ui17uUprwY%XO*&wKy02Q6P-V=hWXLZr#QyttS@bm$N#;12o-
zj<K{ICn1s5ZG@^mE|?hxhm1uAY<tf?Y9<XP6BegaB#o3UWHg!;EIe<fxO`NWv3-jP
z8o_{*sN2dxaQ7F{$!L@?o6T~X@PX7%)5SO{Y$8V4e3g~hY0q2iFk3tZWO8~uUI&i3
zIKidn&8hX|^2i6^R23<?l&TO|LC0a8a#@fG$4~U1hOcDKXtaYcBxQ37NsAtf&ww%+
zL?rVH%FASiB-8M-j22L3xeL4WO<T8k@!~ae`BUB9Drj5TAh}|-m*=?!i{{OnH`vYA
zuiUs{&9Y_7mM&^2owC4zywm3`SlrwVJ>W13u7Jw#WNuv$OW_nd4T`MhB0)Jv@H}tg
zIEIZ(fEaY}S1<e-z6K*+Zv#lGsqu)!m_<*;N(Tyu6?HHvlc@|FW|$EWqQ<oNFpq$Q
z$84uTh?Ah+DQYWH9~PKcJeZSZ0jb+*X&i^dq7}H#Y%@=cp<FJL84bgiCK_Y@wv{1p
zK51Gs5j1O{<Xm1#D;<nV8;Pte8sn6jN~QClE#Y`Y0cc#2l=C1}o0W7dnM#)UirsFv
zBY=nw92(4`%0{CU3<i@pqeM#d@NNc;jfE39Xr4iij3p9y@q)vTPHthLNQI(IqKV|J
zb}k!Dz^eyXMdm%!cviIbbMo-;Xp%M1I6$PTC1E79X$77xjr0r+54WyZ2)gC809+O+
z700!)C|R#J{`%{$pXOMD5)?iDSr)W!-@X%ZyTj(lbnhD&utSTv;e}-bya0&&AOMRd
zRgrTt%~AwShz3<rb4l9Dh*qbJjAlDWDo6oR0xgljac@YhR+w3%6`r9P_~-Ik&A_i|
zMzoLyRm}q_=cGJ{PogKARFKI;jvXaPhU82pmNns!Dewvz+ZOnpK<0AkfKirWS)&~f
zOrk-S^N|5#wOO<_q)<uuR5v4QSr$l<Fw2wK2;dDY-Wr$P9#7&psTp90ib&BWlUcMd
zPEbTa=L;v&SyUx@CI)5X^%@WT1jh#Ulz6RHAB;`5!rY7b5@Z1G5@Y}lxCy7@CY+9&
za5`?nUBDTC2b?i3OgaLXH4%U|X%<1)e8J>Joj6knBDLvV6P!}>n(*p{Lpg=7CP4?n
z-#9H2{?21V|IUKJKYa7pN#OFcJKhSoyEV2ygr;iWe?*(kQ!@OB*Uqj+Wq)1CxD2(7
zN6un16tFo8*e10Mx`2(>u$@^_GM%Soke9LDapzfdV+C~kG<2Pl>eM8(HRqb`d@V!%
zklpdcA{qQottW{X)LBt{>KRdd9YFh#C>{lX1yQ^kFn;7>68T@&6F)ind>XZ?pVOM@
zP@x5XsI?$r&=!lxX-Lt|-i0K5Haw0EsAV(WXUp-P!yz~b*T7|o&VLr2t$?ofL%naf
zfbKO7-I<oUu=ib_I)3IXx{(69x6k!HV*#31gZ42x{-xOeGMCW%7{JBoa4|Yuj1Cub
z!K@RoDh%wb+5g!dxcW>FMEMSktsgKJI^a%#sdYd^!6iiE9gTMi-pL)4I3EU_n{+t8
zti!qT5^}vS0GwCra9*p!d8H2Lh6|!M-OlWI`{2QYo3WwQ6-rncRI*stBYyOwHk@Kg
z{Vw^$6WcbbpHkPU9BeC9j}pS0N~rVH+tp^A<`gzXodZSv^6=rqkHc`hOAzcwUhBnq
z%_`T{5E+S*OsrtaF_eWva_#I)P&AGVdMj{7guz}BD_b)hcD#I;$w|ZgBWWd-3XP6V
zOvFi>#WJ;V)~s36d@cn?oJX#fl`B`)gJdE!#v@u%p(*qIN+M@LYGMqr4m%yeLHJo2
zx!nfEY{ZdA6bdBHX-)OSi4!M6k;JawzB7^=9^UiLUyd9(!PHh&-Tvk8e)qdyY?~?l
z{`bFskC^#j8~S&=k$0fa3xeU~k(>`y&>LFO!&6pE{n08U59~v>rfH^QwvrX|Eg3X>
zwnHi}292gf;$~}67(2}brGT8zF^b|gVS^ot5s19>1or23F(nS3XOg7JVh5oppEYtc
z7cgUI15VS}P%;`oGdM(pisCAAHZ;|GojmU?Eq1wVPLs_>;^d1QXK>Zm*H^m@36S`6
z$Objy@S1Ss#n7=am7(%D2Ru@<If<0f*eEh0Nn%Zj7-)+blS$Ils~JvY1Z{Z6+@^c(
zzjbMIS=rJn7qzt1HT!C78O=)HW1n^Bop*kEroI1-H{OVA)!ww+p8^$W&rkL$7A{F9
z2@6ujB5^7s@7qlmgH~_x4)%hG9rl*Q1)P1klTk8^-R=}<lFaamKx7R8WP+;5i%fLa
z!8ER#gd!N|v@9V>3H>8hXYlU~1Pgi*Nt*?-a*A6ZjZTL^q;s9vCz>D$Ee7RQml{Q8
zyE#o+JVl6*q!dpZasl($*f=t|Jsyu0O^gMgL1;$_V`5C@B)Q>+Spw;u(I^lj<DG~S
zDUu>(92&R-siI2;6|=r<l&hLQ2T}3Zu-{~l1<ZT*9#(xb=g*&CtsdSB#TnFWOiE`n
zF@X&AheZN=_LAF3(1Jj*fR|#b97;-}@^Vf>d6H)Glwu8-aSA{=lS-xX2!qxLB|qL9
z9UTkxD$1VUc8SD^J`r)9AU=aeB@=jwrUN8ym*u+VTrke1(i3r%WO+-5BdP<?LPjzj
z#tI*4v}iF<E>FAe_A_?fgWAmD6nyv+sy=VV)QhUl%$P1k*M0Pi>1DV!u}kA|`wJ6^
z9UoeosDW;Yzi-j5cAhhUnN%Cb|HmxRF2P&)fwS1u0yg<WixYeSn}71^U-uTiyrh;#
z&>3hW1!!-doBu5-;97RB%|2RZxV-w>P7PO~uVv1xO<+^I^H(P<nm1D+&|BT*u{!bb
zZDuK8(*!c#xz&jk`qhb)22Yd7hPB%?l}Pyr`#SQB&i;8o+x9Ur-0?h2n+|Q;MOv~=
zhqg_JwoQk&P47c-^yp^_nLlq*@7FeL%CfRB$G`HU&TBpve(d_!*LS4rU0~Vob{*+k
zyLRc^S&fa2v*s>cD-ey9s0`-^r3nxO2-;vWnGEM2BTn!q&F195z|iOf4udp0Gyu%I
zxU90WvaHx?7l_JoREG10n#g=UPnuj_uh(_{F>(w3q4M&f7hnA2?t?u&JqLIH@x}W3
zmPJ==*s$S>MJ@FLvEgd;GYV%A{gIY5v_#6{Kw*-ks;YGUF-i)4D46v5%F1!nsPghM
zUr$e8-^u>|{*!%uJp$1`jLL8_(RgHNXebiLmK^c(kI|6eXOc-~<;pA9t%v8YUw7ro
zr=R}S&gY(g{`u#2{_1Igczzf9+0RfJPAi&MNs?6a+6$b2j530sPbB#Aa=%B5n&t7A
zM<U}RgMEE{gCpY+f#@4RWjNhv3MUv>QkW%&&p$?E0!}*WzxwJ`3z}<cYMK|Uy87tR
zuDAbl=gyt~`F7V)f!O(?mWH&1(HeoldBT|Uk3rA(LxIZh@Zi7zz#kYG9ImOUtgM1+
zsj9535r_&OD#PhXEq1@(Z?{-*?zr=hkzerRRHeIi{r-0^z;j>t-S2nZa?AA_K6TAC
z*L-Tj^|uJbH7m8A@NMV`x9WPrJ-VK-9(uxObv@y8x}I<)^n~@go^ZXcCtR!R2^;k>
zpAPPP4fK<TF~MJ{)~Q}aR+6eqB?@XtoqC)44e}???p_1hNYz>0#6>*4W3~EC^;y-g
zPE%K@*D*gheDL5OwIQUP#xuh?kx*rUP9{<)A=>g8B+El6F%ps_naN0<FqWWZp2_1_
z-gdjy#+Fq#fEqHz>GAohU0F~?#xu?JzQ(L-vQ2AiYnzAtmyPL+OcK!QCaXXjSc)V>
zPc8<E2!VosdBf#$&kx~bP#LnQC4i=unp2>U5Yy^v>a16N`b(gK+&F#yiWN7_41*eS
zApF%k+rB(5m(+d{JB>UI+tzj*$;mi6mSrfQ3vZ1;JFFZ-h=z$CG;0<^ytzXChWbTv
zX3H#4Rk%GkK~$KT^UVMvd6w>AX@kL(%;!5mG07%64N5eYQ>+#mhrq|tUC2yM?jY10
zb}nE#JQRy?;CF+?mQO|^G)`z}LOIY&nn^7SwT(Agtu7;rRS^S6t8&IrJay{Sa&J0E
zW{X``GhT;?!BE_8WN1>wx$We90J;<<dPoDx=Z(lxS}x`DBSxG}j8xMgr8hG!s9#@=
z-&a}P;;~~5#O^XFxsZLyrcImHFA7H4@S>LL%H$hwz15@DxW!D%nk80B#Pjk-(PMO>
zRH_J7uDL3fNWJZK!MjrO*nX&moGf>+aIeCGZjOb1rh`*R-o!AO9D!rw<IpuYwtWZA
z+f5P57BkKpA*(XSQmh0bIf+P6T}UHGb+81>8RJQ*gUY88G0+?YMpiU;FfB5FKp+&g
z1E)A7X_oBpkSrP-i<8D;pH&*0NU=plMOKuHL17-Zv4dr8uHxR|L`QMz^gs{7DZCU_
z$z)lAVUdCp=E94q5_S+ttE$P$c6eAD+PCi{UA%Bbbz<L<pkvOQIn^lEr)hQVgi3a>
zBxvP8gdGeCZwe|CAX5ZNCXmtrLQFde;~iYXZ%cG~<Se4;oSGg!rKq$ujdObg)8;iD
zg(PGWbU0adTMQkH!RGdYp2Wjhgp>WMhynu2L4na|7Lec+l?2t{Nr#ci6p=^%{0B)k
zO$nx<Cs~lW<gAu*dCmXhDF2UWV&4fEC-L{QX!Uu5yuEO?UW;bldCt;dQXDMS_KPmh
z`TwWRV&e-a`~_^2f_$cMHmqU$e{BY`_bj?}0mrC@uJe3op>xf4&I$TVSmUDqf-L{Z
z$-Au@u7bQ<1vm=w?sb6fL-OuP?V2X<{u*Fj!V<t)ZBrkC>|*{T9~Xh_Z{$yMyJm*n
zsrkpyLI+A~Q{pB#8aYd-UNi;%rnNbO8wDH`{;w0OhO+~3KA^+-gbrsb;Cw)b^8p>s
z8I>1Cu>7hH=ilpaKA^+tibS6I&9m^?xr3tM>pz}(=IMW1tKO%shT&fG8c`h}&;On2
zUw6Ln(r@vN&-{FymZEv3+MuKgjwL5mJN*41^)y^>Rlg1u_j4gYkrE?!P=2qK?j&6d
z5ikUUJ$rj(iR`3pK9}1hQZ`$L=s=4yncykxY;t;pWfv`4v~d2sc?(+_>Oeu5K7Hom
z#fz3KhO>)SENX1zm67i5?o(My`D{2-jmjoHPh5NihXxc_v(;{QIC!y&kZ`)U*r`(|
zj&z^4;<$sTxY)tU$<Xld@OUNz<0In3;Wu7+4?eHIW3yd>lLo@}82X+T>*O)+fxr9w
zJ@?%64`2J%Rp<%Wwxb>Bp9(kq5d8xEfWP-%fBv0c{Nfk?IZ*|2YWw6B^3&+bNzas)
z(xdyZX9`<UGqt{<!6#OcahzSL_mx-v<H=vVK4ms`P+7dV(UKY3^QS-k>G0SXwK#wt
zrBo#6w$gcq;pl%p-(@90AN^xjSI<^z>a1CA(LL$7A^}dMr3a-cl$Qc%KEssbaGg$1
zbuNe9TH>I6<Pa`^&P$Pr@v#YP#vU4>DBfAw+}zwyYL+8#M!>GMnk$P+WBEs56Y*#w
zotDI^td@m`aX3n<e5O2h>Oi?%IwdJI4tA_CL=K+I^XnHwan18?ip7o}Ki++!ukV8>
zc1`hfsl>6v2lgF=v&Y}t&2eQ-pSu74`|n;|mOKV$1nh5%eOzKP@4!ATY~P9QzECJB
zRz(z?Oxe=dxP0SsZ)O6!x<n!)qsc7ia=8e}f+7L*eVV{IrnXU;Od|Ks->2uUb-60G
z(#Jv}ckvc$Jf6rR7E5gw7Nz3>BoO&@fHEi~DLM(9iOpm-Xi1J$Y#^itXcJ%}I^a*j
zz+e+*6V8E{&AV`}HKB3f#BjL3Ka1_f86)fset-SU*|W15oG39GRZK>T!B#vBOGiZ%
zMc5M{KshCr6`iEPXk>hqPIwZ}gY1HG`2g$X-EM4E&Vi_AH-q5g4w&jPnM@?vQjMK(
z8ejPLKX<+O;sl8Bd9xSC8(+C{(?j3=?nD@FsylW}@_UWe($Z3o)n+&*qT}#H(j1^7
zAZm$D6&rKMVrebwSB@YlmJF~75JusINE3vT&WSJ-o5rB|vso2K$`Kmt8!P=SEmoW*
zFPDP7)YJ3Ut8cuS$3dCLC@LCEa29wELd~Qo5xL=kRC$0p&SWz1z`P{oy1Ro={@7>~
zRC==^!1l|-!xT%2979WCJlCHHnD#=$M<TKTdjdJ{{>n9LzWL1>oCGg+3igSopI)hc
zS-nNQN4>|LjKi&aIqvwM`--ZdYFQ~X!ii}1Wyl}>2s4ZVfAj#)0RD)X#(d2##W!-^
z61nDYiP^?+U>m?6`HS*LoxkO!tVe!gXj^fz9c71r-&>oAg`pTt1T+a}EgT-gCS8mM
z*N2J)EVaVnO0-zO**FTTtc5#}<vc@Oxgh&+7m)@ohV~PY2FM{4&|FH}5OzH3#OtxY
zY;PrgE}R8H>_@HYceR@~10lR3bbbs-4dwR%<=^R026QNw0?NPBq5P5#Wi_B&qeFR(
z4&{0s%4;rIdu^dRfW5Zgu9?>|N?d7H>S1e9rYrLluQr!)6Ko-6Na2(w#jd#Eza6eb
zR8nn#Um;}-ufD2C`)d=u6N>x2=9(*q1TK^DBJ2UBWw?8JY#ZgMq$t6jgP}}iB%Jt<
zA&>>9jpH~pv)H5s$?*9~K6UNPnJqJ>-FoZw*WdcNsm)E(TdujLsJNuqVm6yy{^I(T
z8#iuT)qs`>2Aqma#-p1f9zS{dTtw^gGGHurRdKm|Reh)6d@P4JyGu(BW?bw|r_-**
zD^@I9f!;%J)8G2`gI~XUH44La2(~Z^(VM>dm4A3(1$qO$#m`&3eDRd>ii(z%i|<^8
zo|%lEfu1GqMmV<+m&-X3&VokZpw_>B?OagntFNr866|tr#*DU&&;0=hr;Z}`v>5`y
zvS<rIo$*NRgfFAXB+|SSMY50nqeaVLo6T~Z78JkJ3M@TovrUH2$i$)nG?VAxc_!Xq
zv77i3ug}+<NH9zyHQiTPUTU>C?MB{L;`KTVJTcba-#;p&62U-GDV*<I#zCqpxN||O
zQ&Hdnc9K$*Ox$9c%)OV*DO!fKnSLCzy~OXVtoN3+E?%+n{=Pn*?;HO5ifgZ0TU*&&
zTjXE9Z1Lg-m!If*{`u$sl0~fov}q8hJ<lkD!)jgcITxKe*d2=rc9xT*vA#;L7O?|O
zOh^I&!r2x=n~2zks17<3L`9}YA3^FiL~JEgsgooS(TTQjDo8%%mF0F7|3om8MU_?M
zh(J;n8K_4ecBtwE4K0sDd*j3oc7h04L!sgR5?@hKQHc|cpAH3}6gefKtFOIknk*1w
zV}hBUd+o+`P)c$f*$o}ojucOwJd7hn^U#RFpw|mcIy#M_0@giyUVU+S>)g3>mp7{i
z{<H^|MgjrHA`_!S0#Q^Xm<NX^CSpiItP!OpoXDL}RVa+2jD!}IPL}aRQ&yG(R)(<_
z;Y1G7c$jcG8C)1^rBLtjV{h*gh`DnG^UJRuJ=%+8WcQ*_szbAXRb(iQ<2*<UT$jmU
zF$V;LfYoBDn%&n2XAd2uX3nro#?1H`j5XiTjWrMH#+unM)_g-Z)_hAh*3`mSbDM6g
z*`yn5Zr6=9n=Tk@ZlnM4;K75B-J#y3PEp2T)HtR5R{6TJO0j6$kTR^ir#z|LudIae
z#jcnN=a(v9R-REtU<?{p>($%Uvce4ORP{P~`{9FKkFQY%;Wo4KY2|Cm8%j5fJP|=4
zDMX88Np-o%6!VeDXhLMN$#g6f6}eMgeb5t5p-cxIljHF)7W&Wv6Sn<OIRY8&4x_W8
zqGIOEnj*K$WOjnEWwTg|c#3po1_uXowuV(J+ZtNle?LrCHG>Q-_;7Mxn)Wu96wLcg
zKFz-0?=mZ*XXJ1Qx!s7!Xw$9+x6z2xb&{HWf1?kbIB`NQqEt_PQ*qP!_3OX=?a$1a
zJ;Pr<ea)IRbyd}KOF4Gt*h??H6sf(t4gCj<KEE{H{owZ=?qaV0do&*&&1w_$i|<_y
z`*Lr8zrPKC)~uXSo)bN9Z+{ofnuVy4HVx~VRa{IRI&_HEO!ohYR3$|uRfYKHM|p!G
zAIGk)G>eVGRndv(U9oe#86_gQoN3ZNe}U7AXI+a*%e`)ADb5bf89g;MQ)f<ZuCK3e
zhT*x$=QH@GPMun8&Ycd9=1gm@XsNeYPy@UuXqR|7Ma~th?=w-H`8k`-6DHBaaxBW{
z&0212QYG^wi8UNqn@MbGu7%31o4aP+(pl5jeEQZ~Z*{pBe)g6-9{l>>-*wkr_b*#q
zF}JPNzGBm+O^YkzZ@jfT?p=X)q8FJ5?yRar_rQ~Lau&;&8Ej)e6!UsVj^oU?;}dDp
zCwgo}HV}`?5v$G7(kVuZ9+cIr>wip=to+YEgesw6j3Hrs5^0JeklI0$6t=6!l|^u*
z$dMci^0Ac8cd(4nz)@K_fKxjog29uXII<76@}@My`7NZ9mpjZRQ(`z645mqfR3y;@
zx*r-FOAtJaRTdN*OD1VJ0>UKRjL5NWtBF*i!L-OJ$X4QXu@jkqLE&>aMI9+(p9;}{
zT{!7%LV+hpF!-4L{*$|2fBp3lmSLro=rOyEXy3j;vTV+rIaR28-_Q_0Z{9p7JRzlk
zHj>KZRDv_Z!&D^|O(&6sg+nBfNX;V6Gnx<$&>pISjo-Hb#Zw(-MKRkA216>Z$fQB^
zWMOEf>9lIh<#G&?Xoj)C5eJVL&WT)Rcs!wy?n-mOkUw=SI82vY;0bDsLrN6ScFTwo
z4X_8rh>+n4tcmR~XEIgOU{DXHGg;OudM1XGpxKVfMbKGoC~4yPiby1KCZFqN7Doq9
zi}VST^J9(L_pi~tnv^&ht+yH(w6ixMmv%ODp1i1BOdq(s=5$|%F?}*I-7u=rzF$Q*
zp9jxXfY)*f@IFen)8~}@<a9gkd{4yLnmv$7v&t0Oag3S5^rt57lVd1%X8Ln4ikzAL
zWX_ukWG-TDda>60KaHlNx7+xydtUw=@D6J2#iCm^r3NQj96PT)jVPvFFG9U%+w<&n
z_J7&a@{?VA=+fSN5Sg{_mr%Kez!{jt<1M%WFV)Tl&zqf(oi|7CDxfm}x(zyX8+7QJ
zE)p&KS{=G#KsQr|Zk7(+938qjI&{Cpf%*R(O=XfNjvVP72p$9eehlwM$ui*2_GnVE
zlmJ7nu7;f#O$dUOHkA6jUax@~8DZIITD0d9;gct0z!Re>mK_<P$PP5sJpAmFPyWa6
z-~8DRe(-~z;oWZLD&V{g-9u7k>leQ8h0lBjc8k$rD35nuv0~}crFO$R@7V3fM?`yc
zpzGJaInmYCb!^yff9D;J?m#~vXeB^P3ZjUA44C3LE>0R0!)&&LBveu`@|viDb)L;=
zs$%k#l(@X!3Y`86=K!;*6WAY)L2@dtCHsP10!<eLi;_>KlF20KkQP}c0yf~{4hM<V
zO5o2Hi`t2%O2u=RE}gM(@%q)PS1(uqyE^$WyxXt^<$@;;7e0gNYk(x196SvI9)&6^
zGZ{)1Z8m>tV<YCnR?uWCE9Fk~7)c~q5#>c9qx|D`Ql_L%B!3TePzs^4TM2~_83F_t
zRRx%1V_5AxjZ+V8Myg=MbC|vo;9IuM@PnM1w`?WyWPoO5R?frydqL0G-}`!PZBI`J
zsS=7{bhWg!v@P%HsjbDopjAcMLaK}m&p?bqk?<RB?VDiIX@j9ql_aQMv5dixPUGL0
zNjV9>;d3HGBTJfN;Wu`(-EOBWp^(ef0dfo@7!9FN=s5ft3QcDBEdvTK(@}W6j>2n!
z!pn3NUUm_^p;|}bwK@u~)lqn@j=}|d^o`fL4*Y!k_9vcub?>o$8EqFHrbmw-JwDn2
z7gd(K^6HHnH#W|jHm$)w6>Wrz@z_W#4i`zq=3awdMt?&4&|cW?L0g%-?*6+~o1omi
za9>}~TRnZa5G9_L$YdgsLvmh<=TJhx%hv&DNrBG9Q}GPGiDa39lc$D;65)6(l8d4t
zD1o=T?L5B7*ex$S`^v6egZulsk43xDF1T1)KfAsZUnHC^N^;okR)c}1c?xG7B;;&>
z$jSoknNdH(12-`oXUwEQ?yPYNq&m?PXvY!z2?gH3V1x~qQ{?uHg~mzpv&|re9sVUE
zp&TU#+(r>-yT|FV<C}7lj96M#BPyrnR2vXpJ3&wZf+7SudV1n?6yG!v&yaSrEPtT7
z)p5BN$#4^82oMHJpijJY_^lI@*^bMB4$41<4(fmo%5`*5uA_rGpo1D69n|UQpiV~z
zbvimAUwb1eSmgc>_Wa?wC$?|@`GGDVgihLBS6}DehCl#U1<O?bv}yJ88nqOfKnb0+
z#qPCRw&7r#P(_<oeete4)}XCG2bdc60bRV@jwzv&uBcs7TLJf_<BDL(#j`mH<r0Y`
zDFG=6(5s;lEGCOVAPA)sloXZ}EYVyvmJBC`hEAOv09xpzQxjtoDJa8YX9P=kw7Yk3
z|KP4&uRQw#5JM+D{K4K2hT*EqNeC8-XE~DruUtu(8U(H0$KF5s{+IyG(21=(IDzPy
z5J<vVBaqp2CLj<byhS#dNdk=!WG6P-C=x8cJPhZXKTDG1p)sHbfq++|qa)#wDExqh
zyJRURm~3iRWq~48niYT`u$Q(#TYV0n6*Mdu)yPbILa@}zW3og2K$gvR5-38@=(BQ3
z<C04FL3Wb&;oRr?D9_V$6yXPosM1kHm5w6(KoP|{ity_w!lR=IzurPo&Wl`LQ|_|x
zzK<fJ-Xn6J`gt2RY?y~O2>keX4slMWlS8?2fp9tzamON&SaioKv<<zhZQG#z-xc_S
z2P4Sc+}!L&k%I!!+>8iNjX6b1rc$XSN(nHMU@eQpW-G*a22`1Gyec_@x&@wPp|U{B
zkrBxXL@tMjgF%rC9(?Pmr=EHXJtgpVJB@Onq~s877l=p%5iB8c1nU5e(}8#>9CTli
z%p<nr%yT7pt_05wXi2O#BO;y>xl|m7?~0;f_yvjeC3vR}w3!8E8GcND_$5iu;}}u`
zC0arZT*~3u5O|Nte!Uo4u}Rm8O}bW`39Z<qYsDsAE6#*gY|yphOkFF^*0thny>;F8
z=llBlp5K0z`Zaa6wtY=~Lj9t;K-<2^KCuh9C{9~bFMJPbEQ9chr4eQL04mXzeDhK+
zolfVZaVTb7;yfM?2UYhy-sxmfZen60hgeW@OXBH#KA(<HjE;^@Bn~|H+;ayKuKDxl
zyU=O4clvZYih|S>MfT}<se%$o3dy2bhQ?xXrdnuVEh-q)unlS$M3n@x7>z~?N@SsM
z3r@GmTO1%)IV`31_4TC|0%RNl`JwPk1~g_UMumO`_f9DR7$sAh7cXAiT)F1XJMUam
zNx`dAXeHb`IttVT>=~$O6u(GXB-6+!nvDo&%d{aZIVA#^WOAYnkfCJKiNf&kFmfj0
z2Oezt2k#4gLPaLG+igP0v9Yma;Cs*;fD{}K2Po#_0bq{s_E2~_Etq_>X3g@U)BE=A
zI~|y$EgJwu2M#0<-_+E^qr?GRv;tJAARPORK$&bdn?Vegw9c;<j>{oNQ~t5m-%hK+
zU{DoEs20JbrT;)UFr7Jo36d3UfC70uP?OL-pe8+&vz9A?I_K%AbKXU`&O9A;&eKt6
z15jt<$7G{v)KTa33nBr2S$%-{@$TL<%?VWh;a8u$Lj8t%k9xDZUR|eor`-vP{&fP|
z+dGEoQUKE7Vjx5gg+gP!Fdl#s?6BJ0B~_(mg2hu->i2r=ZuiWYC1|F=rcya*C{i#N
z0m;-<!l$arni7a92pO7cr_Nn|-IZ4fmicSfu3ENW+U(iierP%Rw!jV#N1*m8!94$t
zJMOsoQ=j_O#_O-I9u|mOK|h6Yoia(Ov}gdD%V!v)akGHqA}E__0vi(xi0D8DquC&5
zq7fMLl}w&67<jW;%2P-ZSgVzT+a$r9F685dp^X48k<KH7$8SrAKKS4;aLDllZFl<1
z%VG%@ltQ+;+6^R_7R*5y6-Pk;O+_L^wLtWTk%3ZCdN`HM2pl1iq_Kzx)`p`eP<V!K
zGmVE%Qo#0(MZ6IuLWBK-NQovggsrHostl2~fI#C}!E7fEs4p2NZ}k@`C*FPeH!q>w
z@qrO)%IqsPUWwQ`xRo)R&5=%8N+c4F$y;NIyusowaUg@uZlY3&(9i_ROu(&BDT=d`
z#+K^iTD27Qp31tX%wExmoYSUO(4oQoyAGrA58zh(<OV2Cr15ZY5E^-M9JK?b+I5s_
z*HJ3YplH`os$EB^rpo_*21Te&NeWQOOeQH186Gq(y!1dtjYbd!j5b7(q@o0<<Hg0t
z1){hPZK0qBXb^7lh*A`i3{XZ@HG({lMwA4MBS3j%*#n$^6m0=<buzNx7RsDRm<1w{
zfWwM`feL{b=!e4`P3HuHX5lc#^D%+ot?2)+p-ZZvCa9stkKx7BE`b+MgBqHqtD$MS
z8k(l7p=r7rat`+56{N$54?!OuK6vop5c-~A@9L5==3y>!REi&X`Q=>)x&(r2K~6sp
zBZYnH)Tz^^O=|+-sTS1<_V?dE9m!<T*l9w}B*yx?-xtvg<Xq{8ZZq}v+i$z;uDkC2
z>Q}$|S#+CV-?r`bqv0^I_s?W@tbgBc|8*P4wckX<*qF$tK);7K7(IUc_-MdxwR)^p
zoSL1bDJjocVK|~<$T@)n?WTu^!#EM}$jC?#<pg_qIY-O9!WR*=qqJg*zZ{xx067mw
zVzF5G)mIO^_S$Q&zXcx@5$x;NJNa~(R5q71HLSVj#w*qfg!BR;d_Ix4c)fNQ`#iuH
z%L4XrcrY9$Gj_W<m!+9hI1J?DLeQ8ZPjehzM5Tdca{+rUm(Jvn>UNnyqsLMM5DSY4
z-XZe5%f%&=Nh{P>QNSLJ2FD_VJbPw^EuEoB83<6eAtIX=c`2DxKvGG8oRSRKjYc!i
zAu1`!oSBCq9LSGKgA6(%@{ysT9JE&7o;`a819p$6%3p-I!D!Z9?KhGX&?PrINns5@
zVGTM8Yq$tMZO~CzgO0+c0)<W0QP@-+g-z8_*i=1*{qA?a-@bkO(=WgL^3%`!X2*^l
zzXu94cJ*Zr_bOhmOA)EVN8cP15zrSlKvxtASRG+5t*NOg2Kq9-KQz*H=xFayBqdU#
zeMgUJ<b^G(a=8SE7j*d*x7>2eLLe{W!++ep^#?zF=8s2%BK7vpAN^QF-#~&j2Qmx|
zVi64*)A)EMz*%{oGx07b8$cNWIYb1M<#t;@N^yd$<S=3`K>%eLD_o{>zl|akTBM3g
zt6d`MN6y)^D_UAwnj7Kc&Eq`JKv%}~E#7r2tBojU5UC}rKQmKAFTj&IpU+1O4Gl@M
z4C0U}U<~*6_Q#VW!3-gS7Jx=X<bvBU1EYZUVRSMW3{=1<4WAxQsB$JNVJBfCixasB
zR=&KvoCU#7G2mF+T)-H6^|kl=v)QqUxJa2;G9n@?+?K}N6~s*t%|O!22aE={l}8zc
zW?7NS=T)PKvTz$t6V3Yleo7)hU`qvzuGzI^WGrj8J47m;QHn$qo}{Jem!LV+UBYPf
zx1c4*g|yVFep#>|9+Hm_(&c4dEMXk$eHR8>rtxC*)GXLztSOqzDU74Is;bIFWTD4a
zSuaLW_Y3x3o4@;1EN5+8eBE`|d8zRUfw->vBWcR4(NyZAX^Ir=4mR(wpkzFfg5k+z
zEn);BHgPekVg-AnH8rgg4WB%E>coi?{_1%!3Z6K8F}fN*abh5rn4~L<Mpw>{q$_2T
zuIP`Ut4vO#EAwBWE0@)TpdJlCSJFq*m2*~2DHY3@>`sx2YIHR|NmsW5U9H#A)$KaE
zx(4WKy^gM~(b3f{7xDMfTSZ-?qpRyKkomu(ev^FUkw;dl_i6r(_fbG*?QNh6z~*c(
zD+X?7wc9PTXV0z#t*k;LyQ&M=<i+`B^{lFrl9H**mMv>-ZC$x~_39-xZfKj5nKNeq
zx0y3<-n?eCR;apwkzSOuGT*rYO4)Q3`Uz}5LjR&|&!Asx+duI)&nhb`TlTGQed9ad
z`OZotqHTC1z6u~;5~?oXzZYl7)xZ4ZE3dq=^O<LU^ZfJA|Kjn-AOD4Bos2RW5Q)gx
zsZ*z7=uM&O0w#TNu1&;Mu{=LI8U^+i0y-Nz3cAu@|Gs@6?BBn?ON%?-CsbX)#V^j*
ztNXD2pW40q`0m}i-^JO{fAkUz1}_8x|GTrZbL;ougMK4aUBKrr&iGg0)Iiid_uTW~
z3LK%Fdg$)E?_LF!_ET-!D%e5Hh|6+nU|;}Pm6t&qgsKZ9gNus_)uom2i_*$UAB+K|
zAOcj<EVe<0jtJeG1>wPnyaJueL2neSZa1iBGD+Y`2YkYK?t};$fAtmXmn>Pb=Gtpl
z!XUAB)22<IGTEUplhbJct;bqdSLZ=XgsNC<BpfA`IkPJ4nJhyou?tQ>9a>TKvBM`%
zo;-f|@X4N@o<kr@9LeIy+AyYJDI^{Wg%Y?$IF2{6Dw)XUS+kKs1b4v+fgm%;{F5i2
zd+xb^dE$v*KmGL6KWtOKjW^d1BOy#G!JrHyW&hs2dk4`@p~~ed_c~>!Z#?a&EMZmT
zy5Izi+u^f*(d%@h!*#mR;XW80*6Buvb-K~vvoJcW(~S=6bfd$%|F69_0dJ$a`o{09
z8fmmyvTWJ19WQb0IC0`61VY$MwuXd2AZ%r8fwpX=h4QtfrTyxW>_SMx){T~z_oW5C
zQYbBy(iUhS5SGw15VDcPapJ_AyvUZdOQV_j&bg9}BV3^Wx9{`t{GV^`<I$bbcr<73
zxxaJHz2}}&fDUU5&|y7|-hZ8O1}*EMhUEfdgYkJ|IW5-~fo<E}-5mw-6N{^W%{)bj
zscMc5)tu?no;t6$ytK5`1L#{(fASe;oY5l7R<qe`;(6X)+6YZv3-B;i53->iG@V`~
zpK(U((xppJnm2FW%Bz+GcmEQL>pMOlM%Z)#eAk`!r91Ap;}VJoQxzr~DooQUP}dj>
zq0Bet&~mD=ik6d&#l}fSH7#@LqKNy*CR%<${tqobBR?fSA#Jq$s15MKY?rN~-CE+c
zz`IBYjC;y4hsP*1>xzmnj<^G`#AZ@~9rai&1WGgxf{hOY+a5g*yg5}fv!P}-ou*bd
zXHIEjW8<t^*jzEVN9OqPU4T4CL6{!e@rU34{`Y?dsF<p{*-&+xPL*4g%Zv+fi=~~t
z<(6Ak!OQiN4)Q21KXL&Yb#`{X0e5|C+nc}%?*dkUzIUiU7&&$zB>HWRsMa^-n8Rb#
z|LP)<IM^LgK*#ZT1p0rxzP@q6f&~qLfc3Lyf!vu5K!LJ*ETU%<sjT0|GbA<Tn8Ra~
z<#k<M{UGm;z4OjHoxMlG;c(B@S6~0#?|%21wQJX2`Q<O%cH3=V2ABZ({_38tRHA=4
z?zdSPW^~FihsP-I>-ze-0ri4oV`F_iy$25-?9sF&y6}Qkm(6H^ENN^9Q?bJ=sEozJ
z`E6;2k*6GUc#Jwh-AgY${lW_`ys>}({+Iv!@}rMF`WG-X;l7N+;YdXiU0q#cfDNF3
zHhOJwrow0S+r|W@Y|1f*$CLW#wbdWZTzyFaGTb=LTzsM4a5EsoIR(gY&L>2&I_KYp
z3^gB7S*O=wKOH#Kd_<|8Ud#R0@S)}->hJXW@HIvwlv<;TmU+hMw9GS_pp?*3O_O`<
zrju|x$zd`~%VBa5%A2&jSD-_ii>6VjKOH*Md_>2dUg`dH08#T1Eqr>l{2KBYl&8om
zwETJ!F%TYJqU9ONEY}-%(sE56NiR39hH?ijHy5h%mci*%`x=b+pz8=3;T&Yx?Jlqh
zia^b`x$GW~r|1M_--gQmbjp8CSJxnDBgX+S4)!5n^wrhPTefUjBfRA5IWs{qoqK{g
zU_*0YI`g2WudfT<KElPo@!ms+4jrqgz|0mtFuE$dKCpmFPcRs4XfRA?K-9eS(qqp&
z^UP}i7F(Zx`B%UC)pM&>&0D;9@i|vsdF450ENg0NI^_hD!iFZrbS4HO#p%<Gg0vJM
zMKd5pV*ygkD?o~Q)gR4qKkpOfvgb}?VSHcukG78C;f{{B4oo*x&2(&PHNM8)eK#P2
zq_mNrv>IRG`?~h+=u`N<9s9caT8-<-f3y=f&yxsfk79DRucpQ~zuM;`Gn6)Q@2kTj
zy*8&JI&Hlp!>{avD=ilNuwB#agV!(LuwnVPFI=&LoDX+?pw+m7-?8(hn%N3JyXK{x
zJ6es)$xqN<!Yi5-&Lkx;w^JsV)dOv0W2^C1K9NfI;JKc3D$#1(Ozwl5+wG#q!f}?O
z43Q)f;|+sYl{TSeozq=n2?&-FxAXkDa9v%UYq3v~d~?E};gRDOEw^y!j#lyp*VwY8
zJiwJNX=!XFZ<AZw2`@?ALQ3IML=Y8T%+z3%fV0Uy#>M;U<}CIpyl?TGI^Wrhhir$d
zt=5EQQ8<gn#}z)#SrYL;n>hb8zJ#-e6)|k(O8C>8;kv4-V5Usr%2JkIh3^%;{k=fh
zw_C|ic*`lK%KZwzztVJyr4^Kv+u-VC(xzt>E=zQL1~w{)fi~gkAIAsAh6BRz*g*V&
z=isX0;c7LmaB-qK72YWxwHLvY8gukfu5a7E9RY5~zHNPH>%+#9_MD`;2KaAH0spNj
z;J?+te`^Z(Z%qOJVScN^jJT@{_;2MWSh##gV0bvtYTU{H_};dAA8IweFP_MX_pbo6
z_xr|X`1>ZaId_)rXv?vto#Rq+SN#U=k4Ng<xSZeaBeJ`$>(9bP^<8p`<Jw7GQZNi5
zteZHKG4>&|E~xQVd23s+Ivbgm>HI*kX!bJFALY$VQ?p`eZeq+_bb$Emy25<W33nQ_
zYMS)})opTT_kYOD-@V|>bI-i!4y;~}Ol^Ps7lx6Z*=oFc)Lg>dc$;Fs?MAM|bYv^D
zY-YwVe(`uam?)wmi9)f>u$D~nxumKCaW*!X$tp}X5oohBmKYyhb20PeUu-5@(xTWc
zNvQngDgKf*Q9fp2;E9T4j+4EzWRoQChdp4N<une&5>zwT6F@9+syuQ)Z*a#_+3|kG
z-anpA#ohJ#{t=7H+3j$rIhB%Bd4|tb?J7O(!#>g}Nhygvg4Hng6?<*16!-0XSi5%q
z@ld>Tt76~U84vX>xLSQ^r!Owm*0!U&q9SE1!(+mDzckT*Br#rXP1$`ZQDH;@cv#b<
zc-^LD#@7vvJScplD-<VviqJ>mp|0DPk$a7laf`62E-q;rye-YFNM=2%+4LwhIwxst
zLXi@jgNblX=x$7$g}3F(@*(r_Bc!n^VOO~!#XiKT_GDE9IdoJC@mUw#Cta#YrRvdC
zwc4F6QMi({IG{)a<_7k#sX^{nn11M8_PI&x`<_2O#ay>`pgt=7U9taNiq;RF_a*(;
zzbk&<nw*Oi>WWEM?dG&-Q`;GaQzVWZ%}R-3s4^S_H%Spq4$eD+eRXd+!!vHh?uL)D
z-LG=177xlAN#RYf#iKL5VP{QTQ#g%qk|IgM`>~S#oh+EJ5(lqolu7yC{Pr?XhB)I&
z;lZ<s%r+}RGb@ub?^zB|DUm;ryZASKDP}a^w`W7&uKk4E=Z;U2``iJ2+gZ@Jodtc{
zS<ttg1%2D}*lS?4zxG)BvYY}69NTKFQ)Erk2`;W?iLSv5<A|-a2vo<SQeS<2y^qXC
zcbNpiV5Sz5$hphdmNu1?lr$|}arM<#uOQ!4<lVdb3C1BUC;ht>X5Ku)#2LTH#4&~0
zVBkJtGpOT%K|^_wtRkCCJjtfh=`7(*3X@I~n?`+QG!_RCF-N)EZ6&c#C=?@Bu=hhD
z!mug7m}2dq_uAo>GLM0VI67V;;<0QlD=Rb0a3jrz#|8tcA7iLEZH>pekVqs1Jpr~!
z0*-0>+z9RSm4f#9#x&yxUn^*zuNAb<*PwmQFKC}j3)<(Vg7*1RLHn#_mN1Ja3)UCW
zvY6ovzi4pu4X!1RfbE>KFn<B{Uy_Gt`DI%xvq<6L3N_=GGAh0J#43kX41m9uyhi?*
zH%b2p^>@Jx#`3Pa(gCl`QQ36nnP)cLdd>OgpMTA*-&+Q+2@3N)c*ZWJPS+*(j5%}W
z%y3KkKdURu92UswW41C6(z2E5V+HnPS_IQM_0SOY=iGRHo{k%tG7=+i(Gp|Im{XaX
zXgRg575Z0QCR5z9{^px+Uf)uj`Db;7xmhIF>3`B+)c;1yi%@??|1B-gFb>AUl+xmX
zx&*x+i^K$&jm#!mHbVV-%pJ6RudS8rS2&y%Xcu+eII)6}i~NKkYjxG&4J$3YuIh1p
zgqFB`97neYk9Y0fy}N6zaf|USRO+C73+gveJ^pIrhPGDys8YwWx|WH>Vi^s`OsB77
z{8_SAyH)GZ9;T%O>epy%Xt_pyVLRB3+h6$2z4zYxo3;AA`s4avX?Yy#KhSTW<p*u8
zTBA}YifU?<Mh8>He^ytRo(#On?fSNSQp;^ne_!88%llxNT#+|luYmeZ##d;$NuQ(7
z(wk|S1@)8k7Fte%-~B1(q%aBXqF^eh04s2qaAB=+6}*vL^2@8CewA@0EmxJ*)&K<6
z)Yev4SJ#Ha7``GL8N+pyzgGOY1({5H!Dk0F%=JL>*J!zc*1tr{4c<#GzUr#0F23Z_
z3of|e(t`)#wH-Wo2s6|H4!STh7K?$YSmwkEv;~9dBG!VrFiM7K!P+og6&xbNvZoBN
zvCQKFNOY}*9{Di&IV}%E{b$fivHT4Br$gcCOp_mbi}8^vr%!Medog<{yN;Gip?)5_
zftK^+#TZuOw8hP*oN`L@S|GQbxs#T5sNV@3jO9+~HBaNJ>a^M}s?-N^N`-|AVgN<I
zw*dVfDnP%7rdb90Pyzb=Y8oGmOFm&0=obpm@5=?~x7@g0|Ed0{acAk1Z$O)Dee(Xc
zwzm79{59;Kc=|7J=1*VOZ`FUKKSImhP`^xHP0M9azbRk8MZX=GK6lOcv}d({XkD~y
zhx$X>-LyOe^{4XnXSC<FSM%5W4Vd)`rGq_Aiv6sYjQClQcYYQ`pZ`;yYbR&1gHnxM
z10K!VE1<1>Hqawg$>EtXV@9z)3dV0pw^mhE+4MAswhR%`?aoOslcuw3{`~nfYz`U}
z+==5cC72h2RSD;J@X$@{c8tA^fw*P6@-LmnELLy2FRV@P-McqYyYjZ%Zd+O70(9}z
zp9~nkD7)wPzyJOF*%{}adv0|$^xk{#g$)Oo(6&b7;K74h!<uh@``hQ*W?=~N^4X_e
zbkRkpkk#;9F(UaL7Lp<}XO@$`&d$z0Qa)4pmre%=$Mf0DtDEkV>4WCOi*NdvBOt{#
zyCkD>vMlpz92A<kmcpPWnJhXX*3UWVq?4NKE1^SH*3Xzddv;ab%!-PNSq<|}J@wQD
zjn$>4rPa2^deBtr8XDmhH<3CZ#Y$3sM*`HhY&K0W;Ejo-v&z48IzTFGZ&(tEo1k&6
z@xC29cJ!sj;JcwnqQAdCbHy$B^tQ#fU2zWZ#hNQFxZ#Ey)?Iex>eZ{iaNRdS$Hr3p
zoiAUwWXX~XzkKEGx8Hu*wbyUhu;C_LILB52mpOu@n8f2@;snxxW#Y=ebQ<0@SP$^7
zU%iiT4#(Ko=3H<+k-^NS4D%qu9s1u{nB0b^+wYSjk;#`I+4M0-aR0`}4?fr|(Eru_
zCL@2J0AUoK)_%y-+qPTK;gIF<2k{pUAMPhPRkQ!_rjI#-Uq~io>t+t|vO`4Jgvt+T
zxE@@atOyiKnRe00ZMX{eKAGoLB0wj^Wv81y<_K=z-|wr~Oz%RNfJw`3nBH2!97~`_
zfwV#$OC#|6s8(q@4b6TZyyFP5qZbc}$eTXqDCfso4!G+rz+LY&R)MzwcfHeC1>OSO
z^%mf+w*Ys&g;v3%yLLU=G28(%aJ3?88VxE*%>ao{r}?V+Rm7u+kqB6=B%&~|mn@^B
zmbKqnOHM-P*1EbnPzxE@6H(#Bj3t8$RG7O+n+XiwY+sg`6;LohTO&Cy_%@TrLlRpO
z#H)x-Cm<imIlmLMPNhBx{+-kAB2wk}cqIeIf}x0pJ;GoG*+*J)=+GJtLpv&>UVDVb
zjl|F$LfY+4!%q-a5xEQyLO2?!LI}0Agos^%Ls1MnCm#dbq2@Ex4&=>N<BQCjPoIs$
zz8LY*SP9KRXg;r8b0qtdMHLlAv^fCY?U8(Q481bcv}#ooZ4Ls>(UohCHX%%6nM^DY
zU>KvFaMn7jq_7fg4)kFWbMJwxx~$5h(4~$d6-3TlbF>L{#3@Nm_;-y11KGrp-lC#j
z+8h845qqvV+DvBhQd84Q&<Y}$k?fJ$TywOUGQ>1IY{J(L45f*gTywOUpuKnQbV4i8
z$8d&ok3rkR@hPJINuMIl55{i%?`9iYPVP3=8S5~xZKrY<5!fSYH4qOq;i=eq=puI!
z&SXlZ0&r$zwyz5ah1$*=mOn`(sNHoJqHJUwzUCSlx(?%KDkYlmb9mV4gioZn11P?s
zfa3pEK=GA8@%051Uq8+K^|b{Qf9VtAa9sD1I2?D_pV%7=Em;y8Ua}-O`f{M{9OJh9
zjP6pS70T7d-NyI1pS?afe75mT<C|hAym|BR*w)p?9iXnCVk|P6=p0X@aTyKvt<;s(
z$#fHh?K=TyiyKRvPCHb#Kl-A8(a|JHuJj87YAO>Rr74~ln9W9X+-4gawb{anq+vrL
zZXX|4Wt(sA(xo*ur=D6{yL9PXpSQYZW<x_mEx?8{S5L>|vaD%EMS2n!ek6iNkM;}>
z4)*jUi;6T&mSb@<r~%dUn`$c^G>NsZ)T?)Q*3|6XQ&V%Gf7qxw_bXrdN^NIn%vZhg
z*0ae2<UwY`hO^0iVEA5qF&;l4e{K2F^Ecq?)=S7R{H8kA+gnkQPS2gI4&wrn;I`lY
z{?Bi|`R1ShIy`r7I$h!G=`CHgYSsF0-+b{ov;3Gcgoh4-0s|!#h^MUJ7dTY~Gg4s;
z9Tb1Xq-v~+IlF1{b4%7Rn==_nipR47M&<m)n197#1+gwknY3g^^)A9gw_@5!aUAoB
z9zUK;A3vUsWwkIyHi|3d>9J(A|G)>q;DHbN`#;#%6~g#_(91_jwW7>PB{5aHuBX$*
z9$YMxVkAj4o6QwXzT9b+iJ}`<I2O+YFzI-4&;HI}@cHM5L(e}SIvz_N*aAjwzfwN7
zZ}7<9{^OV1wmtmNE3f?Wr%&!WaQM*S0|yT5A{WBXj09O0wB5|;=%Piq9AH>*yKzO#
z>Km7jj%G5Uu)ubMCYL;Lv_BkR1b9<|uHvF8PEZ7aV>mhDCkaL5ZM*^B;Zh2dz-TrT
zPZ*j`U68FPjY0m1jNxZ6$$HAqYZ(JT4yBm}uiBC!jHI`d1(|p>0}ZBW*{qsQr8PXj
zH0QdCSsAlgXql`IO~rs}3SVWB!(_<@(j#obD0LY>;R9Zrw{ppPG-@)zc@eXWj&PF5
z0@N-T?>ROWOC-|iL?Sje6iPuIgDIue7&H=`)U-q*s}YlEiAQMY#u4}hccsJe!3Qqa
z(WA%4{eaVq;#~xGUQ0#h=uwyJg9A>-p)Fgsyek$vc%;H2n>iLkJ;DnTM1iw_khKW{
zqq986!WS4Zg=MnwOemq#fJ!p_Mpn02TrN?R;h+6%hU1h{9E8hcd07@km&<H1OOj*)
zE=_lk1-^<Bi)6D&@MpF;9a1p}ohqA+RR#EW4l07p#<9tsvG;-*o6Tk+KKO~aR#rA|
zp3_-TQ7rk{afw$-aRqrO0UglkoHwVW471fc#cVR1k6rOMz`zFzF!0d=4Ez#c-~$C1
z_&@;$UI!Ssu>b>qRDgj$D!{-^1sHgPu^P%5#@amW&4Jn(^jxzZ*Z1i!L)ohTIX@h-
z6KY%OxdTvo^XF1}7?2Q4iQzT86+3tCIJj-www|8Rs2UDE{Ltq6?|<wuIPuJu7cima
zBT5^Ze8d)n_TUr{@9=WDOwh?9M}xM>dbcY4J{yMX28h!H4+g)Crc#QWN<}$1aAMqW
zusuz{P#9CqBAQHP74^V8ix$I%TvS~>6Ep*80H@RHa4-xj@;q-gnM@KfDyuxj#ibsv
zSM=hVde9@<%<wHQrf}|D0rkv`-5`zs!YjCw1{Hopz#}<#VJekQsj4EY0OW9B!tdIN
z-Q{wWxnV1FxLjv_?y9xq9$FMkR!obMJJYm&{pT;e^wQ7G20))NYZl9j4v-C{MMbV+
zLtnFY@uCGwPdfed)0eJTxe^-556=gi#Sx0(A~n*WnBg-%=CHt7g*TgJ_uC4;6Bpqr
zGG6EeY{B%hiX4lLjKe_@e%DSIp5Mr3Iq?Bg3Q#be42OTngYeMx08gWx-P2~qaAhg{
zHM2q-ikXIGqvsSJ_oBjQ=~3=N`d=Mp`aw@Xqu6Xt31M4uLT51<U<aVDTS9{h*uI!N
z!4Ay;RvOQ<7y&7xWz`hJjfX)+izK2^F`611A17%b8ucyJg65Axl8PBV8MBH;6xvrt
zqFmvNvY?tNGN!~$10E2J-HHnk(H|$Rqq#-Ss;+Lt)LgKuu9loS;8rRKTM8<&oCMaB
z>!5=+_<SI>$APiJnRq0`iH8n^!;vGw?ryPrWdDH!Bn%IPwnEg4+^2v@L@wq$Q3kn~
z=Qusss_=6XEF8&jN*@K@BQ{x9plNNmk}-_@-i|poHnJ+Vf~;Y1IH&W6d_10t#{-yQ
z%woBR{tnMkV@x6Y6^tR2QE_z^r_jBhpG6PM^azm1ZtE~(oL4|6`V$f`ff>~h!_UHN
z_6wMlT4()bEQ_WnkB<y2%P@2)9HS<a(76~xGD{2!1|!?ihFw6-@|5XGNWl&QnmP6h
zU;)@<g_kwxFMzQqTM$K!TvHfe2T57%O6|n#@sxQ$5vkA^g|%2v0l>>Sf0-!aS~d$t
zsK9troCV{CvGKv+uwr8jPiYA=3Ktp)V9qvV_e9bxQ?A^tAY@xisW^599y&r27@-mm
z6&Wu~fuM5gxo6RwaFE0+;aL)iNPG+fju{G@Rg-=pi;?%T{<2I)2Nf-?!)1|J41^UP
zI%t2g8Eh(<OsC*N2JQ#XLalE`r-KLO3gvxHL+cv{I|+V7brwEkWLF(qPStfqMrn&S
zA!ZYRX9)(63}CnoldiDw_>f;nV{@hbW#O<22sfreukAj5JeBIpLdR*W@|Kk-Hk}&|
z_J@X{OS0vn7@#m}Xq-l2^en}U3v{Inp^AZ~F`A!0iboVh>B8$sG<SsK%3+PCD2fv4
zD<F|p7D%Mk(_}$hT_BNG7f7U&K_aazkVq>(VMcys;o7uE9%*Y^W?Y5^?6QlDo9PHS
zI*naL3oeXa3}rZXO}>25_y!XI>7prB*l)_#hQq@-Lf4kziD-0qsC(am?t^`x9dV>O
z7#!$F|FdXcQIW%eixHefMZ&RT$GW?Z9Sepq@P!HbZ1IfoaYk|T{P_5cV(id7AB~Lk
z_4f~k0;KwlH(q=7*=L_UdUQ)uQ+<6CY>jj0TAzFFxo4k!?)lf>Bgd6010a6Ud4~=`
zyIU-W4xP6Mj-l4w{oX6DzVgN{(1aOM<;iVx=A7dBaP#FpN<E%H8&4x%D<n?iJvwsn
zuTv?Kj*bk3`g-9}+-|R@wzgIf%FQ6=fOQ>KyIrk;t+r-Hxf`_KDx4l1?*he#f&MSc
zUE?@i2sNv-#N#S1!ldS;x~1ielP|vbVw<hi>vg$6XRWWQtBY@d?V=6mp4~#$D^(o)
zc;}NopOfPx$>)2r6ON%)UOxMj#q$@>0WDS|Rl(f0W5-Lu54SgSAIArSU=G^QKE4Zh
zn7C>eoU!1XwLk^-7TCteM>4rBomSOjxmqGV4wfd^)3A*(jHI|tCWaZqLt-+GN39JF
zb@erHlkxFrG!lt)cJ3U{ZDXV3<A2Q6`Ug5mG28@H^#gl(-lMo(E}q|uhs5PNc)0Ql
z*IxRC3*jbaGbj}%lgCqG&TSU3-DUvtm`#$?Q35T|hC`tu;N-aC29qIc7U7sAlZ`W(
z&I3K&{cw|#5@!*p1B(`|F3D}>l^)M|*s8^z*)x}rez*z3w>KU?ptys<c-(7;V-gJB
za1HnP!+&{ZYi|7P7U-Xse1dQ1D(Ih=6!gza3i{_t=$~r}`scX?{qx*{{<*H8f0{SF
z-PzfBIC%K=%`1#=<a^)Og^q_`d2{PuR~Z|O^>i`#1;*!$GlUnmJo7|{vOIqk=I7It
zdR5ItgQ|+-kmFhe_+d0Utg4|<-vA(=nt&6X@ljP_RDm=k)X~vV#_bei!LF{Z-l4Hn
za%jvX(j`e*UE_5-t~Z3<S__&40TF|$2hU-I$w*|(FuJ=B9Xx#aFpsdC#)u!--x>y@
zd-m+%7Bo7JZ~M(}e)Hlx`$vY}*<a+0jE^1PomA82>`c%XT+n^%b$y(OUT*_Ncr=ad
z-Mja2*Ir%!!yg{~&nKRE!i<{07%_AOtPoO<AX4P^I*VMmxXB92oQ!A6%gZavbz&`Z
z<B=;6u<Hhi0W-!V2SB-9?jU*qgHjkgNQMTd04JG5hH+x@owAZ5i`nJ0SY0l+uhuNt
z1Urg&0s3=21|Ebbz=<x7ARk#QR+e?SJSFfuI9Ow{b0VuStWFvlt#C80Z=7vBW%=^u
zXP(?tTGHHDUfJBdVA&-lV2RaX00TSp?s`FxC3_|_hI$}zffDWWRtv(sc_%Lhcq1aP
zbFEY)D2$+z`XTD>&=(#G4&w5N{^Q-F!^1<v!QfzbFg!Zc-H(|Kh5`W$70LQpZaCy;
zV(|_l_?aQF`Pc;LDh&pz3dwX96j5B^#W9%-&#GArs9+ioM`AkSRvNm#pBR2CX0FMo
z2+ab<p;QA*DB%bDO@%w5ju{V*CNfDCDqx$Ahb??G?(%qS?n4JUkEcP@#v{=Gl_FgO
zJ{Sa+ibjiYz{L;)BpzViAMms3R1EHg;r%5W7@4STNDL=hM8ZiX(3b?pYB9-@2JhDj
zFreVnH5lD~N#!uwFK=W6fPj8R7Jy<wgnP;E;^N|(GJ8=8nu3C*sLVm6VmBDGcDAy-
z#OF!DX&;6&DdICJgJ6vPsKmg#74e}2xS7x9XDv2+-pgjrG|`9(y=<JH!pp`9cu-P+
z2PK~nd#0pt9QWB)qea}l>-{~Q`}UlTneS-&9@H~19+?V?2B;`h=rY}diW$_)P>5xn
zC}BnDnn$`09|mo@o!I{HCPOkA?Y;Lzu>ty?Y(N)#`nOL!VHi7d{Z`hCVzFo}h03gs
zPB!iu3^&VItsajKJwj%HEo8957{<g<ab|1TAc(Sst*&0QNW(xl97ZImZEof`7e@t^
zEP&Bq5(tJ56Y!qSdLDYT<|uMHp_P;XV`v+Rt??=g2DfRP1OE>U6kzluoE_}}Ju;aY
z8x4iVfE5CamWH!?{+bx;8w~H>vwQa*Xw(3c4sRrr*`~i*&~9HXXt%4O-M(7TZZ{XS
z+d62s>kHcL`hs@5zM$Q%FK9Pw;JID9c5Qv=MX=284_siJmya`Zi*cv1HlM=qT4R%O
zMSfghuCZR|cnom!`IW}^0o)hUvPx|GKil4XJJ;eZ(0${{kx;*;_CQx=;_1ln;CLvl
zYT9Vu$Z&7ZzC%%ymI{ukChUl*Y>a~ZLNzilFfcSQjC+Gao89Tamds)xo37rd0H9+b
zL%qGdgIT$_q|^bt(_$DL(G!ViG8IRa990>CGl_=X&Sui_u}~;wNOr48Q1y#ubkR&%
zXkqN|)~#FLetqX_uf4WilRz1p)reqUk=z4{+><XIwauSD-)p?{;)^f7m8>}Flv9xt
zTQIb`3i{&E@Nu-Gl1WyQr6RjtS0_fs`aXDX*RbZUn^9z>)9}D!S-Y1Cgcb&8`~+TL
zCN?&no~$#O@f4jpOy=hv8O9t4@RAuw`618hJR|z0Xf#0#P3L&UmWc8Zm7uXCk(3r7
z^Bq={GBi0ynXMR&Kf#7?&002V)~wmJMQAoM_G&=zS_iLZRRwxT3ky<4Fq>@xk68$T
z>p2`!GuUiakj)mm!|fEZSshMeuzHav3>6;>>(SGxx}~PMx%sT>MQ}^Atq$K><(Xgn
z;umkYXih1hGFP|$vdb>JxZVt!nht$!z949_?DfvDSZYu+vRf=R2UwUwB4PEFl+A2h
zFw2%msIo)SaXqla_)(^`VT9ed5WAaA3JyPE+Bsctx&n+`4hI2-8HRT>JfKRJA2JvM
zWz6r@aqQ9}v!b2odeoI6JlH{iYo-8M$YAmoBBS*RNP$U91PqbSNT}P9EczX>yvvDp
zAWIm-kf6salECOjM#C}cT7yAx3%4O4uQ8@C+(k=`XF0|sS*=#HMFOj1A-qViXDdoT
zO$3`3>K+?98S%v^@|l>*!>`Hn8{r?U0{o1QNjVkC!e;gHG^1<&T3}vLl6Ybwot?)9
zB1AHQfjiO}H}Ot)RaI4KsRw_?z-cUL91PNAIvIx^770gSpN--o<ZL=VifcZGhSKRY
zM)pW1GAN#;SQZphBg1k2T3*+5gSBWXJg<opSdFN092!dtDq5<V5lzF-Xa=;V>j28`
z(V<?bA2@Ib`cR^K5LE5hc;B9$o}S~|-+=>=?*qa92ud!gH*UAuvN6fzuaz}DtFhkH
z7;!jUk`-<q?dL>?W!w_SB~mGJWIU(Wt_3_?T7ZX33-GWA@Nj7X9xk0`{%dXl9?mVm
z!?~ZZ5<v(&4fgmG=K}m)k)PDL+z1#KO-%3@-xq!b7d%Fhu2faW)F`!8hG;wBeh6BF
z0$N#SXk=t$FfHRiMP>y4E0jS$2@!Cs)G#!X#r%sz1FSN%1Pw1_*eN`fh2MGi-FM#}
zD+h(a8{YZTpZ@gyNYT0Hp6dh@D%JH2!38d9lG1Byjnu%QLx=iPMlA)Khd0R>sa(!S
zDi07)H|%!1y9oVQt#%(MZ{<!2IL8DqP|C6rE6`y(Gj@GZ1_rf=LYDUSvidpD!&{or
zpQoyR<qbF7(AroGT6qz4>QX^)3pVU8f>%hTtj=<{eYw+`q6*=|4-*XhjvGh!7=w$Y
zgGeIutej^H*roQIXG@u7>W1E}yaiCgVukL3t`NP<jF~fMRx!PYF~S*cSyjt_f)SzS
zMpWW(tq3-)f$5tVM#KnbA8s)kVl@^W#{*#0O|s3#k}Mo#32Vzo%f=k5R~GQ$l?8mb
zVVWGPR~GQ$df>xL3;6Jo0zSO7fDbSE$cmUdjQ=e>xpU{vKeeqkZpJxTTF|Jv+PIVd
z?dyA9y>}ga@g)%1xdnD#2cEqyFTO7_ZWY>J*!kX*lusK~bR231wKNtT=;}HKmBG3h
zfM|x!(S!@c0tZ%U1anUaq$%8c1SD8617IYjdwK@PjUu<5)dj>$etZD!pP`7w?Ph?J
z8$kkdI%bg4wZzz12wrKt$c~}4h`<_FtHH9dSd8$3m9lozfft_w5&Oot9ngOCuYY~3
zQ)^l<Q_RS2WYEr6A9&z_$KN^Pn?IieUT@TOlazIVWuvAB_U+qs^ytyPIkmt>8nJSE
zRh7o`078t#S_O(FOBzig-AtH$ghv4;nk<5t-#A(mOehxu3d^uUfH4{Va*XOPvsoOX
z(?J9S!0R}0f_6iIG*!()N2-z%G~j(8Lw$BLZ!Y$g6oVP>uB>TkX=$phvhjig`cos=
z09hl1hM5319|nTAhB4g}!)PGNb&;s}?3w_UBBzt4wO_b=)v8q|FKLFmthns5i<Z@w
zNF@tbp1OF+k|pz2UvkGCcieRGIW@9e4?V6?5VA?_eP|G?t#ZzsCU~6c14q#2V>4DE
zlW~#+9iz8q6h=}>qe`7CHPwc4(PEJ>9V=KU8daJFbmGYp6~}|&RT$|=fJw4`qWjHy
zM8)s2n(mi4bpO$az_gPl?5@yZ?U?@rTB^ulm#sx!x5bR7b0cS<f>>=bicU^9^sFDp
z^_6lNq@A2bhYk?61_33E1^e7$7GhC&y))`&*4EbgYEOavyt#9mX3eaunsdg&@=`di
zt8bh;cW(2{=BDZzABsv2dVSK*M!?dRF$6;S7$(ed7x`seK`NG(mbz`d-Eh~?z`)?(
zV0h>-*iJ`!dwcqV!^6D?4-I0h!(jhVUtb@74i65aWaNM$EPhsIS*6^-u`mz1f@MHO
zBRo$s0zSEH;o-LLZF}wQx8FXr{n72)w?F;z%YS`k+m4+tJ@TJ#?1tkvw!Zc9%P+sZ
z{mobZzWpC42|1J9UgBrVL1`1w4rLaV`JLf0utsEAi{hM3v9C<dBhRgXJeL<B&*cTk
za{(aF<ps!dbpi663&?X}0rFf}fIJr$AkRgGBRhegKl$X7Pd)b7gPT?WzT|S7f77)2
zq36IvcwqAy<Hr0n-&c*z#&?WUY5h9!{$Imec#gtNgQ|vl#!@MS=YGJEU~qIilmO7-
z<W6;X_;^@{dJ-CiqRs5VUNFFesZ=B~`2L;)eFNP`pr0R0aI_Og5A5AHkYErT0Bjlz
zBdhTiixZeCJ3I=v(eyMGqg)nvA(M(>&XTMyQLLH$=3jpM+uy!1GIHd|_Ko-c$KSR-
z_tZ1bJoCqX95%4TyB~Sr$FBw1dGqE~0@O6<dOT$=FK?)<tW53LgZXkYqcL<Img1n8
zMn-zzA+?0+rbyE;W<r00csvo0^1Mm1(5XL6LCEvKI3V=|I&H`X6z9NbBpSv1axoQ0
zHnMuVL*#WbIvS4I5PFR0Xn@R~i&4X7R#(?m*DXG2e(j9f+M1f0S*0GI&*v?vSh%pI
zuGEEk1i(xK=&!PfsdF^V>_SIJlW4}UeT?P;JJ^aN6%uEWc#1NXTfg+>FMs*->(^hh
z{t}Gn5vaKR;`1)L_`(Y>yy~=5mMvR$#*!6xe*e3lUosyfaRAUXfM~C@b6gq#(bGH|
ze&6LNvBMqt)I7mrsr2B?rrGPUP@J(;6C9j&I*VK-3ZKd(RM6YepPMTJ#ZqB)mGKiU
zpa@Nkwbj+deiQ4&HOh8VyOfCw#AX8=@N*1j1{plN7>zy$7y(X)*~F>388s)9gkw?;
z3Er~FY{Iw7A;c8fFy&Jcq)p0<8htinbl3!v1}jqnh~hy%f;%p<fDtsSrDbkoeW}|V
z(@HAg;fspVSZeTC?8UCqB0CQ1(!rqWVyE3cc<k7*!BPwSOfm|0w2^Q)nkuTUuC`>d
zpia#`h_i;Fo}T`}U^tQ##P}#Ez~f<5-;RxqhsUFlDEc-;5LsNo(eU_q1{1dgqo9tn
zpq}_0SrQ?sR5YBxB$8}41vh<U_^r3z+V$7JzW&ym2RetWj)6U$ot@nu^c^{J<hgyF
zU7bfdyF1}$57M!rH}@Ru>WV_EtJ`o<GH+)CjyO3&hKIZN4<gV=(czq4-8fBbs)Yrp
zQt~NcQ*r->@gZk0xa}Fhl_&r7!oGd*@#~JWaT=$s)woItaJ&#rwu6m)7b#98hK>S2
z_Z{sW7+ADu(W!H*t4TvH$7!j1Y!Gvt@<lj+)=uR9{&#){sQdEoUV81d<wT+70sd?2
z*OO~=2}n<0u>WmLK+4Zq3P<haXH&C@D!J*Dc2aCIxl53(i_4r&0Fcobb+4qUKvO9T
z&Lk^*29timwQhIIQjpgzC!N{Y2(7fcM+C8+OW!#(>@CCeoqTu*j^NjRhCfKdyrOpF
zQg~XYkAabWcF)62;c1<or5ZJz{ZM#Xr)TM$ZUobqD!d(M2J+*7$Dn<mEok3E1?~G?
zXy0cG+V_vstf1Xo(7rz@Xy45R?R#HA`^v%K6aV$tV~_Rq!EUYbZBSDe86H~7(H+EC
z0JhT&EPQ#Z-bKq!{c*ib|E_+eewtoKOC>E|((l%Pm%qkCi%W}YJG348bx>M#U;b=Y
zzU<NO(C;wnj5@trKa@Mi!_WNsp|f$0u&q_wp#&J-8*r!+$cvH`bUqU*z$wMm8H_@Q
ziN-aFgjI}2xch*DT*&Z(!g%r1i=Q1#oRG6(v4O+5E)N&y#jQ1<ptx0)FP?e&>8E4B
z!?HPNU-bD)F1ci}AXL;XS+i!%rI%j%<@GC8R93oBOIfp~c+I+Vnww=ghDIX%)AG}R
zv)3wZB2}mQ`V>brgB}do^w=0qP;0v4>Wd_SL!;xN(9yjIj`sHU#&m_ZQeKiV=`Z|S
zv1j54Z{or{zkVh`Na^w8uRXDA*REs7VAnTe!^Ib0JU<$>Exddg`56`g*vWF%Evv}m
zWDhw?V@(_+0nTdu+~?PjACVVn>7+#?+sRYpDRK4cW&<qJ75Oi>k-tda_(nxV&vv-g
zirihvZ^%#B3oZbT_#03L+}$*5%NE6PG=dJjiP8Q0d-w0(pHdaq-wq883=DK1*!AA;
zfBf+8UVQPz<G}JWXn&9~b8!8ZEelVcIKrFETL=|DGfIfUj3hR*j38{}Fojk?06l}{
z*$##Q!_{iNi({p5cq8av<>i4k5#C=|cQ_P>i*EQ)38J;qbr&%di7_%Xt(WZ2&#lVz
z!{IpbNDot>I7^Z$QG!UAxx#HlGr?X~<~9j{{&3F<Pm#!A4#V>1=292V{DW>RI;*NG
zD&{Q)$S{mzLrqsyxLkARz~z{Oc*JTY<?yD^kc|T*IRqT4QU%Uz#*k7VLS1eu&_Q7o
zZ62oy6d${!@L7rxGX7iIVu_?CkKiUTL@GZ6{rOb4d-WRl;gS;A&98KW%`&UCb)MUH
z=+L1J8#b&yWsZ}xc)i}`x8Htha|IX!VDJ|;ty{Nx^*38ddl?uY7)T?$a%FS#Ew{iw
zU>@3?RaImeJTb0H>+yOOhYj6rVm7nK!@^6k35u(w8c@>hE%!QW7B#v-cFytu*5W!g
zMMkfNu-Dr)G;xGC=^llOpRr=w`fQt7EgIbjN&(9R2#-31-ofYsx@X_TX>pHdBbN*v
zIT8pkQas?GQ^^Bi*bUO^T_%k74b&UIX5!Laa7T&XNDRM#A!`ZKA*2$-RciGMSx_2`
zOb3%<6b{rfu7fi(CX+&#AA%y4NC4|#YL#K1PjRHu=;}oyB|_^;PKDJ{s^6N4#5IP)
zxPY$AA%%}dP&mo3i$r|B!NG~6(5TNB9HGFkFvXUQU}gy-1~FtigyA5Wvvh`ENC`qx
zi*_)hU@gRA2@|gB<4QmuqR%5{`upK|KuR3=`|{<Ag9eHVN5i9|Y*|@Zaf9MYk4Ayr
z#*X%;8IjCuZf=hLO5u+jLD?t6?#Pkl%inry;%N8o<;!2k*mBe*SYhJoM#2O@;AHh|
zhhVd3k9;uXCxQaXq}0Li2G}wtR`1|+KABV)-RR&1(6Qiw(7_S}s^YLxD^IeT%}(^k
zG%2jbD*COmx5PrS1buy~Rx3QmPdH|A(A!MX#E}R`7M@Bwh3Sjl%iC<pOtM3mQ62x?
zL+@ZPP}U;5J3!x5;Eixv2d7HI!wS)V$eG=>weTRA_0by)Dvs((unT?ea<8`uqqMk{
zB5#Egu%~M2$zCHxFn_`7R`R^Uqj#rGk!|Sb84S9MCywm4V9<x(`7s?KO4$P-Wq(&7
zW#64<t@P6cQuaWBlszA$?A--Yc2j|r-S`Q9nx9_Eeofy;%j^2j_1pD3^-J{)x<ret
z`?PJ^HY!b_N%LnVy;c7XT=$>(|GOK?zI@rC->Tng_za(ZK;NA^hZ6R`emWsxx8)_Q
zuMxoHWN)?C+W-}_R}p%`IGo^T;^^WLC!=9FI@BFFLAVMZ5w0_!5gpmANQEoFq;7Lo
z_-a<ITD5M?qD4+;avV{ab-Dn|T4&CL-C3@sm6d`p9D<ACUrs;S=Od?16|K}6m}qHq
zA%#Cy5qlE^ecTk@Mg=GeRgdlcoreYo2Q!i)_VtyPO$gSq(!M@V2^FmRM+ED-bI(1u
z0c6CY3Bf9XR;X4ttX#Qa75M`#ualQB(3?Da_TWK;D6z5mi_3DcDVfVJUy+Ye`CsHg
z&=PF6f4mDfm=LEwCmY!nE1>D`pDIp+Szu5j74Gh4y1TmpBgL13I4Phhd<_+vR@j|f
zbC2@tx8Hty+^vXPwk$n!LYSVpbjy~LmQZ1unJP>f17KFmY-Cd@KET-ReuiZ?af0>Z
zrRY8UXlz1K#zu+NMTM#O=>#Z7fc2J?I87q7+i9nr)-wN$=0(kCo_XeyIqTM~SaIWZ
z*TA-V@#!Z4%AIu<>}I-VtXfr9x8fwY82%-jEGr{xri#xj4l|@UFhP6JJWeTMjYX$R
znK7`Ws#tMPN@_6Wgq%@Ci)CnRLUxV~SuCL_m7NA5<tNI{TC^sXENOJwK?p7*KgPm*
z=Uc7hm+b%g!8b0X@kSpZo5?NE+OMOw1QJLk(R_J<bdZOLp9Rv+#`ps~RIXTuX*r)|
zF1u_6c^bZ_w=}`s<H1(!>@Q6fvhhBghQZL<e?|gBig=+H=ayJMheO(m6=QsnB^R6l
z_IhPh5xw5+`zIvq{_S4xt|L^!>Qf~wX3b%EX(MZ~WCBbm<YzQ(6PF49Q_*@4BXf80
zoJ?ZzpMh-c$ng(~SCD8zUc7>}Y>|qQc>+u}8(>+E2{8Ch?PhdGB(V-oVpVmjcunJ`
zW<kDYpjFHuUcuVx;KwnonPSDu#x0&QkH?cepol(Sf8T^;?d$jX`i4%Ftk9CY0h0B2
zXs*w_$Pb(yV3Mf-E1KYeVlh8cTcU8uBst!}m4FUBRjg9$ES8MH58|*(lfr`Wh6_~q
zLwiwnT4A^MP}!o>z%ETaqKM0vzw*k2Onv2*<;(x}cWTGw1S;zn!17mhwL|bYN22k5
zc>8*Q5ySvaB?ds%0A)6&aFRrv9ZXE?m?BQ8r<sX2SuAzvuMUzJtk4dg!Ps|-6)$7x
zx|gKye9W2QD4LL@MbPbvEKu>|sudKb8wuwZqBdJXOLPb=v;J{-;1xeKM}V=(@J?hY
zz&M?LW>1g8c|4@CgE^M!m?BQSxD`oGulEXQ84n2J(Td6rV1Ws7DRVuY$ALA^ZY6Ij
zVldd)IPpzmV=y?!O9d&&I4Vhh2$J;c1(Nhf(`0)8dVwVU`ZT$c&MT0l7Zga+3kxLa
zg@t|(c}d#c4Z8=|88?C`Yc*;Ng2~&V^k6ZXjCIC0P@JyQJ89XcZ_)49??+jy$MvJR
zvs4&vJ{#v|+FJGdbHebGj7w@%o|Kn+5nL-070XXP_k6G%n+2h)stLpx*lbsvfA-lJ
z5(fG@oLGJO{P|?{6v5^SMKSPXEE0|m9XS@nh`gEn_y`qUrS85yM-dfWDMIXd(bd%j
zyKd*QmE<n+3VEBnj77N3YHeM6(>Zy`vyYZO`1Wz~xHx})B>`lg5KDh1KWD%7ErMYX
zKNL%@_l^vLUfR=n;OO?J{`mSUue{P7$&b8H!E^e8En8+aQNc3;4S$01_AnJOC@DUL
zS=LTY%F7YVBH(sfgyeV}bWBTmInQVy7cdV(7UwA{Ybz@&(asvfEca6cg{z283`u4a
zXL4Fus=emNc&IE$r7V_shROoqtCRAwz~_TqL#aG;xDVR1eAzM!mqNgf$A=Tu)y>Uo
zFNW5G6Fc^Uvf-J6->&9zoF^$RbxW?sN{Q;I`C%do(L=*tZ%>#)v>jg!fM(A2(Nyi>
z`z9@#|0K{`HwxLbYALe#1r;pCtiBNpn{0M7#Zxpj6gH94{8o^Jn#ST{6c-oDk33P(
z9EEG(LIh2wv2mjiAB&dH@%n|BAViZHOw7n(zOBs^7|~Qv*nyFh-x?1NrP3mq1q~>^
zn;*2AG$-;ySj^DSM!{U<40VlA0|He04s?+R;1Y$+6yZ?WS6G`v@>|WWB9Ye!`WzI^
z%nx``7!!m<f)}Yl!2JF18->!QruU!R=_gkBN1GY$$SNETgl(o!g(|zkR?jN-TTAE9
zb(&Ko84ib=ugVXWQ8co_HMZQ)86wfQ0EuoYKq7wu5}gD{bW;Hm-Bf@?Mbmh?7e-ev
zjGz3mNOb?D#+LwxRvR;o>b&-SSPxUkX)#*#ofG=EzRxH%E`;m8is*DU`o&ME<YyRX
ze27AM1^hm7iss#cX;~IdMV^>gQc+ob(M1<seZ{h6J|9b0L^#UIn*nkbE`;4VXU?8|
z0`7>Bl$KMUos(Eo;{0I$aSWC37bign6po^)pmW@@<eYQXuOfSC83BBGf;=IwSRo{^
zjb^njyDhIpGe7vjhhXyvd;RtBs$Q4^HsX;Hba#OVn7w2|<6ScQm%n&^=gys~ff{cf
zYCuQ%5ercB0DAu1HwiQMoB%AuUVMVy+D;apfH1N|Z~|A42d!2~n%97tsbp0!09p*(
z4TsETVwr+30!<sm`uS{nLhVdv;YUm+lPI9tnFkk;(hH}8OJjvwGowp%@3!h{kLUJl
z*TYsGlT|<!Xg`3KcfDTXodPXFtqZ5U{d|0MLJ=H|*DaU@kL|FbBACY&5#IyDF%RH)
z%6<REgvK5uOgg<$$Y_#@bKQ&H07*YHIC#$#B+05;M;<z?^n<rLp<PqmsE18}$k^CM
zA(AY1O7jCWAVoXqH2ScgdE<?HreH`slEx*#dEBtl4|7>#b93|PbEry9Ac)JgQIIXk
zq#C>%-M&EQk^Rh!8TU*94^9%PR+a+{EB(+6bo{7Zf%?z{bTl__6e_$!!|`o?fDFv|
z8Q@sS=JPY_*WWV*I;0YZA56k2aACKnSOZ?$`K{z>RBLQgM%^)&v$+5}%mvsX0Ct!Q
zu){pftcs}sJ52v#E@uU&Tm9&4q>va?3<fI4p#r)%;RB$Hl4>|&b*QXYsApY!JAp$<
zfsZUHR`8NI-S;awY_tM>rca1QAbg5w1k$IV&r(32r7)vqh~y~LIKpBYT6pRRB@iej
z5g?G2D1~6Lv2IEt2jJ!o_!)R$)|8{uN$F&hK&YQd!}%c~mewZd{iNs%pN3xHQ_yQF
zpx0DLZ)cuf93713niQV5H`k^>axaqX$TcdET%T)IAh{mDu;%Ek%F!F94a*)lp=Cca
zl=kH*O$mfeO)xJzLMa8kg^VCUGNqK$3G1VjN-Ajo_=Pz~X-SUKSdP-;|8^e!w@}(O
zg@+S49`2vy;eMpXKFPy%lRR9Pqo0ylkt1_FN9G|)=4Y=(yU8RPQ95%i8l1$VEK+2f
z03^100+EP-UvN26#T=>G9I2_#Chu}nc$b-^l%3>V76~#Yc~_g{T`l(orBu&R%H$~J
zCMiYvB7TB=;r>nX<&!8?COKE3jH^uWZTp010j5<Zc($E393?K1BTmQ>XZwtDtTu&X
zjmdV@CplIR&<2{|SZ<PIx!f0&R5nMdkt0?6Y;tUT3dd@bl%^&*HiZQ7lN>8ga;zMn
zopP!iP30&ZI)P*V|Ev+&fj(;ieb#B{vlh^2{h!l_aM`RSk<*C?uP}Tzrx<||!kCj&
zR3oA)OqS0nM<l8+3Cq8r9{pRX|2OJKNWGNEX-G&tm(A%&NWGMtq9q~q8lTgXkouJ6
z|7l7mYD%A}*6lihw-Zx%yMGFAPpV84yj?eix2f7>$<bV%qdAhJx$Cppy8k_`iOo^U
z=P1>4l&b$Dl!^tEivJ=q|M#>eg%Ya#Q;StDpi-VjW0DJ~l>etRraT8LA2P7=A^+x8
zr#$m2AM)-es863c&i(IcPbX4p%2De4Y*P9^sy!_NN*5JSx~PEC7NB%d0i}xyC~W~s
z7Zy;usDRQ%1(Yr-pwy!Y<&BNy#oF+$UAqRPR7yypH$%Xts+xwO)dZ^~6nhlG<H-`I
zidm987~gJmG&(lY*Voq{3NZq%>=6UDWHObqVdy@IWwNRwSgg?5lYU|*p7HVb_w0H9
z=)QNiY}xY4`|q*V+WGV6I|H_%p-`x%w!XgJC35kYB9vDU-ZbPVC4|upI+g4fbQ7P>
z;!tA1gX_M=adb0kq*9r9oM%}bQ+dTj;t@rYAeeX=7ppkUGSP63SqtEDS60p7d^4_2
zRD@KLB^g}$LOf2p+h%iHd{vlL&QnQJ7*r$~un7XkMaOY!IHjgjiZDFPld#|?D!~y&
zR?`i?U?!ZV+A)5ihkD=RU@@;+ZIU32M#eRZq%cAXdIM)DTs9e3(H$+@-<w3|cnm?v
zqDR+=rn5FH&nGi_hOmGe7+KV$E7tT-Ukq+&N+(`@5nhKB@ZjQtci(^Sz4ug=uc@+F
zf|2yN22f)GS*fQu#fqV$a3PY-Ug0xgus{zk2of=xiO%bZv|$J&YpA&u^{hG~DpoNU
z22ZZ5TeZ^ZC+UC(T__wlgOstTeWSW=)6;rfQy872ocl-M+y@Id_fG|!dna)2g9V)X
zU;*b|1DxwG;M|S^&Q%IHxBdUKXVf)$zv1Wf&H63+dRi{hH$eHS{$u^I{I>xpx!PWR
zE1dr^^)OcTfoVL9_3!^P4`YUN`a#K*6yorc@pi^$y^FEhsBiJdIuzq%rtg%cOP9`;
zBv;+ZYu2n;z8rQJtzNZCmi00C8ZHv32l442>p|>D#&P|bo*5Y#00u+Hr@p=q9f)1l
zNtfY|dNzH;Wtfl0<7F$BlZ`oF75+xId){T|lDl*B$K**Ux!Qj6XLNiLD=IR3;eS5j
z8~o76`UX1&`!H-kCi3pPTi<>6T~@%^oT`>d*Wjv2XJBoL|58T{+@@S`z#h0*G`YC^
z#^ye-JNN~33MQN~#i1#`I1v7dFg2X0FvFtXl1gOLX$&GG99BN1Gt&v)z%ypds4PRL
z|MG^0YPSX2z>Hb0RRhCKR@KATaFIaWf2|+u{_7aWP<Kfd4spUdI*OA==}CXzRC?0i
zmm%b=kMZ|izkdCiGto2jtZT15zr_px;`P$dJ5FbF^SZ0xYq&_D?!8qX>)z`)6opqg
zA}~O+)9LKogOg07!HKEt;OL}3FEhp4sG|mY#L?&g?1Mu?qoKZ3eoN;*(2Kz@pkFUZ
zDLMBex{k@@#9&LbsxX-mzaYEeIg$b5ec(g)UK*&8F$|20S_5q}nn3567;KSYj0Kl~
zU5b7r&;!&jpo1?-DpP!rvWRtA4aA&)Yp09BZZ!NBmIv;^{vrA3jMoX1=u>@q&A1w$
z!zG@qza|(A?(IK}5w3cAj(7cIBJ5Spi7Ge%e|`a7dPz{3;(df~AeBfbQYkA)!0JU{
zt-=#X7T#n!8Jf+td~%lTpE>cGC0skrvMD|5ufcdjz8Pg@Wz{ogR8`N0N_jc#y!4~o
z2VeUIbmJvu%B1I!-;NRNcvb}IfX>dKqPjT0MN5Hv#TC~M2B+6foTs1SxVzDek;2S^
z5Y8n1HLb0!pIdnW?AM=n-rDsywC1<7av#g!55%UswwAOilO9KYJI*T09CR252J`~O
Zcpmh|ct{V062Map?Br}*p|>te{x8Rsak&5h
--- a/layout/reftests/reftest.list
+++ b/layout/reftests/reftest.list
@@ -203,16 +203,19 @@ include font-features/reftest.list
 include font-inflation/reftest.list
 
 # CSS Font Loading API
 include font-loading-api/reftest.list
 
 # font matching
 include font-matching/reftest.list
 
+# font variations
+include font-variations/reftest.list
+
 # forms
 include forms/reftest.list
 
 # frameset
 include frameset/reftest.list
 
 # gfx
 include ../../gfx/tests/reftest/reftest.list
--- a/layout/style/Declaration.cpp
+++ b/layout/style/Declaration.cpp
@@ -819,16 +819,18 @@ Declaration::GetPropertyValueInternal(
       const nsCSSValue *stretch =
         data->ValueFor(eCSSProperty_font_stretch);
       const nsCSSValue *sizeAdjust =
         data->ValueFor(eCSSProperty_font_size_adjust);
       const nsCSSValue *featureSettings =
         data->ValueFor(eCSSProperty_font_feature_settings);
       const nsCSSValue *languageOverride =
         data->ValueFor(eCSSProperty_font_language_override);
+      const nsCSSValue *opticalSizing =
+        data->ValueFor(eCSSProperty_font_optical_sizing); // may be missing!
       const nsCSSValue *fontKerning =
         data->ValueFor(eCSSProperty_font_kerning);
       const nsCSSValue *fontVariantAlternates =
         data->ValueFor(eCSSProperty_font_variant_alternates);
       const nsCSSValue *fontVariantCaps =
         data->ValueFor(eCSSProperty_font_variant_caps);
       const nsCSSValue *fontVariantEastAsian =
         data->ValueFor(eCSSProperty_font_variant_east_asian);
@@ -846,16 +848,17 @@ Declaration::GetPropertyValueInternal(
             weight->GetUnit() != eCSSUnit_System_Font ||
             size->GetUnit() != eCSSUnit_System_Font ||
             lh->GetUnit() != eCSSUnit_System_Font ||
             family->GetUnit() != eCSSUnit_System_Font ||
             stretch->GetUnit() != eCSSUnit_System_Font ||
             sizeAdjust->GetUnit() != eCSSUnit_System_Font ||
             featureSettings->GetUnit() != eCSSUnit_System_Font ||
             languageOverride->GetUnit() != eCSSUnit_System_Font ||
+            (opticalSizing && opticalSizing->GetUnit() != eCSSUnit_System_Font) ||
             fontKerning->GetUnit() != eCSSUnit_System_Font ||
             fontVariantAlternates->GetUnit() != eCSSUnit_System_Font ||
             fontVariantCaps->GetUnit() != eCSSUnit_System_Font ||
             fontVariantEastAsian->GetUnit() != eCSSUnit_System_Font ||
             fontVariantLigatures->GetUnit() != eCSSUnit_System_Font ||
             fontVariantNumeric->GetUnit() != eCSSUnit_System_Font ||
             fontVariantPosition->GetUnit() != eCSSUnit_System_Font) {
           // This can't be represented as a shorthand.
@@ -863,16 +866,17 @@ Declaration::GetPropertyValueInternal(
         }
         systemFont->AppendToString(eCSSProperty__x_system_font, aValue);
       } else {
         // properties reset by this shorthand property to their
         // initial values but not represented in its syntax
         if (sizeAdjust->GetUnit() != eCSSUnit_None ||
             featureSettings->GetUnit() != eCSSUnit_Normal ||
             languageOverride->GetUnit() != eCSSUnit_Normal ||
+            (opticalSizing && opticalSizing->GetIntValue() != NS_FONT_OPTICAL_SIZING_AUTO) ||
             fontKerning->GetIntValue() != NS_FONT_KERNING_AUTO ||
             fontVariantAlternates->GetUnit() != eCSSUnit_Normal ||
             fontVariantEastAsian->GetUnit() != eCSSUnit_Normal ||
             fontVariantLigatures->GetUnit() != eCSSUnit_Normal ||
             fontVariantNumeric->GetUnit() != eCSSUnit_Normal ||
             fontVariantPosition->GetUnit() != eCSSUnit_Normal) {
           return;
         }
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -1453,28 +1453,29 @@ const AnonymousCounterStyle*
 Gecko_CounterStyle_GetAnonymous(const CounterStylePtr* aPtr)
 {
   return aPtr->AsAnonymous();
 }
 
 already_AddRefed<css::URLValue>
 ServoBundledURI::IntoCssUrl()
 {
-  if (!mURLString) {
-    return nullptr;
-  }
-
   MOZ_ASSERT(mExtraData->GetReferrer());
   MOZ_ASSERT(mExtraData->GetPrincipal());
 
-  NS_ConvertUTF8toUTF16 url(reinterpret_cast<const char*>(mURLString),
-                            mURLStringLength);
-
   RefPtr<css::URLValue> urlValue =
-    new css::URLValue(url, do_AddRef(mExtraData));
+    new css::URLValue(mURLString, do_AddRef(mExtraData));
+  return urlValue.forget();
+}
+
+already_AddRefed<css::ImageValue>
+ServoBundledURI::IntoCssImage(mozilla::CORSMode aCorsMode)
+{
+  RefPtr<css::ImageValue> urlValue =
+    new css::ImageValue(mURLString, do_AddRef(mExtraData), aCorsMode);
   return urlValue.forget();
 }
 
 void
 Gecko_SetNullImageValue(nsStyleImage* aImage)
 {
   MOZ_ASSERT(aImage);
   aImage->SetNull();
@@ -1494,24 +1495,20 @@ CreateStyleImageRequest(nsStyleImageRequ
                         mozilla::css::ImageValue* aImageValue)
 {
   RefPtr<nsStyleImageRequest> req =
     new nsStyleImageRequest(aModeFlags, aImageValue);
   return req.forget();
 }
 
 mozilla::css::ImageValue*
-Gecko_ImageValue_Create(ServoBundledURI aURI, ServoRawOffsetArc<RustString> aURIString)
+Gecko_ImageValue_Create(ServoBundledURI aURI)
 {
   // Bug 1434963: Change this to accept a CORS mode from the caller.
-  RefPtr<css::ImageValue> value(
-    new css::ImageValue(aURIString,
-                        do_AddRef(aURI.mExtraData),
-                        mozilla::CORSMode::CORS_NONE));
-  return value.forget().take();
+  return aURI.IntoCssImage(mozilla::CORSMode::CORS_NONE).take();
 }
 
 MOZ_DEFINE_MALLOC_SIZE_OF(GeckoImageValueMallocSizeOf)
 
 size_t
 Gecko_ImageValue_SizeOfIncludingThis(mozilla::css::ImageValue* aImageValue)
 {
   MOZ_ASSERT(NS_IsMainThread());
--- a/layout/style/ServoBindings.h
+++ b/layout/style/ServoBindings.h
@@ -124,19 +124,21 @@ namespace mozilla {
 DEFINE_ARRAY_TYPE_FOR(uintptr_t);
 #undef DEFINE_ARRAY_TYPE_FOR
 
 extern "C" {
 
 class ServoBundledURI
 {
 public:
+  // NOTE(emilio): Not calling IntoCssUrl or IntoCssImage will cause to leak the
+  // string, so don't do that :)
   already_AddRefed<mozilla::css::URLValue> IntoCssUrl();
-  const uint8_t* mURLString;
-  uint32_t mURLStringLength;
+  already_AddRefed<mozilla::css::ImageValue> IntoCssImage(mozilla::CORSMode);
+  mozilla::ServoRawOffsetArc<RustString> mURLString;
   mozilla::URLExtraData* mExtraData;
 };
 
 struct FontSizePrefs
 {
   void CopyFrom(const mozilla::LangGroupFontPrefs&);
   nscoord mDefaultVariableSize;
   nscoord mDefaultFixedSize;
@@ -346,18 +348,17 @@ void Gecko_CopyCounterStyle(mozilla::Cou
 nsAtom* Gecko_CounterStyle_GetName(const mozilla::CounterStylePtr* ptr);
 const mozilla::AnonymousCounterStyle*
 Gecko_CounterStyle_GetAnonymous(const mozilla::CounterStylePtr* ptr);
 
 // background-image style.
 void Gecko_SetNullImageValue(nsStyleImage* image);
 void Gecko_SetGradientImageValue(nsStyleImage* image, nsStyleGradient* gradient);
 NS_DECL_THREADSAFE_FFI_REFCOUNTING(mozilla::css::ImageValue, ImageValue);
-mozilla::css::ImageValue* Gecko_ImageValue_Create(ServoBundledURI aURI,
-                                                  mozilla::ServoRawOffsetArc<RustString> aURIString);
+mozilla::css::ImageValue* Gecko_ImageValue_Create(ServoBundledURI aURI);
 size_t Gecko_ImageValue_SizeOfIncludingThis(mozilla::css::ImageValue* aImageValue);
 void Gecko_SetLayerImageImageValue(nsStyleImage* image,
                                    mozilla::css::ImageValue* aImageValue);
 
 void Gecko_SetImageElement(nsStyleImage* image, nsAtom* atom);
 void Gecko_CopyImageValueFrom(nsStyleImage* image, const nsStyleImage* other);
 void Gecko_InitializeImageCropRect(nsStyleImage* image);
 
--- a/layout/style/nsCSSParser.cpp
+++ b/layout/style/nsCSSParser.cpp
@@ -14051,16 +14051,19 @@ CSSParserImpl::ParseFont()
       AppendValue(eCSSProperty_font_language_override, family);
       AppendValue(eCSSProperty_font_kerning, family);
       AppendValue(eCSSProperty_font_variant_alternates, family);
       AppendValue(eCSSProperty_font_variant_caps, family);
       AppendValue(eCSSProperty_font_variant_east_asian, family);
       AppendValue(eCSSProperty_font_variant_ligatures, family);
       AppendValue(eCSSProperty_font_variant_numeric, family);
       AppendValue(eCSSProperty_font_variant_position, family);
+      if (StylePrefs::sFontVariationsEnabled) {
+        AppendValue(eCSSProperty_font_optical_sizing, family);
+      }
     }
     else {
       AppendValue(eCSSProperty__x_system_font, family);
       nsCSSValue systemFont(eCSSUnit_System_Font);
       AppendValue(eCSSProperty_font_family, systemFont);
       AppendValue(eCSSProperty_font_style, systemFont);
       AppendValue(eCSSProperty_font_weight, systemFont);
       AppendValue(eCSSProperty_font_size, systemFont);
@@ -14071,16 +14074,19 @@ CSSParserImpl::ParseFont()
       AppendValue(eCSSProperty_font_language_override, systemFont);
       AppendValue(eCSSProperty_font_kerning, systemFont);
       AppendValue(eCSSProperty_font_variant_alternates, systemFont);
       AppendValue(eCSSProperty_font_variant_caps, systemFont);
       AppendValue(eCSSProperty_font_variant_east_asian, systemFont);
       AppendValue(eCSSProperty_font_variant_ligatures, systemFont);
       AppendValue(eCSSProperty_font_variant_numeric, systemFont);
       AppendValue(eCSSProperty_font_variant_position, systemFont);
+      if (StylePrefs::sFontVariationsEnabled) {
+        AppendValue(eCSSProperty_font_optical_sizing, systemFont);
+      }
     }
     return true;
   }
 
   // Get optional font-style, font-variant, font-weight, font-stretch
   // (in any order)
 
   // Indexes into fontIDs[] and values[] arrays.
@@ -14181,16 +14187,20 @@ CSSParserImpl::ParseFont()
       AppendValue(eCSSProperty_font_variant_east_asian,
                   nsCSSValue(eCSSUnit_Normal));
       AppendValue(eCSSProperty_font_variant_ligatures,
                   nsCSSValue(eCSSUnit_Normal));
       AppendValue(eCSSProperty_font_variant_numeric,
                   nsCSSValue(eCSSUnit_Normal));
       AppendValue(eCSSProperty_font_variant_position,
                   nsCSSValue(eCSSUnit_Normal));
+      if (StylePrefs::sFontVariationsEnabled) {
+        AppendValue(eCSSProperty_font_optical_sizing,
+                    nsCSSValue(NS_FONT_OPTICAL_SIZING_AUTO, eCSSUnit_Enumerated));
+      }
       return true;
     }
   }
   return false;
 }
 
 bool
 CSSParserImpl::ParseFontSynthesis(nsCSSValue& aValue)
--- a/layout/style/nsCSSPropList.h
+++ b/layout/style/nsCSSPropList.h
@@ -1871,16 +1871,28 @@ CSS_PROP_FONT(
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE |
         CSS_PROPERTY_APPLIES_TO_PLACEHOLDER,
     "",
     VARIANT_NORMAL | VARIANT_INHERIT | VARIANT_STRING,
     nullptr,
     CSS_PROP_NO_OFFSET,
     eStyleAnimType_Discrete)
 CSS_PROP_FONT(
+    font-optical-sizing,
+    font_optical_sizing,
+    FontOpticalSizing,
+    CSS_PROPERTY_PARSE_VALUE |
+        CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE |
+        CSS_PROPERTY_APPLIES_TO_PLACEHOLDER,
+    "layout.css.font-variations.enabled",
+    VARIANT_HK,
+    kFontOpticalSizingKTable,
+    CSS_PROP_NO_OFFSET,
+    eStyleAnimType_None)
+CSS_PROP_FONT(
     font-size,
     font_size,
     FontSize,
     CSS_PROPERTY_PARSE_VALUE |
         CSS_PROPERTY_VALUE_NONNEGATIVE |
         CSS_PROPERTY_APPLIES_TO_FIRST_LETTER_AND_FIRST_LINE |
         CSS_PROPERTY_APPLIES_TO_PLACEHOLDER |
         CSS_PROPERTY_UNITLESS_LENGTH_QUIRK,
--- a/layout/style/nsCSSProps.cpp
+++ b/layout/style/nsCSSProps.cpp
@@ -1540,16 +1540,22 @@ const KTableEntry nsCSSProps::kFontKTabl
 
 const KTableEntry nsCSSProps::kFontKerningKTable[] = {
   { eCSSKeyword_auto, NS_FONT_KERNING_AUTO },
   { eCSSKeyword_none, NS_FONT_KERNING_NONE },
   { eCSSKeyword_normal, NS_FONT_KERNING_NORMAL },
   { eCSSKeyword_UNKNOWN, -1 }
 };
 
+const KTableEntry nsCSSProps::kFontOpticalSizingKTable[] = {
+  { eCSSKeyword_auto, NS_FONT_OPTICAL_SIZING_AUTO },
+  { eCSSKeyword_none, NS_FONT_OPTICAL_SIZING_NONE },
+  { eCSSKeyword_UNKNOWN, -1 }
+};
+
 const KTableEntry nsCSSProps::kFontSizeKTable[] = {
   { eCSSKeyword_xx_small, NS_STYLE_FONT_SIZE_XXSMALL },
   { eCSSKeyword_x_small, NS_STYLE_FONT_SIZE_XSMALL },
   { eCSSKeyword_small, NS_STYLE_FONT_SIZE_SMALL },
   { eCSSKeyword_medium, NS_STYLE_FONT_SIZE_MEDIUM },
   { eCSSKeyword_large, NS_STYLE_FONT_SIZE_LARGE },
   { eCSSKeyword_x_large, NS_STYLE_FONT_SIZE_XLARGE },
   { eCSSKeyword_xx_large, NS_STYLE_FONT_SIZE_XXLARGE },
@@ -2788,16 +2794,17 @@ static const nsCSSPropertyID gFontSubpro
   eCSSProperty_font_size,
   eCSSProperty_line_height,
   eCSSProperty_font_size_adjust,
   eCSSProperty_font_stretch,
   eCSSProperty__x_system_font,
   eCSSProperty_font_feature_settings,
   eCSSProperty_font_language_override,
   eCSSProperty_font_kerning,
+  eCSSProperty_font_optical_sizing,
   eCSSProperty_font_variant_alternates,
   eCSSProperty_font_variant_caps,
   eCSSProperty_font_variant_east_asian,
   eCSSProperty_font_variant_ligatures,
   eCSSProperty_font_variant_numeric,
   eCSSProperty_font_variant_position,
   eCSSProperty_UNKNOWN
 };
--- a/layout/style/nsCSSProps.h
+++ b/layout/style/nsCSSProps.h
@@ -793,16 +793,17 @@ public:
   static const KTableEntry kFlexWrapKTable[];
   // Not const because we modify its entries when the pref
   // "layout.css.float-logical-values.enabled" changes:
   static KTableEntry kFloatKTable[];
   static const KTableEntry kFloatEdgeKTable[];
   static const KTableEntry kFontDisplayKTable[];
   static const KTableEntry kFontKTable[];
   static const KTableEntry kFontKerningKTable[];
+  static const KTableEntry kFontOpticalSizingKTable[];
   static const KTableEntry kFontSizeKTable[];
   static const KTableEntry kFontSmoothingKTable[];
   static const KTableEntry kFontStretchKTable[];
   static const KTableEntry kFontStyleKTable[];
   static const KTableEntry kFontSynthesisKTable[];
   static const KTableEntry kFontVariantKTable[];
   static const KTableEntry kFontVariantAlternatesKTable[];
   static const KTableEntry kFontVariantAlternatesFuncsKTable[];
--- a/layout/style/nsCSSValue.h
+++ b/layout/style/nsCSSValue.h
@@ -227,17 +227,17 @@ struct URLValue final : public URLValueD
 {
   // These two constructors are safe to call only on the main thread.
   URLValue(const nsAString& aString, nsIURI* aBaseURI, nsIURI* aReferrer,
            nsIPrincipal* aOriginPrincipal);
   URLValue(nsIURI* aURI, const nsAString& aString, nsIURI* aBaseURI,
            nsIURI* aReferrer, nsIPrincipal* aOriginPrincipal);
 
   // This constructor is safe to call from any thread.
-  URLValue(const nsAString& aString,
+  URLValue(ServoRawOffsetArc<RustString> aString,
            already_AddRefed<URLExtraData> aExtraData)
     : URLValueData(aString, Move(aExtraData)) {}
 
   URLValue(const URLValue&) = delete;
   URLValue& operator=(const URLValue&) = delete;
 
   size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
 };
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -2273,16 +2273,26 @@ nsComputedDOMStyle::DoGetFontLanguageOve
     SerializeLanguageOverride(font->mFont.languageOverride, serializedStr);
     nsStyleUtil::AppendEscapedCSSString(serializedStr, escapedStr);
     val->SetString(escapedStr);
   }
   return val.forget();
 }
 
 already_AddRefed<CSSValue>
+nsComputedDOMStyle::DoGetFontOpticalSizing()
+{
+  RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
+  val->SetIdent(
+    nsCSSProps::ValueToKeywordEnum(StyleFont()->mFont.opticalSizing,
+                                   nsCSSProps::kFontOpticalSizingKTable));
+  return val.forget();
+}
+
+already_AddRefed<CSSValue>
 nsComputedDOMStyle::DoGetFontSynthesis()
 {
   RefPtr<nsROCSSPrimitiveValue> val = new nsROCSSPrimitiveValue;
 
   int32_t intValue = StyleFont()->mFont.synthesis;
 
   if (0 == intValue) {
     val->SetIdent(eCSSKeyword_none);
--- a/layout/style/nsComputedDOMStyle.h
+++ b/layout/style/nsComputedDOMStyle.h
@@ -288,16 +288,17 @@ private:
 
   /* Font properties */
   already_AddRefed<CSSValue> DoGetColor();
   already_AddRefed<CSSValue> DoGetFontFamily();
   already_AddRefed<CSSValue> DoGetFontFeatureSettings();
   already_AddRefed<CSSValue> DoGetFontVariationSettings();
   already_AddRefed<CSSValue> DoGetFontKerning();
   already_AddRefed<CSSValue> DoGetFontLanguageOverride();
+  already_AddRefed<CSSValue> DoGetFontOpticalSizing();
   already_AddRefed<CSSValue> DoGetFontSize();
   already_AddRefed<CSSValue> DoGetFontSizeAdjust();
   already_AddRefed<CSSValue> DoGetOsxFontSmoothing();
   already_AddRefed<CSSValue> DoGetFontSmoothingBackgroundColor();
   already_AddRefed<CSSValue> DoGetFontStretch();
   already_AddRefed<CSSValue> DoGetFontStyle();
   already_AddRefed<CSSValue> DoGetFontSynthesis();
   already_AddRefed<CSSValue> DoGetFontVariant();
--- a/layout/style/nsComputedDOMStylePropertyList.h
+++ b/layout/style/nsComputedDOMStylePropertyList.h
@@ -130,16 +130,17 @@ COMPUTED_STYLE_PROP(flex_grow,          
 COMPUTED_STYLE_PROP(flex_shrink,                   FlexShrink)
 COMPUTED_STYLE_PROP(flex_wrap,                     FlexWrap)
 COMPUTED_STYLE_PROP(float_,                        Float)
 //// COMPUTED_STYLE_PROP(font,                     Font)
 COMPUTED_STYLE_PROP(font_family,                   FontFamily)
 COMPUTED_STYLE_PROP(font_feature_settings,         FontFeatureSettings)
 COMPUTED_STYLE_PROP(font_kerning,                  FontKerning)
 COMPUTED_STYLE_PROP(font_language_override,        FontLanguageOverride)
+COMPUTED_STYLE_PROP(font_optical_sizing,           FontOpticalSizing)
 COMPUTED_STYLE_PROP(font_size,                     FontSize)
 COMPUTED_STYLE_PROP(font_size_adjust,              FontSizeAdjust)
 COMPUTED_STYLE_PROP(font_stretch,                  FontStretch)
 COMPUTED_STYLE_PROP(font_style,                    FontStyle)
 COMPUTED_STYLE_PROP(font_synthesis,                FontSynthesis)
 COMPUTED_STYLE_PROP(font_variant,                  FontVariant)
 COMPUTED_STYLE_PROP(font_variant_alternates,       FontVariantAlternates)
 COMPUTED_STYLE_PROP(font_variant_caps,             FontVariantCaps)
--- a/layout/style/nsRuleNode.cpp
+++ b/layout/style/nsRuleNode.cpp
@@ -3746,16 +3746,24 @@ nsRuleNode::SetFont(nsPresContext* aPres
   // font-synthesis: none, enum (bit field), inherit, initial
   SetValue(*aRuleData->ValueForFontSynthesis(),
            aFont->mFont.synthesis, aConditions,
            SETVAL_ENUMERATED | SETVAL_UNSET_INHERIT,
            aParentFont->mFont.synthesis,
            defaultVariableFont->synthesis,
            Unused, /* none */ 0, Unused, Unused);
 
+  // font-optical-sizing: none, enum, inherit, initial, -moz-system-font
+  SetValue(*aRuleData->ValueForFontOpticalSizing(),
+           aFont->mFont.opticalSizing, aConditions,
+           SETVAL_ENUMERATED | SETVAL_UNSET_INHERIT,
+           aParentFont->mFont.opticalSizing,
+           defaultVariableFont->opticalSizing,
+           Unused, Unused, Unused, systemFont.opticalSizing);
+
   // font-variant-alternates: normal, enum (bit field) + functions, inherit,
   //                          initial, -moz-system-font
   const nsCSSValue* variantAlternatesValue =
     aRuleData->ValueForFontVariantAlternates();
   int32_t variantAlternates = 0;
 
   switch (variantAlternatesValue->GetUnit()) {
   case eCSSUnit_Inherit:
--- a/layout/style/test/property_database.js
+++ b/layout/style/test/property_database.js
@@ -6354,17 +6354,29 @@ if (IsCSSPropertyPrefEnabled("layout.css
       "'wdth' 1 'wght' 2", // missing comma between pairs
       "'wdth' 1,", // trailing comma
       "'wdth' 1 , , 'wght' 2", // extra comma
       "'wdth', 1" // comma within pair
     ],
     unbalanced_values: [
       "'wdth\" 1", "\"wdth' 1" // mismatched quotes
     ]
-  }
+  };
+  gCSSProperties["font-optical-sizing"] = {
+    domProp: "fontOpticalSizing",
+    inherited: true,
+    type: CSS_TYPE_LONGHAND,
+    applies_to_first_letter: true,
+    applies_to_first_line: true,
+    applies_to_placeholder: true,
+    initial_values: [ "auto" ],
+    other_values: [ "none" ],
+    invalid_values: [ "on" ]
+  };
+  gCSSProperties["font"].subproperties.push("font-optical-sizing");
 }
 
 if (IsCSSPropertyPrefEnabled("layout.css.frames-timing.enabled")) {
   gCSSProperties["animation-timing-function"].other_values.push(
     "frames(2)", "frames(1000)", "frames( 2 )");
   gCSSProperties["animation-timing-function"].invalid_values.push(
     "frames(1)", "frames(-2)", "frames", "frames()", "frames(,)",
     "frames(a)", "frames(2.0)", "frames(2.5)", "frames(2 3)");
--- a/layout/style/test/test_bug377947.html
+++ b/layout/style/test/test_bug377947.html
@@ -56,16 +56,17 @@ var all_but_one = {
   "font-variant": "normal",
   "font-weight": "bold",
   "font-size": "small",
   "font-stretch": "normal",
   "font-size-adjust": "none", // has to be default value
   "font-feature-settings": "normal", // has to be default value
   "font-language-override": "normal", // has to be default value
   "font-kerning": "auto", // has to be default value
+  "font-optical-sizing": "auto", // has to be default value
   "font-synthesis": "weight style", // has to be default value
   "font-variant-alternates": "normal", // has to be default value
   "font-variant-caps": "normal", // has to be default value
   "font-variant-east-asian": "normal", // has to be default value
   "font-variant-ligatures": "normal", // has to be default value
   "font-variant-numeric": "normal", // has to be default value
   "font-variant-position": "normal" // has to be default value
 };
--- a/layout/style/test/test_system_font_serialization.html
+++ b/layout/style/test/test_system_font_serialization.html
@@ -12,16 +12,31 @@ https://bugzilla.mozilla.org/show_bug.cg
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=475214">Mozilla Bug 475214</a>
 <p id="display"></p>
 <div id="content">
   
 </div>
 <pre id="test">
 <script type="application/javascript">
 
+/* Helper copied from property_database.js */
+function IsCSSPropertyPrefEnabled(prefName)
+{
+  try {
+    if (SpecialPowers.getBoolPref(prefName)) {
+      return true;
+    }
+  } catch (ex) {
+    ok(false, "Failed to look up property-controlling pref '" +
+       prefName + "' (" + ex + ")");
+  }
+
+  return false;
+}
+
 /** Test for Bug 475214 **/
 
 var e = document.getElementById("content");
 var s = e.style;
 
 e.style.font = "menu";
 is(e.style.cssText, "font: menu;", "serialize system font alone");
 is(e.style.font, "menu", "font getter returns value");
@@ -45,29 +60,33 @@ is(e.style.font, "menu", "font getter re
 // Servo doesn't support parsing -moz-use-system-font
 if (!SpecialPowers.DOMWindowUtils.isStyledByServo) {
   e.setAttribute("style", "font: menu; font-weight: -moz-use-system-font !important");
   is(e.style.cssText, "font: menu; font-weight: -moz-use-system-font !important;", "serialize system font and subproperty that is important");
   is(e.style.font, "", "font getter returns nothing");
 }
 
 e.setAttribute("style", "font: inherit; font-family: Helvetica;");
-const EXPECTED_DECLS = [
+EXPECTED_DECLS = [
   "font-family: Helvetica;",
   "font-feature-settings: inherit;",
   "font-kerning: inherit;",
   "font-language-override: inherit;",
   "font-size-adjust: inherit;",
   "font-size: inherit;",
   "font-stretch: inherit;",
   "font-style: inherit;",
   "font-variant: inherit;",
   "font-weight: inherit;",
   "line-height: inherit;",
-].join(" ");
+];
+if (IsCSSPropertyPrefEnabled("layout.css.font-variations.enabled")) {
+  EXPECTED_DECLS.push("font-optical-sizing: inherit;");
+}
+EXPECTED_DECLS = EXPECTED_DECLS.sort().join(" ");
 let sortedDecls = e.style.cssText.split(/ (?=font-|line-)/).sort().join(" ");
 is(sortedDecls, EXPECTED_DECLS, "don't serialize system font for font:inherit");
 is(e.style.font, "", "font getter returns nothing");
 
 </script>
 </pre>
 </body>
 </html>
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1158,9 +1158,9 @@ static const TransportSecurityPreload kP
   { "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
   { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
 };
 
 // Pinning Preload List Length = 485;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1528620202936000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1528661207354000);
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -10,17 +10,16 @@ 0vi.org: could not connect to host
 0x52.org: could not connect to host
 0xdc.io: could not connect to host
 1000serien.com: could not connect to host
 1001.best: could not connect to host
 100onrainkajino.com: could not connect to host
 10gb.io: could not connect to host
 135vv.com: could not connect to host
 13826145000.com: could not connect to host
-166166.com: could not connect to host
 1912x.com: could not connect to host
 1er-secours.ch: could not connect to host
 1gsoft.com: could not connect to host
 1nian.vip: could not connect to host
 1q365a.com: could not connect to host
 249cq.com: could not connect to host
 24ip.fr: could not connect to host
 263.info: could not connect to host
@@ -40,17 +39,16 @@ 439191.com: could not connect to host
 47tech.com: could not connect to host
 4baby.com.br: could not connect to host
 4d2.xyz: could not connect to host
 4host.ch: could not connect to host
 4loc.us: could not connect to host
 4mm.org: could not connect to host
 4web-hosting.com: could not connect to host
 5000yz.com: could not connect to host
-517vpn.cn: could not connect to host
 525.info: could not connect to host
 52kb1.com: could not connect to host
 52neptune.com: could not connect to host
 546802.com: could not connect to host
 5ece.de: could not connect to host
 68277.me: could not connect to host
 692b8c32.de: could not connect to host
 69mentor.com: could not connect to host
@@ -73,24 +71,24 @@ abloop.com: could not connect to host
 abolition.co: could not connect to host
 abstractbarista.com: could not connect to host
 abstractbarista.net: could not connect to host
 acat.io: could not connect to host
 accolade.com.br: could not connect to host
 accwing.com: could not connect to host
 acecerts.co.uk: could not connect to host
 acgaudio.com: could not connect to host
+achenar.net: could not connect to host
 achterhoekseveiligheidsbeurs.nl: could not connect to host
 acpinformatique.fr: could not connect to host
 acrossgw.com: could not connect to host
 acwcerts.co.uk: could not connect to host
 ad-disruptio.fr: could not connect to host
 adamcoffee.net: could not connect to host
 adamdixon.co.uk: could not connect to host
-adamgold.net: could not connect to host
 adec-emsa.ae: could not connect to host
 adult.properties: could not connect to host
 advaithnikhi.ml: could not connect to host
 advaithnikhi.tk: could not connect to host
 advanced-online.eu: could not connect to host
 adzie.xyz: could not connect to host
 aevpn.org: could not connect to host
 affiliateroyale.com: could not connect to host
@@ -101,21 +99,19 @@ agingstop.net: could not connect to host
 agoravm.tk: could not connect to host
 agowa.eu: could not connect to host
 agowa338.de: could not connect to host
 agrilinks.org: could not connect to host
 ahelos.tk: could not connect to host
 ahlz.sk: could not connect to host
 aibaoyou.com: could not connect to host
 aiicy.org: could not connect to host
-aiida.se: could not connect to host
 aikenorganics.com: could not connect to host
 aim-consultants.com: could not connect to host
 airclass.com: could not connect to host
-aireaseleaks.org: could not connect to host
 ajetaci.cz: could not connect to host
 akiba-server.info: could not connect to host
 akita-stream.com: could not connect to host
 akoww.de: could not connect to host
 akul.co.in: could not connect to host
 al-f.net: could not connect to host
 alasta.info: could not connect to host
 alauda-home.de: could not connect to host
@@ -153,21 +149,21 @@ andreamcnett.com: could not connect to h
 andreas-kluge.eu: could not connect to host
 andreaskluge.eu: could not connect to host
 andrei-coman.com: could not connect to host
 andrewdaws.co: could not connect to host
 andrewdaws.info: could not connect to host
 andrewdaws.me: could not connect to host
 andrewdaws.tv: could not connect to host
 andrewrdaws.com: could not connect to host
-andronika.net: could not connect to host
 anecuni-club.com: could not connect to host
 anecuni-rec.com: could not connect to host
 angrydragonproductions.com: could not connect to host
 anitube-nocookie.ch: could not connect to host
+anivar.net: could not connect to host
 annetaan.fi: could not connect to host
 anshumanbiswas.com: could not connect to host
 antimatiere.space: could not connect to host
 anyways.at: could not connect to host
 aojiao.org: could not connect to host
 apkoyunlar.club: could not connect to host
 appdrinks.com: could not connect to host
 apple.ax: could not connect to host
@@ -203,16 +199,17 @@ astrath.net: could not connect to host
 astrea-voetbal-groningen.nl: could not connect to host
 asuhe.xyz: could not connect to host
 async.be: could not connect to host
 at1.co: could not connect to host
 athi.pl: could not connect to host
 atigerseye.com: could not connect to host
 atlas-5.site: could not connect to host
 aufmerksamkeitsstudie.com: could not connect to host
+augix.net: could not connect to host
 aur.rocks: could not connect to host
 ausec.ch: could not connect to host
 ausschreibungen-suedtirol.it: could not connect to host
 austinsutphin.com: could not connect to host
 australiancattle.dog: could not connect to host
 authint.com: could not connect to host
 authland.com: could not connect to host
 authsrv.nl.eu.org: could not connect to host
@@ -224,17 +221,16 @@ avdelivers.com: could not connect to hos
 avi9526.pp.ua: could not connect to host
 avonlearningcampus.com: could not connect to host
 awan.tech: could not connect to host
 awei.pub: could not connect to host
 awf0.xyz: could not connect to host
 axel-fischer.science: could not connect to host
 b9winner.com: could not connect to host
 babelfisch.eu: could not connect to host
-babypibu.com: could not connect to host
 bacimg.com: could not connect to host
 badbee.cc: could not connect to host
 bailbondsaffordable.com: could not connect to host
 balonmano.co: could not connect to host
 bananensap.nl: could not connect to host
 bandally.net: could not connect to host
 bandarifamily.com: could not connect to host
 bannisbierblog.de: could not connect to host
@@ -278,17 +274,16 @@ bey.io: could not connect to host
 bezoomnyville.com: could not connect to host
 bfi.wien: could not connect to host
 bfrailwayclub.cf: could not connect to host
 bianinapiccanovias.com: could not connect to host
 bichonmaltes.com.br: could not connect to host
 bigerbio.com: could not connect to host
 billaud.eu.org: could not connect to host
 billigpoker.dk: could not connect to host
-billionairemailinglist.com: could not connect to host
 billpro.com.au: could not connect to host
 binam.center: could not connect to host
 bingcheung.com: could not connect to host
 binimo.com: could not connect to host
 biou.me: could not connect to host
 bip.gov.sa: could not connect to host
 biscuits-rec.com: could not connect to host
 biscuits-shop.com: could not connect to host
@@ -357,17 +352,16 @@ buenotour.ru: could not connect to host
 bugsmashed.com: could not connect to host
 bugtrack.co.uk: could not connect to host
 buka.jp: could not connect to host
 bul3seas.eu: could not connect to host
 bulletbabu.com: could not connect to host
 bumshow.ru: could not connect to host
 bunadarbankinn.is: could not connect to host
 bunnyvishal.com: could not connect to host
-burr.is: could not connect to host
 businessetmarketing.com: could not connect to host
 businessfurs.info: could not connect to host
 businesshub.cz: could not connect to host
 businessmodeler.se: could not connect to host
 buyharpoon.com: could not connect to host
 buyhealth.shop: could not connect to host
 buyingsellingflorida.com: could not connect to host
 buyprofessional.shop: could not connect to host
@@ -400,17 +394,16 @@ carloshmm.com: could not connect to host
 carloshmm.stream: could not connect to host
 carlovanwyk.com: could not connect to host
 carlsbouncycastlesandhottubs.co.uk: could not connect to host
 carrando.de: could not connect to host
 casinoreal.com: could not connect to host
 catcontent.cloud: could not connect to host
 catsmagic.pp.ua: could not connect to host
 caughtredhanded.co.nz: could not connect to host
-cbdev.de: could not connect to host
 ccayearbook.com: could not connect to host
 ccl-sti.ch: could not connect to host
 ccprwebsite.org: could not connect to host
 cctld.com: could not connect to host
 cdmon.tech: could not connect to host
 cdnk39.com: could not connect to host
 cee.io: could not connect to host
 cegfw.com: could not connect to host
@@ -428,16 +421,17 @@ chaouby.com: could not connect to host
 charge.co: could not connect to host
 charmyadesara.com: could not connect to host
 cheesefusion.com: could not connect to host
 chez-janine.de: could not connect to host
 china-line.org: could not connect to host
 chinternet.xyz: could not connect to host
 chloe.re: could not connect to host
 chocolat-suisse.ch: could not connect to host
+chosenplaintext.org: could not connect to host
 chrisebert.net: could not connect to host
 christianhoffmann.info: could not connect to host
 christianpusch.de: could not connect to host
 christiansayswords.com: could not connect to host
 chromaryu.net: could not connect to host
 chziyue.com: could not connect to host
 cipher.land: could not connect to host
 cipherli.st: could not connect to host
@@ -452,17 +446,16 @@ clearchatsandbox.com: could not connect 
 clearviewwealthprojector.com.au: could not connect to host
 clic-music.com: could not connect to host
 clickclock.cc: could not connect to host
 clintonbloodworth.com: could not connect to host
 cloudberlin.goip.de: could not connect to host
 cloudbleed.info: could not connect to host
 cloudimproved.com: could not connect to host
 cloudimprovedtest.com: could not connect to host
-cloudkit.pro: could not connect to host
 cloudwarez.xyz: could not connect to host
 clownish.co.il: could not connect to host
 clycat.ru: could not connect to host
 cmrss.com: could not connect to host
 cms-weble.jp: could not connect to host
 cmweller.com: could not connect to host
 cnetw.xyz: could not connect to host
 cnlic.com: could not connect to host
@@ -560,28 +553,28 @@ davidscherzer.at: could not connect to h
 davidstuff.net: could not connect to host
 davros.eu: could not connect to host
 davros.ru: could not connect to host
 dawnson.is: could not connect to host
 dawnsonb.com: could not connect to host
 day-peak.com: could not connect to host
 days.one: could not connect to host
 dbox.ga: could not connect to host
+dcc.cat: could not connect to host
 dcc.moe: could not connect to host
 dden.website: could not connect to host
 dden.xyz: could not connect to host
 ddmeportal.com: could not connect to host
 de-servers.de: could not connect to host
 deborahmarinelli.eu: could not connect to host
 decoyrouting.com: could not connect to host
 dedietrich-asia.com: could not connect to host
 deepcreampie.com: could not connect to host
 deeps.cat: could not connect to host
 dekasiba.com: could not connect to host
-dellipaoli.com: could not connect to host
 deloittequant.com: could not connect to host
 dengchangdong.com: could not connect to host
 depedtayo.ph: could not connect to host
 derchris.me: could not connect to host
 derivativeshub.pro: could not connect to host
 dermacarecomplex.com: could not connect to host
 dermapuur.nl: could not connect to host
 detecte-fuite.ch: could not connect to host
@@ -601,16 +594,17 @@ dicgaming.net: could not connect to host
 dick.red: could not connect to host
 didierlaumen.be: could not connect to host
 diemogebhardt.com: could not connect to host
 dieser.me: could not connect to host
 digihyp.ch: could not connect to host
 digioccumss.ddns.net: could not connect to host
 digitalhurricane.io: could not connect to host
 digitalrxcloud.com: could not connect to host
+digitalsurge.io: could not connect to host
 digitalwasteland.net: could not connect to host
 diguass.us: could not connect to host
 dijks.com: could not connect to host
 dingss.com: could not connect to host
 dinotv.at: could not connect to host
 dinube.com: could not connect to host
 dionysus.se: could not connect to host
 directtwo.solutions: could not connect to host
@@ -623,16 +617,17 @@ discord-chan.net: could not connect to h
 discoveringdocker.com: could not connect to host
 discoveryballoon.org: could not connect to host
 disinisharing.com: could not connect to host
 distinctivephotography.com.au: could not connect to host
 ditch.ch: could not connect to host
 diwei.vip: could not connect to host
 dixmag.com: could not connect to host
 djul.net: could not connect to host
+dlitz.net: could not connect to host
 dlouwrink.nl: could not connect to host
 dlyl888.com: could not connect to host
 dm4productions.com: could not connect to host
 dmdre.com: could not connect to host
 dna.li: could not connect to host
 dnfc.rocks: could not connect to host
 dnmaze.com: could not connect to host
 do-it.cz: could not connect to host
@@ -647,17 +642,16 @@ dojifish.space: could not connect to hos
 dokan-e.com: could not connect to host
 dokuboard.com: could not connect to host
 dolphin-hosting.com: could not connect to host
 domainoo.com: could not connect to host
 domengrad.ru: could not connect to host
 domfee.com: could not connect to host
 dongkexue.com: could not connect to host
 doopdidoop.com: could not connect to host
-dopesoft.de: could not connect to host
 dougferris.id.au: could not connect to host
 doyoulyft.com: could not connect to host
 doze-cloud.tech: could not connect to host
 dragonwork.me: could not connect to host
 dranderle.com: could not connect to host
 dreamaholic.club: could not connect to host
 dreaming.solutions: could not connect to host
 dreizwosechs.de: could not connect to host
@@ -675,16 +669,17 @@ droomhuis-in-zuid-holland-kopen.nl: coul
 drunkscifi.com: could not connect to host
 dubrovskiy.net: could not connect to host
 dubrovskiy.pro: could not connect to host
 duch.cloud: could not connect to host
 duelsow.eu: could not connect to host
 duesee.org: could not connect to host
 dujsq.com: could not connect to host
 dujsq.top: could not connect to host
+dukefox.com: could not connect to host
 duks.com.br: could not connect to host
 dunklau.fr: could not connect to host
 duo.money: could not connect to host
 durangoenergyllc.com: could not connect to host
 dwnld.me: could not connect to host
 dynamic-networks.be: could not connect to host
 dyz.pw: could not connect to host
 e-mak.eu: could not connect to host
@@ -706,17 +701,16 @@ eeb98.com: could not connect to host
 eeetrust.org: could not connect to host
 effectiveosgi.com: could not connect to host
 ehrlichesbier.de: could not connect to host
 ehuber.info: could not connect to host
 eigpropertyauctions.co.uk: could not connect to host
 einhorn.space: could not connect to host
 einsatzstiefel.info: could not connect to host
 einsteinathome.org: could not connect to host
-eit-web.de: could not connect to host
 ekobudisantoso.net: could not connect to host
 elbetech.net: could not connect to host
 electricalcontrolpanels.co.uk: could not connect to host
 elektronring.com: could not connect to host
 elenorsmadness.org: could not connect to host
 elevateandprosper.com: could not connect to host
 elitesensual.com.br: could not connect to host
 elonbase.com: could not connect to host
@@ -729,16 +723,17 @@ embellir-aroma.com: could not connect to
 embellir-kyujin.com: could not connect to host
 embracethedarkness.co.uk: could not connect to host
 emilyjohnson.ga: could not connect to host
 eminhuseynov.com: could not connect to host
 emperor.blog: could not connect to host
 emrenovation.com: could not connect to host
 endohaus.us: could not connect to host
 endspamwith.us: could not connect to host
+engg.ca: could not connect to host
 enoou.com: could not connect to host
 enpalmademallorca.info: could not connect to host
 envelope.co.nz: could not connect to host
 er-music.com: could not connect to host
 erad.fr: could not connect to host
 erigrid.eu: could not connect to host
 erspro.net: could not connect to host
 erwinwensveen.nl: could not connect to host
@@ -782,22 +777,20 @@ fancy-bridge.com: could not connect to h
 faretravel.co.uk: could not connect to host
 farm24.co.uk: could not connect to host
 farmacia.pt: could not connect to host
 fastaim.de: could not connect to host
 fastbackmbg.be: could not connect to host
 faxreader.net: could not connect to host
 fbi.pw: could not connect to host
 feac.us: could not connect to host
-fed51.com: could not connect to host
 fedn.it: could not connect to host
 feedstringer.com: could not connect to host
 feirlane.org: could not connect to host
 feisbed.com: could not connect to host
-fejes.house: could not connect to host
 felger-times.fr: could not connect to host
 fengyadi.com: could not connect to host
 feras-alhajjaji.com: could not connect to host
 fetclips.se: could not connect to host
 fgequipamentos.com.br: could not connect to host
 fhsseniormens.club: could not connect to host
 ficklenote.net: could not connect to host
 fierman.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
@@ -817,16 +810,17 @@ fix-the-timeline.org: could not connect 
 fixmyglitch.com: could not connect to host
 fixthetimeline.com: could not connect to host
 fixthetimeline.org: could not connect to host
 flam.io: could not connect to host
 flamingcow.tv: could not connect to host
 flexinvesting.fi: could not connect to host
 floth.at: could not connect to host
 flow.su: could not connect to host
+flowersbylegacy.com: could not connect to host
 flucky.xyz: could not connect to host
 flugplatz-edvc.de: could not connect to host
 flyingdoggy.net: could not connect to host
 focalforest.com: could not connect to host
 fojing.com: could not connect to host
 forcamp.ga: could not connect to host
 forsyththeatre.com: could not connect to host
 fortuna-loessnitz.de: could not connect to host
@@ -843,20 +837,20 @@ frank.fyi: could not connect to host
 franklinhua.com: could not connect to host
 franzt.ovh: could not connect to host
 fredliang.cn: could not connect to host
 fredloya.com: could not connect to host
 fredtec.ru: could not connect to host
 free8.xyz: could not connect to host
 freeassangenow.org: could not connect to host
 freejidi.com: could not connect to host
-freelanceessaywriters.com: could not connect to host
 freeshkre.li: could not connect to host
 freesitemapgenerator.com: could not connect to host
 freesounding.com: could not connect to host
+freesounding.ru: could not connect to host
 freshcode.nl: could not connect to host
 frickenate.com: could not connect to host
 friedhelm-wolf.de: could not connect to host
 frolov.net: could not connect to host
 fromlemaytoz.com: could not connect to host
 frosty-gaming.xyz: could not connect to host
 frp-roleplay.de: could not connect to host
 frusky.net: could not connect to host
@@ -968,17 +962,16 @@ greuel.online: could not connect to host
 greyhash.se: could not connect to host
 gritte.net: could not connect to host
 grossell.ru: could not connect to host
 grossmisconduct.news: could not connect to host
 gruelang.org: could not connect to host
 grusenmeyer.be: could not connect to host
 gugaltika-ipb.org: could not connect to host
 guinea-pig.co: could not connect to host
-gumannp.de: could not connect to host
 gunhunter.com: could not connect to host
 gus.moe: could not connect to host
 gutuia.blue: could not connect to host
 gvchannel.xyz: could not connect to host
 gxgx.org: could not connect to host
 gzpblog.com: could not connect to host
 h2cdn.cloud: could not connect to host
 h3artbl33d.nl: could not connect to host
@@ -987,16 +980,17 @@ hackbubble.me: could not connect to host
 hackmeplz.com: could not connect to host
 haktec.de: could not connect to host
 hakugin.me: could not connect to host
 halcyonsbastion.com: could not connect to host
 half-logic.eu.org: could not connect to host
 halta.info: could not connect to host
 hamking.tk: could not connect to host
 hamu.blue: could not connect to host
+handyglas.com: could not connect to host
 happyagain.de: could not connect to host
 happyagain.se: could not connect to host
 happytiger.eu: could not connect to host
 hapsfordmill.co.uk: could not connect to host
 hapvm.com: could not connect to host
 hardeman.nu: could not connect to host
 harrypottereditor.net: could not connect to host
 has-no-email-set.de: could not connect to host
@@ -1027,23 +1021,26 @@ helsingfors.guide: could not connect to 
 hemdal.se: could not connect to host
 henhenlu.com: could not connect to host
 henriknoerr.com: could not connect to host
 hentai.design: could not connect to host
 hentaimaster.net: could not connect to host
 here.ml: could not connect to host
 heribe-maruo.com: could not connect to host
 hermes-servizi.it: could not connect to host
+herndl.org: could not connect to host
 hetmeisjeachterpauw.nl: could not connect to host
 hexobind.com: could not connect to host
 hfu.io: could not connect to host
 hg881.com: could not connect to host
 hialatv.com: could not connect to host
+hideouswebsite.com: could not connect to host
 hill.selfip.net: could not connect to host
 hintermeier-rae.at: could not connect to host
+hiphop.ren: could not connect to host
 hirte-digital.de: could not connect to host
 history.pe: could not connect to host
 hitchunion.org: could not connect to host
 hjes.com.ve: could not connect to host
 hoffens.se: could not connect to host
 hohm.in: could not connect to host
 holidayincotswolds.co.uk: could not connect to host
 homesfordinner.ca: could not connect to host
@@ -1058,17 +1055,16 @@ hopglass.eu: could not connect to host
 hopglass.net: could not connect to host
 horvathd.eu: could not connect to host
 hosted-oswa.org: could not connect to host
 hotelmadhuwanvihar.com: could not connect to host
 hozinga.de: could not connect to host
 hr98.tk: could not connect to host
 hserver.top: could not connect to host
 httptest.net: could not connect to host
-huang.nu: could not connect to host
 huangzenghao.cn: could not connect to host
 huangzenghao.com: could not connect to host
 hudingyuan.cn: could not connect to host
 huiser.nl: could not connect to host
 hukaloh.com: could not connect to host
 hukkatavara.com: could not connect to host
 hunger.im: could not connect to host
 huongquynh.com: could not connect to host
@@ -1121,34 +1117,31 @@ imperiumnova.info: could not connect to 
 increasetestosteronelevels.org: could not connect to host
 inderagamono.net: could not connect to host
 industreiler.com: could not connect to host
 industreiler.com.br: could not connect to host
 inexpensivecomputers.net: could not connect to host
 informatik.zone: could not connect to host
 infoworm.org: could not connect to host
 infruction.com: could not connect to host
-injust.eu.org: could not connect to host
-injust.me: could not connect to host
 innovativebuildingsolutions.co.za: could not connect to host
 innovativeideaz.org: could not connect to host
 inondation.ch: could not connect to host
 inscript.pl: could not connect to host
 insouciant.org: could not connect to host
 inst.mobi: could not connect to host
 instasex.ch: could not connect to host
 intellar.com: could not connect to host
 intelldynamics.com: could not connect to host
 interspot.nl: could not connect to host
 interviewpipeline.co.uk: could not connect to host
 intracom.com: could not connect to host
 invenio.software: could not connect to host
 investingdiary.cn: could not connect to host
 investorloanshub.com: could not connect to host
-invitescene.com: could not connect to host
 iodu.re: could not connect to host
 ip.or.at: could not connect to host
 iphonechina.net: could not connect to host
 iplog.info: could not connect to host
 ipnetworking.net: could not connect to host
 irayo.net: could not connect to host
 irinkeby.nu: could not connect to host
 isamiok.com: could not connect to host
@@ -1186,32 +1179,32 @@ japan4you.org: could not connect to host
 javascriptlab.fr: could not connect to host
 jazzinutrecht.info: could not connect to host
 jbbd.fr: could not connect to host
 jcaicedo.tk: could not connect to host
 jccars-occasions.be: could not connect to host
 jccrew.org: could not connect to host
 jcraft.us: could not connect to host
 jean-remy.ch: could not connect to host
+jecho.cn: could not connect to host
 jeffersonregan.org: could not connect to host
 jens.hk: could not connect to host
 jerrypau.ca: could not connect to host
 jhburton.co.uk: could not connect to host
 jiangzm.com: could not connect to host
 jiaqiang.vip: could not connect to host
 jimmycn.com: could not connect to host
 jmb.lc: could not connect to host
 jmoreau.ddns.net: could not connect to host
 jmvbmx.ch: could not connect to host
 jobmedic.com: could not connect to host
 joecod.es: could not connect to host
 joetyson.io: could not connect to host
 johnrockefeller.net: could not connect to host
 johntomasowa.com: could not connect to host
-jonas-wenk.de: could not connect to host
 jonathansanchez.pro: could not connect to host
 jonfor.net: could not connect to host
 jonpads.com: could not connect to host
 jooto.com: could not connect to host
 jorovik.com: could not connect to host
 jpod.cc: could not connect to host
 js88.sg: could not connect to host
 jsc7776.com: could not connect to host
@@ -1236,16 +1229,17 @@ kanganer.com: could not connect to host
 kangzaber.com: could not connect to host
 kapo.info: could not connect to host
 karamna.com: could not connect to host
 karuneshjohri.com: could not connect to host
 kat.al: could not connect to host
 kawaiiku.com: could not connect to host
 kawaiiku.de: could not connect to host
 kaydan.io: could not connect to host
+keakon.net: could not connect to host
 kearney.io: could not connect to host
 kela.jp: could not connect to host
 kellyandantony.com: could not connect to host
 kelm.me: could not connect to host
 kermadec.com: could not connect to host
 kerus.net: could not connect to host
 keshausconsulting.com: could not connect to host
 kevinbowers.me: could not connect to host
@@ -1261,36 +1255,38 @@ kigmbh.com: could not connect to host
 kikuzuki.org: could not connect to host
 kinepolis-studio.ga: could not connect to host
 kingbird.me: could not connect to host
 kingclass.cn: could not connect to host
 kingtecservices.com: could not connect to host
 kirill.ws: could not connect to host
 kj1396.net: could not connect to host
 kjoglum.me: could not connect to host
+klausbrinch.dk: could not connect to host
 kleinblogje.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
 klingeletest.de: could not connect to host
 knep.me: could not connect to host
 kngk-azs.ru: could not connect to host
 knightsweep.com: could not connect to host
 knownsec.cf: could not connect to host
+koenen-bau.de: could not connect to host
 koez-mangal.ch: could not connect to host
 koketteriet.se: could not connect to host
 kollawat.me: could not connect to host
 kongbaofang.com: could not connect to host
 konicaprinterdriver.com: could not connect to host
 konventseliten.se: could not connect to host
 kopfsalat.eu: could not connect to host
 koppelvlak.net: could not connect to host
+kotausaha.com: could not connect to host
 kotitesti.fi: could not connect to host
 kotorimusic.ga: could not connect to host
 kozmik.co: could not connect to host
 krampus-fischamend.at: could not connect to host
 kriegskindernothilfe.de: could not connect to host
-kriptosec.com: could not connect to host
 ksero.center: could not connect to host
 ktube.yt: could not connect to host
 kubusadvocaten.nl: could not connect to host
 kuko-crews.org: could not connect to host
 kwat.chat: could not connect to host
 kwikmed.eu: could not connect to host
 kwipi.com: could not connect to host
 kyberna.xyz: could not connect to host
@@ -1345,22 +1341,18 @@ lesdouceursdeliyana.com: could not conne
 letsgetintouch.com: could not connect to host
 leveredge.net: could not connect to host
 lezdomsm.com: could not connect to host
 lfaz.org: could not connect to host
 lheinrich.org: could not connect to host
 lhsj28.com: could not connect to host
 lhsj68.com: could not connect to host
 lhsj78.com: could not connect to host
-lianye1.cc: could not connect to host
 lianye2.cc: could not connect to host
 lianye3.cc: could not connect to host
-lianye4.cc: could not connect to host
-lianye5.cc: could not connect to host
-lianye6.cc: could not connect to host
 liaozheqi.cn: could not connect to host
 libertas-tech.com: could not connect to host
 libscode.com: could not connect to host
 liceserv.com: could not connect to host
 likenosis.com: could not connect to host
 lingting.vip: could not connect to host
 linkages.org: could not connect to host
 linksanitizer.com: could not connect to host
@@ -1370,63 +1362,67 @@ linux-admin-california.com: could not co
 linux.sb: could not connect to host
 linuxcode.net: could not connect to host
 linvx.org: could not connect to host
 liquidcomm.net: could not connect to host
 lisieuxarquitetura.com.br: could not connect to host
 lissabon.guide: could not connect to host
 litcomphonors.com: could not connect to host
 littlelundgrenladies.com: could not connect to host
+litz.ca: could not connect to host
+litzenberger.ca: could not connect to host
 liukang.tech: could not connect to host
 llvm.us: could not connect to host
 loanstreet.be: could not connect to host
 lobosdomain.no-ip.info: could not connect to host
 localhorst.xyz: could not connect to host
 locker3.com: could not connect to host
 locksport.org.nz: could not connect to host
 logcat.info: could not connect to host
 logic8.ml: could not connect to host
 logicchen.com: could not connect to host
 logimagine.com: could not connect to host
 loket.nl: could not connect to host
 loli.net: could not connect to host
+loony.info: could not connect to host
 loopower.com: could not connect to host
 loothole.com: could not connect to host
 loqyu.co: could not connect to host
 losebellyfat.pro: could not connect to host
-lostserver.com: could not connect to host
 loveandloyalty.se: could not connect to host
 lowt.us: could not connect to host
 loyaltech.ch: could not connect to host
 lstma.com: could not connect to host
 lszj.com: could not connect to host
 ltransferts.com: could not connect to host
 luav.org: could not connect to host
 lubot.net: could not connect to host
 lucascodes.com: could not connect to host
 lucidlogs.com: could not connect to host
 lucy.science: could not connect to host
+lugbb.org: could not connect to host
 lukasunger.cz: could not connect to host
 lukasunger.net: could not connect to host
 lukasztkacz.com: could not connect to host
 lumer.tech: could not connect to host
 luminancy.com: could not connect to host
 luom.net: could not connect to host
 luxonetwork.com: could not connect to host
 lycly.me: could not connect to host
 m-generator.com: could not connect to host
 m-plan.com: could not connect to host
 m4570.xyz: could not connect to host
 m4g.ru: could not connect to host
 maartenterpstra.xyz: could not connect to host
-maddreefer.com: could not connect to host
 madeintucson.org: could not connect to host
 madnetwork.org: could not connect to host
 madreacqua.org: could not connect to host
 madusecurity.com: could not connect to host
+magentaize.net: could not connect to host
+magicball.co: could not connect to host
 magnacumlaude.co: could not connect to host
 mahansexcavating.com: could not connect to host
 maik-mahlow.de: could not connect to host
 mailon.ga: could not connect to host
 makeit-so.de: could not connect to host
 makeuplove.nl: could not connect to host
 malamutedoalasca.com.br: could not connect to host
 malesbdsm.com: could not connect to host
@@ -1441,17 +1437,16 @@ mariusschulte.de: could not connect to h
 mark-armstrong-gaming.com: could not connect to host
 marketingdesignu.cz: could not connect to host
 markllego.com: could not connect to host
 marko-fenster24.de: could not connect to host
 markrego.com: could not connect to host
 martin-mattel.com: could not connect to host
 martins.im: could not connect to host
 marxist.party: could not connect to host
-mashandco.it: could not connect to host
 mastodon.expert: could not connect to host
 mastodon.my: could not connect to host
 matarrosabierzo.com: could not connect to host
 mathijskingma.nl: could not connect to host
 matrix.ac: could not connect to host
 matthewtester.com: could not connect to host
 matthey.nl: could not connect to host
 max-moeglich.de: could not connect to host
@@ -1466,16 +1461,17 @@ mbwemmel-usedcars.be: could not connect 
 mcdanieldevelopmentservices.com: could not connect to host
 mcideas.tk: could not connect to host
 mcjackk77.com: could not connect to host
 mckenry.net: could not connect to host
 mckinley1.com: could not connect to host
 mcsa-usa.org: could not connect to host
 mcsnovatamabayan.com: could not connect to host
 me-dc.com: could not connect to host
+meadowviewfarms.org: could not connect to host
 meathealth.com: could not connect to host
 mecanicadom.com: could not connect to host
 mediadandy.com: could not connect to host
 mediadex.be: could not connect to host
 medicinskavranje.edu.rs: could not connect to host
 mediweed.tk: could not connect to host
 medy-me.com: could not connect to host
 megadrol.com: could not connect to host
@@ -1491,16 +1487,17 @@ menzaijia.com: could not connect to host
 mercanix.co.uk: could not connect to host
 mes10doigts.ovh: could not connect to host
 metaether.net: could not connect to host
 metrix-money-ptc.com: could not connect to host
 metrix.design: could not connect to host
 mexior.nl: could not connect to host
 meyeraviation.com: could not connect to host
 mhjuma.com: could not connect to host
+miaonagemi.com: could not connect to host
 micaiahparker.com: could not connect to host
 michaelcullen.name: could not connect to host
 michaelkuchta.me: could not connect to host
 michaelsulzer.com: could not connect to host
 michaelsulzer.eu: could not connect to host
 michasfahrschule.com: could not connect to host
 michel.pt: could not connect to host
 microblading.pe: could not connect to host
@@ -1547,16 +1544,17 @@ moobo.xyz: could not connect to host
 mooselook.de: could not connect to host
 moparcraft.com: could not connect to host
 moparcraft.org: could not connect to host
 mordrum.com: could not connect to host
 morepopcorn.co.nz: could not connect to host
 morfitronik.pl: could not connect to host
 morz.org: could not connect to host
 mosaique-lachenaie.fr: could not connect to host
+mosin.org: could not connect to host
 moskva.guide: could not connect to host
 motocyklovedily.cz: could not connect to host
 motomorgen.com: could not connect to host
 motorbiketourhanoi.com: could not connect to host
 mountainadventureseminars.com: could not connect to host
 moving-pixtures.de: could not connect to host
 mowalls.net: could not connect to host
 mozzilla.cz: could not connect to host
@@ -1565,16 +1563,17 @@ mrafrohead.com: could not connect to hos
 mremallin.ca: could not connect to host
 mrizzio.com: could not connect to host
 mrjooz.com: could not connect to host
 mrliu.me: could not connect to host
 msgallery.tk: could not connect to host
 msz-fotografie.de: could not connect to host
 mtirc.co: could not connect to host
 mtn.cc: could not connect to host
+muchohentai.com: could not connect to host
 muj-svet.cz: could not connect to host
 multivpn.fr: could not connect to host
 munduch.cz: could not connect to host
 murraycolin.org: could not connect to host
 murz.tv: could not connect to host
 muslimbanter.co.za: could not connect to host
 mxawei.cn: could not connect to host
 mxlife.org: could not connect to host
@@ -1625,33 +1624,35 @@ nexuscorporation.in: could not connect t
 nfluence.org: could not connect to host
 ngiemboon.net: could not connect to host
 nginxyii.tk: could not connect to host
 nienfun.com: could not connect to host
 nikksno.io: could not connect to host
 niklas.pw: could not connect to host
 nikobradshaw.com: could not connect to host
 nikolasbradshaw.com: could not connect to host
+ninofink.com: could not connect to host
+ninreiei.jp: could not connect to host
 ninux.ch: could not connect to host
 niouininon.eu: could not connect to host
-nipe-systems.de: could not connect to host
 nirada.info: could not connect to host
 nishikino-maki.com: could not connect to host
 niva.synology.me: could not connect to host
 nkadvertising.online: could not connect to host
 nodelab-it.de: could not connect to host
 nodeselect.com: could not connect to host
 noelblog.ga: could not connect to host
 noisebridge.social: could not connect to host
 nolimits.net.nz: could not connect to host
 nonemu.ninja: could not connect to host
 norad.sytes.net: could not connect to host
 northwoodsfish.com: could not connect to host
 nosbenevolesontdutalent.com: could not connect to host
 not-a.link: could not connect to host
+notablog.xyz: could not connect to host
 notalone.gov: could not connect to host
 note7forever.com: could not connect to host
 notesforpebble.com: could not connect to host
 notevencode.com: could not connect to host
 novascan.net: could not connect to host
 novfishing.ru: could not connect to host
 nowremindme.com: could not connect to host
 nsbfalconacademy.org: could not connect to host
@@ -1675,17 +1676,16 @@ oinky.ddns.net: could not connect to hos
 okusiassociates.com: could not connect to host
 oldtimer-trifft-flugplatz.de: could not connect to host
 oliverspringer.eu: could not connect to host
 omnibot.tv: could not connect to host
 oneazcu.com: could not connect to host
 onewebdev.info: could not connect to host
 onsite4u.de: could not connect to host
 onstud.com: could not connect to host
-onthe.network: could not connect to host
 onviga.de: could not connect to host
 onwie.fr: could not connect to host
 ooeste.com: could not connect to host
 open-desk.org: could not connect to host
 open-future.be: could not connect to host
 openconnect.com.au: could not connect to host
 opinion8td.com: could not connect to host
 oranges.tokyo: could not connect to host
@@ -1697,28 +1697,30 @@ oshell.me: could not connect to host
 oshinagaki.jp: could not connect to host
 osmanlitorunu.com: could not connect to host
 ospree.me: could not connect to host
 otellio.com: could not connect to host
 otellio.de: could not connect to host
 otellio.it: could not connect to host
 otinane.eu: could not connect to host
 ourchoice2016.com: could not connect to host
+ourevents.net: could not connect to host
 overkillshop.com: could not connect to host
 owlscrap.ru: could not connect to host
 oxynux.xyz: could not connect to host
 pabloartea.ga: could not connect to host
 packetcrash.net: could not connect to host
 paichai.space: could not connect to host
 painosso.org: could not connect to host
 paio2-rec.com: could not connect to host
 paio2.com: could not connect to host
 palationtrade.com: could not connect to host
 panascais.io: could not connect to host
 pandapsy.com: could not connect to host
+pangci.xyz: could not connect to host
 pardnoy.com: could not connect to host
 pastie.se: could not connect to host
 patrickbusch.net: could not connect to host
 patrickneuro.de: could not connect to host
 paulshir.com: could not connect to host
 paulshir.is: could not connect to host
 pay.ubuntu.com: could not connect to host
 paymon.tj: could not connect to host
@@ -1741,17 +1743,17 @@ persoform.ch: could not connect to host
 petlife.od.ua: could not connect to host
 peuf.shop: could not connect to host
 peykezamin.ir: could not connect to host
 pfudor.tk: could not connect to host
 pgmsource.com: could not connect to host
 pharmaboard.org: could not connect to host
 phdwuda.com: could not connect to host
 philippa.cool: could not connect to host
-phillipgoldfarb.com: could not connect to host
+phoenix.dj: could not connect to host
 photographyforchange.com: could not connect to host
 photographyforchange.org: could not connect to host
 photops.fr: could not connect to host
 phuong.faith: could not connect to host
 pianetaottica.eu: could not connect to host
 pianetaottica.info: could not connect to host
 picallo.es: could not connect to host
 picone.com.au: could not connect to host
@@ -1772,17 +1774,16 @@ pixelgliders.de: could not connect to ho
 plaasprodukte.com: could not connect to host
 planbox.info: could not connect to host
 planningexcellence.com.au: could not connect to host
 please-deny.me: could not connect to host
 plussizereviews.com: could not connect to host
 pmbremer.de: could not connect to host
 pogs.us: could not connect to host
 polit.im: could not connect to host
-polskiemalzenstwo.org: could not connect to host
 pookl.com: could not connect to host
 poolinstallers.co.za: could not connect to host
 popkins.cf: could not connect to host
 popkins.ga: could not connect to host
 popkins.gq: could not connect to host
 popkins.tk: could not connect to host
 pornblog.org: could not connect to host
 porschen.fr: could not connect to host
@@ -1826,45 +1827,45 @@ proxydesk.eu: could not connect to host
 prpsss.com: could not connect to host
 pruikshop.nl: could not connect to host
 prytkov.com: could not connect to host
 psncardplus.be: could not connect to host
 psncardplus.com: could not connect to host
 psncardplus.dk: could not connect to host
 psncardplus.nl: could not connect to host
 psncardplus.se: could not connect to host
-pstrozniak.com: could not connect to host
 psychoco.net: could not connect to host
 psyk.yt: could not connect to host
 psylab.cc: could not connect to host
 psylab.re: could not connect to host
 psylab.vip: could not connect to host
 publimepa.it: could not connect to host
 pugilares.com.pl: could not connect to host
 puhe.se: could not connect to host
 pwdgen.net: could not connect to host
 pwntr.com: could not connect to host
+pycrypto.org: could not connect to host
 pyjiaoyi.cf: could not connect to host
 pythia.nz: could not connect to host
 qforum.org: could not connect to host
 qikan.net: could not connect to host
 qirinus.com: could not connect to host
+qledtech.com: could not connect to host
 qnatek.org: could not connect to host
 qoqo.us: could not connect to host
 qqvips.com: could not connect to host
 qrlfinancial.com: could not connect to host
 qto.net: could not connect to host
 quietus.gq: could not connect to host
 quikpay.com.au: could not connect to host
 r-cut.fr: could not connect to host
 racasdecachorro.org: could not connect to host
 rackblue.com: could not connect to host
 rainbin.com: could not connect to host
 ranos.org: could not connect to host
-rathorian.fr: could not connect to host
 ravengergaming.net: could not connect to host
 ravse.dk: could not connect to host
 raycarruthersphotography.co.uk: could not connect to host
 rb-china.net: could not connect to host
 rbxcatalog.com: could not connect to host
 rchrdsn.uk: could not connect to host
 rcoliveira.com: could not connect to host
 rdfz.tech: could not connect to host
@@ -1948,17 +1949,16 @@ sallysubs.com: could not connect to host
 salzamt.tk: could not connect to host
 samaritan.tech: could not connect to host
 samsonova.de: could not connect to host
 sanael.net: could not connect to host
 sanatrans.com: could not connect to host
 sanmuding.com: could not connect to host
 santanderideas.com: could not connect to host
 santmark.eu: could not connect to host
-sapience.com: could not connect to host
 sarahlicity.me.uk: could not connect to host
 sarindia.com: could not connect to host
 sarindia.de: could not connect to host
 sarndipity.com: could not connect to host
 sauenytt.no: could not connect to host
 savethedogfishfoundation.org: could not connect to host
 savingbytes.com: could not connect to host
 sbm.cloud: could not connect to host
@@ -1990,16 +1990,17 @@ securon.io: could not connect to host
 securoswiss.ch: could not connect to host
 seefirm.com: could not connect to host
 seen.life: could not connect to host
 seleondar.ru: could not connect to host
 selfserverx.com: could not connect to host
 sellmoretires.com: could not connect to host
 semaphore-studios.com: could not connect to host
 seoscribe.net: could not connect to host
+seproco.com: could not connect to host
 servecrypt.com: could not connect to host
 servecrypt.net: could not connect to host
 servecrypt.ru: could not connect to host
 serverlauget.no: could not connect to host
 servfefe.com: could not connect to host
 seryovpn.com: could not connect to host
 sesha.co.za: could not connect to host
 sessionslogning.dk: could not connect to host
@@ -2041,30 +2042,30 @@ silviamacallister.com: could not connect
 silvistefi.com: could not connect to host
 simhaf.cf: could not connect to host
 simonschmitt.ch: could not connect to host
 simplerses.com: could not connect to host
 sims4hub.ga: could not connect to host
 sinfulforums.net: could not connect to host
 sinsojb.me: could not connect to host
 siqi.wang: could not connect to host
+sistem-maklumat.com: could not connect to host
 sitecloudify.com: could not connect to host
 sitemaxiphilippe.ch: could not connect to host
 skarox.ru: could not connect to host
 skontakt.cz: could not connect to host
 skontorp-enterprise.no: could not connect to host
 sky-aroma.com: could not connect to host
 skylocker.net: could not connect to host
 skylocker.nl: could not connect to host
 skyvault.io: could not connect to host
 sl1pkn07.wtf: could not connect to host
 slaps.be: could not connect to host
 slytech.ch: could not connect to host
 smallchat.nl: could not connect to host
-smallpath.me: could not connect to host
 smartbiz.vn: could not connect to host
 smarthouse.de: could not connect to host
 smith.is: could not connect to host
 sml.lc: could not connect to host
 smuhelper.cn: could not connect to host
 sneed.company: could not connect to host
 snowdy.eu: could not connect to host
 soboleva-pr.com.ua: could not connect to host
@@ -2190,39 +2191,38 @@ tdelmas.eu: could not connect to host
 tdelmas.ovh: could not connect to host
 tdsb.cf: could not connect to host
 tdsbhack.tk: could not connect to host
 teacherph.net: could not connect to host
 team-pancake.eu: could not connect to host
 tearoy.faith: could not connect to host
 tebieer.com: could not connect to host
 techask.it: could not connect to host
-techcultivation.de: could not connect to host
 techiehall.com: could not connect to host
 techpit.us: could not connect to host
 techshift.se: could not connect to host
 tektoria.de: could not connect to host
 telekollektiv.org: could not connect to host
 tenispopular.com: could not connect to host
 terminalvelocity.co.nz: could not connect to host
 terra-x.net: could not connect to host
 terrax.net: could not connect to host
 testadron.com: could not connect to host
 testovaci.ml: could not connect to host
-teuniz.nl: could not connect to host
 tgod.co: could not connect to host
 thaigirls.xyz: could not connect to host
 thatgudstuff.com: could not connect to host
 the-digitale.com: could not connect to host
 the-earth-yui.net: could not connect to host
 the-finance-blog.com: could not connect to host
 the-gist.io: could not connect to host
 thebte.com: could not connect to host
 thedailyupvote.com: could not connect to host
 theeducationchannel.info: could not connect to host
+theevergreen.me: could not connect to host
 thefox.co: could not connect to host
 thefrk.xyz: could not connect to host
 thelostyankee.com: could not connect to host
 themilanlife.com: could not connect to host
 thenrdhrd.nl: could not connect to host
 theoverfly.co: could not connect to host
 theposhfudgecompany.co.uk: could not connect to host
 theprincegame.com: could not connect to host
@@ -2254,16 +2254,17 @@ tink.network: could not connect to host
 tjs.me: could not connect to host
 tmin.cf: could not connect to host
 tnb-plattform.de: could not connect to host
 toad.ga: could not connect to host
 todosrv.com: could not connect to host
 tofa-koeln.de: could not connect to host
 tokoindo.top: could not connect to host
 tollsjekk.no: could not connect to host
+tomershemesh.me: could not connect to host
 tomharling.co.uk: could not connect to host
 tomm.yt: could not connect to host
 tomo.gr: could not connect to host
 top10mountainbikes.info: could not connect to host
 topanlage.de: could not connect to host
 topdetoxcleanse.com: could not connect to host
 topnotchendings.com: could not connect to host
 tor2web.org: could not connect to host
@@ -2287,34 +2288,33 @@ trainline.io: could not connect to host
 transappealrights.com: could not connect to host
 transcendmotor.sg: could not connect to host
 transmithe.net: could not connect to host
 travotion.com: could not connect to host
 treker.us: could not connect to host
 triageo.com.au: could not connect to host
 tristanfarkas.one: could not connect to host
 trumanlibrary.org: could not connect to host
+trush.in: could not connect to host
 tryfm.net: could not connect to host
 trynowrinkleseyeserum.com: could not connect to host
 tryti.me: could not connect to host
 tsaro.io: could not connect to host
 tsdom.net: could not connect to host
-tsugi.fr: could not connect to host
 tsumi.moe: could not connect to host
 tsurezurematome.ga: could not connect to host
 tucidi.net: could not connect to host
 tupizm.com: could not connect to host
 turismo.cl: could not connect to host
 turkiet.guide: could not connect to host
 turn-sticks.com: could not connect to host
 tutiendaroja.com: could not connect to host
 tutiendarosa.com: could not connect to host
 tutoragency.org: could not connect to host
 tuxhound.org: could not connect to host
-twb.berlin: could not connect to host
 twem.ddns.net: could not connect to host
 twinkieman.com: could not connect to host
 twiri.net: could not connect to host
 twittelzie.nl: could not connect to host
 twitter.ax: could not connect to host
 twotube.ie: could not connect to host
 twuni.org: could not connect to host
 tykoon.com: could not connect to host
@@ -2393,29 +2393,27 @@ visiontree-beta.eu: could not connect to
 visiontree.eu: could not connect to host
 vkino.com: could not connect to host
 vleij.family: could not connect to host
 vlogge.com: could not connect to host
 vlvvl.com: could not connect to host
 vocab.guru: could not connect to host
 voeux.io: could not connect to host
 vogt.tech: could not connect to host
-void-zero.com: could not connect to host
 volcain.io: could not connect to host
 vorderklier.de: could not connect to host
 votresiteweb.ch: could not connect to host
 vow.vn: could not connect to host
 vranjske.co.rs: could not connect to host
 vsesrazu-raiffeisen.ru: could not connect to host
 vucdn.com: could not connect to host
 vwoforangeparts.com: could not connect to host
 vxapps.com: could not connect to host
 w10club.com: could not connect to host
 wabifoggynuts.com: could not connect to host
-wadidi.com: could not connect to host
 waixingrenfuli.vip: could not connect to host
 wanashi.com: could not connect to host
 wanda76.com: could not connect to host
 wanda78.com: could not connect to host
 wanda79.com: could not connect to host
 wanda96.com: could not connect to host
 wanda97.com: could not connect to host
 wanda98.com: could not connect to host
@@ -2426,20 +2424,19 @@ wassim.is: could not connect to host
 watashi.bid: could not connect to host
 watchstyle.com: could not connect to host
 watchtv-online.pw: could not connect to host
 watchweasel.com: could not connect to host
 waxdramatic.com: could not connect to host
 we.serveftp.net: could not connect to host
 weareincognito.org: could not connect to host
 web-adminy.co.uk: could not connect to host
-webambacht.nl: could not connect to host
 webart-factory.de: could not connect to host
 webbson.net: could not connect to host
-webexp.biz: could not connect to host
+webdevops.io: could not connect to host
 webhackspro.com: could not connect to host
 webproject.rocks: could not connect to host
 webspotter.nl: could not connect to host
 webtar.info: could not connect to host
 webtech.com.br: could not connect to host
 webthings.com.br: could not connect to host
 webtobesocial.de: could not connect to host
 wecanvisit.com: could not connect to host
@@ -2468,16 +2465,17 @@ whilsttraveling.com: could not connect t
 whitworth.nyc: could not connect to host
 whoneedstobeprimaried.today: could not connect to host
 whyy.eu.org: could not connect to host
 wibuw.com: could not connect to host
 wilfrid-calixte.fr: could not connect to host
 wilhelm-nathan.de: could not connect to host
 willeminfo.ch: could not connect to host
 willkommen-fuerstenberg.de: could not connect to host
+wind.moe: could not connect to host
 winnersports.co: could not connect to host
 winsufi.biz: could not connect to host
 wisak.eu: could not connect to host
 wishesbee.com: could not connect to host
 wissl.org: could not connect to host
 wizznab.tk: could not connect to host
 wk577.com: could not connect to host
 wlsme.org: could not connect to host
@@ -2496,17 +2494,16 @@ wp6.pw: could not connect to host
 wsdcap.com: could not connect to host
 wuchipc.com: could not connect to host
 wumbo.kiwi: could not connect to host
 www-68277.com: could not connect to host
 www-8887999.com: could not connect to host
 www.history.pe: could not connect to host
 wxrlab.com: could not connect to host
 wyeworks.com: could not connect to host
-x1616.tk: could not connect to host
 xatr0z.org: could not connect to host
 xawen.net: could not connect to host
 xbc.nz: could not connect to host
 xeonlab.com: could not connect to host
 xeonlab.de: could not connect to host
 xia100.xyz: could not connect to host
 xianguocy.com: could not connect to host
 xiaoyu.net: could not connect to host
@@ -2533,17 +2530,16 @@ xuntaosms.com: could not connect to host
 xwaretech.info: could not connect to host
 xyfun.net: could not connect to host
 y3451.com: could not connect to host
 yabrt.cn: could not connect to host
 yahoo.ax: could not connect to host
 yarchives.jp: could not connect to host
 yarogneva.ru: could not connect to host
 yaucy.win: could not connect to host
-ybresson.com: could not connect to host
 yd.io: could not connect to host
 yellowcar.website: could not connect to host
 yemalu.com: could not connect to host
 yemekbaz.az: could not connect to host
 yepbitcoin.com: could not connect to host
 yesfone.com.br: could not connect to host
 yggdar.ga: could not connect to host
 yhori.xyz: could not connect to host
@@ -2554,17 +2550,16 @@ ying299.net: could not connect to host
 yinga.ga: could not connect to host
 ylk.io: could not connect to host
 yobbelwobbel.de: could not connect to host
 yobst.tk: could not connect to host
 yoga.is-an-engineer.com: could not connect to host
 yolo-csgo.com: could not connect to host
 yoticonnections.com: could not connect to host
 yotilabs.com: could not connect to host
-yourdaddy.dk: could not connect to host
 yourznc.com: could not connect to host
 yousite.by: could not connect to host
 yude.ml: could not connect to host
 yum.beer: could not connect to host
 yux.fr: could not connect to host
 z-coder.com: could not connect to host
 z0rro.net: could not connect to host
 zachbolinger.com: could not connect to host
@@ -2602,16 +2597,17 @@ zyx.im: could not connect to host
 zzw.ca: could not connect to host
 00001.am: did not receive HSTS header
 00002.am: did not receive HSTS header
 0005.com: could not connect to host
 0005aa.com: could not connect to host
 007sascha.de: did not receive HSTS header
 020wifi.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
 0222aa.com: did not receive HSTS header
+02dl.net: did not receive HSTS header
 040fit.nl: did not receive HSTS header
 048.ag: could not connect to host
 050508.com: could not connect to host
 066928.com: could not connect to host
 066938.com: could not connect to host
 0f.io: could not connect to host
 0fl.com: did not receive HSTS header
 0g.org.uk: could not connect to host
@@ -2643,17 +2639,16 @@ 123test.de: did not receive HSTS header
 123test.es: did not receive HSTS header
 123test.fr: did not receive HSTS header
 126ium.moe: could not connect to host
 127011-networks.ch: did not receive HSTS header
 12vpn.org: could not connect to host
 12vpnchina.com: could not connect to host
 1391kj.com: did not receive HSTS header
 1396.cc: did not receive HSTS header
-1464424382.rsc.cdn77.org: did not receive HSTS header
 1536.cf: could not connect to host
 163pwd.com: could not connect to host
 16deza.com: did not receive HSTS header
 16packets.com: could not connect to host
 173vpn.cn: could not connect to host
 173vpns.com: did not receive HSTS header
 173vpnv.com: could not connect to host
 188betwarriors.co.uk: could not connect to host
@@ -2773,31 +2768,31 @@ 9118b.com: could not connect to host
 911911.pw: could not connect to host
 915ers.com: did not receive HSTS header
 922.be: could not connect to host
 92bmh.com: did not receive HSTS header
 94cs.cn: did not receive HSTS header
 960news.ca: could not connect to host
 9651678.ru: could not connect to host
 99511.fi: could not connect to host
-9iwan.net: could not connect to host
+9iwan.net: did not receive HSTS header
 9jadirect.com: could not connect to host
 9point6.com: could not connect to host
 9tolife.be: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
 a-plus.space: could not connect to host
 a-rickroll-n.pw: could not connect to host
 a-theme.com: could not connect to host
 a1-autopartsglasgow.com: did not receive HSTS header
 a200k.xyz: did not receive HSTS header
 a3workshop.swiss: could not connect to host
 a9c.co: could not connect to host
 aa7733.com: could not connect to host
-aaeblog.com: could not connect to host
-aaeblog.net: could not connect to host
-aaeblog.org: could not connect to host
+aaeblog.com: did not receive HSTS header
+aaeblog.net: did not receive HSTS header
+aaeblog.org: did not receive HSTS header
 aaoo.net: could not connect to host
 aapp.space: could not connect to host
 aaron-gustafson.com: did not receive HSTS header
 aaronkimmig.de: did not receive HSTS header
 aaronmcguire.me: did not receive HSTS header
 abareplace.com: did not receive HSTS header
 abcdentalcare.com: did not receive HSTS header
 abcdobebe.com: max-age too low: 0
@@ -2847,16 +2842,17 @@ activeclearweb.com: could not connect to
 activeweb.top: could not connect to host
 activiti.alfresco.com: did not receive HSTS header
 actu-medias.com: could not connect to host
 acuve.jp: could not connect to host
 ada.is: max-age too low: 2592000
 adajwells.me: could not connect to host
 adamas-magicus.ru: did not receive HSTS header
 adambryant.ca: could not connect to host
+adamgold.net: did not receive HSTS header
 adamricheimer.com: could not connect to host
 adamwk.com: did not receive HSTS header
 adastra.re: could not connect to host
 adboos.com: could not connect to host
 addaxpetroleum.com: could not connect to host
 addvocate.com: could not connect to host
 adelevie.com: could not connect to host
 adelinlydia-coach.com: did not receive HSTS header
@@ -2913,17 +2909,17 @@ agatheetraphael.fr: could not connect to
 agbremen.de: did not receive HSTS header
 agentseeker.ca: could not connect to host
 agevio.com: could not connect to host
 agrias.com.br: did not receive HSTS header
 agrimap.com: did not receive HSTS header
 agro-id.gov.ua: did not receive HSTS header
 agtv.com.br: did not receive HSTS header
 ahabingo.com: did not receive HSTS header
-ahfazahmed.net: did not receive HSTS header
+ahfazahmed.net: max-age too low: 0
 ahoynetwork.com: did not receive HSTS header
 ahri.ovh: could not connect to host
 ahwatukeefoothillsmontessori.com: did not receive HSTS header
 aicial.com.au: could not connect to host
 aidanwoods.com: did not receive HSTS header
 aidikofflaw.com: did not receive HSTS header
 aifreeze.ru: could not connect to host
 aify.eu: could not connect to host
@@ -3048,16 +3044,17 @@ anacruz.es: did not receive HSTS header
 anadoluefessporkulubu.org: could not connect to host
 anagra.ms: could not connect to host
 analytic-s.ml: could not connect to host
 analyticsinmotion.net: could not connect to host
 ancientkarma.com: could not connect to host
 andere-gedanken.net: max-age too low: 10
 anderslind.dk: could not connect to host
 andre-ballensiefen.de: did not receive HSTS header
+andreagobetti.com: did not receive HSTS header
 andreasanti.net: did not receive HSTS header
 andreasbreitenlohner.de: max-age too low: 600000
 andreasfritz-fotografie.de: could not connect to host
 andreastoneman.com: could not connect to host
 andreigec.net: did not receive HSTS header
 andrerose.ca: did not receive HSTS header
 andrew.fi: did not receive HSTS header
 andrew.london: did not receive HSTS header
@@ -3070,16 +3067,17 @@ andrewx.net: could not connect to host
 andrewyg.net: could not connect to host
 andreypopp.com: could not connect to host
 androidprosmart.com: could not connect to host
 androled.fr: max-age too low: 5184000
 androoz.se: could not connect to host
 andyclark.io: could not connect to host
 andymartin.cc: could not connect to host
 andyuk.org: could not connect to host
+anfenglish.com: did not receive HSTS header
 anfsanchezo.co: could not connect to host
 anfsanchezo.me: could not connect to host
 angeloroberto.ch: did not receive HSTS header
 anghami.com: did not receive HSTS header
 anglesya.win: did not receive HSTS header
 anglictinatabor.cz: could not connect to host
 angryroute.com: could not connect to host
 animal-nature-human.com: did not receive HSTS header
@@ -3201,17 +3199,16 @@ arrayify.com: could not connect to host
 arrow-cloud.nl: could not connect to host
 arrowfunction.com: could not connect to host
 ars-design.net: could not connect to host
 art2web.net: could not connect to host
 artartefatos.com.br: could not connect to host
 artegusto.ru: did not receive HSTS header
 artesupra.com: did not receive HSTS header
 arthan.me: could not connect to host
-arthur.cn: did not receive HSTS header
 artifex21.com: could not connect to host
 artifex21.fr: could not connect to host
 artiming.com: could not connect to host
 artisavotins.com: could not connect to host
 artisphere.ch: did not receive HSTS header
 artistnetwork.nl: did not receive HSTS header
 artsinthevalley.net.au: did not receive HSTS header
 artyland.ru: did not receive HSTS header
@@ -3276,17 +3273,17 @@ augrandinquisiteur.com: did not receive 
 aujapan.ru: could not connect to host
 aurainfosec.com: did not receive HSTS header
 aurainfosec.com.au: did not receive HSTS header
 auraredeye.com: could not connect to host
 auraredshield.com: could not connect to host
 aurora-terraria.org: did not receive HSTS header
 auroratownshipfd.org: could not connect to host
 aurugs.com: did not receive HSTS header
-auskunftsbegehren.at: could not connect to host
+auskunftsbegehren.at: did not receive HSTS header
 auslandsjahr-usa.de: could not connect to host
 ausnah.me: could not connect to host
 ausoptic.com.au: max-age too low: 2592000
 aussiecable.org: did not receive HSTS header
 aussiehq.com.au: did not receive HSTS header
 auth.mail.ru: did not receive HSTS header
 authenitech.com: did not receive HSTS header
 authentication.io: could not connect to host
@@ -3392,17 +3389,16 @@ bandrcrafts.com: did not receive HSTS he
 banduhn.com: did not receive HSTS header
 bangzafran.com: did not receive HSTS header
 bankmilhas.com.br: did not receive HSTS header
 banksaround.com: did not receive HSTS header
 banqingdiao.com: could not connect to host
 baobaobooks.net: did not receive HSTS header
 baobeiglass.com: did not receive HSTS header
 baptiste-destombes.fr: did not receive HSTS header
-barbarafeldman.com: did not receive HSTS header
 barcel.com.mx: max-age too low: 86400
 barely.sexy: did not receive HSTS header
 barreaudenice.com: max-age too low: 0
 barrelhead.org: could not connect to host
 barrut.me: did not receive HSTS header
 barshout.co.uk: could not connect to host
 bartbania.com: did not receive HSTS header
 barunisystems.com: could not connect to host
@@ -3888,17 +3884,16 @@ camisadotorcedor.com.br: could not conne
 camjackson.net: did not receive HSTS header
 cammarkets.com: could not connect to host
 camolist.com: could not connect to host
 campaignelves.com: did not receive HSTS header
 campbellsoftware.co.uk: could not connect to host
 campfire.co.il: did not receive HSTS header
 camsanalytics.com: could not connect to host
 canadabread.com: max-age too low: 86400
-canadianchristianity.com: did not receive HSTS header
 canadiangamblingchoice.com: did not receive HSTS header
 cancreate.nl: did not receive HSTS header
 candicontrols.com: did not receive HSTS header
 candratech.com: could not connect to host
 candygirl.shop: could not connect to host
 canyonshoa.com: did not receive HSTS header
 capecycles.co.za: did not receive HSTS header
 capeyorkfire.com.au: could not connect to host
@@ -4259,31 +4254,32 @@ connectfss.com: could not connect to hos
 connectingconcepts.com: did not receive HSTS header
 conrail.blue: did not receive HSTS header
 consciousandglamorous.com: could not connect to host
 consciousbrand.org.au: could not connect to host
 consciousbranding.org.au: could not connect to host
 consciousbrands.net.au: could not connect to host
 console.python.org: did not receive HSTS header
 console.support: did not receive HSTS header
+consultorcr.net: did not receive HSTS header
 contactbig.com: did not receive HSTS header
 contaimo.com: did not receive HSTS header
 container-lion.com: did not receive HSTS header
 containerstatistics.com: could not connect to host
 contarkos.xyz: could not connect to host
 content-design.de: did not receive HSTS header
 continuumgaming.com: could not connect to host
 controlcenter.gigahost.dk: did not receive HSTS header
-convergemagazine.com: did not receive HSTS header
 convert.zone: did not receive HSTS header
 cooink.net: could not connect to host
 coolaj86.com: did not receive HSTS header
 coolbutbroken.com: did not receive HSTS header
 coolchevy.org.ua: did not receive HSTS header
 coole-meister.de: could not connect to host
+coonelnel.net: did not receive HSTS header
 cooxa.com: did not receive HSTS header
 copshop.com.br: could not connect to host
 cor-ser.es: could not connect to host
 coralproject.net: did not receive HSTS header
 coralrosado.com.br: did not receive HSTS header
 coramcdaniel.com: did not receive HSTS header
 corderoscleaning.com: did not receive HSTS header
 cordial-restaurant.com: did not receive HSTS header
@@ -4528,17 +4524,16 @@ dcbouncycastles.co.uk: did not receive H
 dccode.gov: could not connect to host
 dccoffeeproducts.com: did not receive HSTS header
 dccraft.net: could not connect to host
 dctxf.com: did not receive HSTS header
 dcuofriends.net: could not connect to host
 dcurt.is: did not receive HSTS header
 dcw.io: did not receive HSTS header
 ddatsh.com: did not receive HSTS header
-ddepot.us: did not receive HSTS header
 deadsoul.net: max-age too low: 0
 debank.tv: did not receive HSTS header
 debatch.se: could not connect to host
 debian-vhost.de: could not connect to host
 debiton.dk: could not connect to host
 debtkit.co.uk: did not receive HSTS header
 debtprotectionreporting.com: did not receive HSTS header
 decafu.co: could not connect to host
@@ -4623,17 +4618,16 @@ devistravaux.org: did not receive HSTS h
 devlux.ch: did not receive HSTS header
 devmsg.com: did not receive HSTS header
 devnsec.com: could not connect to host
 devnull.team: could not connect to host
 devopps.me: could not connect to host
 devopsconnected.com: could not connect to host
 devtub.com: did not receive HSTS header
 devuan.org: did not receive HSTS header
-dewebwerf.nl: did not receive HSTS header
 dewin.io: could not connect to host
 dfnet.ml: did not receive HSTS header
 dfrance.com.br: did not receive HSTS header
 dfviana.com.br: max-age too low: 2592000
 dhaynes.xyz: max-age too low: 2592000
 dhpcs.com: did not receive HSTS header
 dhpiggott.net: did not receive HSTS header
 diablotine.rocks: could not connect to host
@@ -4707,17 +4701,17 @@ dkniss.de: could not connect to host
 dlc.viasinc.com: could not connect to host
 dlemper.de: did not receive HSTS header
 dmcibulldog.com: did not receive HSTS header
 dmix.ca: could not connect to host
 dmtry.me: did not receive HSTS header
 dmwall.cn: could not connect to host
 dmz.ninja: could not connect to host
 dnsbird.net: could not connect to host
-dnscrypt.org: max-age too low: 0
+dnscrypt.org: could not connect to host
 dnsknowledge.com: did not receive HSTS header
 do-do.tk: could not connect to host
 doak.io: could not connect to host
 dobet.in: could not connect to host
 docid.io: could not connect to host
 docket.news: could not connect to host
 doclot.io: did not receive HSTS header
 docset.io: could not connect to host
@@ -4962,16 +4956,17 @@ ehealthcounselor.com: could not connect 
 ehipaadev.com: could not connect to host
 ehito.ovh: could not connect to host
 ehrenamt-skpfcw.de: could not connect to host
 eicfood.com: could not connect to host
 eidolonhost.com: did not receive HSTS header
 eifelindex.de: did not receive HSTS header
 eigo.work: could not connect to host
 eimanavicius.lt: did not receive HSTS header
+ejusu.com: did not receive HSTS header
 ekbanden.nl: could not connect to host
 eksik.com: could not connect to host
 el-soul.com: did not receive HSTS header
 elaintehtaat.fi: could not connect to host
 elan-organics.com: did not receive HSTS header
 elanguest.pl: could not connect to host
 elanguest.ro: could not connect to host
 elanguest.ru: could not connect to host
@@ -5159,17 +5154,16 @@ eupbor.com: did not receive HSTS header
 eupho.me: could not connect to host
 eupresidency2018.com: did not receive HSTS header
 euren.se: could not connect to host
 eurocamping.se: could not connect to host
 euroshop24.net: could not connect to host
 eurospecautowerks.com: did not receive HSTS header
 evafojtova.cz: did not receive HSTS header
 evanhandgraaf.nl: did not receive HSTS header
-evantage.org: did not receive HSTS header
 evasion-energie.com: did not receive HSTS header
 evdenevenakliyatankara.pw: could not connect to host
 evecalm.com: did not receive HSTS header
 evegalaxy.net: did not receive HSTS header
 events12.com: did not receive HSTS header
 eventsafrica.net: did not receive HSTS header
 everybooks.com: could not connect to host
 everydaytherich.com: max-age too low: 7776000
@@ -5700,17 +5694,16 @@ ggrks-asano.com: did not receive HSTS he
 ggss.ml: could not connect to host
 gheorghe-sarcov.ga: could not connect to host
 gheorghesarcov.ga: could not connect to host
 gheorghesarcov.tk: could not connect to host
 ghi.gov: could not connect to host
 ghid-pitesti.ro: did not receive HSTS header
 ghkim.net: could not connect to host
 giakki.eu: could not connect to host
-giardinaggio.milano.it: did not receive HSTS header
 gibraltar-firma.com: did not receive HSTS header
 gidea.nu: could not connect to host
 gietvloergarant.nl: did not receive HSTS header
 giftgofers.com: max-age too low: 0
 giftservices.nl: could not connect to host
 gigabitz.pw: did not receive HSTS header
 gigacloud.org: did not receive HSTS header
 gigacog.com: could not connect to host
@@ -5730,16 +5723,17 @@ gipsic.com: did not receive HSTS header
 gis3m.org: did not receive HSTS header
 gistfy.com: could not connect to host
 git-stuff.tk: could not connect to host
 givemyanswer.com: could not connect to host
 gizzo.sk: could not connect to host
 glasslikes.com: did not receive HSTS header
 glbg.eu: did not receive HSTS header
 glentakahashi.com: could not connect to host
+glittersjabloon.nl: did not receive HSTS header
 glitzmirror.com: could not connect to host
 global-adult-webcams.com: did not receive HSTS header
 globalado.com: could not connect to host
 globalbridge-japan.com: did not receive HSTS header
 globalexpert.co.nz: could not connect to host
 globalinsights.xyz: could not connect to host
 globalittech.com: could not connect to host
 globalmusic.ga: could not connect to host
@@ -5757,17 +5751,17 @@ goabonga.com: could not connect to host
 goalsetup.com: did not receive HSTS header
 goaltree.ch: did not receive HSTS header
 goarmy.eu: could not connect to host
 goat.chat: did not receive HSTS header
 goat.xyz: did not receive HSTS header
 goben.ch: could not connect to host
 goblins.net: did not receive HSTS header
 goedeke.ml: could not connect to host
-goerner.me: could not connect to host
+goerner.me: did not receive HSTS header
 goge.site: could not connect to host
 gogenenglish.com: could not connect to host
 gogetssl.com: did not receive HSTS header
 goggs.eu: could not connect to host
 gogold-g.com: could not connect to host
 gold24.in: did not receive HSTS header
 goldegg-training.com: did not receive HSTS header
 goldendata.io: could not connect to host
@@ -5845,17 +5839,17 @@ greenvpn.pro: did not receive HSTS heade
 gregorytlee.me: could not connect to host
 grekland.guide: could not connect to host
 gremots.com: could not connect to host
 grendel.no: did not receive HSTS header
 greplin.com: could not connect to host
 gresb.com: did not receive HSTS header
 gretchelizartistry.com: did not receive HSTS header
 grevesgarten.de: could not connect to host
-greybit.net: did not receive HSTS header
+greybit.net: could not connect to host
 greyline.se: could not connect to host
 grian-bam.at: did not receive HSTS header
 gribani.com: could not connect to host
 grid2osm.org: could not connect to host
 grigalanzsoftware.com: could not connect to host
 grillinfools.com: did not receive HSTS header
 gripopgriep.net: could not connect to host
 groenewoud.run: could not connect to host
@@ -5893,16 +5887,17 @@ guguke.net: did not receive HSTS header
 guidetoiceland.is: did not receive HSTS header
 guilde-vindicta.fr: did not receive HSTS header
 guillaume-leduc.fr: did not receive HSTS header
 guillaumematheron.fr: did not receive HSTS header
 guineafruitcorp.com: could not connect to host
 gulch.in.ua: did not receive HSTS header
 gulenet.com: could not connect to host
 gulfcoast-sandbox.com: could not connect to host
+gumannp.de: did not receive HSTS header
 gunnarhafdal.com: did not receive HSTS header
 gunnaro.com: could not connect to host
 guntbert.net: could not connect to host
 guoqiang.info: did not receive HSTS header
 gurom.lv: could not connect to host
 gurusupe.com: could not connect to host
 guso.gq: could not connect to host
 guso.ml: could not connect to host
@@ -6603,16 +6598,17 @@ janmg.com: did not receive HSTS header
 jannyrijneveld.nl: did not receive HSTS header
 janus-engineering.de: did not receive HSTS header
 jap-nope.de: did not receive HSTS header
 japanesenames.biz: did not receive HSTS header
 japaripark.com: could not connect to host
 japlex.com: could not connect to host
 jaqen.ch: could not connect to host
 jaredbates.net: did not receive HSTS header
+jarnail.ca: did not receive HSTS header
 jaroslavtrsek.cz: did not receive HSTS header
 jarsater.com: could not connect to host
 jartza.org: could not connect to host
 jasmineconseil.com: did not receive HSTS header
 jasoncosper.com: did not receive HSTS header
 jasonroe.me: did not receive HSTS header
 jasperhammink.com: did not receive HSTS header
 jastoria.pl: did not receive HSTS header
@@ -6778,17 +6774,16 @@ jurke.com: did not receive HSTS header
 justiceforfathers.com: could not connect to host
 justinlemay.com: could not connect to host
 justlikethat.hosting: did not receive HSTS header
 justmy.website: did not receive HSTS header
 justnaw.co.uk: could not connect to host
 justudin.com: did not receive HSTS header
 justwood.cz: did not receive HSTS header
 jutella.de: did not receive HSTS header
-jutlander-netbank.dk: did not receive HSTS header
 juvenex.co: could not connect to host
 juwairen.cn: could not connect to host
 jvoice.net: could not connect to host
 jvwdev.nl: did not receive HSTS header
 jwilsson.me: could not connect to host
 jxm.in: could not connect to host
 jym.fit: did not receive HSTS header
 jysperm.me: did not receive HSTS header
@@ -6816,17 +6811,17 @@ kaketalk.com: did not receive HSTS heade
 kalami.nl: could not connect to host
 kaleidomarketing.com: did not receive HSTS header
 kambodja.guide: could not connect to host
 kamcvicit.sk: could not connect to host
 kamikano.com: could not connect to host
 kanaanonline.org: max-age too low: 86400
 kanada.guide: could not connect to host
 kaneo-gmbh.de: did not receive HSTS header
-kaniklani.co.za: could not connect to host
+kaniklani.co.za: did not receive HSTS header
 kanscooking.org: could not connect to host
 kany.me: did not receive HSTS header
 kanzlei-wirtschaftsrecht.berlin: max-age too low: 600000
 kaohub.com: could not connect to host
 kaplatz.is: could not connect to host
 kapucini.si: max-age too low: 0
 kaputt.com: did not receive HSTS header
 kapverde.guide: could not connect to host
@@ -6886,17 +6881,17 @@ kickerplaza.nl: did not receive HSTS hea
 kickstart.com.pk: did not receive HSTS header
 kid-dachau.de: did not receive HSTS header
 kidkat.cn: could not connect to host
 kiel-media.de: did not receive HSTS header
 kienlen.org: did not receive HSTS header
 kieranjones.uk: did not receive HSTS header
 kill-paff.com: did not receive HSTS header
 kimana.pe: could not connect to host
-kimberg.co.uk: could not connect to host
+kimberg.co.uk: did not receive HSTS header
 kimberlybeautysoapcompany.com: did not receive HSTS header
 kimpost.org: could not connect to host
 kina.guide: could not connect to host
 kinderly.co.uk: did not receive HSTS header
 kinderwagen-test24.de: could not connect to host
 kindlyfire.com: could not connect to host
 kindof.ninja: could not connect to host
 kingmanhall.org: could not connect to host
@@ -7012,16 +7007,17 @@ kristofferkoch.com: could not connect to
 krizek.cc: did not receive HSTS header
 krizevackapajdasija.hr: could not connect to host
 krmela.com: did not receive HSTS header
 kroetenfuchs.de: could not connect to host
 kroodle.nl: did not receive HSTS header
 kruegerrand-wert.de: did not receive HSTS header
 krunut.com: did not receive HSTS header
 krypteia.org: could not connect to host
+kryptera.se: did not receive HSTS header
 kryptomech.com: could not connect to host
 ksfh-mail.de: could not connect to host
 kstan.me: could not connect to host
 ksukelife.com: did not receive HSTS header
 kswriter.com: could not connect to host
 kteen.info: did not receive HSTS header
 kuba.guide: could not connect to host
 kucom.it: could not connect to host
@@ -7635,16 +7631,17 @@ mecenat-cassous.com: did not receive HST
 mechmk1.me: did not receive HSTS header
 medallia.io: could not connect to host
 media-access.online: did not receive HSTS header
 mediacru.sh: could not connect to host
 mediafinancelab.org: did not receive HSTS header
 mediamag.am: max-age too low: 0
 mediawikicn.org: could not connect to host
 medienservice-fritz.de: did not receive HSTS header
+medifab.online: did not receive HSTS header
 medirich.co: could not connect to host
 meditek-dv.ru: could not connect to host
 mediterenopmaandag.nl: did not receive HSTS header
 medm-test.com: could not connect to host
 medzinenews.com: did not receive HSTS header
 meedoennoordkop.nl: did not receive HSTS header
 meedoenzaanstad.nl: did not receive HSTS header
 meetfinch.com: could not connect to host
@@ -7894,17 +7891,17 @@ mondwandler.de: could not connect to hos
 moneromerchant.com: could not connect to host
 moneycrownmedia.com: could not connect to host
 monika-sokol.de: did not receive HSTS header
 monitaure.io: could not connect to host
 monitman.com: did not receive HSTS header
 montanacures.org: could not connect to host
 montonicms.com: could not connect to host
 moon.lc: could not connect to host
-moonchart.co.uk: could not connect to host
+moonchart.co.uk: did not receive HSTS header
 moonless.net: could not connect to host
 moonloupe.com: could not connect to host
 moonysbouncycastles.co.uk: did not receive HSTS header
 moosemanstudios.com: could not connect to host
 moov.is: could not connect to host
 moparisthebest.biz: could not connect to host
 moparisthebest.info: could not connect to host
 moparscape.org: did not receive HSTS header
@@ -7923,16 +7920,17 @@ morpheusxaut.net: could not connect to h
 morpork.xyz: could not connect to host
 mortgagecentersmo.com: did not receive HSTS header
 moso.io: did not receive HSTS header
 mostwuat.com: could not connect to host
 motherbase.io: could not connect to host
 motionfreight.com: could not connect to host
 motionpicturesolutions.com: did not receive HSTS header
 motorcheck.ie: did not receive HSTS header
+motransportinfo.com: did not receive HSTS header
 mottvd.com: could not connect to host
 moudicat.com: max-age too low: 6307200
 moula.com.au: did not receive HSTS header
 mountainmusicpromotions.com: did not receive HSTS header
 movabletype.net: max-age too low: 3600
 moviedollars.com: did not receive HSTS header
 moviesabout.net: could not connect to host
 movio.ga: did not receive HSTS header
@@ -8279,17 +8277,17 @@ nosecretshop.com: could not connect to h
 nostraspace.com: did not receive HSTS header
 notadd.io: could not connect to host
 notarankastojkovic.me: could not connect to host
 notarobot.fr: did not receive HSTS header
 notenoughtime.de: could not connect to host
 nothing.net.nz: max-age too low: 7776000
 noticia.do: did not receive HSTS header
 notjustbitchy.com: did not receive HSTS header
-nottheonion.net: could not connect to host
+nottheonion.net: did not receive HSTS header
 nou.si: could not connect to host
 nouvelle-vague-saint-cast.fr: did not receive HSTS header
 nova-elearning.com: could not connect to host
 novaco.in: max-age too low: 3600
 novacraft.me: could not connect to host
 novaopcaofestas.com.br: could not connect to host
 novatrucking.de: could not connect to host
 novavoidhowl.com: did not receive HSTS header
@@ -8339,17 +8337,17 @@ nuovamoda.al: did not receive HSTS heade
 nup.pw: did not receive HSTS header
 nupef.org.br: did not receive HSTS header
 nurserybook.co: did not receive HSTS header
 nurture.be: did not receive HSTS header
 nusatrip-api.com: did not receive HSTS header
 nutricuerpo.com: did not receive HSTS header
 nutritionculture.com: could not connect to host
 nutsandboltsmedia.com: did not receive HSTS header
-nuttyveg.com: could not connect to host
+nuttyveg.com: did not receive HSTS header
 nwa.xyz: could not connect to host
 nweb.co.nz: could not connect to host
 nwork.media: could not connect to host
 nyazeeland.guide: could not connect to host
 nycroth.com: could not connect to host
 nyesider.org: could not connect to host
 nyored.com: did not receive HSTS header
 nyphox.net: could not connect to host
@@ -8841,17 +8839,17 @@ pleasure.forsale: could not connect to h
 plfgr.eu.org: could not connect to host
 plhdb.org: did not receive HSTS header
 plirt.ru: could not connect to host
 plixer.com: did not receive HSTS header
 plogable.co: could not connect to host
 plombirator.kz: did not receive HSTS header
 plothost.com: did not receive HSTS header
 ploup.net: could not connect to host
-pluff.nl: did not receive HSTS header
+pluff.nl: could not connect to host
 plus-digital.net: did not receive HSTS header
 plus-u.com.au: did not receive HSTS header
 plut.org: did not receive HSTS header
 plymouthsoftplay.co.uk: could not connect to host
 pm.me: did not receive HSTS header
 pm13-media.cz: could not connect to host
 pmac.pt: could not connect to host
 pmemanager.fr: did not receive HSTS header
@@ -8907,17 +8905,17 @@ posylka.de: did not receive HSTS header
 potatoheads.net: could not connect to host
 potsky.com: did not receive HSTS header
 pottshome.co.uk: did not receive HSTS header
 pourmesloisirs.com: could not connect to host
 poussinooz.fr: could not connect to host
 povitria.net: could not connect to host
 power-l.ch: did not receive HSTS header
 power-of-interest.com: did not receive HSTS header
-power99press.com: could not connect to host
+power99press.com: did not receive HSTS header
 powerb.ch: did not receive HSTS header
 poweroff.win: could not connect to host
 powerplannerapp.com: could not connect to host
 powershift.ne.jp: did not receive HSTS header
 powerxequality.com: could not connect to host
 pozniak.at: did not receive HSTS header
 pozyczka-bez-zaswiadczen.pl: did not receive HSTS header
 ppr-truby.ru: could not connect to host
@@ -9096,17 +9094,17 @@ quantumcourse.org: did not receive HSTS 
 quebecmailbox.com: could not connect to host
 queenbrownie.com.br: could not connect to host
 quelmandataire.fr: did not receive HSTS header
 queroreceitasoberana.com.br: max-age too low: 0
 queryplayground.com: could not connect to host
 questsandrewards.com: could not connect to host
 quickandroid.tools: could not connect to host
 quickpayservice.com: could not connect to host
-quimsertek.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
+quimsertek.com: did not receive HSTS header
 quizionic.com: could not connect to host
 quizl.io: did not receive HSTS header
 quizmemes.org: could not connect to host
 quotehex.com: could not connect to host
 quotemaster.co.za: could not connect to host
 quranserver.net: could not connect to host
 qwilink.me: did not receive HSTS header
 r-ay.club: did not receive HSTS header
@@ -9406,17 +9404,16 @@ rubbereggs.ca: could not connect to host
 rubecodeberg.com: could not connect to host
 rubenschulz.nl: could not connect to host
 rubi-ka.net: max-age too low: 0
 ruborr.se: did not receive HSTS header
 rubysecurity.org: did not receive HSTS header
 rubyshop.nl: max-age too low: 604800
 rudeotter.com: did not receive HSTS header
 rue-de-la-vieille.fr: max-age too low: 0
-ruflay.ru: could not connect to host
 rugirlfriend.com: could not connect to host
 rugs.ca: did not receive HSTS header
 rugstorene.co.uk: did not receive HSTS header
 ruig.jp: could not connect to host
 ruitershoponline.nl: did not receive HSTS header
 rumoterra.com.br: could not connect to host
 runawebinar.nl: could not connect to host
 runhardt.eu: did not receive HSTS header
@@ -9491,17 +9488,17 @@ santouri.be: could not connect to host
 saotn.org: did not receive HSTS header
 sapk.fr: did not receive HSTS header
 sarah-beckett-harpist.com: did not receive HSTS header
 sarahsweetlife.com: could not connect to host
 sarahsweger.com: could not connect to host
 sarakas.com: could not connect to host
 saraleebread.com: max-age too low: 86400
 sarangsemutbandung.com: could not connect to host
-sarisonproductions.com: could not connect to host
+sarisonproductions.com: did not receive HSTS header
 sarkarischeme.in: could not connect to host
 saruwebshop.co.za: could not connect to host
 satanichia.moe: could not connect to host
 satmep.com: did not receive HSTS header
 satoshicrypt.com: did not receive HSTS header
 satragreen.com: did not receive HSTS header
 satriyowibowo.my.id: could not connect to host
 satsukii.moe: did not receive HSTS header
@@ -9583,16 +9580,17 @@ sdhmanagementgroup.com: could not connec
 sdia.ru: could not connect to host
 sdmoscow.ru: could not connect to host
 sdrobs.com: did not receive HSTS header
 sdsl-speedtest.de: could not connect to host
 se7ensins.com: did not receive HSTS header
 seans.cc: did not receive HSTS header
 searchgov.gov.il: did not receive HSTS header
 seavancouver.com: could not connect to host
+sebastiaandouma.co.uk: did not receive HSTS header
 sebastian-bair.de: could not connect to host
 sebastianhampl.de: could not connect to host
 sebastianpedersen.com: did not receive HSTS header
 sebastiensenechal.com: did not receive HSTS header
 sebster.com: did not receive HSTS header
 secandtech.com: could not connect to host
 seceye.cn: did not receive HSTS header
 secnet.ga: could not connect to host
@@ -9894,17 +9892,16 @@ smartbuyelectric.com: could not connect 
 smartcleaningcenter.nl: did not receive HSTS header
 smartcoin.com.br: could not connect to host
 smartfon4you.ru: max-age too low: 0
 smarthomedna.com: did not receive HSTS header
 smartit.pro: did not receive HSTS header
 smartofficesandsmarthomes.com: did not receive HSTS header
 smartphone.continental.com: could not connect to host
 smartrak.co.nz: did not receive HSTS header
-smartshoppers.es: did not receive HSTS header
 smdev.fr: could not connect to host
 smet.us: could not connect to host
 smexpt.com: did not receive HSTS header
 smileawei.com: did not receive HSTS header
 smimea.com: could not connect to host
 smirkingwhorefromhighgarden.pro: could not connect to host
 smittix.co.uk: did not receive HSTS header
 smkn1lengkong.sch.id: did not receive HSTS header
@@ -10011,16 +10008,17 @@ sparsa.army: could not connect to host
 sparta-trade.com: could not connect to host
 spauted.com: could not connect to host
 spdysync.com: could not connect to host
 specialedesigns.com: could not connect to host
 speculor.net: could not connect to host
 spedition-transport-umzug.de: did not receive HSTS header
 speed-mailer.com: could not connect to host
 speedcounter.net: did not receive HSTS header
+speeds.vip: did not receive HSTS header
 speedway.com.pl: did not receive HSTS header
 speedy.lt: max-age too low: 0
 speedyprep.com: did not receive HSTS header
 speidel.com.tr: did not receive HSTS header
 spencerbaer.com: could not connect to host
 sperohub.io: could not connect to host
 spiegels.nl: could not connect to host
 spielcasinos.com: did not receive HSTS header
@@ -10135,17 +10133,16 @@ stmbgr.com: could not connect to host
 stn.me.uk: did not receive HSTS header
 stockseyeserum.com: could not connect to host
 stocktrade.de: could not connect to host
 stoffe-monster.de: did not receive HSTS header
 stoick.me: could not connect to host
 stole-my.bike: could not connect to host
 stole-my.tv: could not connect to host
 stonecutterscommunity.com: could not connect to host
-stopbreakupnow.org: did not receive HSTS header
 stopwoodfin.org: could not connect to host
 storbritannien.guide: could not connect to host
 store-host.com: did not receive HSTS header
 storecove.com: did not receive HSTS header
 storeden.com: did not receive HSTS header
 storefrontify.com: did not receive HSTS header
 storiesofhealth.org: did not receive HSTS header
 stormhub.org: could not connect to host
@@ -10175,17 +10172,17 @@ studio-panic.com: did not receive HSTS h
 studiozelden.com: did not receive HSTS header
 studybay.com: did not receive HSTS header
 studydrive.net: did not receive HSTS header
 studyhub.cf: did not receive HSTS header
 stugb.de: did not receive HSTS header
 sturbock.me: did not receive HSTS header
 sturdio.com.br: could not connect to host
 stylenda.com: could not connect to host
-stytt.com: did not receive HSTS header
+stytt.com: could not connect to host
 subbing.work: could not connect to host
 subdimension.org: did not receive HSTS header
 subeesu.com: could not connect to host
 subhacker.net: did not receive HSTS header
 subsys.no: did not receive HSTS header
 subtitle.rip: could not connect to host
 subwayz.de: did not receive HSTS header
 sudo.li: did not receive HSTS header
@@ -10195,17 +10192,16 @@ suian.or.jp: max-age too low: 86400
 suite73.org: could not connect to host
 summitbankofkc.com: did not receive HSTS header
 summitmasters.net: did not receive HSTS header
 sumoatm.com: did not receive HSTS header
 sumoscout.de: could not connect to host
 sun-wellness-online.com.vn: did not receive HSTS header
 suncountrymarine.com: did not receive HSTS header
 sundaycooks.com: max-age too low: 2592000
-sunflyer.cn: did not receive HSTS header
 sunlandsg.vn: did not receive HSTS header
 sunnyfruit.ru: could not connect to host
 sunshinepress.org: could not connect to host
 sunyanzi.tk: could not connect to host
 suos.io: could not connect to host
 supcro.com: could not connect to host
 super-erotica.ru: could not connect to host
 super-garciniaslim.com: could not connect to host
@@ -10384,16 +10380,17 @@ techfactslive.com: did not receive HSTS 
 techhipster.net: could not connect to host
 techhub.ml: could not connect to host
 techllage.com: could not connect to host
 techloaner.com: could not connect to host
 techmasters.andover.edu: did not receive HSTS header
 techmatehq.com: could not connect to host
 techmunchies.net: did not receive HSTS header
 technicalpenguins.com: did not receive HSTS header
+techniclab.net: did not receive HSTS header
 technogroup.cz: did not receive HSTS header
 technosavvyport.com: did not receive HSTS header
 technotonic.com.au: did not receive HSTS header
 techpointed.com: could not connect to host
 techproud.com: did not receive HSTS header
 techreview.link: could not connect to host
 techtoy.store: did not receive HSTS header
 techtraveller.com.au: did not receive HSTS header
@@ -10462,17 +10459,17 @@ thaihostcool.com: did not receive HSTS h
 thailandpropertylisting.com: could not connect to host
 thailandpropertylistings.com: did not receive HSTS header
 thalmann.fr: did not receive HSTS header
 thatvizsla.life: did not receive HSTS header
 the-construct.com: could not connect to host
 the-delta.net.eu.org: could not connect to host
 the-sky-of-valkyries.com: could not connect to host
 the.ie: did not receive HSTS header
-theamateurs.net: could not connect to host
+theamateurs.net: did not receive HSTS header
 theamp.com: did not receive HSTS header
 theater.cf: could not connect to host
 theavenuegallery.com: did not receive HSTS header
 thebakingclass.com: max-age too low: 60
 thebasementguys.com: could not connect to host
 thebeautifulmusic.net: did not receive HSTS header
 thebeginningisnye.com: could not connect to host
 theberkshirescompany.com: could not connect to host
@@ -10633,16 +10630,17 @@ titanlab.de: could not connect to host
 titanleaf.com: could not connect to host
 titouan.co: did not receive HSTS header
 tittarpuls.se: could not connect to host
 titties.ml: could not connect to host
 tjc.wiki: could not connect to host
 tjeckien.guide: could not connect to host
 tkappertjedemetamorfose.nl: could not connect to host
 tkarstens.de: did not receive HSTS header
+tkjg.fi: did not receive HSTS header
 tkonstantopoulos.tk: could not connect to host
 tlcdn.net: could not connect to host
 tlo.hosting: could not connect to host
 tlo.link: could not connect to host
 tlo.network: could not connect to host
 tls.li: could not connect to host
 tlsbv.nl: did not receive HSTS header
 tlshost.net: could not connect to host
@@ -10662,16 +10660,17 @@ tobias-bielefeld.de: did not receive HST
 tobiasmathes.com: could not connect to host
 tobiasmathes.name: could not connect to host
 tobiasofficial.at: could not connect to host
 tobiassachs.cf: could not connect to host
 tobiassachs.tk: could not connect to host
 todesschaf.org: could not connect to host
 todo.is: did not receive HSTS header
 todobazar.es: could not connect to host
+todoscomciro.com: did not receive HSTS header
 tofu.im: could not connect to host
 togelonlinecommunity.com: could not connect to host
 toka.sg: did not receive HSTS header
 tokenloan.com: could not connect to host
 tokobungaasryflorist.com: did not receive HSTS header
 tokobungadipadangflorist.com: did not receive HSTS header
 tokoone.com: did not receive HSTS header
 tokotamz.net: could not connect to host
@@ -11114,16 +11113,17 @@ viddiaz.com: did not receive HSTS header
 videnskabsklubben.dk: did not receive HSTS header
 videomail.io: did not receive HSTS header
 videomuz.com: could not connect to host
 videotogel.net: could not connect to host
 videoueberwachung-set.de: could not connect to host
 vider.ga: could not connect to host
 vidid.net: did not receive HSTS header
 vidiproject.com: did not receive HSTS header
+vidlyoficial.com: did not receive HSTS header
 vidz.ga: could not connect to host
 vietnamchevrolet.net: did not receive HSTS header
 vietnamphotographytours.com: could not connect to host
 vigilo.cf: could not connect to host
 vigilo.ga: could not connect to host
 vijos.org: did not receive HSTS header
 viktor-machnik.de: could not connect to host
 viktorsvantesson.net: did not receive HSTS header
@@ -11188,17 +11188,17 @@ volbyzive.cz: did not receive HSTS heade
 volcrado.com: did not receive HSTS header
 volkden.com: could not connect to host
 voltotc.com: did not receive HSTS header
 vonavy-cukor.sk: could not connect to host
 vonavycukor.sk: could not connect to host
 vonedelmann.de: did not receive HSTS header
 vonterra.us: did not receive HSTS header
 vooreenveiligthuis.nl: did not receive HSTS header
-voorjou.com: could not connect to host
+voorjou.com: did not receive HSTS header
 vorangerie.com: could not connect to host
 vortexhobbies.com: did not receive HSTS header
 vowsy.club: did not receive HSTS header
 vox.vg: did not receive HSTS header
 vpip.net: could not connect to host
 vpl.me: did not receive HSTS header
 vpn-byen.dk: did not receive HSTS header
 vpn.pics: did not receive HSTS header
@@ -11267,17 +11267,16 @@ warsh.moe: did not receive HSTS header
 warumsuchen.at: did not receive HSTS header
 wasatchcrest.com: did not receive HSTS header
 wasi-net.de: did not receive HSTS header
 watchium.com: did not receive HSTS header
 waterforlife.net.au: did not receive HSTS header
 waterpoint.com.br: could not connect to host
 watersportmarkt.net: did not receive HSTS header
 watsonhall.uk: could not connect to host
-wattechweb.com: did not receive HSTS header
 wavefloatrooms.com: did not receive HSTS header
 wavefrontsystemstech.com: could not connect to host
 waylee.net: did not receive HSTS header
 wbit.co.il: did not receive HSTS header
 wear2work.nl: did not receive HSTS header
 wearedisneyland.com: did not receive HSTS header
 weaverhairextensions.nl: could not connect to host
 web-industry.fr: could not connect to host
@@ -11508,17 +11507,17 @@ www-1117.com: could not connect to host
 www-39988.com: did not receive HSTS header
 www-507.net: could not connect to host
 www-746.com: could not connect to host
 www-771122.com: did not receive HSTS header
 www-8003.com: did not receive HSTS header
 www-88599.com: did not receive HSTS header
 www-9995.com: did not receive HSTS header
 www-djbet.com: did not receive HSTS header
-www-jinshavip.com: could not connect to host
+www-jinshavip.com: did not receive HSTS header
 www.cueup.com: could not connect to host
 www.cyveillance.com: did not receive HSTS header
 www.developer.mydigipass.com: could not connect to host
 www.elanex.biz: did not receive HSTS header
 www.gamesdepartment.co.uk: did not receive HSTS header
 www.gpo.gov: did not receive HSTS header
 www.greplin.com: could not connect to host
 www.jitsi.org: did not receive HSTS header
@@ -11592,17 +11591,16 @@ xn--4dbjwf8c.gq: could not connect to ho
 xn--4dbjwf8c.ml: could not connect to host
 xn--4dbjwf8c.tk: could not connect to host
 xn--6cv66l79sp0n0ibo7s9ne.xyz: did not receive HSTS header
 xn--7rvz7ku3ppnr.jp: could not connect to host
 xn--7v8h.cf: could not connect to host
 xn--80aaihqncaejjobbu6v.xn--p1ai: did not receive HSTS header
 xn--80ablh1c.online: could not connect to host
 xn--88j2fy28hbxmnnf9zlw5buzd.com: did not receive HSTS header
-xn--90accgba6bldkcbb7a.xn--p1acf: did not receive HSTS header
 xn--98jm6m.jp: did not receive HSTS header
 xn--9pr52k0p5a.com: did not receive HSTS header
 xn--bstlinser-v2a.com: could not connect to host
 xn--datenrettung-mnchen-jbc.com: did not receive HSTS header
 xn--ekr87w7se89ay98ezcs.biz: did not receive HSTS header
 xn--gmq92k.nagoya: did not receive HSTS header
 xn--jp-6l5cs1yf3ivjsglphyv.net: could not connect to host
 xn--l8j9d2b.jp: did not receive HSTS header
@@ -11745,16 +11743,18 @@ zamos.ru: max-age too low: 0
 zaneweb.org: could not connect to host
 zao.fi: could not connect to host
 zaoshanghao-dajia.rhcloud.com: could not connect to host
 zap.yt: did not receive HSTS header
 zarooba.com: could not connect to host
 zavca.com: did not receive HSTS header
 zbasenem.pl: did not receive HSTS header
 zbigniewgalucki.eu: did not receive HSTS header
+zcarot.com: did not receive HSTS header
+zcarrot.com: did not receive HSTS header
 zdravotnickasluzba.eu: could not connect to host
 zdrowiepaleo.pl: did not receive HSTS header
 zdx.ch: max-age too low: 0
 zebbra.ro: did not receive HSTS header
 zebrababy.cn: could not connect to host
 zebry.nl: could not connect to host
 zecrypto.com: could not connect to host
 zeedroom.be: did not receive HSTS header
@@ -11764,17 +11764,17 @@ zehntner.ch: max-age too low: 3600
 zelfmoord.ga: could not connect to host
 zelfstandigemakelaars.net: could not connect to host
 zenhaiku.com: did not receive HSTS header
 zenpayroll.com: did not receive HSTS header
 zentience.dk: did not receive HSTS header
 zentience.net: did not receive HSTS header
 zentience.org: could not connect to host
 zentraler-kreditausschuss.de: did not receive HSTS header
-zentralwolke.de: could not connect to host
+zentralwolke.de: did not receive HSTS header
 zenwears.com: could not connect to host
 zera.com.au: could not connect to host
 zerekin.net: did not receive HSTS header
 zeroday.sk: did not receive HSTS header
 zerofox.gq: could not connect to host
 zeroml.ml: could not connect to host
 zerudi.com: did not receive HSTS header
 zeto365.pl: did not receive HSTS header
@@ -11825,17 +11825,16 @@ zoners.si: did not receive HSTS header
 zonky.io: could not connect to host
 zoo24.de: did not receive HSTS header
 zoofaeth.de: did not receive HSTS header
 zoomingin.net: max-age too low: 5184000
 zoommailing.com: did not receive HSTS header
 zoorigin.com: did not receive HSTS header
 zorasvobodova.cz: did not receive HSTS header
 zortium.report: could not connect to host
-zotero.org: did not receive HSTS header
 zoznamrealit.sk: did not receive HSTS header
 zqhong.com: could not connect to host
 zqjs.tk: could not connect to host
 ztan.tk: could not connect to host
 ztcaoll222.cn: did not receive HSTS header
 ztytian.com: could not connect to host
 zubel.it: did not receive HSTS header
 zuckerfloh.de: did not receive HSTS header
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*****************************************************************************/
 /* This is an automatically generated file. If you're not                    */
 /* nsSiteSecurityService.cpp, you shouldn't be #including it.     */
 /*****************************************************************************/
 
 #include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1531039390360000);
+const PRTime gPreloadListExpirationTime = INT64_C(1531080394244000);
 %%
 0-1.party, 1
 0.me.uk, 1
 0005pay.com, 1
 00100010.net, 1
 0010100.net, 1
 00120012.net, 1
 00130013.net, 1
@@ -49,17 +49,16 @@ 01electronica.com.ar, 1
 01seguridad.com.ar, 1
 01smh.com, 1
 0222.mg, 1
 023838.com, 1
 023sec.com, 1
 02607.com, 1
 028718.com, 1
 029978.com, 1
-02dl.net, 1
 02smh.com, 1
 03-09-2016.wedding, 1
 040fitvitality.nl, 1
 046569.com, 1
 04sun.com, 1
 050media.nl, 1
 0513c.com, 1
 055268.com, 1
@@ -167,16 +166,17 @@ 132kv.ch, 1
 13318522.com, 1
 1359826938.rsc.cdn77.org, 1
 135vv.com, 1
 13826145000.com, 1
 1395kj.com, 1
 1396.net, 1
 13th-dover.uk, 1
 1453914078.rsc.cdn77.org, 1
+1464424382.rsc.cdn77.org, 1
 1481481.com, 1
 1481481.net, 1
 1481482.com, 1
 1481482.net, 1
 1481483.com, 1
 1481483.net, 1
 1481485.com, 1
 1481485.net, 1
@@ -935,17 +935,16 @@ adalis.org, 1
 adam-kostecki.de, 1
 adam-wilson.me, 1
 adambalogh.net, 1
 adambyers.com, 1
 adamcoffee.net, 1
 adamdixon.co.uk, 1
 adamek.online, 1
 adamfontenot.com, 1
-adamgold.net, 0
 adamh.us, 1
 adamkaminski.com, 1
 adamkostecki.de, 1
 adamoutler.com, 1
 adamradocz.com, 1
 adams.dk, 1
 adamsbouncycastles.co.uk, 1
 adamstas.com, 1
@@ -1863,17 +1862,16 @@ andiplusben.com, 1
 andisadhdspot.com, 1
 anditi.com, 1
 andoms.fi, 1
 andre-otto.com, 1
 andrea-kiaora.de, 1
 andrea-m.me, 1
 andrea-wirthensohn.at, 1
 andreaboero.it, 1
-andreagobetti.com, 1
 andreagourmet.it, 1
 andreamcnett.com, 1
 andreas-kluge.eu, 1
 andreaseracleous.com, 1
 andreasfeusi.ch, 1
 andreaskluge.eu, 1
 andreaskrasa.com, 1
 andreasolsson.se, 1
@@ -1935,17 +1933,16 @@ anecuni-rec.com, 1
 anedot-sandbox.com, 1
 anedot.com, 1
 anedot.space, 1
 anedot.xyz, 1
 anekdotes.com, 0
 anendlesssupply.co.uk, 1
 anetaben.nl, 1
 anextraordinaryday.net, 1
-anfenglish.com, 1
 ange-de-bonheur444.com, 1
 angel-body.com, 1
 angelic47.com, 1
 angelinahair.com, 1
 angeloventuri.com, 1
 angelsgirl.eu.org, 1
 anginf.de, 1
 anglertanke.de, 1
@@ -2455,16 +2452,17 @@ artecat.ch, 1
 artemicroway.com.br, 1
 artemis.re, 1
 arterienundvenen.ch, 1
 arteseideias.com.pt, 1
 arteshow.ch, 1
 artetrama.com, 0
 artforum.sk, 1
 arthermitage.org, 1
+arthur.cn, 1
 arthurlaw.ca, 1
 arthurmelo.com, 0
 articaexports.com, 1
 artificial.army, 1
 artik.cloud, 1
 artimpact.ch, 1
 artioml.net, 1
 artionet.ch, 1
@@ -3292,16 +3290,17 @@ baofengtech.com, 1
 baosuckhoedoisong.net, 1
 baptistboard.com, 1
 baptiste-peugnez.fr, 1
 baptistedeleris.fr, 1
 bar-harcourt.com, 1
 barabrume.fr, 1
 barans2239.com, 1
 barbarafabbri.com, 1
+barbarafeldman.com, 1
 barbarians.com, 0
 barbaros.info, 1
 barbate.fr, 1
 barbershop-harmony.org, 1
 barbosha.ru, 1
 barbu.family, 1
 barburas.com, 1
 barclays.net, 1
@@ -5506,16 +5505,17 @@ campus-finance.com, 1
 campusdrugprevention.gov, 1
 campuswire.com, 1
 campwabashi.org, 1
 camsky.de, 1
 canada-tourisme.ch, 1
 canadalife.de, 1
 canadasmotorcycle.ca, 1
 canadian.dating, 1
+canadianchristianity.com, 0
 canadiantouristboard.com, 1
 canalsidehouse.be, 1
 canalsidehouse.com, 1
 canarianlegalalliance.com, 1
 canarymod.net, 0
 cancelmyprofile.com, 1
 cancerdata.nhs.uk, 1
 candicecity.com, 1
@@ -6471,17 +6471,17 @@ circulatedigital.com, 1
 cirfi.com, 1
 ciri.com.co, 1
 cirope.com, 1
 cirrus0.de, 1
 cirugiasplasticas.com.mx, 1
 cirujanooral.com, 1
 cirurgicagervasio.com.br, 1
 cirurgicalucena.com.br, 1
-ciscodude.net, 0
+ciscodude.net, 1
 cisoaid.com, 1
 ciss.ltd, 1
 cisy.me, 1
 citationgurus.com, 1
 citcuit.in, 1
 citimarinestore.com, 1
 citizen-cam.de, 1
 citizensbankal.com, 1
@@ -6669,17 +6669,17 @@ cloudbreaker.de, 1
 cloudcaprice.net, 1
 cloudcloudcloud.cloud, 1
 cloudflare.com, 1
 cloudflareonazure.com, 1
 cloudia.org, 1
 cloudily.com, 1
 cloudimproved.com, 1
 cloudimprovedtest.com, 1
-cloudkit.pro, 1
+cloudkit.pro, 0
 cloudlight.biz, 1
 cloudmigrator365.com, 1
 cloudnote.cc, 1
 cloudoptimizedsmb.com, 1
 cloudoptimus.com, 1
 cloudpagesforwork.com, 1
 cloudpebble.net, 1
 cloudpengu.in, 1
@@ -7158,17 +7158,16 @@ consommateuraverti.com, 1
 consonare.de, 1
 constancechen.me, 1
 constant-rough.de, 1
 construct-trust.com, 1
 constructionjobs.com, 1
 constructive.men, 1
 consul.io, 1
 consultcelerity.com, 1
-consultorcr.net, 1
 consultpetkov.com, 1
 consumer.gov, 1
 consumeractionlawgroup.com, 1
 consumerfiles.com, 1
 consumersentinel.gov, 1
 consumidor.gov, 1
 consuwijzer.nl, 1
 contactsingapore.sg, 1
@@ -7190,16 +7189,17 @@ controlarlaansiedad.com, 1
 controlautocom.com.br, 1
 controlbooth.com, 1
 controle.net, 1
 controleer-maar-een-ander.nl, 1
 controltickets.com.br, 1
 contxt-agentur.de, 1
 conv2pdf.com, 1
 conve.eu, 1
+convergemagazine.com, 1
 convergence.fi, 1
 convergencela.com, 1
 convergnce.com, 1
 conversiones.com, 1
 conversionsciences.com, 1
 convert.im, 1
 converter.ml, 1
 convexset.org, 1
@@ -7229,17 +7229,16 @@ cooldan.com, 1
 coole-fete.de, 1
 coolerssr.space, 1
 coolgifs.de, 1
 coolkidsbouncycastles.co.uk, 1
 coolprylar.se, 1
 coolrc.me, 1
 coolviewthermostat.com, 1
 coolvox.com, 1
-coonelnel.net, 1
 coopens.com, 1
 coore.jp, 1
 coorpacademy.com, 1
 copdfoundation.org, 1
 copperhead.co, 1
 copperheados.com, 1
 coptic-treasures.com, 1
 coptkm.cz, 1
@@ -8234,17 +8233,17 @@ davy-server.com, 1
 daw.nz, 1
 dawnbringer.eu, 1
 dawnbringer.net, 1
 dawnson.is, 1
 dawnsonb.com, 1
 dawson-floridavilla.co.uk, 1
 day-peak.com, 1
 daylightpirates.org, 1
-dayman.net, 0
+dayman.net, 1
 days.one, 1
 daysoftheyear.com, 1
 db-sanity.com, 1
 db-works.nl, 1
 dbapress.org, 1
 dbaron.org, 1
 dbas.cz, 1
 dbcom.ru, 1
@@ -8279,16 +8278,17 @@ dclaisse.fr, 1
 dcmt.co, 1
 dcpower.eu, 1
 dcrdev.com, 1
 dd.art.pl, 1
 ddel.de, 1
 dden.ca, 0
 dden.website, 1
 dden.xyz, 1
+ddepot.us, 0
 ddfreedish.site, 0
 ddhosted.com, 1
 ddmeportal.com, 1
 ddns-anbieter.de, 1
 ddocu.me, 1
 ddos-mitigation.co.uk, 1
 ddos-mitigation.info, 1
 ddracepro.net, 1
@@ -8690,16 +8690,17 @@ devpsy.info, 1
 devrandom.net, 1
 devstaff.gr, 1
 devtestfan1.gov, 1
 devyn.ca, 1
 devzero.io, 1
 dewaard.de, 1
 dewalch.net, 1
 dewapress.com, 1
+dewebwerf.nl, 1
 dewinter.com, 1
 dexalo.de, 1
 dezeregio.nl, 1
 dezet-ev.de, 1
 dezintranet.com, 1
 dezmembrariromania.ro, 1
 dezshop24.de, 1
 df1paw.de, 1
@@ -10087,17 +10088,16 @@ eirastudios.co.uk, 0
 eisaev.ru, 1
 eit-web.de, 0
 eitler.cx, 1
 eiyoushi-shigoto.com, 1
 ejdv-anmeldung.de, 1
 ejeff.org, 1
 ejgconsultancy.co.uk, 1
 ejuicelab.co.uk, 1
-ejusu.com, 1
 ek-networks.de, 1
 ek.network, 1
 ekaigotenshoku.com, 1
 ekati.ru, 1
 ekb-avia.ru, 1
 ekd.de, 1
 ekedc.com, 1
 ekedp.com, 1
@@ -10218,17 +10218,17 @@ elinevanhaaften.nl, 1
 elinvention.ovh, 1
 eliolita.com, 1
 eliott.be, 0
 elisa.ee, 0
 elisabeth-kostecki.de, 1
 elisabeth-strunz.de, 1
 elisabethkostecki.de, 1
 elisechristie.com, 1
-elistor6100.xyz, 0
+elistor6100.xyz, 1
 elite-box.com, 1
 elite-box.org, 1
 elite12.de, 1
 elitebouncingfun.com, 1
 elitegameservers.net, 1
 elitehosting.de, 1
 elitesensual.com.br, 1
 elixir.bzh, 1
@@ -11032,16 +11032,17 @@ evailoil.ee, 1
 evailoil.eu, 1
 evalesc.com, 1
 evamachkova.cz, 1
 evamathil.de, 1
 evamira.com, 1
 evanfiddes.com, 1
 evangelosm.com, 1
 evankurniawan.com, 1
+evantage.org, 1
 evantageglobal.com, 1
 evapp.org, 1
 evasioncreole.com, 1
 evasovova.cz, 1
 eve0s.com, 1
 evedanjailbreak.com, 1
 evelienzorgt.nl, 1
 evelyndayman.com, 1
@@ -13201,16 +13202,17 @@ giacomodrago.com, 1
 giacomodrago.it, 1
 giacomopelagatti.it, 1
 gianlucapartengo.photography, 1
 gianproperties.com, 1
 giant-panda.com, 1
 giant-powerfit.co.uk, 1
 giant-tortoise.com, 1
 gianttree.de, 1
+giardinaggio.milano.it, 1
 giardinaggio.napoli.it, 1
 gibraltar.at, 1
 gichigamigames.com, 1
 giddyaunt.net, 1
 giduv.com, 1
 giebel.it, 1
 giegler.software, 1
 gierds.de, 1
@@ -13329,17 +13331,16 @@ glcastlekings.co.uk, 1
 gleanview.com, 1
 glencarbide.com, 1
 glendarraghbouncycastles.co.uk, 1
 glenhuntlyapartments.com.au, 1
 glenshere.com, 1
 glidingshop.cz, 1
 glidingshop.de, 1
 glidingshop.eu, 1
-glittersjabloon.nl, 1
 glloq.org, 1
 glob-coin.com, 1
 global-lights.ma, 1
 global-office.com, 1
 global-village.koeln, 1
 global.hr, 1
 globalcanineregistry.com, 1
 globalchokepoints.org, 1
@@ -13886,17 +13887,16 @@ guim.co.uk, 1
 guinea-pig.co, 1
 guineapigmustach.es, 1
 guishem.com, 1
 gulchuk.com, 1
 gulenbase.no, 1
 gulfstream.ru, 1
 gulleyperformancecenter.com, 1
 gulshankumar.net, 1
-gumannp.de, 1
 gumballs.com, 1
 gume4you.com, 1
 gumi.ca, 1
 gummibande.noip.me, 1
 gunhunter.com, 1
 guniram.com, 1
 gunwatch.co.uk, 1
 guochang.xyz, 1
@@ -16657,17 +16657,16 @@ jardin-exotique-rennes.fr, 1
 jardinderline.ch, 1
 jardiniersduminotaure.fr, 1
 jardins-utopie.net, 1
 jaredeberle.org, 0
 jaredfernandez.com, 1
 jaredfraser.com, 1
 jarivisual.com, 1
 jarl.ninja, 1
-jarnail.ca, 1
 jarniashop.se, 1
 jaroku.com, 1
 jarondl.net, 1
 jarrettgraham.com, 1
 jarroba.com, 1
 jas-team.net, 1
 jasl.works, 1
 jasmijnwagenaar.nl, 1
@@ -17340,16 +17339,17 @@ justinho.com, 1
 justinrudio.com, 1
 justinstandring.com, 1
 justnu.se, 0
 justpaste.it, 1
 justupdate.me, 1
 justyy.com, 1
 justzz.xyz, 1
 juszkiewicz.com.pl, 1
+jutlander-netbank.dk, 1
 jutlander.dk, 1
 juul.xyz, 1
 juventusclublugano.ch, 1
 juventusmania1897.com, 1
 juwelierstoopman.nl, 1
 juzgalo.com, 1
 jva-wuerzburg.de, 1
 jvanerp.nl, 1
@@ -18326,17 +18326,16 @@ krupa.net.pl, 0
 krutka.cz, 1
 kruu.de, 1
 kruzhki-s-kartinkami.ru, 1
 kry.no, 1
 kry.se, 1
 kryglik.com, 1
 krypsys.com, 1
 krypt.com, 1
-kryptera.se, 1
 kryptomodkingz.com, 1
 kryx.de, 1
 ks-watch.de, 1
 kschv-rdeck.de, 1
 kselenia.ee, 1
 ksero.center, 1
 ksham.net, 1
 kshlm.in, 1
@@ -19513,17 +19512,17 @@ locationvoitureislande.com, 1
 locationvoitureitalie.com, 1
 locationvoiturenorvege.com, 1
 locationvoiturepaysbas.com, 1
 locationvoitureportugal.com, 1
 locationvoituresuede.com, 1
 locatorplus.gov, 1
 locauxrama.fr, 1
 locchat.com, 1
-locker.email, 0
+locker.email, 1
 locker3.com, 1
 lockify.com, 1
 lockpick.nl, 1
 lockpicks.se, 1
 lockr.io, 1
 locksport.org.nz, 1
 locomore.com, 1
 locomotive.net.br, 1
@@ -20805,17 +20804,16 @@ mediawiki.org, 1
 mediawin.pl, 1
 medic-world.com, 1
 medicalcountermeasures.gov, 1
 medicinesfast.com, 0
 medicinia.com.br, 1
 medicinskavranje.edu.rs, 1
 medicocompetente.it, 1
 medicoresponde.com.br, 1
-medifab.online, 1
 medifi.com, 1
 medinside.ch, 1
 medinside.li, 1
 medinsider.ch, 1
 medinsider.li, 1
 medireport.fr, 1
 medium.com, 1
 mediumraw.org, 1
@@ -21815,17 +21813,16 @@ motorpointarenacardiff.co.uk, 1
 motorring.ru, 1
 motorsplus.com, 0
 motorsportdiesel.com, 1
 motoryachtclub-radolfzell.de, 1
 motosikletevi.com, 1
 motostorie.blog, 0
 motovated.co.nz, 1
 motowilliams.com, 1
-motransportinfo.com, 1
 mottomortgage.com, 1
 moube.fr, 1
 moulinaparoles.ca, 1
 moumaobuchiyu.com, 1
 mountain-rock.ru, 1
 mountainactivitysection.org.uk, 1
 mountainadventureseminars.com, 1
 mountainroseherbs.com, 1
@@ -27693,16 +27690,17 @@ rudolph.life, 1
 rudolphmarketing.com, 1
 rudrastyh.com, 1
 ruediger-voigt.eu, 1
 ruedirrenggli.ch, 1
 rueg.eu, 1
 ruerte.net, 1
 rufabula-com.appspot.com, 1
 ruffbeatz.com, 1
+ruflay.ru, 1
 rugby.video, 1
 rugk.dedyn.io, 1
 ruh-veit.de, 1
 ruhr3.de, 1
 ruhrmobil-e.de, 1
 ruhrnalist.de, 1
 ruht.ro, 1
 ruigomes.me, 1
@@ -28459,17 +28457,16 @@ seatbeltpledge.com, 1
 seatshare.co.uk, 1
 seattle-life.net, 1
 seattlefabrication.com, 1
 seattlemesh.net, 1
 seattleprivacy.org, 1
 seattlewalkinbathtubs.com, 1
 seb-mgl.de, 1
 sebascelis.com, 1
-sebastiaandouma.co.uk, 1
 sebastiaandouma.com, 1
 sebastian-janich.de, 1
 sebastian-kraus.me, 1
 sebastian-lutsch.de, 1
 sebastian-schmidt.me, 1
 sebastian.expert, 1
 sebastianblade.com, 1
 sebastianboegl.de, 1
@@ -29652,16 +29649,17 @@ smartmeal.ru, 1
 smartmessages.net, 1
 smartmomsmartideas.com, 1
 smartofficeusa.com, 1
 smartpass.government.ae, 1
 smartpolicingplatform.com, 1
 smartrade.tech, 1
 smartshiftme.com, 1
 smartship.co.jp, 1
+smartshoppers.es, 1
 smartsparrow.com, 1
 smartvideo.io, 1
 smartviewing.com, 1
 smartwelve.com, 1
 smartwritingservice.com, 1
 smartwurk.nl, 1
 smash-gg.club, 1
 smatch.com, 1
@@ -30087,17 +30085,16 @@ spectrosoftware.de, 1
 spedplus.com.br, 0
 speech-balloon.com, 1
 speechdrop.net, 1
 speechmate.com, 1
 speechndraw.com, 1
 speeddate.it, 0
 speedof.me, 1
 speedracer.ca, 1
-speeds.vip, 1
 speedsportofhull.co.uk, 1
 speedtailors.com, 1
 speedtest-russia.com, 1
 speedychat.it, 1
 speeltoneel.nl, 1
 speerpunt.info, 1
 speich.net, 1
 spek.tech, 1
@@ -30623,16 +30620,17 @@ stonedworms.de, 1
 stonefusion.org.uk, 1
 stonehammerhead.org, 1
 stonemain.eu, 1
 stonemanbrasil.com.br, 1
 stonewuu.com, 1
 stony.com, 1
 stonystratford.org, 1
 stopakwardhandshakes.org, 1
+stopbreakupnow.org, 1
 stopbullying.gov, 1
 stopfraud.gov, 1
 stopthethyroidmadness.com, 1
 stordbatlag.no, 1
 store10.de, 0
 storedsafe.com, 1
 storgom.ua, 0
 storillo.com, 1
@@ -30857,16 +30855,17 @@ sumthing.com, 1
 sunboxstore.jp, 1
 sunbritetv.com, 1
 sunchasercats.com, 1
 sundanceusa.com, 1
 sundayfundayjapan.com, 1
 suneilpatel.com, 1
 sunfeathers.net, 1
 sunfireshop.com.br, 1
+sunflyer.cn, 0
 sunfox.cz, 1
 sunfulong.blog, 1
 sunfulong.me, 1
 sunjaydhama.com, 1
 sunn.ie, 1
 sunriseafricarelief.com, 1
 sunsetwx.com, 1
 sunshinesf.org, 1
@@ -31479,17 +31478,16 @@ techiehall.com, 1
 techinet.pl, 1
 techjoe.co, 1
 techmajesty.com, 1
 techmasters.io, 1
 technicabv.nl, 1
 technicalbrothers.cf, 1
 technicalforensic.com, 1
 technicallyeasy.net, 1
-techniclab.net, 1
 technifocal.com, 1
 technikrom.org, 1
 technoinfogroup.it, 1
 technologie-innovation.fr, 1
 technologyand.me, 1
 technologysi.com, 1
 technoparcepsilon.fr, 1
 technoscoots.com, 1
@@ -32344,17 +32342,16 @@ tjp.ch, 1
 tjs.me, 1
 tjsbouncycastles.co.uk, 1
 tju.me, 1
 tkacz.pro, 1
 tkanemoto.com, 1
 tkat.ch, 1
 tkeycoin.com, 1
 tkgpm.com, 1
-tkjg.fi, 1
 tkn.me, 1
 tkn.tokyo, 1
 tkts.cl, 1
 tkusano.jp, 1
 tkw01536.de, 1
 tlach.cz, 1
 tlca.org, 1
 tlcnet.info, 1
@@ -32440,17 +32437,16 @@ todacarreira.com, 1
 todaciencia.com, 1
 todamateria.com.br, 1
 todapolitica.com, 1
 todaymeow.com, 1
 todocracy.com, 1
 todoescine.com, 1
 todoist.com, 1
 todon.fr, 1
-todoscomciro.com, 1
 todosrv.com, 1
 toeglhofer.at, 1
 toeightycountries.com, 1
 toekomstperspectief.be, 1
 toerclub-ing-arnhem.nl, 1
 toetsplatform.be, 1
 tofa-koeln.de, 1
 tofe.io, 1
@@ -34067,17 +34063,16 @@ videoload.co, 1
 videorullen.se, 1
 videoseyredin.net, 1
 videospornogratis.pt, 1
 videosqr.com, 1
 videov.tk, 1
 vidister.de, 1
 viditut.com, 1
 vidkovaomara.si, 1
-vidlyoficial.com, 1
 vieaw.com, 1
 vieclam24h.vn, 0
 viekelis.lt, 0
 viemeister.com, 1
 viemontante.be, 1
 viennan.net, 1
 vientos.coop, 1
 viepixel.at, 1
@@ -34593,16 +34588,17 @@ waterfedpole.com, 1
 waterleeftinbeek.nl, 1
 watermonitor.gov, 1
 watersb.org, 1
 waterschaplimburg.nl, 1
 watertrails.io, 1
 waterworkscondos.com, 1
 watoo.tech, 1
 watsonwork.me, 1
+wattechweb.com, 1
 wave-ola.es, 1
 wave.is, 1
 wavesboardshop.com, 1
 wavesoftime.com, 1
 waveum.com, 1
 wawak.pl, 1
 waxdramatic.com, 1
 waylaydesign.com, 1
@@ -35804,16 +35800,17 @@ xn--79q87uvkclvgd56ahq5a.net, 1
 xn--7ca.co, 1
 xn--7xa.google.com, 1
 xn--80aaagmgvmvmcuoq7r.xn--p1ai, 1
 xn--80anogxed.xn--p1ai, 1
 xn--80aocgsfei.xn--p1ai, 1
 xn--80azelb.xn--p1ai, 1
 xn--8dry00a7se89ay98epsgxxq.com, 1
 xn--8mr166hf6s.xn--fiqs8s, 1
+xn--90accgba6bldkcbb7a.xn--p1acf, 1
 xn--allgu-biker-o8a.de, 1
 xn--aviao-dra1a.pt, 1
 xn--baron-bonzenbru-elb.com, 1
 xn--berwachungspaket-izb.at, 1
 xn--brneruhr-0za.ch, 1
 xn--c5w27q.ml, 1
 xn--cck4ax91r.com, 1
 xn--cck7f515h.com, 1
@@ -36452,18 +36449,16 @@ zawo-electric.de, 1
 zbchen.com, 1
 zberger.com, 1
 zbetcheck.in, 1
 zbp.at, 0
 zbrane-doplnky.cz, 1
 zby.io, 1
 zbyga.cz, 1
 zbyte.it, 1
-zcarot.com, 1
-zcarrot.com, 1
 zcgram.com, 1
 zcon.nl, 1
 zcr.ca, 1
 zdbl.de, 1
 zdenekspacek.cz, 1
 zdorovayasimya.com, 1
 zdravesteny.cz, 1
 zdrojak.cz, 1
@@ -36657,16 +36652,17 @@ zooxdata.com, 1
 zopy.com.br, 1
 zopyx.com, 1
 zor.com, 1
 zorgclustertool.nl, 1
 zorium.org, 1
 zorki.nl, 1
 zorntt.fr, 1
 zorz.info, 1
+zotero.org, 1
 zouk.info, 1
 zouyaoji.top, 1
 zravypapir.cz, 1
 zrn.in, 0
 zrniecka-pre-sny.sk, 1
 zrnieckapresny.sk, 1
 zrt.io, 1
 zscales.com, 1
--- a/servo/components/layout_thread/dom_wrapper.rs
+++ b/servo/components/layout_thread/dom_wrapper.rs
@@ -61,17 +61,17 @@ use std::marker::PhantomData;
 use std::ptr::NonNull;
 use std::sync::atomic::Ordering;
 use style::CaseSensitivityExt;
 use style::applicable_declarations::ApplicableDeclarationBlock;
 use style::attr::AttrValue;
 use style::context::SharedStyleContext;
 use style::data::ElementData;
 use style::dom::{DomChildren, LayoutIterator, NodeInfo, OpaqueNode};
-use style::dom::{TDocument, TElement, TNode};
+use style::dom::{TDocument, TElement, TNode, TShadowRoot};
 use style::element_state::*;
 use style::font_metrics::ServoMetricsProvider;
 use style::properties::{ComputedValues, PropertyDeclarationBlock};
 use style::selector_parser::{AttrValue as SelectorAttrValue, NonTSPseudoClass, PseudoClassStringArg};
 use style::selector_parser::{PseudoElement, SelectorImpl, extended_filtering};
 use style::shared_lock::{SharedRwLock as StyleSharedRwLock, Locked as StyleLocked};
 use style::str::is_whitespace;
 
@@ -145,19 +145,38 @@ impl<'ln> NodeInfo for ServoLayoutNode<'
         }
     }
 
     fn is_text_node(&self) -> bool {
         self.script_type_id() == NodeTypeId::CharacterData(CharacterDataTypeId::Text)
     }
 }
 
+#[derive(Clone, Copy)]
+enum Impossible { }
+
+#[derive(Clone, Copy)]
+pub struct ShadowRoot<'lr>(Impossible, PhantomData<&'lr ()>);
+
+impl<'lr> TShadowRoot for ShadowRoot<'lr> {
+    type ConcreteNode = ServoLayoutNode<'lr>;
+
+    fn as_node(&self) -> Self::ConcreteNode {
+        match self.0 { }
+    }
+
+    fn host(&self) -> ServoLayoutElement<'lr> {
+        match self.0 { }
+    }
+}
+
 impl<'ln> TNode for ServoLayoutNode<'ln> {
     type ConcreteDocument = ServoLayoutDocument<'ln>;
     type ConcreteElement = ServoLayoutElement<'ln>;
+    type ConcreteShadowRoot = ShadowRoot<'ln>;
 
     fn parent_node(&self) -> Option<Self> {
         unsafe {
             self.node.parent_node_ref().map(|node| self.new_with_this_lifetime(&node))
         }
     }
 
     fn first_child(&self) -> Option<Self> {
@@ -203,16 +222,20 @@ impl<'ln> TNode for ServoLayoutNode<'ln>
     fn as_element(&self) -> Option<ServoLayoutElement<'ln>> {
         as_element(self.node)
     }
 
     fn as_document(&self) -> Option<ServoLayoutDocument<'ln>> {
         self.node.downcast().map(ServoLayoutDocument::from_layout_js)
     }
 
+    fn as_shadow_root(&self) -> Option<ShadowRoot<'ln>> {
+        None
+    }
+
     fn is_in_document(&self) -> bool {
         unsafe { self.node.get_flag(NodeFlags::IS_IN_DOC) }
     }
 }
 
 impl<'ln> LayoutNode for ServoLayoutNode<'ln> {
     type ConcreteThreadSafeLayoutNode = ServoThreadSafeLayoutNode<'ln>;
 
@@ -484,21 +507,21 @@ impl<'le> TElement for ServoLayoutElemen
 
     #[inline]
     fn lang_attr(&self) -> Option<SelectorAttrValue> {
         self.get_attr(&ns!(xml), &local_name!("lang"))
             .or_else(|| self.get_attr(&ns!(), &local_name!("lang")))
             .map(|v| String::from(v as &str))
     }
 
-    fn match_element_lang(&self,
-                          override_lang: Option<Option<SelectorAttrValue>>,
-                          value: &PseudoClassStringArg)
-                          -> bool
-    {
+    fn match_element_lang(
+        &self,
+        override_lang: Option<Option<SelectorAttrValue>>,
+        value: &PseudoClassStringArg,
+    ) -> bool {
         // Servo supports :lang() from CSS Selectors 4, which can take a comma-
         // separated list of language tags in the pseudo-class, and which
         // performs RFC 4647 extended filtering matching on them.
         //
         // FIXME(heycam): This is wrong, since extended_filtering accepts
         // a string containing commas (separating each language tag in
         // a list) but the pseudo-class instead should be parsing and
         // storing separate <ident> or <string>s for each language tag.
@@ -530,16 +553,24 @@ impl<'le> TElement for ServoLayoutElemen
     )
     where
         V: Push<ApplicableDeclarationBlock>,
     {
         unsafe {
             self.element.synthesize_presentational_hints_for_legacy_attributes(hints);
         }
     }
+
+    fn shadow_root(&self) -> Option<ShadowRoot<'le>> {
+        None
+    }
+
+    fn containing_shadow(&self) -> Option<ShadowRoot<'le>> {
+        None
+    }
 }
 
 impl<'le> PartialEq for ServoLayoutElement<'le> {
     fn eq(&self, other: &Self) -> bool {
         self.as_node() == other.as_node()
     }
 }
 
--- a/servo/components/style/counter_style/mod.rs
+++ b/servo/components/style/counter_style/mod.rs
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 //! The [`@counter-style`][counter-style] at-rule.
 //!
 //! [counter-style]: https://drafts.csswg.org/css-counter-styles/
 
 use Atom;
 use cssparser::{AtRuleParser, DeclarationListParser, DeclarationParser};
-use cssparser::{Parser, Token, serialize_identifier, CowRcStr};
+use cssparser::{Parser, Token, CowRcStr};
 use error_reporting::{ContextualParseError, ParseErrorReporter};
 #[cfg(feature = "gecko")] use gecko::rules::CounterStyleDescriptors;
 #[cfg(feature = "gecko")] use gecko_bindings::structs::{ nsCSSCounterDesc, nsCSSValue };
 use parser::{ParserContext, ParserErrorContext, Parse};
 use selectors::parser::SelectorParseErrorKind;
 use shared_lock::{SharedRwLockReadGuard, ToCssWithGuard};
 #[allow(unused_imports)] use std::ascii::AsciiExt;
 use std::borrow::Cow;
@@ -386,50 +386,42 @@ impl ToCss for System {
                 other.to_css(dest)
             }
         }
     }
 }
 
 /// <https://drafts.csswg.org/css-counter-styles/#typedef-symbol>
 #[cfg_attr(feature = "gecko", derive(MallocSizeOf))]
-#[derive(Clone, Debug, Eq, PartialEq, ToComputedValue)]
+#[derive(Clone, Debug, Eq, PartialEq, ToComputedValue, ToCss)]
 pub enum Symbol {
     /// <string>
     String(String),
-    /// <ident>
-    Ident(String),
+    /// <custom-ident>
+    Ident(CustomIdent),
     // Not implemented:
     // /// <image>
     // Image(Image),
 }
 
 impl Parse for Symbol {
     fn parse<'i, 't>(_context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i>> {
         let location = input.current_source_location();
         match *input.next()? {
             Token::QuotedString(ref s) => Ok(Symbol::String(s.as_ref().to_owned())),
-            Token::Ident(ref s) => Ok(Symbol::Ident(s.as_ref().to_owned())),
+            Token::Ident(ref s) => {
+                Ok(Symbol::Ident(
+                    CustomIdent::from_ident(location, s, &[])?,
+                ))
+            }
             ref t => Err(location.new_unexpected_token_error(t.clone())),
         }
     }
 }
 
-impl ToCss for Symbol {
-    fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
-    where
-        W: Write,
-    {
-        match *self {
-            Symbol::String(ref s) => s.to_css(dest),
-            Symbol::Ident(ref s) => serialize_identifier(s, dest),
-        }
-    }
-}
-
 impl Symbol {
     /// Returns whether this symbol is allowed in symbols() function.
     pub fn is_allowed_in_symbols(&self) -> bool {
         match self {
             // Identifier is not allowed.
             &Symbol::Ident(_) => false,
             _ => true,
         }
@@ -545,17 +537,18 @@ pub struct Fallback(pub CustomIdent);
 impl Parse for Fallback {
     fn parse<'i, 't>(_context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i>> {
         parse_counter_style_name(input).map(Fallback)
     }
 }
 
 /// <https://drafts.csswg.org/css-counter-styles/#descdef-counter-style-symbols>
 #[cfg_attr(feature = "gecko", derive(MallocSizeOf))]
-#[derive(Clone, Debug, Eq, PartialEq, ToComputedValue)]
+#[css(iterable)]
+#[derive(Clone, Debug, Eq, PartialEq, ToComputedValue, ToCss)]
 pub struct Symbols(pub Vec<Symbol>);
 
 impl Parse for Symbols {
     fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i>> {
         let mut symbols = Vec::new();
         loop {
             if let Ok(s) = input.try(|input| Symbol::parse(context, input)) {
                 symbols.push(s)
@@ -565,32 +558,16 @@ impl Parse for Symbols {
                 } else {
                     return Ok(Symbols(symbols))
                 }
             }
         }
     }
 }
 
-impl ToCss for Symbols {
-    fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
-    where
-        W: Write,
-    {
-        let mut iter = self.0.iter();
-        let first = iter.next().expect("expected at least one symbol");
-        first.to_css(dest)?;
-        for item in iter {
-            dest.write_char(' ')?;
-            item.to_css(dest)?;
-        }
-        Ok(())
-    }
-}
-
 /// <https://drafts.csswg.org/css-counter-styles/#descdef-counter-style-additive-symbols>
 #[derive(Clone, Debug, ToCss)]
 pub struct AdditiveSymbols(pub Vec<AdditiveTuple>);
 
 impl Parse for AdditiveSymbols {
     fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i>> {
         let tuples = Vec::<AdditiveTuple>::parse(context, input)?;
         // FIXME maybe? https://github.com/w3c/csswg-drafts/issues/1220
--- a/servo/components/style/dom.rs
+++ b/servo/components/style/dom.rs
@@ -149,16 +149,19 @@ pub trait TDocument : Sized + Copy + Clo
 /// system can be implemented.
 pub trait TNode : Sized + Copy + Clone + Debug + NodeInfo + PartialEq {
     /// The concrete `TElement` type.
     type ConcreteElement: TElement<ConcreteNode = Self>;
 
     /// The concrete `TDocument` type.
     type ConcreteDocument: TDocument<ConcreteNode = Self>;
 
+    /// The concrete `TShadowRoot` type.
+    type ConcreteShadowRoot: TShadowRoot<ConcreteNode = Self>;
+
     /// Get this node's parent node.
     fn parent_node(&self) -> Option<Self>;
 
     /// Get this node's first child.
     fn first_child(&self) -> Option<Self>;
 
     /// Get this node's first child.
     fn last_child(&self) -> Option<Self>;
@@ -230,16 +233,19 @@ pub trait TNode : Sized + Copy + Clone +
     /// A debug id, only useful, mm... for debugging.
     fn debug_id(self) -> usize;
 
     /// Get this node as an element, if it's one.
     fn as_element(&self) -> Option<Self::ConcreteElement>;
 
     /// Get this node as a document, if it's one.
     fn as_document(&self) -> Option<Self::ConcreteDocument>;
+
+    /// Get this node as a ShadowRoot, if it's one.
+    fn as_shadow_root(&self) -> Option<Self::ConcreteShadowRoot>;
 }
 
 /// Wrapper to output the subtree rather than the single node when formatting
 /// for Debug.
 pub struct ShowSubtree<N: TNode>(pub N);
 impl<N: TNode> Debug for ShowSubtree<N> {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         writeln!(f, "DOM Subtree:")?;
@@ -309,16 +315,28 @@ fn fmt_subtree<F, N: TNode>(f: &mut fmt:
             writeln!(f, "")?;
             fmt_subtree(f, stringify, kid, indent + 1)?;
         }
     }
 
     Ok(())
 }
 
+/// The ShadowRoot trait.
+pub trait TShadowRoot : Sized + Copy + Clone {
+    /// The concrete node type.
+    type ConcreteNode: TNode<ConcreteShadowRoot = Self>;
+
+    /// Get this ShadowRoot as a node.
+    fn as_node(&self) -> Self::ConcreteNode;
+
+    /// Get the shadow host that hosts this ShadowRoot.
+    fn host(&self) -> <Self::ConcreteNode as TNode>::ConcreteElement;
+}
+
 /// The element trait, the main abstraction the style crate acts over.
 pub trait TElement
     : Eq
     + PartialEq
     + Debug
     + Hash
     + Sized
     + Copy
@@ -714,16 +732,22 @@ pub trait TElement
     /// Returns the anonymous content for the current element's XBL binding,
     /// given if any.
     ///
     /// This is used in Gecko for XBL and shadow DOM.
     fn xbl_binding_anonymous_content(&self) -> Option<Self::ConcreteNode> {
         None
     }
 
+    /// The shadow root this element is a host of.
+    fn shadow_root(&self) -> Option<<Self::ConcreteNode as TNode>::ConcreteShadowRoot>;
+
+    /// The shadow root which roots the subtree this element is contained in.
+    fn containing_shadow(&self) -> Option<<Self::ConcreteNode as TNode>::ConcreteShadowRoot>;
+
     /// Return the element which we can use to look up rules in the selector
     /// maps.
     ///
     /// This is always the element itself, except in the case where we are an
     /// element-backed pseudo-element, in which case we return the originating
     /// element.
     fn rule_hash_target(&self) -> Self {
         if self.implemented_pseudo_element().is_some() {
--- a/servo/components/style/gecko/generated/bindings.rs
+++ b/servo/components/style/gecko/generated/bindings.rs
@@ -1135,20 +1135,17 @@ extern "C" {
 }
 extern "C" {
     pub fn Gecko_AddRefImageValueArbitraryThread(aPtr: *mut ImageValue);
 }
 extern "C" {
     pub fn Gecko_ReleaseImageValueArbitraryThread(aPtr: *mut ImageValue);
 }
 extern "C" {
-    pub fn Gecko_ImageValue_Create(
-        aURI: ServoBundledURI,
-        aURIString: ServoRawOffsetArc<RustString>,
-    ) -> *mut ImageValue;
+    pub fn Gecko_ImageValue_Create(aURI: ServoBundledURI) -> *mut ImageValue;
 }
 extern "C" {
     pub fn Gecko_ImageValue_SizeOfIncludingThis(aImageValue: *mut ImageValue) -> usize;
 }
 extern "C" {
     pub fn Gecko_SetLayerImageImageValue(image: *mut nsStyleImage, aImageValue: *mut ImageValue);
 }
 extern "C" {
--- a/servo/components/style/gecko/generated/structs.rs
+++ b/servo/components/style/gecko/generated/structs.rs
@@ -140,746 +140,748 @@ pub mod root {
     impl<T> ::std::cmp::PartialEq for __BindgenUnionField<T> {
         fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
             true
         }
     }
     impl<T> ::std::cmp::Eq for __BindgenUnionField<T> {}
     #[allow(unused_imports)]
     use self::super::root;
-    pub const NS_FONT_STYLE_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_STYLE_ITALIC: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_STYLE_OBLIQUE: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_WEIGHT_NORMAL: ::std::os::raw::c_uint = 400;
-    pub const NS_FONT_WEIGHT_BOLD: ::std::os::raw::c_uint = 700;
-    pub const NS_FONT_WEIGHT_THIN: ::std::os::raw::c_uint = 100;
-    pub const NS_FONT_STRETCH_ULTRA_CONDENSED: ::std::os::raw::c_int = -4;
-    pub const NS_FONT_STRETCH_EXTRA_CONDENSED: ::std::os::raw::c_int = -3;
-    pub const NS_FONT_STRETCH_CONDENSED: ::std::os::raw::c_int = -2;
-    pub const NS_FONT_STRETCH_SEMI_CONDENSED: ::std::os::raw::c_int = -1;
-    pub const NS_FONT_STRETCH_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_STRETCH_SEMI_EXPANDED: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_STRETCH_EXPANDED: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_STRETCH_EXTRA_EXPANDED: ::std::os::raw::c_uint = 3;
-    pub const NS_FONT_STRETCH_ULTRA_EXPANDED: ::std::os::raw::c_uint = 4;
-    pub const NS_FONT_SMOOTHING_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_SMOOTHING_GRAYSCALE: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_KERNING_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_KERNING_NONE: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_KERNING_NORMAL: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_SYNTHESIS_WEIGHT: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_SYNTHESIS_STYLE: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_DISPLAY_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_DISPLAY_BLOCK: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_DISPLAY_SWAP: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_DISPLAY_FALLBACK: ::std::os::raw::c_uint = 3;
-    pub const NS_FONT_DISPLAY_OPTIONAL: ::std::os::raw::c_uint = 4;
-    pub const NS_FONT_VARIANT_ALTERNATES_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_VARIANT_ALTERNATES_HISTORICAL: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_VARIANT_ALTERNATES_STYLISTIC: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_VARIANT_ALTERNATES_STYLESET: ::std::os::raw::c_uint = 4;
-    pub const NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT: ::std::os::raw::c_uint = 8;
-    pub const NS_FONT_VARIANT_ALTERNATES_SWASH: ::std::os::raw::c_uint = 16;
-    pub const NS_FONT_VARIANT_ALTERNATES_ORNAMENTS: ::std::os::raw::c_uint = 32;
-    pub const NS_FONT_VARIANT_ALTERNATES_ANNOTATION: ::std::os::raw::c_uint = 64;
-    pub const NS_FONT_VARIANT_ALTERNATES_COUNT: ::std::os::raw::c_uint = 7;
-    pub const NS_FONT_VARIANT_ALTERNATES_ENUMERATED_MASK: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_VARIANT_ALTERNATES_FUNCTIONAL_MASK: ::std::os::raw::c_uint = 126;
-    pub const NS_FONT_VARIANT_CAPS_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_VARIANT_CAPS_SMALLCAPS: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_VARIANT_CAPS_ALLSMALL: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_VARIANT_CAPS_PETITECAPS: ::std::os::raw::c_uint = 3;
-    pub const NS_FONT_VARIANT_CAPS_ALLPETITE: ::std::os::raw::c_uint = 4;
-    pub const NS_FONT_VARIANT_CAPS_TITLING: ::std::os::raw::c_uint = 5;
-    pub const NS_FONT_VARIANT_CAPS_UNICASE: ::std::os::raw::c_uint = 6;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_JIS78: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_JIS83: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_JIS90: ::std::os::raw::c_uint = 4;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_JIS04: ::std::os::raw::c_uint = 8;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED: ::std::os::raw::c_uint = 16;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL: ::std::os::raw::c_uint = 32;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH: ::std::os::raw::c_uint = 64;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH: ::std::os::raw::c_uint = 128;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_RUBY: ::std::os::raw::c_uint = 256;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_COUNT: ::std::os::raw::c_uint = 9;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_VARIANT_MASK: ::std::os::raw::c_uint = 63;
-    pub const NS_FONT_VARIANT_EAST_ASIAN_WIDTH_MASK: ::std::os::raw::c_uint = 192;
-    pub const NS_FONT_VARIANT_LIGATURES_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_VARIANT_LIGATURES_NONE: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_VARIANT_LIGATURES_COMMON: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_VARIANT_LIGATURES_NO_COMMON: ::std::os::raw::c_uint = 4;
-    pub const NS_FONT_VARIANT_LIGATURES_DISCRETIONARY: ::std::os::raw::c_uint = 8;
-    pub const NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY: ::std::os::raw::c_uint = 16;
-    pub const NS_FONT_VARIANT_LIGATURES_HISTORICAL: ::std::os::raw::c_uint = 32;
-    pub const NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL: ::std::os::raw::c_uint = 64;
-    pub const NS_FONT_VARIANT_LIGATURES_CONTEXTUAL: ::std::os::raw::c_uint = 128;
-    pub const NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL: ::std::os::raw::c_uint = 256;
-    pub const NS_FONT_VARIANT_LIGATURES_COUNT: ::std::os::raw::c_uint = 9;
-    pub const NS_FONT_VARIANT_LIGATURES_COMMON_MASK: ::std::os::raw::c_uint = 6;
-    pub const NS_FONT_VARIANT_LIGATURES_DISCRETIONARY_MASK: ::std::os::raw::c_uint = 24;
-    pub const NS_FONT_VARIANT_LIGATURES_HISTORICAL_MASK: ::std::os::raw::c_uint = 96;
-    pub const NS_FONT_VARIANT_LIGATURES_CONTEXTUAL_MASK: ::std::os::raw::c_uint = 384;
-    pub const NS_FONT_VARIANT_NUMERIC_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_VARIANT_NUMERIC_LINING: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_VARIANT_NUMERIC_OLDSTYLE: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_VARIANT_NUMERIC_PROPORTIONAL: ::std::os::raw::c_uint = 4;
-    pub const NS_FONT_VARIANT_NUMERIC_TABULAR: ::std::os::raw::c_uint = 8;
-    pub const NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS: ::std::os::raw::c_uint = 16;
-    pub const NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS: ::std::os::raw::c_uint = 32;
-    pub const NS_FONT_VARIANT_NUMERIC_SLASHZERO: ::std::os::raw::c_uint = 64;
-    pub const NS_FONT_VARIANT_NUMERIC_ORDINAL: ::std::os::raw::c_uint = 128;
-    pub const NS_FONT_VARIANT_NUMERIC_COUNT: ::std::os::raw::c_uint = 8;
-    pub const NS_FONT_VARIANT_NUMERIC_FIGURE_MASK: ::std::os::raw::c_uint = 3;
-    pub const NS_FONT_VARIANT_NUMERIC_SPACING_MASK: ::std::os::raw::c_uint = 12;
-    pub const NS_FONT_VARIANT_NUMERIC_FRACTION_MASK: ::std::os::raw::c_uint = 48;
-    pub const NS_FONT_VARIANT_POSITION_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_VARIANT_POSITION_SUPER: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_VARIANT_POSITION_SUB: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_VARIANT_WIDTH_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_VARIANT_WIDTH_FULL: ::std::os::raw::c_uint = 1;
-    pub const NS_FONT_VARIANT_WIDTH_HALF: ::std::os::raw::c_uint = 2;
-    pub const NS_FONT_VARIANT_WIDTH_THIRD: ::std::os::raw::c_uint = 3;
-    pub const NS_FONT_VARIANT_WIDTH_QUARTER: ::std::os::raw::c_uint = 4;
+    pub const NS_FONT_STYLE_NORMAL: u32 = 0;
+    pub const NS_FONT_STYLE_ITALIC: u32 = 1;
+    pub const NS_FONT_STYLE_OBLIQUE: u32 = 2;
+    pub const NS_FONT_WEIGHT_NORMAL: u32 = 400;
+    pub const NS_FONT_WEIGHT_BOLD: u32 = 700;
+    pub const NS_FONT_WEIGHT_THIN: u32 = 100;
+    pub const NS_FONT_STRETCH_ULTRA_CONDENSED: i32 = -4;
+    pub const NS_FONT_STRETCH_EXTRA_CONDENSED: i32 = -3;
+    pub const NS_FONT_STRETCH_CONDENSED: i32 = -2;
+    pub const NS_FONT_STRETCH_SEMI_CONDENSED: i32 = -1;
+    pub const NS_FONT_STRETCH_NORMAL: u32 = 0;
+    pub const NS_FONT_STRETCH_SEMI_EXPANDED: u32 = 1;
+    pub const NS_FONT_STRETCH_EXPANDED: u32 = 2;
+    pub const NS_FONT_STRETCH_EXTRA_EXPANDED: u32 = 3;
+    pub const NS_FONT_STRETCH_ULTRA_EXPANDED: u32 = 4;
+    pub const NS_FONT_SMOOTHING_AUTO: u32 = 0;
+    pub const NS_FONT_SMOOTHING_GRAYSCALE: u32 = 1;
+    pub const NS_FONT_KERNING_AUTO: u32 = 0;
+    pub const NS_FONT_KERNING_NONE: u32 = 1;
+    pub const NS_FONT_KERNING_NORMAL: u32 = 2;
+    pub const NS_FONT_SYNTHESIS_WEIGHT: u32 = 1;
+    pub const NS_FONT_SYNTHESIS_STYLE: u32 = 2;
+    pub const NS_FONT_DISPLAY_AUTO: u32 = 0;
+    pub const NS_FONT_DISPLAY_BLOCK: u32 = 1;
+    pub const NS_FONT_DISPLAY_SWAP: u32 = 2;
+    pub const NS_FONT_DISPLAY_FALLBACK: u32 = 3;
+    pub const NS_FONT_DISPLAY_OPTIONAL: u32 = 4;
+    pub const NS_FONT_OPTICAL_SIZING_AUTO: u32 = 0;
+    pub const NS_FONT_OPTICAL_SIZING_NONE: u32 = 1;
+    pub const NS_FONT_VARIANT_ALTERNATES_NORMAL: u32 = 0;
+    pub const NS_FONT_VARIANT_ALTERNATES_HISTORICAL: u32 = 1;
+    pub const NS_FONT_VARIANT_ALTERNATES_STYLISTIC: u32 = 2;
+    pub const NS_FONT_VARIANT_ALTERNATES_STYLESET: u32 = 4;
+    pub const NS_FONT_VARIANT_ALTERNATES_CHARACTER_VARIANT: u32 = 8;
+    pub const NS_FONT_VARIANT_ALTERNATES_SWASH: u32 = 16;
+    pub const NS_FONT_VARIANT_ALTERNATES_ORNAMENTS: u32 = 32;
+    pub const NS_FONT_VARIANT_ALTERNATES_ANNOTATION: u32 = 64;
+    pub const NS_FONT_VARIANT_ALTERNATES_COUNT: u32 = 7;
+    pub const NS_FONT_VARIANT_ALTERNATES_ENUMERATED_MASK: u32 = 1;
+    pub const NS_FONT_VARIANT_ALTERNATES_FUNCTIONAL_MASK: u32 = 126;
+    pub const NS_FONT_VARIANT_CAPS_NORMAL: u32 = 0;
+    pub const NS_FONT_VARIANT_CAPS_SMALLCAPS: u32 = 1;
+    pub const NS_FONT_VARIANT_CAPS_ALLSMALL: u32 = 2;
+    pub const NS_FONT_VARIANT_CAPS_PETITECAPS: u32 = 3;
+    pub const NS_FONT_VARIANT_CAPS_ALLPETITE: u32 = 4;
+    pub const NS_FONT_VARIANT_CAPS_TITLING: u32 = 5;
+    pub const NS_FONT_VARIANT_CAPS_UNICASE: u32 = 6;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_NORMAL: u32 = 0;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_JIS78: u32 = 1;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_JIS83: u32 = 2;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_JIS90: u32 = 4;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_JIS04: u32 = 8;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_SIMPLIFIED: u32 = 16;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_TRADITIONAL: u32 = 32;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_FULL_WIDTH: u32 = 64;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_PROP_WIDTH: u32 = 128;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_RUBY: u32 = 256;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_COUNT: u32 = 9;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_VARIANT_MASK: u32 = 63;
+    pub const NS_FONT_VARIANT_EAST_ASIAN_WIDTH_MASK: u32 = 192;
+    pub const NS_FONT_VARIANT_LIGATURES_NORMAL: u32 = 0;
+    pub const NS_FONT_VARIANT_LIGATURES_NONE: u32 = 1;
+    pub const NS_FONT_VARIANT_LIGATURES_COMMON: u32 = 2;
+    pub const NS_FONT_VARIANT_LIGATURES_NO_COMMON: u32 = 4;
+    pub const NS_FONT_VARIANT_LIGATURES_DISCRETIONARY: u32 = 8;
+    pub const NS_FONT_VARIANT_LIGATURES_NO_DISCRETIONARY: u32 = 16;
+    pub const NS_FONT_VARIANT_LIGATURES_HISTORICAL: u32 = 32;
+    pub const NS_FONT_VARIANT_LIGATURES_NO_HISTORICAL: u32 = 64;
+    pub const NS_FONT_VARIANT_LIGATURES_CONTEXTUAL: u32 = 128;
+    pub const NS_FONT_VARIANT_LIGATURES_NO_CONTEXTUAL: u32 = 256;
+    pub const NS_FONT_VARIANT_LIGATURES_COUNT: u32 = 9;
+    pub const NS_FONT_VARIANT_LIGATURES_COMMON_MASK: u32 = 6;
+    pub const NS_FONT_VARIANT_LIGATURES_DISCRETIONARY_MASK: u32 = 24;
+    pub const NS_FONT_VARIANT_LIGATURES_HISTORICAL_MASK: u32 = 96;
+    pub const NS_FONT_VARIANT_LIGATURES_CONTEXTUAL_MASK: u32 = 384;
+    pub const NS_FONT_VARIANT_NUMERIC_NORMAL: u32 = 0;
+    pub const NS_FONT_VARIANT_NUMERIC_LINING: u32 = 1;
+    pub const NS_FONT_VARIANT_NUMERIC_OLDSTYLE: u32 = 2;
+    pub const NS_FONT_VARIANT_NUMERIC_PROPORTIONAL: u32 = 4;
+    pub const NS_FONT_VARIANT_NUMERIC_TABULAR: u32 = 8;
+    pub const NS_FONT_VARIANT_NUMERIC_DIAGONAL_FRACTIONS: u32 = 16;
+    pub const NS_FONT_VARIANT_NUMERIC_STACKED_FRACTIONS: u32 = 32;
+    pub const NS_FONT_VARIANT_NUMERIC_SLASHZERO: u32 = 64;
+    pub const NS_FONT_VARIANT_NUMERIC_ORDINAL: u32 = 128;
+    pub const NS_FONT_VARIANT_NUMERIC_COUNT: u32 = 8;
+    pub const NS_FONT_VARIANT_NUMERIC_FIGURE_MASK: u32 = 3;
+    pub const NS_FONT_VARIANT_NUMERIC_SPACING_MASK: u32 = 12;
+    pub const NS_FONT_VARIANT_NUMERIC_FRACTION_MASK: u32 = 48;
+    pub const NS_FONT_VARIANT_POSITION_NORMAL: u32 = 0;
+    pub const NS_FONT_VARIANT_POSITION_SUPER: u32 = 1;
+    pub const NS_FONT_VARIANT_POSITION_SUB: u32 = 2;
+    pub const NS_FONT_VARIANT_WIDTH_NORMAL: u32 = 0;
+    pub const NS_FONT_VARIANT_WIDTH_FULL: u32 = 1;
+    pub const NS_FONT_VARIANT_WIDTH_HALF: u32 = 2;
+    pub const NS_FONT_VARIANT_WIDTH_THIRD: u32 = 3;
+    pub const NS_FONT_VARIANT_WIDTH_QUARTER: u32 = 4;
     pub const NS_FONT_SUBSCRIPT_OFFSET_RATIO: f64 = 0.2;
     pub const NS_FONT_SUPERSCRIPT_OFFSET_RATIO: f64 = 0.34;
     pub const NS_FONT_SUB_SUPER_SIZE_RATIO_SMALL: f64 = 0.82;
     pub const NS_FONT_SUB_SUPER_SIZE_RATIO_LARGE: f64 = 0.667;
     pub const NS_FONT_SUB_SUPER_SMALL_SIZE: f64 = 20.;
     pub const NS_FONT_SUB_SUPER_LARGE_SIZE: f64 = 45.;
-    pub const NS_FONT_VARIANT_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_FONT_VARIANT_SMALL_CAPS: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_COLOR_INHERIT_FROM_BODY: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_WILL_CHANGE_STACKING_CONTEXT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_WILL_CHANGE_TRANSFORM: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_WILL_CHANGE_SCROLL: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_WILL_CHANGE_OPACITY: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_WILL_CHANGE_FIXPOS_CB: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_WILL_CHANGE_ABSPOS_CB: ::std::os::raw::c_uint = 32;
-    pub const NS_STYLE_ANIMATION_ITERATION_COUNT_INFINITE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_ANIMATION_PLAY_STATE_RUNNING: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_ANIMATION_PLAY_STATE_PAUSED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_IMAGELAYER_ATTACHMENT_SCROLL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_IMAGELAYER_ATTACHMENT_FIXED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_IMAGELAYER_ATTACHMENT_LOCAL: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_IMAGELAYER_CLIP_MOZ_ALMOST_PADDING: ::std::os::raw::c_uint = 127;
-    pub const NS_STYLE_IMAGELAYER_POSITION_CENTER: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_IMAGELAYER_POSITION_TOP: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_IMAGELAYER_POSITION_BOTTOM: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_IMAGELAYER_POSITION_LEFT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_IMAGELAYER_POSITION_RIGHT: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_IMAGELAYER_SIZE_CONTAIN: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_IMAGELAYER_SIZE_COVER: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_MASK_MODE_ALPHA: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_MASK_MODE_LUMINANCE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_MASK_MODE_MATCH_SOURCE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_BG_INLINE_POLICY_EACH_BOX: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_BG_INLINE_POLICY_CONTINUOUS: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_BG_INLINE_POLICY_BOUNDING_BOX: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_BORDER_COLLAPSE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_BORDER_SEPARATE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_BORDER_WIDTH_THIN: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_BORDER_WIDTH_MEDIUM: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_BORDER_WIDTH_THICK: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_BORDER_STYLE_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_BORDER_STYLE_GROOVE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_BORDER_STYLE_RIDGE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_BORDER_STYLE_DOTTED: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_BORDER_STYLE_DASHED: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_BORDER_STYLE_SOLID: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_BORDER_STYLE_DOUBLE: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_BORDER_STYLE_INSET: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_BORDER_STYLE_OUTSET: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_BORDER_STYLE_HIDDEN: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_BORDER_STYLE_AUTO: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_BORDER_IMAGE_SLICE_NOFILL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_BORDER_IMAGE_SLICE_FILL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_CURSOR_AUTO: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_CURSOR_CROSSHAIR: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_CURSOR_DEFAULT: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_CURSOR_POINTER: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_CURSOR_MOVE: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_CURSOR_E_RESIZE: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_CURSOR_NE_RESIZE: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_CURSOR_NW_RESIZE: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_CURSOR_N_RESIZE: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_CURSOR_SE_RESIZE: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_CURSOR_SW_RESIZE: ::std::os::raw::c_uint = 11;
-    pub const NS_STYLE_CURSOR_S_RESIZE: ::std::os::raw::c_uint = 12;
-    pub const NS_STYLE_CURSOR_W_RESIZE: ::std::os::raw::c_uint = 13;
-    pub const NS_STYLE_CURSOR_TEXT: ::std::os::raw::c_uint = 14;
-    pub const NS_STYLE_CURSOR_WAIT: ::std::os::raw::c_uint = 15;
-    pub const NS_STYLE_CURSOR_HELP: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_CURSOR_COPY: ::std::os::raw::c_uint = 17;
-    pub const NS_STYLE_CURSOR_ALIAS: ::std::os::raw::c_uint = 18;
-    pub const NS_STYLE_CURSOR_CONTEXT_MENU: ::std::os::raw::c_uint = 19;
-    pub const NS_STYLE_CURSOR_CELL: ::std::os::raw::c_uint = 20;
-    pub const NS_STYLE_CURSOR_GRAB: ::std::os::raw::c_uint = 21;
-    pub const NS_STYLE_CURSOR_GRABBING: ::std::os::raw::c_uint = 22;
-    pub const NS_STYLE_CURSOR_SPINNING: ::std::os::raw::c_uint = 23;
-    pub const NS_STYLE_CURSOR_ZOOM_IN: ::std::os::raw::c_uint = 24;
-    pub const NS_STYLE_CURSOR_ZOOM_OUT: ::std::os::raw::c_uint = 25;
-    pub const NS_STYLE_CURSOR_NOT_ALLOWED: ::std::os::raw::c_uint = 26;
-    pub const NS_STYLE_CURSOR_COL_RESIZE: ::std::os::raw::c_uint = 27;
-    pub const NS_STYLE_CURSOR_ROW_RESIZE: ::std::os::raw::c_uint = 28;
-    pub const NS_STYLE_CURSOR_NO_DROP: ::std::os::raw::c_uint = 29;
-    pub const NS_STYLE_CURSOR_VERTICAL_TEXT: ::std::os::raw::c_uint = 30;
-    pub const NS_STYLE_CURSOR_ALL_SCROLL: ::std::os::raw::c_uint = 31;
-    pub const NS_STYLE_CURSOR_NESW_RESIZE: ::std::os::raw::c_uint = 32;
-    pub const NS_STYLE_CURSOR_NWSE_RESIZE: ::std::os::raw::c_uint = 33;
-    pub const NS_STYLE_CURSOR_NS_RESIZE: ::std::os::raw::c_uint = 34;
-    pub const NS_STYLE_CURSOR_EW_RESIZE: ::std::os::raw::c_uint = 35;
-    pub const NS_STYLE_CURSOR_NONE: ::std::os::raw::c_uint = 36;
-    pub const NS_STYLE_DIRECTION_LTR: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_DIRECTION_RTL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_WRITING_MODE_HORIZONTAL_TB: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_WRITING_MODE_VERTICAL_RL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_WRITING_MODE_VERTICAL_LR: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_WRITING_MODE_SIDEWAYS_MASK: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_WRITING_MODE_SIDEWAYS_RL: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_WRITING_MODE_SIDEWAYS_LR: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_CONTAIN_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_CONTAIN_STRICT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_CONTAIN_LAYOUT: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_CONTAIN_STYLE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_CONTAIN_PAINT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_CONTAIN_ALL_BITS: ::std::os::raw::c_uint = 14;
-    pub const NS_STYLE_ALIGN_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_ALIGN_NORMAL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_ALIGN_START: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_ALIGN_END: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_ALIGN_FLEX_START: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_ALIGN_FLEX_END: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_ALIGN_CENTER: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_ALIGN_LEFT: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_ALIGN_RIGHT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_ALIGN_BASELINE: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_ALIGN_LAST_BASELINE: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_ALIGN_STRETCH: ::std::os::raw::c_uint = 11;
-    pub const NS_STYLE_ALIGN_SELF_START: ::std::os::raw::c_uint = 12;
-    pub const NS_STYLE_ALIGN_SELF_END: ::std::os::raw::c_uint = 13;
-    pub const NS_STYLE_ALIGN_SPACE_BETWEEN: ::std::os::raw::c_uint = 14;
-    pub const NS_STYLE_ALIGN_SPACE_AROUND: ::std::os::raw::c_uint = 15;
-    pub const NS_STYLE_ALIGN_SPACE_EVENLY: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_ALIGN_LEGACY: ::std::os::raw::c_uint = 32;
-    pub const NS_STYLE_ALIGN_SAFE: ::std::os::raw::c_uint = 64;
-    pub const NS_STYLE_ALIGN_UNSAFE: ::std::os::raw::c_uint = 128;
-    pub const NS_STYLE_ALIGN_FLAG_BITS: ::std::os::raw::c_uint = 224;
-    pub const NS_STYLE_ALIGN_ALL_BITS: ::std::os::raw::c_uint = 255;
-    pub const NS_STYLE_ALIGN_ALL_SHIFT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_JUSTIFY_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_JUSTIFY_NORMAL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_JUSTIFY_START: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_JUSTIFY_END: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_JUSTIFY_FLEX_START: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_JUSTIFY_FLEX_END: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_JUSTIFY_CENTER: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_JUSTIFY_LEFT: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_JUSTIFY_RIGHT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_JUSTIFY_BASELINE: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_JUSTIFY_LAST_BASELINE: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_JUSTIFY_STRETCH: ::std::os::raw::c_uint = 11;
-    pub const NS_STYLE_JUSTIFY_SELF_START: ::std::os::raw::c_uint = 12;
-    pub const NS_STYLE_JUSTIFY_SELF_END: ::std::os::raw::c_uint = 13;
-    pub const NS_STYLE_JUSTIFY_SPACE_BETWEEN: ::std::os::raw::c_uint = 14;
-    pub const NS_STYLE_JUSTIFY_SPACE_AROUND: ::std::os::raw::c_uint = 15;
-    pub const NS_STYLE_JUSTIFY_SPACE_EVENLY: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_JUSTIFY_LEGACY: ::std::os::raw::c_uint = 32;
-    pub const NS_STYLE_JUSTIFY_SAFE: ::std::os::raw::c_uint = 64;
-    pub const NS_STYLE_JUSTIFY_UNSAFE: ::std::os::raw::c_uint = 128;
-    pub const NS_STYLE_JUSTIFY_FLAG_BITS: ::std::os::raw::c_uint = 224;
-    pub const NS_STYLE_JUSTIFY_ALL_BITS: ::std::os::raw::c_uint = 255;
-    pub const NS_STYLE_JUSTIFY_ALL_SHIFT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_FLEX_DIRECTION_ROW: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_FLEX_DIRECTION_ROW_REVERSE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_FLEX_DIRECTION_COLUMN: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_FLEX_DIRECTION_COLUMN_REVERSE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_FLEX_WRAP_NOWRAP: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_FLEX_WRAP_WRAP: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_FLEX_WRAP_WRAP_REVERSE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_ORDER_INITIAL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_JUSTIFY_CONTENT_FLEX_START: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_JUSTIFY_CONTENT_FLEX_END: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_JUSTIFY_CONTENT_CENTER: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_JUSTIFY_CONTENT_SPACE_BETWEEN: ::std::os::raw::c_uint = 14;
-    pub const NS_STYLE_JUSTIFY_CONTENT_SPACE_AROUND: ::std::os::raw::c_uint = 15;
-    pub const NS_STYLE_FILTER_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_FILTER_URL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_FILTER_BLUR: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_FILTER_BRIGHTNESS: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_FILTER_CONTRAST: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_FILTER_GRAYSCALE: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_FILTER_INVERT: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_FILTER_OPACITY: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_FILTER_SATURATE: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_FILTER_SEPIA: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_FILTER_HUE_ROTATE: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_FILTER_DROP_SHADOW: ::std::os::raw::c_uint = 11;
-    pub const NS_STYLE_FONT_STYLE_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_FONT_STYLE_ITALIC: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_FONT_STYLE_OBLIQUE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_FONT_WEIGHT_NORMAL: ::std::os::raw::c_uint = 400;
-    pub const NS_STYLE_FONT_WEIGHT_BOLD: ::std::os::raw::c_uint = 700;
-    pub const NS_STYLE_FONT_WEIGHT_BOLDER: ::std::os::raw::c_int = -1;
-    pub const NS_STYLE_FONT_WEIGHT_LIGHTER: ::std::os::raw::c_int = -2;
-    pub const NS_STYLE_FONT_SIZE_XXSMALL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_FONT_SIZE_XSMALL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_FONT_SIZE_SMALL: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_FONT_SIZE_MEDIUM: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_FONT_SIZE_LARGE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_FONT_SIZE_XLARGE: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_FONT_SIZE_XXLARGE: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_FONT_SIZE_XXXLARGE: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_FONT_SIZE_LARGER: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_FONT_SIZE_SMALLER: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_FONT_SIZE_NO_KEYWORD: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_FONT_STRETCH_ULTRA_CONDENSED: ::std::os::raw::c_int = -4;
-    pub const NS_STYLE_FONT_STRETCH_EXTRA_CONDENSED: ::std::os::raw::c_int = -3;
-    pub const NS_STYLE_FONT_STRETCH_CONDENSED: ::std::os::raw::c_int = -2;
-    pub const NS_STYLE_FONT_STRETCH_SEMI_CONDENSED: ::std::os::raw::c_int = -1;
-    pub const NS_STYLE_FONT_STRETCH_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_FONT_STRETCH_SEMI_EXPANDED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_FONT_STRETCH_EXPANDED: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_FONT_STRETCH_EXTRA_EXPANDED: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_FONT_STRETCH_ULTRA_EXPANDED: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_FONT_CAPTION: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_FONT_ICON: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_FONT_MENU: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_FONT_MESSAGE_BOX: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_FONT_SMALL_CAPTION: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_FONT_STATUS_BAR: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_FONT_WINDOW: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_FONT_DOCUMENT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_FONT_WORKSPACE: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_FONT_DESKTOP: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_FONT_INFO: ::std::os::raw::c_uint = 11;
-    pub const NS_STYLE_FONT_DIALOG: ::std::os::raw::c_uint = 12;
-    pub const NS_STYLE_FONT_BUTTON: ::std::os::raw::c_uint = 13;
-    pub const NS_STYLE_FONT_PULL_DOWN_MENU: ::std::os::raw::c_uint = 14;
-    pub const NS_STYLE_FONT_LIST: ::std::os::raw::c_uint = 15;
-    pub const NS_STYLE_FONT_FIELD: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_GRID_AUTO_FLOW_ROW: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_GRID_AUTO_FLOW_COLUMN: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_GRID_AUTO_FLOW_DENSE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_GRID_TEMPLATE_SUBGRID: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_GRID_REPEAT_AUTO_FILL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_GRID_REPEAT_AUTO_FIT: ::std::os::raw::c_uint = 1;
+    pub const NS_FONT_VARIANT_NORMAL: u32 = 0;
+    pub const NS_FONT_VARIANT_SMALL_CAPS: u32 = 1;
+    pub const NS_STYLE_COLOR_INHERIT_FROM_BODY: u32 = 2;
+    pub const NS_STYLE_WILL_CHANGE_STACKING_CONTEXT: u32 = 1;
+    pub const NS_STYLE_WILL_CHANGE_TRANSFORM: u32 = 2;
+    pub const NS_STYLE_WILL_CHANGE_SCROLL: u32 = 4;
+    pub const NS_STYLE_WILL_CHANGE_OPACITY: u32 = 8;
+    pub const NS_STYLE_WILL_CHANGE_FIXPOS_CB: u32 = 16;
+    pub const NS_STYLE_WILL_CHANGE_ABSPOS_CB: u32 = 32;
+    pub const NS_STYLE_ANIMATION_ITERATION_COUNT_INFINITE: u32 = 0;
+    pub const NS_STYLE_ANIMATION_PLAY_STATE_RUNNING: u32 = 0;
+    pub const NS_STYLE_ANIMATION_PLAY_STATE_PAUSED: u32 = 1;
+    pub const NS_STYLE_IMAGELAYER_ATTACHMENT_SCROLL: u32 = 0;
+    pub const NS_STYLE_IMAGELAYER_ATTACHMENT_FIXED: u32 = 1;
+    pub const NS_STYLE_IMAGELAYER_ATTACHMENT_LOCAL: u32 = 2;
+    pub const NS_STYLE_IMAGELAYER_CLIP_MOZ_ALMOST_PADDING: u32 = 127;
+    pub const NS_STYLE_IMAGELAYER_POSITION_CENTER: u32 = 1;
+    pub const NS_STYLE_IMAGELAYER_POSITION_TOP: u32 = 2;
+    pub const NS_STYLE_IMAGELAYER_POSITION_BOTTOM: u32 = 4;
+    pub const NS_STYLE_IMAGELAYER_POSITION_LEFT: u32 = 8;
+    pub const NS_STYLE_IMAGELAYER_POSITION_RIGHT: u32 = 16;
+    pub const NS_STYLE_IMAGELAYER_SIZE_CONTAIN: u32 = 0;
+    pub const NS_STYLE_IMAGELAYER_SIZE_COVER: u32 = 1;
+    pub const NS_STYLE_MASK_MODE_ALPHA: u32 = 0;
+    pub const NS_STYLE_MASK_MODE_LUMINANCE: u32 = 1;
+    pub const NS_STYLE_MASK_MODE_MATCH_SOURCE: u32 = 2;
+    pub const NS_STYLE_BG_INLINE_POLICY_EACH_BOX: u32 = 0;
+    pub const NS_STYLE_BG_INLINE_POLICY_CONTINUOUS: u32 = 1;
+    pub const NS_STYLE_BG_INLINE_POLICY_BOUNDING_BOX: u32 = 2;
+    pub const NS_STYLE_BORDER_COLLAPSE: u32 = 0;
+    pub const NS_STYLE_BORDER_SEPARATE: u32 = 1;
+    pub const NS_STYLE_BORDER_WIDTH_THIN: u32 = 0;
+    pub const NS_STYLE_BORDER_WIDTH_MEDIUM: u32 = 1;
+    pub const NS_STYLE_BORDER_WIDTH_THICK: u32 = 2;
+    pub const NS_STYLE_BORDER_STYLE_NONE: u32 = 0;
+    pub const NS_STYLE_BORDER_STYLE_GROOVE: u32 = 1;
+    pub const NS_STYLE_BORDER_STYLE_RIDGE: u32 = 2;
+    pub const NS_STYLE_BORDER_STYLE_DOTTED: u32 = 3;
+    pub const NS_STYLE_BORDER_STYLE_DASHED: u32 = 4;
+    pub const NS_STYLE_BORDER_STYLE_SOLID: u32 = 5;
+    pub const NS_STYLE_BORDER_STYLE_DOUBLE: u32 = 6;
+    pub const NS_STYLE_BORDER_STYLE_INSET: u32 = 7;
+    pub const NS_STYLE_BORDER_STYLE_OUTSET: u32 = 8;
+    pub const NS_STYLE_BORDER_STYLE_HIDDEN: u32 = 9;
+    pub const NS_STYLE_BORDER_STYLE_AUTO: u32 = 10;
+    pub const NS_STYLE_BORDER_IMAGE_SLICE_NOFILL: u32 = 0;
+    pub const NS_STYLE_BORDER_IMAGE_SLICE_FILL: u32 = 1;
+    pub const NS_STYLE_CURSOR_AUTO: u32 = 1;
+    pub const NS_STYLE_CURSOR_CROSSHAIR: u32 = 2;
+    pub const NS_STYLE_CURSOR_DEFAULT: u32 = 3;
+    pub const NS_STYLE_CURSOR_POINTER: u32 = 4;
+    pub const NS_STYLE_CURSOR_MOVE: u32 = 5;
+    pub const NS_STYLE_CURSOR_E_RESIZE: u32 = 6;
+    pub const NS_STYLE_CURSOR_NE_RESIZE: u32 = 7;
+    pub const NS_STYLE_CURSOR_NW_RESIZE: u32 = 8;
+    pub const NS_STYLE_CURSOR_N_RESIZE: u32 = 9;
+    pub const NS_STYLE_CURSOR_SE_RESIZE: u32 = 10;
+    pub const NS_STYLE_CURSOR_SW_RESIZE: u32 = 11;
+    pub const NS_STYLE_CURSOR_S_RESIZE: u32 = 12;
+    pub const NS_STYLE_CURSOR_W_RESIZE: u32 = 13;
+    pub const NS_STYLE_CURSOR_TEXT: u32 = 14;
+    pub const NS_STYLE_CURSOR_WAIT: u32 = 15;
+    pub const NS_STYLE_CURSOR_HELP: u32 = 16;
+    pub const NS_STYLE_CURSOR_COPY: u32 = 17;
+    pub const NS_STYLE_CURSOR_ALIAS: u32 = 18;
+    pub const NS_STYLE_CURSOR_CONTEXT_MENU: u32 = 19;
+    pub const NS_STYLE_CURSOR_CELL: u32 = 20;
+    pub const NS_STYLE_CURSOR_GRAB: u32 = 21;
+    pub const NS_STYLE_CURSOR_GRABBING: u32 = 22;
+    pub const NS_STYLE_CURSOR_SPINNING: u32 = 23;
+    pub const NS_STYLE_CURSOR_ZOOM_IN: u32 = 24;
+    pub const NS_STYLE_CURSOR_ZOOM_OUT: u32 = 25;
+    pub const NS_STYLE_CURSOR_NOT_ALLOWED: u32 = 26;
+    pub const NS_STYLE_CURSOR_COL_RESIZE: u32 = 27;
+    pub const NS_STYLE_CURSOR_ROW_RESIZE: u32 = 28;
+    pub const NS_STYLE_CURSOR_NO_DROP: u32 = 29;
+    pub const NS_STYLE_CURSOR_VERTICAL_TEXT: u32 = 30;
+    pub const NS_STYLE_CURSOR_ALL_SCROLL: u32 = 31;
+    pub const NS_STYLE_CURSOR_NESW_RESIZE: u32 = 32;
+    pub const NS_STYLE_CURSOR_NWSE_RESIZE: u32 = 33;
+    pub const NS_STYLE_CURSOR_NS_RESIZE: u32 = 34;
+    pub const NS_STYLE_CURSOR_EW_RESIZE: u32 = 35;
+    pub const NS_STYLE_CURSOR_NONE: u32 = 36;
+    pub const NS_STYLE_DIRECTION_LTR: u32 = 0;
+    pub const NS_STYLE_DIRECTION_RTL: u32 = 1;
+    pub const NS_STYLE_WRITING_MODE_HORIZONTAL_TB: u32 = 0;
+    pub const NS_STYLE_WRITING_MODE_VERTICAL_RL: u32 = 1;
+    pub const NS_STYLE_WRITING_MODE_VERTICAL_LR: u32 = 3;
+    pub const NS_STYLE_WRITING_MODE_SIDEWAYS_MASK: u32 = 4;
+    pub const NS_STYLE_WRITING_MODE_SIDEWAYS_RL: u32 = 5;
+    pub const NS_STYLE_WRITING_MODE_SIDEWAYS_LR: u32 = 7;
+    pub const NS_STYLE_CONTAIN_NONE: u32 = 0;
+    pub const NS_STYLE_CONTAIN_STRICT: u32 = 1;
+    pub const NS_STYLE_CONTAIN_LAYOUT: u32 = 2;
+    pub const NS_STYLE_CONTAIN_STYLE: u32 = 4;
+    pub const NS_STYLE_CONTAIN_PAINT: u32 = 8;
+    pub const NS_STYLE_CONTAIN_ALL_BITS: u32 = 14;
+    pub const NS_STYLE_ALIGN_AUTO: u32 = 0;
+    pub const NS_STYLE_ALIGN_NORMAL: u32 = 1;
+    pub const NS_STYLE_ALIGN_START: u32 = 2;
+    pub const NS_STYLE_ALIGN_END: u32 = 3;
+    pub const NS_STYLE_ALIGN_FLEX_START: u32 = 4;
+    pub const NS_STYLE_ALIGN_FLEX_END: u32 = 5;
+    pub const NS_STYLE_ALIGN_CENTER: u32 = 6;
+    pub const NS_STYLE_ALIGN_LEFT: u32 = 7;
+    pub const NS_STYLE_ALIGN_RIGHT: u32 = 8;
+    pub const NS_STYLE_ALIGN_BASELINE: u32 = 9;
+    pub const NS_STYLE_ALIGN_LAST_BASELINE: u32 = 10;
+    pub const NS_STYLE_ALIGN_STRETCH: u32 = 11;
+    pub const NS_STYLE_ALIGN_SELF_START: u32 = 12;
+    pub const NS_STYLE_ALIGN_SELF_END: u32 = 13;
+    pub const NS_STYLE_ALIGN_SPACE_BETWEEN: u32 = 14;
+    pub const NS_STYLE_ALIGN_SPACE_AROUND: u32 = 15;
+    pub const NS_STYLE_ALIGN_SPACE_EVENLY: u32 = 16;
+    pub const NS_STYLE_ALIGN_LEGACY: u32 = 32;
+    pub const NS_STYLE_ALIGN_SAFE: u32 = 64;
+    pub const NS_STYLE_ALIGN_UNSAFE: u32 = 128;
+    pub const NS_STYLE_ALIGN_FLAG_BITS: u32 = 224;
+    pub const NS_STYLE_ALIGN_ALL_BITS: u32 = 255;
+    pub const NS_STYLE_ALIGN_ALL_SHIFT: u32 = 8;
+    pub const NS_STYLE_JUSTIFY_AUTO: u32 = 0;
+    pub const NS_STYLE_JUSTIFY_NORMAL: u32 = 1;
+    pub const NS_STYLE_JUSTIFY_START: u32 = 2;
+    pub const NS_STYLE_JUSTIFY_END: u32 = 3;
+    pub const NS_STYLE_JUSTIFY_FLEX_START: u32 = 4;
+    pub const NS_STYLE_JUSTIFY_FLEX_END: u32 = 5;
+    pub const NS_STYLE_JUSTIFY_CENTER: u32 = 6;
+    pub const NS_STYLE_JUSTIFY_LEFT: u32 = 7;
+    pub const NS_STYLE_JUSTIFY_RIGHT: u32 = 8;
+    pub const NS_STYLE_JUSTIFY_BASELINE: u32 = 9;
+    pub const NS_STYLE_JUSTIFY_LAST_BASELINE: u32 = 10;
+    pub const NS_STYLE_JUSTIFY_STRETCH: u32 = 11;
+    pub const NS_STYLE_JUSTIFY_SELF_START: u32 = 12;
+    pub const NS_STYLE_JUSTIFY_SELF_END: u32 = 13;
+    pub const NS_STYLE_JUSTIFY_SPACE_BETWEEN: u32 = 14;
+    pub const NS_STYLE_JUSTIFY_SPACE_AROUND: u32 = 15;
+    pub const NS_STYLE_JUSTIFY_SPACE_EVENLY: u32 = 16;
+    pub const NS_STYLE_JUSTIFY_LEGACY: u32 = 32;
+    pub const NS_STYLE_JUSTIFY_SAFE: u32 = 64;
+    pub const NS_STYLE_JUSTIFY_UNSAFE: u32 = 128;
+    pub const NS_STYLE_JUSTIFY_FLAG_BITS: u32 = 224;
+    pub const NS_STYLE_JUSTIFY_ALL_BITS: u32 = 255;
+    pub const NS_STYLE_JUSTIFY_ALL_SHIFT: u32 = 8;
+    pub const NS_STYLE_FLEX_DIRECTION_ROW: u32 = 0;
+    pub const NS_STYLE_FLEX_DIRECTION_ROW_REVERSE: u32 = 1;
+    pub const NS_STYLE_FLEX_DIRECTION_COLUMN: u32 = 2;
+    pub const NS_STYLE_FLEX_DIRECTION_COLUMN_REVERSE: u32 = 3;
+    pub const NS_STYLE_FLEX_WRAP_NOWRAP: u32 = 0;
+    pub const NS_STYLE_FLEX_WRAP_WRAP: u32 = 1;
+    pub const NS_STYLE_FLEX_WRAP_WRAP_REVERSE: u32 = 2;
+    pub const NS_STYLE_ORDER_INITIAL: u32 = 0;
+    pub const NS_STYLE_JUSTIFY_CONTENT_FLEX_START: u32 = 4;
+    pub const NS_STYLE_JUSTIFY_CONTENT_FLEX_END: u32 = 5;
+    pub const NS_STYLE_JUSTIFY_CONTENT_CENTER: u32 = 6;
+    pub const NS_STYLE_JUSTIFY_CONTENT_SPACE_BETWEEN: u32 = 14;
+    pub const NS_STYLE_JUSTIFY_CONTENT_SPACE_AROUND: u32 = 15;
+    pub const NS_STYLE_FILTER_NONE: u32 = 0;
+    pub const NS_STYLE_FILTER_URL: u32 = 1;
+    pub const NS_STYLE_FILTER_BLUR: u32 = 2;
+    pub const NS_STYLE_FILTER_BRIGHTNESS: u32 = 3;
+    pub const NS_STYLE_FILTER_CONTRAST: u32 = 4;
+    pub const NS_STYLE_FILTER_GRAYSCALE: u32 = 5;
+    pub const NS_STYLE_FILTER_INVERT: u32 = 6;
+    pub const NS_STYLE_FILTER_OPACITY: u32 = 7;
+    pub const NS_STYLE_FILTER_SATURATE: u32 = 8;
+    pub const NS_STYLE_FILTER_SEPIA: u32 = 9;
+    pub const NS_STYLE_FILTER_HUE_ROTATE: u32 = 10;
+    pub const NS_STYLE_FILTER_DROP_SHADOW: u32 = 11;
+    pub const NS_STYLE_FONT_STYLE_NORMAL: u32 = 0;
+    pub const NS_STYLE_FONT_STYLE_ITALIC: u32 = 1;
+    pub const NS_STYLE_FONT_STYLE_OBLIQUE: u32 = 2;
+    pub const NS_STYLE_FONT_WEIGHT_NORMAL: u32 = 400;
+    pub const NS_STYLE_FONT_WEIGHT_BOLD: u32 = 700;
+    pub const NS_STYLE_FONT_WEIGHT_BOLDER: i32 = -1;
+    pub const NS_STYLE_FONT_WEIGHT_LIGHTER: i32 = -2;
+    pub const NS_STYLE_FONT_SIZE_XXSMALL: u32 = 0;
+    pub const NS_STYLE_FONT_SIZE_XSMALL: u32 = 1;
+    pub const NS_STYLE_FONT_SIZE_SMALL: u32 = 2;
+    pub const NS_STYLE_FONT_SIZE_MEDIUM: u32 = 3;
+    pub const NS_STYLE_FONT_SIZE_LARGE: u32 = 4;
+    pub const NS_STYLE_FONT_SIZE_XLARGE: u32 = 5;
+    pub const NS_STYLE_FONT_SIZE_XXLARGE: u32 = 6;
+    pub const NS_STYLE_FONT_SIZE_XXXLARGE: u32 = 7;
+    pub const NS_STYLE_FONT_SIZE_LARGER: u32 = 8;
+    pub const NS_STYLE_FONT_SIZE_SMALLER: u32 = 9;
+    pub const NS_STYLE_FONT_SIZE_NO_KEYWORD: u32 = 10;
+    pub const NS_STYLE_FONT_STRETCH_ULTRA_CONDENSED: i32 = -4;
+    pub const NS_STYLE_FONT_STRETCH_EXTRA_CONDENSED: i32 = -3;
+    pub const NS_STYLE_FONT_STRETCH_CONDENSED: i32 = -2;
+    pub const NS_STYLE_FONT_STRETCH_SEMI_CONDENSED: i32 = -1;
+    pub const NS_STYLE_FONT_STRETCH_NORMAL: u32 = 0;
+    pub const NS_STYLE_FONT_STRETCH_SEMI_EXPANDED: u32 = 1;
+    pub const NS_STYLE_FONT_STRETCH_EXPANDED: u32 = 2;
+    pub const NS_STYLE_FONT_STRETCH_EXTRA_EXPANDED: u32 = 3;
+    pub const NS_STYLE_FONT_STRETCH_ULTRA_EXPANDED: u32 = 4;
+    pub const NS_STYLE_FONT_CAPTION: u32 = 1;
+    pub const NS_STYLE_FONT_ICON: u32 = 2;
+    pub const NS_STYLE_FONT_MENU: u32 = 3;
+    pub const NS_STYLE_FONT_MESSAGE_BOX: u32 = 4;
+    pub const NS_STYLE_FONT_SMALL_CAPTION: u32 = 5;
+    pub const NS_STYLE_FONT_STATUS_BAR: u32 = 6;
+    pub const NS_STYLE_FONT_WINDOW: u32 = 7;
+    pub const NS_STYLE_FONT_DOCUMENT: u32 = 8;
+    pub const NS_STYLE_FONT_WORKSPACE: u32 = 9;
+    pub const NS_STYLE_FONT_DESKTOP: u32 = 10;
+    pub const NS_STYLE_FONT_INFO: u32 = 11;
+    pub const NS_STYLE_FONT_DIALOG: u32 = 12;
+    pub const NS_STYLE_FONT_BUTTON: u32 = 13;
+    pub const NS_STYLE_FONT_PULL_DOWN_MENU: u32 = 14;
+    pub const NS_STYLE_FONT_LIST: u32 = 15;
+    pub const NS_STYLE_FONT_FIELD: u32 = 16;
+    pub const NS_STYLE_GRID_AUTO_FLOW_ROW: u32 = 1;
+    pub const NS_STYLE_GRID_AUTO_FLOW_COLUMN: u32 = 2;
+    pub const NS_STYLE_GRID_AUTO_FLOW_DENSE: u32 = 4;
+    pub const NS_STYLE_GRID_TEMPLATE_SUBGRID: u32 = 0;
+    pub const NS_STYLE_GRID_REPEAT_AUTO_FILL: u32 = 0;
+    pub const NS_STYLE_GRID_REPEAT_AUTO_FIT: u32 = 1;
     pub const NS_MATHML_DEFAULT_SCRIPT_SIZE_MULTIPLIER: f64 = 0.71;
-    pub const NS_MATHML_DEFAULT_SCRIPT_MIN_SIZE_PT: ::std::os::raw::c_uint = 8;
-    pub const NS_MATHML_MATHVARIANT_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_MATHML_MATHVARIANT_NORMAL: ::std::os::raw::c_uint = 1;
-    pub const NS_MATHML_MATHVARIANT_BOLD: ::std::os::raw::c_uint = 2;
-    pub const NS_MATHML_MATHVARIANT_ITALIC: ::std::os::raw::c_uint = 3;
-    pub const NS_MATHML_MATHVARIANT_BOLD_ITALIC: ::std::os::raw::c_uint = 4;
-    pub const NS_MATHML_MATHVARIANT_SCRIPT: ::std::os::raw::c_uint = 5;
-    pub const NS_MATHML_MATHVARIANT_BOLD_SCRIPT: ::std::os::raw::c_uint = 6;
-    pub const NS_MATHML_MATHVARIANT_FRAKTUR: ::std::os::raw::c_uint = 7;
-    pub const NS_MATHML_MATHVARIANT_DOUBLE_STRUCK: ::std::os::raw::c_uint = 8;
-    pub const NS_MATHML_MATHVARIANT_BOLD_FRAKTUR: ::std::os::raw::c_uint = 9;
-    pub const NS_MATHML_MATHVARIANT_SANS_SERIF: ::std::os::raw::c_uint = 10;
-    pub const NS_MATHML_MATHVARIANT_BOLD_SANS_SERIF: ::std::os::raw::c_uint = 11;
-    pub const NS_MATHML_MATHVARIANT_SANS_SERIF_ITALIC: ::std::os::raw::c_uint = 12;
-    pub const NS_MATHML_MATHVARIANT_SANS_SERIF_BOLD_ITALIC: ::std::os::raw::c_uint = 13;
-    pub const NS_MATHML_MATHVARIANT_MONOSPACE: ::std::os::raw::c_uint = 14;
-    pub const NS_MATHML_MATHVARIANT_INITIAL: ::std::os::raw::c_uint = 15;
-    pub const NS_MATHML_MATHVARIANT_TAILED: ::std::os::raw::c_uint = 16;
-    pub const NS_MATHML_MATHVARIANT_LOOPED: ::std::os::raw::c_uint = 17;
-    pub const NS_MATHML_MATHVARIANT_STRETCHED: ::std::os::raw::c_uint = 18;
-    pub const NS_MATHML_DISPLAYSTYLE_INLINE: ::std::os::raw::c_uint = 0;
-    pub const NS_MATHML_DISPLAYSTYLE_BLOCK: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_WIDTH_MAX_CONTENT: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_WIDTH_MIN_CONTENT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_WIDTH_FIT_CONTENT: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_WIDTH_AVAILABLE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_POSITION_STATIC: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_POSITION_RELATIVE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_POSITION_ABSOLUTE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_POSITION_FIXED: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_POSITION_STICKY: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_CLIP_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_CLIP_RECT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_CLIP_TYPE_MASK: ::std::os::raw::c_uint = 15;
-    pub const NS_STYLE_CLIP_LEFT_AUTO: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_CLIP_TOP_AUTO: ::std::os::raw::c_uint = 32;
-    pub const NS_STYLE_CLIP_RIGHT_AUTO: ::std::os::raw::c_uint = 64;
-    pub const NS_STYLE_CLIP_BOTTOM_AUTO: ::std::os::raw::c_uint = 128;
-    pub const NS_STYLE_FRAME_YES: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_FRAME_NO: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_FRAME_0: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_FRAME_1: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_FRAME_ON: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_FRAME_OFF: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_FRAME_AUTO: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_FRAME_SCROLL: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_FRAME_NOSCROLL: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_OVERFLOW_VISIBLE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_OVERFLOW_HIDDEN: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_OVERFLOW_SCROLL: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_OVERFLOW_AUTO: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_OVERFLOW_CLIP: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_OVERFLOW_SCROLLBARS_HORIZONTAL: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_OVERFLOW_SCROLLBARS_VERTICAL: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_OVERFLOW_CLIP_BOX_PADDING_BOX: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_OVERFLOW_CLIP_BOX_CONTENT_BOX: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_LIST_STYLE_CUSTOM: ::std::os::raw::c_int = -1;
-    pub const NS_STYLE_LIST_STYLE_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_LIST_STYLE_DECIMAL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_LIST_STYLE_DISC: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_LIST_STYLE_CIRCLE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_LIST_STYLE_SQUARE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_LIST_STYLE_DISCLOSURE_CLOSED: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_LIST_STYLE_DISCLOSURE_OPEN: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_LIST_STYLE_HEBREW: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_LIST_STYLE_JAPANESE_INFORMAL: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_LIST_STYLE_JAPANESE_FORMAL: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_LIST_STYLE_KOREAN_HANGUL_FORMAL: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_LIST_STYLE_KOREAN_HANJA_INFORMAL: ::std::os::raw::c_uint = 11;
-    pub const NS_STYLE_LIST_STYLE_KOREAN_HANJA_FORMAL: ::std::os::raw::c_uint = 12;
-    pub const NS_STYLE_LIST_STYLE_SIMP_CHINESE_INFORMAL: ::std::os::raw::c_uint = 13;
-    pub const NS_STYLE_LIST_STYLE_SIMP_CHINESE_FORMAL: ::std::os::raw::c_uint = 14;
-    pub const NS_STYLE_LIST_STYLE_TRAD_CHINESE_INFORMAL: ::std::os::raw::c_uint = 15;
-    pub const NS_STYLE_LIST_STYLE_TRAD_CHINESE_FORMAL: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_LIST_STYLE_ETHIOPIC_NUMERIC: ::std::os::raw::c_uint = 17;
-    pub const NS_STYLE_LIST_STYLE_LOWER_ROMAN: ::std::os::raw::c_uint = 100;
-    pub const NS_STYLE_LIST_STYLE_UPPER_ROMAN: ::std::os::raw::c_uint = 101;
-    pub const NS_STYLE_LIST_STYLE_LOWER_ALPHA: ::std::os::raw::c_uint = 102;
-    pub const NS_STYLE_LIST_STYLE_UPPER_ALPHA: ::std::os::raw::c_uint = 103;
-    pub const NS_STYLE_LIST_STYLE_POSITION_INSIDE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_LIST_STYLE_POSITION_OUTSIDE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_MARGIN_SIZE_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_POINTER_EVENTS_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_POINTER_EVENTS_VISIBLEPAINTED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_POINTER_EVENTS_VISIBLEFILL: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_POINTER_EVENTS_VISIBLESTROKE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_POINTER_EVENTS_VISIBLE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_POINTER_EVENTS_PAINTED: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_POINTER_EVENTS_FILL: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_POINTER_EVENTS_STROKE: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_POINTER_EVENTS_ALL: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_POINTER_EVENTS_AUTO: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_IMAGE_ORIENTATION_FLIP: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_IMAGE_ORIENTATION_FROM_IMAGE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_ISOLATION_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_ISOLATION_ISOLATE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_OBJECT_FIT_FILL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_OBJECT_FIT_CONTAIN: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_OBJECT_FIT_COVER: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_OBJECT_FIT_NONE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_OBJECT_FIT_SCALE_DOWN: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_RESIZE_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_RESIZE_BOTH: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_RESIZE_HORIZONTAL: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_RESIZE_VERTICAL: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_TEXT_ALIGN_START: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_ALIGN_LEFT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_ALIGN_RIGHT: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_ALIGN_CENTER: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_TEXT_ALIGN_JUSTIFY: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_TEXT_ALIGN_CHAR: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_TEXT_ALIGN_END: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_TEXT_ALIGN_AUTO: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_TEXT_ALIGN_MOZ_CENTER: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_TEXT_ALIGN_MOZ_RIGHT: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_TEXT_ALIGN_MOZ_LEFT: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_TEXT_ALIGN_MOZ_CENTER_OR_INHERIT: ::std::os::raw::c_uint = 11;
-    pub const NS_STYLE_TEXT_ALIGN_UNSAFE: ::std::os::raw::c_uint = 12;
-    pub const NS_STYLE_TEXT_ALIGN_MATCH_PARENT: ::std::os::raw::c_uint = 13;
-    pub const NS_STYLE_TEXT_DECORATION_LINE_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_DECORATION_LINE_OVERLINE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_TEXT_DECORATION_LINE_BLINK: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_TEXT_DECORATION_LINE_OVERRIDE_ALL: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_TEXT_DECORATION_LINE_LINES_MASK: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_TEXT_DECORATION_STYLE_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_DECORATION_STYLE_DOTTED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_DECORATION_STYLE_DASHED: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_DECORATION_STYLE_SOLID: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_TEXT_DECORATION_STYLE_WAVY: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_TEXT_DECORATION_STYLE_MAX: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_TEXT_OVERFLOW_CLIP: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_OVERFLOW_ELLIPSIS: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_OVERFLOW_STRING: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_TRANSFORM_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_TRANSFORM_CAPITALIZE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_TRANSFORM_LOWERCASE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_TRANSFORM_UPPERCASE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_TEXT_TRANSFORM_FULL_WIDTH: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_TOUCH_ACTION_NONE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TOUCH_ACTION_AUTO: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TOUCH_ACTION_PAN_X: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_TOUCH_ACTION_PAN_Y: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_TOUCH_ACTION_MANIPULATION: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_TOP_LAYER_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TOP_LAYER_TOP: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_LINEAR: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_OUT: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN_OUT: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_START: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_END: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_VERTICAL_ALIGN_BASELINE: ::std::os::raw::c_uint = 14;
-    pub const NS_STYLE_VERTICAL_ALIGN_SUB: ::std::os::raw::c_uint = 15;
-    pub const NS_STYLE_VERTICAL_ALIGN_SUPER: ::std::os::raw::c_uint = 16;
-    pub const NS_STYLE_VERTICAL_ALIGN_TOP: ::std::os::raw::c_uint = 17;
-    pub const NS_STYLE_VERTICAL_ALIGN_TEXT_TOP: ::std::os::raw::c_uint = 18;
-    pub const NS_STYLE_VERTICAL_ALIGN_MIDDLE: ::std::os::raw::c_uint = 19;
-    pub const NS_STYLE_VERTICAL_ALIGN_TEXT_BOTTOM: ::std::os::raw::c_uint = 20;
-    pub const NS_STYLE_VERTICAL_ALIGN_BOTTOM: ::std::os::raw::c_uint = 21;
-    pub const NS_STYLE_VERTICAL_ALIGN_MIDDLE_WITH_BASELINE: ::std::os::raw::c_uint = 22;
-    pub const NS_STYLE_VISIBILITY_HIDDEN: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_VISIBILITY_VISIBLE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_VISIBILITY_COLLAPSE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TABSIZE_INITIAL: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_WORDBREAK_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_WORDBREAK_BREAK_ALL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_WORDBREAK_KEEP_ALL: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_OVERFLOWWRAP_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_OVERFLOWWRAP_BREAK_WORD: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_RUBY_ALIGN_START: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_RUBY_ALIGN_CENTER: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_RUBY_ALIGN_SPACE_BETWEEN: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_RUBY_ALIGN_SPACE_AROUND: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_RUBY_POSITION_OVER: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_RUBY_POSITION_UNDER: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_RUBY_POSITION_INTER_CHARACTER: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_SIZE_ADJUST_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_SIZE_ADJUST_AUTO: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_ORIENTATION_MIXED: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_ORIENTATION_UPRIGHT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_ORIENTATION_SIDEWAYS: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_ALL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_2: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_3: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_4: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_LINE_HEIGHT_BLOCK_HEIGHT: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_UNICODE_BIDI_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_UNICODE_BIDI_EMBED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_UNICODE_BIDI_ISOLATE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_UNICODE_BIDI_BIDI_OVERRIDE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_UNICODE_BIDI_PLAINTEXT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_TABLE_LAYOUT_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TABLE_LAYOUT_FIXED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TABLE_EMPTY_CELLS_HIDE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TABLE_EMPTY_CELLS_SHOW: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_CAPTION_SIDE_TOP: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_CAPTION_SIDE_RIGHT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_CAPTION_SIDE_BOTTOM: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_CAPTION_SIDE_LEFT: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_CAPTION_SIDE_TOP_OUTSIDE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_CAPTION_SIDE_BOTTOM_OUTSIDE: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_CELL_SCOPE_ROW: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_CELL_SCOPE_COL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_CELL_SCOPE_ROWGROUP: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_CELL_SCOPE_COLGROUP: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_PAGE_MARKS_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_PAGE_MARKS_CROP: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_PAGE_MARKS_REGISTER: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_PAGE_SIZE_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_PAGE_SIZE_PORTRAIT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_PAGE_SIZE_LANDSCAPE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_PAGE_BREAK_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_PAGE_BREAK_ALWAYS: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_PAGE_BREAK_AVOID: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_PAGE_BREAK_LEFT: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_PAGE_BREAK_RIGHT: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_COLUMN_COUNT_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_COLUMN_COUNT_UNLIMITED: ::std::os::raw::c_int = -1;
-    pub const NS_STYLE_COLUMN_FILL_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_COLUMN_FILL_BALANCE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_COLUMN_SPAN_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_COLUMN_SPAN_ALL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_IME_MODE_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_IME_MODE_NORMAL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_IME_MODE_ACTIVE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_IME_MODE_DISABLED: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_IME_MODE_INACTIVE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_GRADIENT_SHAPE_LINEAR: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_GRADIENT_SHAPE_ELLIPTICAL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_GRADIENT_SHAPE_CIRCULAR: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_GRADIENT_SIZE_CLOSEST_CORNER: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_GRADIENT_SIZE_FARTHEST_SIDE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_GRADIENT_SIZE_EXPLICIT_SIZE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_CONTEXT_PROPERTY_FILL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_CONTEXT_PROPERTY_STROKE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_CONTEXT_PROPERTY_FILL_OPACITY: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_CONTEXT_PROPERTY_STROKE_OPACITY: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_WINDOW_SHADOW_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_WINDOW_SHADOW_DEFAULT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_WINDOW_SHADOW_MENU: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_WINDOW_SHADOW_TOOLTIP: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_WINDOW_SHADOW_SHEET: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_DOMINANT_BASELINE_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_DOMINANT_BASELINE_USE_SCRIPT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_DOMINANT_BASELINE_NO_CHANGE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_DOMINANT_BASELINE_RESET_SIZE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_DOMINANT_BASELINE_IDEOGRAPHIC: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_DOMINANT_BASELINE_ALPHABETIC: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_DOMINANT_BASELINE_HANGING: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_DOMINANT_BASELINE_MATHEMATICAL: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_DOMINANT_BASELINE_CENTRAL: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_DOMINANT_BASELINE_MIDDLE: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_DOMINANT_BASELINE_TEXT_AFTER_EDGE: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_DOMINANT_BASELINE_TEXT_BEFORE_EDGE: ::std::os::raw::c_uint = 11;
-    pub const NS_STYLE_IMAGE_RENDERING_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_IMAGE_RENDERING_OPTIMIZESPEED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_IMAGE_RENDERING_OPTIMIZEQUALITY: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_IMAGE_RENDERING_CRISPEDGES: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_MASK_TYPE_LUMINANCE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_MASK_TYPE_ALPHA: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_PAINT_ORDER_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_PAINT_ORDER_FILL: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_PAINT_ORDER_STROKE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_PAINT_ORDER_MARKERS: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_PAINT_ORDER_LAST_VALUE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_PAINT_ORDER_BITWIDTH: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_SHAPE_RENDERING_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_SHAPE_RENDERING_OPTIMIZESPEED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_SHAPE_RENDERING_CRISPEDGES: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_SHAPE_RENDERING_GEOMETRICPRECISION: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_STROKE_LINECAP_BUTT: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_STROKE_LINECAP_ROUND: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_STROKE_LINECAP_SQUARE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_STROKE_LINEJOIN_MITER: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_STROKE_LINEJOIN_ROUND: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_STROKE_LINEJOIN_BEVEL: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_STROKE_PROP_CONTEXT_VALUE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_ANCHOR_START: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_ANCHOR_MIDDLE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_ANCHOR_END: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_OVER: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_UNDER: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_LEFT: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_RIGHT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT_ZH: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_FILL_MASK: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_FILLED: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_OPEN: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_SHAPE_MASK: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_DOT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_CIRCLE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_DOUBLE_CIRCLE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_TRIANGLE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_SESAME: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_STRING: ::std::os::raw::c_uint = 255;
-    pub const NS_STYLE_TEXT_RENDERING_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TEXT_RENDERING_OPTIMIZESPEED: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_TEXT_RENDERING_OPTIMIZELEGIBILITY: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_TEXT_RENDERING_GEOMETRICPRECISION: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_COLOR_ADJUST_ECONOMY: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_COLOR_ADJUST_EXACT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_COLOR_INTERPOLATION_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_COLOR_INTERPOLATION_SRGB: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_COLOR_INTERPOLATION_LINEARRGB: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_VECTOR_EFFECT_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_VECTOR_EFFECT_NON_SCALING_STROKE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_BACKFACE_VISIBILITY_VISIBLE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_BACKFACE_VISIBILITY_HIDDEN: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TRANSFORM_STYLE_FLAT: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_TRANSFORM_STYLE_PRESERVE_3D: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_CONTEXT_FILL_OPACITY: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_CONTEXT_STROKE_OPACITY: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_BLEND_NORMAL: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_BLEND_MULTIPLY: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_BLEND_SCREEN: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_BLEND_OVERLAY: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_BLEND_DARKEN: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_BLEND_LIGHTEN: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_BLEND_COLOR_DODGE: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_BLEND_COLOR_BURN: ::std::os::raw::c_uint = 7;
-    pub const NS_STYLE_BLEND_HARD_LIGHT: ::std::os::raw::c_uint = 8;
-    pub const NS_STYLE_BLEND_SOFT_LIGHT: ::std::os::raw::c_uint = 9;
-    pub const NS_STYLE_BLEND_DIFFERENCE: ::std::os::raw::c_uint = 10;
-    pub const NS_STYLE_BLEND_EXCLUSION: ::std::os::raw::c_uint = 11;
-    pub const NS_STYLE_BLEND_HUE: ::std::os::raw::c_uint = 12;
-    pub const NS_STYLE_BLEND_SATURATION: ::std::os::raw::c_uint = 13;
-    pub const NS_STYLE_BLEND_COLOR: ::std::os::raw::c_uint = 14;
-    pub const NS_STYLE_BLEND_LUMINOSITY: ::std::os::raw::c_uint = 15;
-    pub const NS_STYLE_MASK_COMPOSITE_ADD: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_MASK_COMPOSITE_SUBTRACT: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_MASK_COMPOSITE_INTERSECT: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_MASK_COMPOSITE_EXCLUDE: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_CONTROL_CHARACTER_VISIBILITY_HIDDEN: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_CONTROL_CHARACTER_VISIBILITY_VISIBLE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_COUNTER_SYSTEM_CYCLIC: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_COUNTER_SYSTEM_NUMERIC: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_COUNTER_SYSTEM_ALPHABETIC: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_COUNTER_SYSTEM_SYMBOLIC: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_COUNTER_SYSTEM_ADDITIVE: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_COUNTER_SYSTEM_FIXED: ::std::os::raw::c_uint = 5;
-    pub const NS_STYLE_COUNTER_SYSTEM_EXTENDS: ::std::os::raw::c_uint = 6;
-    pub const NS_STYLE_COUNTER_RANGE_INFINITE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_COUNTER_SPEAKAS_BULLETS: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_COUNTER_SPEAKAS_NUMBERS: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_COUNTER_SPEAKAS_WORDS: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_COUNTER_SPEAKAS_SPELL_OUT: ::std::os::raw::c_uint = 3;
-    pub const NS_STYLE_COUNTER_SPEAKAS_OTHER: ::std::os::raw::c_uint = 255;
-    pub const NS_STYLE_SCROLL_BEHAVIOR_AUTO: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_SCROLL_BEHAVIOR_SMOOTH: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_SCROLL_SNAP_TYPE_NONE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_SCROLL_SNAP_TYPE_MANDATORY: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_SCROLL_SNAP_TYPE_PROXIMITY: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_ORIENTATION_PORTRAIT: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_ORIENTATION_LANDSCAPE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_SCAN_PROGRESSIVE: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_SCAN_INTERLACE: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_DISPLAY_MODE_BROWSER: ::std::os::raw::c_uint = 0;
-    pub const NS_STYLE_DISPLAY_MODE_MINIMAL_UI: ::std::os::raw::c_uint = 1;
-    pub const NS_STYLE_DISPLAY_MODE_STANDALONE: ::std::os::raw::c_uint = 2;
-    pub const NS_STYLE_DISPLAY_MODE_FULLSCREEN: ::std::os::raw::c_uint = 3;
-    pub const CSS_PSEUDO_ELEMENT_IS_CSS2: ::std::os::raw::c_uint = 1;
-    pub const CSS_PSEUDO_ELEMENT_CONTAINS_ELEMENTS: ::std::os::raw::c_uint = 2;
-    pub const CSS_PSEUDO_ELEMENT_SUPPORTS_STYLE_ATTRIBUTE: ::std::os::raw::c_uint = 4;
-    pub const CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE: ::std::os::raw::c_uint = 8;
-    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS: ::std::os::raw::c_uint = 16;
-    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_CHROME: ::std::os::raw::c_uint = 32;
-    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS_AND_CHROME: ::std::os::raw::c_uint = 48;
-    pub const CSS_PSEUDO_ELEMENT_IS_JS_CREATED_NAC: ::std::os::raw::c_uint = 64;
-    pub const CSS_PSEUDO_ELEMENT_IS_FLEX_OR_GRID_ITEM: ::std::os::raw::c_uint = 128;
-    pub const kNameSpaceID_Unknown: ::std::os::raw::c_int = -1;
-    pub const kNameSpaceID_XMLNS: ::std::os::raw::c_uint = 1;
-    pub const kNameSpaceID_XML: ::std::os::raw::c_uint = 2;
-    pub const kNameSpaceID_XHTML: ::std::os::raw::c_uint = 3;
-    pub const kNameSpaceID_XLink: ::std::os::raw::c_uint = 4;
-    pub const kNameSpaceID_XSLT: ::std::os::raw::c_uint = 5;
-    pub const kNameSpaceID_XBL: ::std::os::raw::c_uint = 6;
-    pub const kNameSpaceID_MathML: ::std::os::raw::c_uint = 7;
-    pub const kNameSpaceID_RDF: ::std::os::raw::c_uint = 8;
-    pub const kNameSpaceID_XUL: ::std::os::raw::c_uint = 9;
-    pub const kNameSpaceID_SVG: ::std::os::raw::c_uint = 10;
-    pub const kNameSpaceID_disabled_MathML: ::std::os::raw::c_uint = 11;
-    pub const kNameSpaceID_disabled_SVG: ::std::os::raw::c_uint = 12;
-    pub const kNameSpaceID_LastBuiltin: ::std::os::raw::c_uint = 12;
-    pub const kNameSpaceID_Wildcard: ::std::os::raw::c_int = -2147483648;
-    pub const NS_AUTHOR_SPECIFIED_BACKGROUND: ::std::os::raw::c_uint = 1;
-    pub const NS_AUTHOR_SPECIFIED_BORDER: ::std::os::raw::c_uint = 2;
-    pub const NS_AUTHOR_SPECIFIED_PADDING: ::std::os::raw::c_uint = 4;
-    pub const NS_STYLE_INHERIT_MASK: ::std::os::raw::c_uint = 16777215;
-    pub const NS_STYLE_HAS_TEXT_DECORATION_LINES: ::std::os::raw::c_uint = 16777216;
-    pub const NS_STYLE_HAS_PSEUDO_ELEMENT_DATA: ::std::os::raw::c_uint = 33554432;
-    pub const NS_STYLE_RELEVANT_LINK_VISITED: ::std::os::raw::c_uint = 67108864;
-    pub const NS_STYLE_IS_STYLE_IF_VISITED: ::std::os::raw::c_uint = 134217728;
-    pub const NS_STYLE_CHILD_USES_GRANDANCESTOR_STYLE: ::std::os::raw::c_uint = 268435456;
-    pub const NS_STYLE_IS_SHARED: ::std::os::raw::c_uint = 536870912;
-    pub const NS_STYLE_IS_GOING_AWAY: ::std::os::raw::c_uint = 1073741824;
-    pub const NS_STYLE_SUPPRESS_LINEBREAK: ::std::os::raw::c_uint = 2147483648;
-    pub const NS_STYLE_IN_DISPLAY_NONE_SUBTREE: ::std::os::raw::c_ulonglong = 4294967296;
-    pub const NS_STYLE_INELIGIBLE_FOR_SHARING: ::std::os::raw::c_ulonglong = 8589934592;
-    pub const NS_STYLE_HAS_CHILD_THAT_USES_RESET_STYLE: ::std::os::raw::c_ulonglong = 17179869184;
-    pub const NS_STYLE_IS_TEXT_COMBINED: ::std::os::raw::c_ulonglong = 34359738368;
-    pub const NS_STYLE_CONTEXT_IS_GECKO: ::std::os::raw::c_ulonglong = 68719476736;
-    pub const NS_STYLE_CONTEXT_TYPE_SHIFT: ::std::os::raw::c_uint = 37;
+    pub const NS_MATHML_DEFAULT_SCRIPT_MIN_SIZE_PT: u32 = 8;
+    pub const NS_MATHML_MATHVARIANT_NONE: u32 = 0;
+    pub const NS_MATHML_MATHVARIANT_NORMAL: u32 = 1;
+    pub const NS_MATHML_MATHVARIANT_BOLD: u32 = 2;
+    pub const NS_MATHML_MATHVARIANT_ITALIC: u32 = 3;
+    pub const NS_MATHML_MATHVARIANT_BOLD_ITALIC: u32 = 4;
+    pub const NS_MATHML_MATHVARIANT_SCRIPT: u32 = 5;
+    pub const NS_MATHML_MATHVARIANT_BOLD_SCRIPT: u32 = 6;
+    pub const NS_MATHML_MATHVARIANT_FRAKTUR: u32 = 7;
+    pub const NS_MATHML_MATHVARIANT_DOUBLE_STRUCK: u32 = 8;
+    pub const NS_MATHML_MATHVARIANT_BOLD_FRAKTUR: u32 = 9;
+    pub const NS_MATHML_MATHVARIANT_SANS_SERIF: u32 = 10;
+    pub const NS_MATHML_MATHVARIANT_BOLD_SANS_SERIF: u32 = 11;
+    pub const NS_MATHML_MATHVARIANT_SANS_SERIF_ITALIC: u32 = 12;
+    pub const NS_MATHML_MATHVARIANT_SANS_SERIF_BOLD_ITALIC: u32 = 13;
+    pub const NS_MATHML_MATHVARIANT_MONOSPACE: u32 = 14;
+    pub const NS_MATHML_MATHVARIANT_INITIAL: u32 = 15;
+    pub const NS_MATHML_MATHVARIANT_TAILED: u32 = 16;
+    pub const NS_MATHML_MATHVARIANT_LOOPED: u32 = 17;
+    pub const NS_MATHML_MATHVARIANT_STRETCHED: u32 = 18;
+    pub const NS_MATHML_DISPLAYSTYLE_INLINE: u32 = 0;
+    pub const NS_MATHML_DISPLAYSTYLE_BLOCK: u32 = 1;
+    pub const NS_STYLE_WIDTH_MAX_CONTENT: u32 = 0;
+    pub const NS_STYLE_WIDTH_MIN_CONTENT: u32 = 1;
+    pub const NS_STYLE_WIDTH_FIT_CONTENT: u32 = 2;
+    pub const NS_STYLE_WIDTH_AVAILABLE: u32 = 3;
+    pub const NS_STYLE_POSITION_STATIC: u32 = 0;
+    pub const NS_STYLE_POSITION_RELATIVE: u32 = 1;
+    pub const NS_STYLE_POSITION_ABSOLUTE: u32 = 2;
+    pub const NS_STYLE_POSITION_FIXED: u32 = 3;
+    pub const NS_STYLE_POSITION_STICKY: u32 = 4;
+    pub const NS_STYLE_CLIP_AUTO: u32 = 0;
+    pub const NS_STYLE_CLIP_RECT: u32 = 1;
+    pub const NS_STYLE_CLIP_TYPE_MASK: u32 = 15;
+    pub const NS_STYLE_CLIP_LEFT_AUTO: u32 = 16;
+    pub const NS_STYLE_CLIP_TOP_AUTO: u32 = 32;
+    pub const NS_STYLE_CLIP_RIGHT_AUTO: u32 = 64;
+    pub const NS_STYLE_CLIP_BOTTOM_AUTO: u32 = 128;
+    pub const NS_STYLE_FRAME_YES: u32 = 0;
+    pub const NS_STYLE_FRAME_NO: u32 = 1;
+    pub const NS_STYLE_FRAME_0: u32 = 2;
+    pub const NS_STYLE_FRAME_1: u32 = 3;
+    pub const NS_STYLE_FRAME_ON: u32 = 4;
+    pub const NS_STYLE_FRAME_OFF: u32 = 5;
+    pub const NS_STYLE_FRAME_AUTO: u32 = 6;
+    pub const NS_STYLE_FRAME_SCROLL: u32 = 7;
+    pub const NS_STYLE_FRAME_NOSCROLL: u32 = 8;
+    pub const NS_STYLE_OVERFLOW_VISIBLE: u32 = 0;
+    pub const NS_STYLE_OVERFLOW_HIDDEN: u32 = 1;
+    pub const NS_STYLE_OVERFLOW_SCROLL: u32 = 2;
+    pub const NS_STYLE_OVERFLOW_AUTO: u32 = 3;
+    pub const NS_STYLE_OVERFLOW_CLIP: u32 = 4;
+    pub const NS_STYLE_OVERFLOW_SCROLLBARS_HORIZONTAL: u32 = 5;
+    pub const NS_STYLE_OVERFLOW_SCROLLBARS_VERTICAL: u32 = 6;
+    pub const NS_STYLE_OVERFLOW_CLIP_BOX_PADDING_BOX: u32 = 0;
+    pub const NS_STYLE_OVERFLOW_CLIP_BOX_CONTENT_BOX: u32 = 1;
+    pub const NS_STYLE_LIST_STYLE_CUSTOM: i32 = -1;
+    pub const NS_STYLE_LIST_STYLE_NONE: u32 = 0;
+    pub const NS_STYLE_LIST_STYLE_DECIMAL: u32 = 1;
+    pub const NS_STYLE_LIST_STYLE_DISC: u32 = 2;
+    pub const NS_STYLE_LIST_STYLE_CIRCLE: u32 = 3;
+    pub const NS_STYLE_LIST_STYLE_SQUARE: u32 = 4;
+    pub const NS_STYLE_LIST_STYLE_DISCLOSURE_CLOSED: u32 = 5;
+    pub const NS_STYLE_LIST_STYLE_DISCLOSURE_OPEN: u32 = 6;
+    pub const NS_STYLE_LIST_STYLE_HEBREW: u32 = 7;
+    pub const NS_STYLE_LIST_STYLE_JAPANESE_INFORMAL: u32 = 8;
+    pub const NS_STYLE_LIST_STYLE_JAPANESE_FORMAL: u32 = 9;
+    pub const NS_STYLE_LIST_STYLE_KOREAN_HANGUL_FORMAL: u32 = 10;
+    pub const NS_STYLE_LIST_STYLE_KOREAN_HANJA_INFORMAL: u32 = 11;
+    pub const NS_STYLE_LIST_STYLE_KOREAN_HANJA_FORMAL: u32 = 12;
+    pub const NS_STYLE_LIST_STYLE_SIMP_CHINESE_INFORMAL: u32 = 13;
+    pub const NS_STYLE_LIST_STYLE_SIMP_CHINESE_FORMAL: u32 = 14;
+    pub const NS_STYLE_LIST_STYLE_TRAD_CHINESE_INFORMAL: u32 = 15;
+    pub const NS_STYLE_LIST_STYLE_TRAD_CHINESE_FORMAL: u32 = 16;
+    pub const NS_STYLE_LIST_STYLE_ETHIOPIC_NUMERIC: u32 = 17;
+    pub const NS_STYLE_LIST_STYLE_LOWER_ROMAN: u32 = 100;
+    pub const NS_STYLE_LIST_STYLE_UPPER_ROMAN: u32 = 101;
+    pub const NS_STYLE_LIST_STYLE_LOWER_ALPHA: u32 = 102;
+    pub const NS_STYLE_LIST_STYLE_UPPER_ALPHA: u32 = 103;
+    pub const NS_STYLE_LIST_STYLE_POSITION_INSIDE: u32 = 0;
+    pub const NS_STYLE_LIST_STYLE_POSITION_OUTSIDE: u32 = 1;
+    pub const NS_STYLE_MARGIN_SIZE_AUTO: u32 = 0;
+    pub const NS_STYLE_POINTER_EVENTS_NONE: u32 = 0;
+    pub const NS_STYLE_POINTER_EVENTS_VISIBLEPAINTED: u32 = 1;
+    pub const NS_STYLE_POINTER_EVENTS_VISIBLEFILL: u32 = 2;
+    pub const NS_STYLE_POINTER_EVENTS_VISIBLESTROKE: u32 = 3;
+    pub const NS_STYLE_POINTER_EVENTS_VISIBLE: u32 = 4;
+    pub const NS_STYLE_POINTER_EVENTS_PAINTED: u32 = 5;
+    pub const NS_STYLE_POINTER_EVENTS_FILL: u32 = 6;
+    pub const NS_STYLE_POINTER_EVENTS_STROKE: u32 = 7;
+    pub const NS_STYLE_POINTER_EVENTS_ALL: u32 = 8;
+    pub const NS_STYLE_POINTER_EVENTS_AUTO: u32 = 9;
+    pub const NS_STYLE_IMAGE_ORIENTATION_FLIP: u32 = 0;
+    pub const NS_STYLE_IMAGE_ORIENTATION_FROM_IMAGE: u32 = 1;
+    pub const NS_STYLE_ISOLATION_AUTO: u32 = 0;
+    pub const NS_STYLE_ISOLATION_ISOLATE: u32 = 1;
+    pub const NS_STYLE_OBJECT_FIT_FILL: u32 = 0;
+    pub const NS_STYLE_OBJECT_FIT_CONTAIN: u32 = 1;
+    pub const NS_STYLE_OBJECT_FIT_COVER: u32 = 2;
+    pub const NS_STYLE_OBJECT_FIT_NONE: u32 = 3;
+    pub const NS_STYLE_OBJECT_FIT_SCALE_DOWN: u32 = 4;
+    pub const NS_STYLE_RESIZE_NONE: u32 = 0;
+    pub const NS_STYLE_RESIZE_BOTH: u32 = 1;
+    pub const NS_STYLE_RESIZE_HORIZONTAL: u32 = 2;
+    pub const NS_STYLE_RESIZE_VERTICAL: u32 = 3;
+    pub const NS_STYLE_TEXT_ALIGN_START: u32 = 0;
+    pub const NS_STYLE_TEXT_ALIGN_LEFT: u32 = 1;
+    pub const NS_STYLE_TEXT_ALIGN_RIGHT: u32 = 2;
+    pub const NS_STYLE_TEXT_ALIGN_CENTER: u32 = 3;
+    pub const NS_STYLE_TEXT_ALIGN_JUSTIFY: u32 = 4;
+    pub const NS_STYLE_TEXT_ALIGN_CHAR: u32 = 5;
+    pub const NS_STYLE_TEXT_ALIGN_END: u32 = 6;
+    pub const NS_STYLE_TEXT_ALIGN_AUTO: u32 = 7;
+    pub const NS_STYLE_TEXT_ALIGN_MOZ_CENTER: u32 = 8;
+    pub const NS_STYLE_TEXT_ALIGN_MOZ_RIGHT: u32 = 9;
+    pub const NS_STYLE_TEXT_ALIGN_MOZ_LEFT: u32 = 10;
+    pub const NS_STYLE_TEXT_ALIGN_MOZ_CENTER_OR_INHERIT: u32 = 11;
+    pub const NS_STYLE_TEXT_ALIGN_UNSAFE: u32 = 12;
+    pub const NS_STYLE_TEXT_ALIGN_MATCH_PARENT: u32 = 13;
+    pub const NS_STYLE_TEXT_DECORATION_LINE_NONE: u32 = 0;
+    pub const NS_STYLE_TEXT_DECORATION_LINE_UNDERLINE: u32 = 1;
+    pub const NS_STYLE_TEXT_DECORATION_LINE_OVERLINE: u32 = 2;
+    pub const NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH: u32 = 4;
+    pub const NS_STYLE_TEXT_DECORATION_LINE_BLINK: u32 = 8;
+    pub const NS_STYLE_TEXT_DECORATION_LINE_OVERRIDE_ALL: u32 = 16;
+    pub const NS_STYLE_TEXT_DECORATION_LINE_LINES_MASK: u32 = 7;
+    pub const NS_STYLE_TEXT_DECORATION_STYLE_NONE: u32 = 0;
+    pub const NS_STYLE_TEXT_DECORATION_STYLE_DOTTED: u32 = 1;
+    pub const NS_STYLE_TEXT_DECORATION_STYLE_DASHED: u32 = 2;
+    pub const NS_STYLE_TEXT_DECORATION_STYLE_SOLID: u32 = 3;
+    pub const NS_STYLE_TEXT_DECORATION_STYLE_DOUBLE: u32 = 4;
+    pub const NS_STYLE_TEXT_DECORATION_STYLE_WAVY: u32 = 5;
+    pub const NS_STYLE_TEXT_DECORATION_STYLE_MAX: u32 = 5;
+    pub const NS_STYLE_TEXT_OVERFLOW_CLIP: u32 = 0;
+    pub const NS_STYLE_TEXT_OVERFLOW_ELLIPSIS: u32 = 1;
+    pub const NS_STYLE_TEXT_OVERFLOW_STRING: u32 = 2;
+    pub const NS_STYLE_TEXT_TRANSFORM_NONE: u32 = 0;
+    pub const NS_STYLE_TEXT_TRANSFORM_CAPITALIZE: u32 = 1;
+    pub const NS_STYLE_TEXT_TRANSFORM_LOWERCASE: u32 = 2;
+    pub const NS_STYLE_TEXT_TRANSFORM_UPPERCASE: u32 = 3;
+    pub const NS_STYLE_TEXT_TRANSFORM_FULL_WIDTH: u32 = 4;
+    pub const NS_STYLE_TOUCH_ACTION_NONE: u32 = 1;
+    pub const NS_STYLE_TOUCH_ACTION_AUTO: u32 = 2;
+    pub const NS_STYLE_TOUCH_ACTION_PAN_X: u32 = 4;
+    pub const NS_STYLE_TOUCH_ACTION_PAN_Y: u32 = 8;
+    pub const NS_STYLE_TOUCH_ACTION_MANIPULATION: u32 = 16;
+    pub const NS_STYLE_TOP_LAYER_NONE: u32 = 0;
+    pub const NS_STYLE_TOP_LAYER_TOP: u32 = 1;
+    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE: u32 = 0;
+    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_LINEAR: u32 = 1;
+    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN: u32 = 2;
+    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_OUT: u32 = 3;
+    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_EASE_IN_OUT: u32 = 4;
+    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_START: u32 = 5;
+    pub const NS_STYLE_TRANSITION_TIMING_FUNCTION_STEP_END: u32 = 6;
+    pub const NS_STYLE_VERTICAL_ALIGN_BASELINE: u32 = 14;
+    pub const NS_STYLE_VERTICAL_ALIGN_SUB: u32 = 15;
+    pub const NS_STYLE_VERTICAL_ALIGN_SUPER: u32 = 16;
+    pub const NS_STYLE_VERTICAL_ALIGN_TOP: u32 = 17;
+    pub const NS_STYLE_VERTICAL_ALIGN_TEXT_TOP: u32 = 18;
+    pub const NS_STYLE_VERTICAL_ALIGN_MIDDLE: u32 = 19;
+    pub const NS_STYLE_VERTICAL_ALIGN_TEXT_BOTTOM: u32 = 20;
+    pub const NS_STYLE_VERTICAL_ALIGN_BOTTOM: u32 = 21;
+    pub const NS_STYLE_VERTICAL_ALIGN_MIDDLE_WITH_BASELINE: u32 = 22;
+    pub const NS_STYLE_VISIBILITY_HIDDEN: u32 = 0;
+    pub const NS_STYLE_VISIBILITY_VISIBLE: u32 = 1;
+    pub const NS_STYLE_VISIBILITY_COLLAPSE: u32 = 2;
+    pub const NS_STYLE_TABSIZE_INITIAL: u32 = 8;
+    pub const NS_STYLE_WORDBREAK_NORMAL: u32 = 0;
+    pub const NS_STYLE_WORDBREAK_BREAK_ALL: u32 = 1;
+    pub const NS_STYLE_WORDBREAK_KEEP_ALL: u32 = 2;
+    pub const NS_STYLE_OVERFLOWWRAP_NORMAL: u32 = 0;
+    pub const NS_STYLE_OVERFLOWWRAP_BREAK_WORD: u32 = 1;
+    pub const NS_STYLE_RUBY_ALIGN_START: u32 = 0;
+    pub const NS_STYLE_RUBY_ALIGN_CENTER: u32 = 1;
+    pub const NS_STYLE_RUBY_ALIGN_SPACE_BETWEEN: u32 = 2;
+    pub const NS_STYLE_RUBY_ALIGN_SPACE_AROUND: u32 = 3;
+    pub const NS_STYLE_RUBY_POSITION_OVER: u32 = 0;
+    pub const NS_STYLE_RUBY_POSITION_UNDER: u32 = 1;
+    pub const NS_STYLE_RUBY_POSITION_INTER_CHARACTER: u32 = 2;
+    pub const NS_STYLE_TEXT_SIZE_ADJUST_NONE: u32 = 0;
+    pub const NS_STYLE_TEXT_SIZE_ADJUST_AUTO: u32 = 1;
+    pub const NS_STYLE_TEXT_ORIENTATION_MIXED: u32 = 0;
+    pub const NS_STYLE_TEXT_ORIENTATION_UPRIGHT: u32 = 1;
+    pub const NS_STYLE_TEXT_ORIENTATION_SIDEWAYS: u32 = 2;
+    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_NONE: u32 = 0;
+    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_ALL: u32 = 1;
+    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_2: u32 = 2;
+    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_3: u32 = 3;
+    pub const NS_STYLE_TEXT_COMBINE_UPRIGHT_DIGITS_4: u32 = 4;
+    pub const NS_STYLE_LINE_HEIGHT_BLOCK_HEIGHT: u32 = 0;
+    pub const NS_STYLE_UNICODE_BIDI_NORMAL: u32 = 0;
+    pub const NS_STYLE_UNICODE_BIDI_EMBED: u32 = 1;
+    pub const NS_STYLE_UNICODE_BIDI_ISOLATE: u32 = 2;
+    pub const NS_STYLE_UNICODE_BIDI_BIDI_OVERRIDE: u32 = 4;
+    pub const NS_STYLE_UNICODE_BIDI_ISOLATE_OVERRIDE: u32 = 6;
+    pub const NS_STYLE_UNICODE_BIDI_PLAINTEXT: u32 = 8;
+    pub const NS_STYLE_TABLE_LAYOUT_AUTO: u32 = 0;
+    pub const NS_STYLE_TABLE_LAYOUT_FIXED: u32 = 1;
+    pub const NS_STYLE_TABLE_EMPTY_CELLS_HIDE: u32 = 0;
+    pub const NS_STYLE_TABLE_EMPTY_CELLS_SHOW: u32 = 1;
+    pub const NS_STYLE_CAPTION_SIDE_TOP: u32 = 0;
+    pub const NS_STYLE_CAPTION_SIDE_RIGHT: u32 = 1;
+    pub const NS_STYLE_CAPTION_SIDE_BOTTOM: u32 = 2;
+    pub const NS_STYLE_CAPTION_SIDE_LEFT: u32 = 3;
+    pub const NS_STYLE_CAPTION_SIDE_TOP_OUTSIDE: u32 = 4;
+    pub const NS_STYLE_CAPTION_SIDE_BOTTOM_OUTSIDE: u32 = 5;
+    pub const NS_STYLE_CELL_SCOPE_ROW: u32 = 0;
+    pub const NS_STYLE_CELL_SCOPE_COL: u32 = 1;
+    pub const NS_STYLE_CELL_SCOPE_ROWGROUP: u32 = 2;
+    pub const NS_STYLE_CELL_SCOPE_COLGROUP: u32 = 3;
+    pub const NS_STYLE_PAGE_MARKS_NONE: u32 = 0;
+    pub const NS_STYLE_PAGE_MARKS_CROP: u32 = 1;
+    pub const NS_STYLE_PAGE_MARKS_REGISTER: u32 = 2;
+    pub const NS_STYLE_PAGE_SIZE_AUTO: u32 = 0;
+    pub const NS_STYLE_PAGE_SIZE_PORTRAIT: u32 = 1;
+    pub const NS_STYLE_PAGE_SIZE_LANDSCAPE: u32 = 2;
+    pub const NS_STYLE_PAGE_BREAK_AUTO: u32 = 0;
+    pub const NS_STYLE_PAGE_BREAK_ALWAYS: u32 = 1;
+    pub const NS_STYLE_PAGE_BREAK_AVOID: u32 = 2;
+    pub const NS_STYLE_PAGE_BREAK_LEFT: u32 = 3;
+    pub const NS_STYLE_PAGE_BREAK_RIGHT: u32 = 4;
+    pub const NS_STYLE_COLUMN_COUNT_AUTO: u32 = 0;
+    pub const NS_STYLE_COLUMN_COUNT_UNLIMITED: i32 = -1;
+    pub const NS_STYLE_COLUMN_FILL_AUTO: u32 = 0;
+    pub const NS_STYLE_COLUMN_FILL_BALANCE: u32 = 1;
+    pub const NS_STYLE_COLUMN_SPAN_NONE: u32 = 0;
+    pub const NS_STYLE_COLUMN_SPAN_ALL: u32 = 1;
+    pub const NS_STYLE_IME_MODE_AUTO: u32 = 0;
+    pub const NS_STYLE_IME_MODE_NORMAL: u32 = 1;
+    pub const NS_STYLE_IME_MODE_ACTIVE: u32 = 2;
+    pub const NS_STYLE_IME_MODE_DISABLED: u32 = 3;
+    pub const NS_STYLE_IME_MODE_INACTIVE: u32 = 4;
+    pub const NS_STYLE_GRADIENT_SHAPE_LINEAR: u32 = 0;
+    pub const NS_STYLE_GRADIENT_SHAPE_ELLIPTICAL: u32 = 1;
+    pub const NS_STYLE_GRADIENT_SHAPE_CIRCULAR: u32 = 2;
+    pub const NS_STYLE_GRADIENT_SIZE_CLOSEST_SIDE: u32 = 0;
+    pub const NS_STYLE_GRADIENT_SIZE_CLOSEST_CORNER: u32 = 1;
+    pub const NS_STYLE_GRADIENT_SIZE_FARTHEST_SIDE: u32 = 2;
+    pub const NS_STYLE_GRADIENT_SIZE_FARTHEST_CORNER: u32 = 3;
+    pub const NS_STYLE_GRADIENT_SIZE_EXPLICIT_SIZE: u32 = 4;
+    pub const NS_STYLE_CONTEXT_PROPERTY_FILL: u32 = 1;
+    pub const NS_STYLE_CONTEXT_PROPERTY_STROKE: u32 = 2;
+    pub const NS_STYLE_CONTEXT_PROPERTY_FILL_OPACITY: u32 = 4;
+    pub const NS_STYLE_CONTEXT_PROPERTY_STROKE_OPACITY: u32 = 8;
+    pub const NS_STYLE_WINDOW_SHADOW_NONE: u32 = 0;
+    pub const NS_STYLE_WINDOW_SHADOW_DEFAULT: u32 = 1;
+    pub const NS_STYLE_WINDOW_SHADOW_MENU: u32 = 2;
+    pub const NS_STYLE_WINDOW_SHADOW_TOOLTIP: u32 = 3;
+    pub const NS_STYLE_WINDOW_SHADOW_SHEET: u32 = 4;
+    pub const NS_STYLE_DOMINANT_BASELINE_AUTO: u32 = 0;
+    pub const NS_STYLE_DOMINANT_BASELINE_USE_SCRIPT: u32 = 1;
+    pub const NS_STYLE_DOMINANT_BASELINE_NO_CHANGE: u32 = 2;
+    pub const NS_STYLE_DOMINANT_BASELINE_RESET_SIZE: u32 = 3;
+    pub const NS_STYLE_DOMINANT_BASELINE_IDEOGRAPHIC: u32 = 4;
+    pub const NS_STYLE_DOMINANT_BASELINE_ALPHABETIC: u32 = 5;
+    pub const NS_STYLE_DOMINANT_BASELINE_HANGING: u32 = 6;
+    pub const NS_STYLE_DOMINANT_BASELINE_MATHEMATICAL: u32 = 7;
+    pub const NS_STYLE_DOMINANT_BASELINE_CENTRAL: u32 = 8;
+    pub const NS_STYLE_DOMINANT_BASELINE_MIDDLE: u32 = 9;
+    pub const NS_STYLE_DOMINANT_BASELINE_TEXT_AFTER_EDGE: u32 = 10;
+    pub const NS_STYLE_DOMINANT_BASELINE_TEXT_BEFORE_EDGE: u32 = 11;
+    pub const NS_STYLE_IMAGE_RENDERING_AUTO: u32 = 0;
+    pub const NS_STYLE_IMAGE_RENDERING_OPTIMIZESPEED: u32 = 1;
+    pub const NS_STYLE_IMAGE_RENDERING_OPTIMIZEQUALITY: u32 = 2;
+    pub const NS_STYLE_IMAGE_RENDERING_CRISPEDGES: u32 = 3;
+    pub const NS_STYLE_MASK_TYPE_LUMINANCE: u32 = 0;
+    pub const NS_STYLE_MASK_TYPE_ALPHA: u32 = 1;
+    pub const NS_STYLE_PAINT_ORDER_NORMAL: u32 = 0;
+    pub const NS_STYLE_PAINT_ORDER_FILL: u32 = 1;
+    pub const NS_STYLE_PAINT_ORDER_STROKE: u32 = 2;
+    pub const NS_STYLE_PAINT_ORDER_MARKERS: u32 = 3;
+    pub const NS_STYLE_PAINT_ORDER_LAST_VALUE: u32 = 3;
+    pub const NS_STYLE_PAINT_ORDER_BITWIDTH: u32 = 2;
+    pub const NS_STYLE_SHAPE_RENDERING_AUTO: u32 = 0;
+    pub const NS_STYLE_SHAPE_RENDERING_OPTIMIZESPEED: u32 = 1;
+    pub const NS_STYLE_SHAPE_RENDERING_CRISPEDGES: u32 = 2;
+    pub const NS_STYLE_SHAPE_RENDERING_GEOMETRICPRECISION: u32 = 3;
+    pub const NS_STYLE_STROKE_LINECAP_BUTT: u32 = 0;
+    pub const NS_STYLE_STROKE_LINECAP_ROUND: u32 = 1;
+    pub const NS_STYLE_STROKE_LINECAP_SQUARE: u32 = 2;
+    pub const NS_STYLE_STROKE_LINEJOIN_MITER: u32 = 0;
+    pub const NS_STYLE_STROKE_LINEJOIN_ROUND: u32 = 1;
+    pub const NS_STYLE_STROKE_LINEJOIN_BEVEL: u32 = 2;
+    pub const NS_STYLE_STROKE_PROP_CONTEXT_VALUE: u32 = 0;
+    pub const NS_STYLE_TEXT_ANCHOR_START: u32 = 0;
+    pub const NS_STYLE_TEXT_ANCHOR_MIDDLE: u32 = 1;
+    pub const NS_STYLE_TEXT_ANCHOR_END: u32 = 2;
+    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_OVER: u32 = 1;
+    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_UNDER: u32 = 2;
+    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_LEFT: u32 = 4;
+    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_RIGHT: u32 = 8;
+    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT: u32 = 9;
+    pub const NS_STYLE_TEXT_EMPHASIS_POSITION_DEFAULT_ZH: u32 = 10;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_NONE: u32 = 0;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_FILL_MASK: u32 = 8;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_FILLED: u32 = 0;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_OPEN: u32 = 8;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_SHAPE_MASK: u32 = 7;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_DOT: u32 = 1;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_CIRCLE: u32 = 2;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_DOUBLE_CIRCLE: u32 = 3;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_TRIANGLE: u32 = 4;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_SESAME: u32 = 5;
+    pub const NS_STYLE_TEXT_EMPHASIS_STYLE_STRING: u32 = 255;
+    pub const NS_STYLE_TEXT_RENDERING_AUTO: u32 = 0;
+    pub const NS_STYLE_TEXT_RENDERING_OPTIMIZESPEED: u32 = 1;
+    pub const NS_STYLE_TEXT_RENDERING_OPTIMIZELEGIBILITY: u32 = 2;
+    pub const NS_STYLE_TEXT_RENDERING_GEOMETRICPRECISION: u32 = 3;
+    pub const NS_STYLE_COLOR_ADJUST_ECONOMY: u32 = 0;
+    pub const NS_STYLE_COLOR_ADJUST_EXACT: u32 = 1;
+    pub const NS_STYLE_COLOR_INTERPOLATION_AUTO: u32 = 0;
+    pub const NS_STYLE_COLOR_INTERPOLATION_SRGB: u32 = 1;
+    pub const NS_STYLE_COLOR_INTERPOLATION_LINEARRGB: u32 = 2;
+    pub const NS_STYLE_VECTOR_EFFECT_NONE: u32 = 0;
+    pub const NS_STYLE_VECTOR_EFFECT_NON_SCALING_STROKE: u32 = 1;
+    pub const NS_STYLE_BACKFACE_VISIBILITY_VISIBLE: u32 = 1;
+    pub const NS_STYLE_BACKFACE_VISIBILITY_HIDDEN: u32 = 0;
+    pub const NS_STYLE_TRANSFORM_STYLE_FLAT: u32 = 0;
+    pub const NS_STYLE_TRANSFORM_STYLE_PRESERVE_3D: u32 = 1;
+    pub const NS_STYLE_CONTEXT_FILL_OPACITY: u32 = 0;
+    pub const NS_STYLE_CONTEXT_STROKE_OPACITY: u32 = 1;
+    pub const NS_STYLE_BLEND_NORMAL: u32 = 0;
+    pub const NS_STYLE_BLEND_MULTIPLY: u32 = 1;
+    pub const NS_STYLE_BLEND_SCREEN: u32 = 2;
+    pub const NS_STYLE_BLEND_OVERLAY: u32 = 3;
+    pub const NS_STYLE_BLEND_DARKEN: u32 = 4;
+    pub const NS_STYLE_BLEND_LIGHTEN: u32 = 5;
+    pub const NS_STYLE_BLEND_COLOR_DODGE: u32 = 6;
+    pub const NS_STYLE_BLEND_COLOR_BURN: u32 = 7;
+    pub const NS_STYLE_BLEND_HARD_LIGHT: u32 = 8;
+    pub const NS_STYLE_BLEND_SOFT_LIGHT: u32 = 9;
+    pub const NS_STYLE_BLEND_DIFFERENCE: u32 = 10;
+    pub const NS_STYLE_BLEND_EXCLUSION: u32 = 11;
+    pub const NS_STYLE_BLEND_HUE: u32 = 12;
+    pub const NS_STYLE_BLEND_SATURATION: u32 = 13;
+    pub const NS_STYLE_BLEND_COLOR: u32 = 14;
+    pub const NS_STYLE_BLEND_LUMINOSITY: u32 = 15;
+    pub const NS_STYLE_MASK_COMPOSITE_ADD: u32 = 0;
+    pub const NS_STYLE_MASK_COMPOSITE_SUBTRACT: u32 = 1;
+    pub const NS_STYLE_MASK_COMPOSITE_INTERSECT: u32 = 2;
+    pub const NS_STYLE_MASK_COMPOSITE_EXCLUDE: u32 = 3;
+    pub const NS_STYLE_CONTROL_CHARACTER_VISIBILITY_HIDDEN: u32 = 0;
+    pub const NS_STYLE_CONTROL_CHARACTER_VISIBILITY_VISIBLE: u32 = 1;
+    pub const NS_STYLE_COUNTER_SYSTEM_CYCLIC: u32 = 0;
+    pub const NS_STYLE_COUNTER_SYSTEM_NUMERIC: u32 = 1;
+    pub const NS_STYLE_COUNTER_SYSTEM_ALPHABETIC: u32 = 2;
+    pub const NS_STYLE_COUNTER_SYSTEM_SYMBOLIC: u32 = 3;
+    pub const NS_STYLE_COUNTER_SYSTEM_ADDITIVE: u32 = 4;
+    pub const NS_STYLE_COUNTER_SYSTEM_FIXED: u32 = 5;
+    pub const NS_STYLE_COUNTER_SYSTEM_EXTENDS: u32 = 6;
+    pub const NS_STYLE_COUNTER_RANGE_INFINITE: u32 = 0;
+    pub const NS_STYLE_COUNTER_SPEAKAS_BULLETS: u32 = 0;
+    pub const NS_STYLE_COUNTER_SPEAKAS_NUMBERS: u32 = 1;
+    pub const NS_STYLE_COUNTER_SPEAKAS_WORDS: u32 = 2;
+    pub const NS_STYLE_COUNTER_SPEAKAS_SPELL_OUT: u32 = 3;
+    pub const NS_STYLE_COUNTER_SPEAKAS_OTHER: u32 = 255;
+    pub const NS_STYLE_SCROLL_BEHAVIOR_AUTO: u32 = 0;
+    pub const NS_STYLE_SCROLL_BEHAVIOR_SMOOTH: u32 = 1;
+    pub const NS_STYLE_SCROLL_SNAP_TYPE_NONE: u32 = 0;
+    pub const NS_STYLE_SCROLL_SNAP_TYPE_MANDATORY: u32 = 1;
+    pub const NS_STYLE_SCROLL_SNAP_TYPE_PROXIMITY: u32 = 2;
+    pub const NS_STYLE_ORIENTATION_PORTRAIT: u32 = 0;
+    pub const NS_STYLE_ORIENTATION_LANDSCAPE: u32 = 1;
+    pub const NS_STYLE_SCAN_PROGRESSIVE: u32 = 0;
+    pub const NS_STYLE_SCAN_INTERLACE: u32 = 1;
+    pub const NS_STYLE_DISPLAY_MODE_BROWSER: u32 = 0;
+    pub const NS_STYLE_DISPLAY_MODE_MINIMAL_UI: u32 = 1;
+    pub const NS_STYLE_DISPLAY_MODE_STANDALONE: u32 = 2;
+    pub const NS_STYLE_DISPLAY_MODE_FULLSCREEN: u32 = 3;
+    pub const CSS_PSEUDO_ELEMENT_IS_CSS2: u32 = 1;
+    pub const CSS_PSEUDO_ELEMENT_CONTAINS_ELEMENTS: u32 = 2;
+    pub const CSS_PSEUDO_ELEMENT_SUPPORTS_STYLE_ATTRIBUTE: u32 = 4;
+    pub const CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE: u32 = 8;
+    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS: u32 = 16;
+    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_CHROME: u32 = 32;
+    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS_AND_CHROME: u32 = 48;
+    pub const CSS_PSEUDO_ELEMENT_IS_JS_CREATED_NAC: u32 = 64;
+    pub const CSS_PSEUDO_ELEMENT_IS_FLEX_OR_GRID_ITEM: u32 = 128;
+    pub const kNameSpaceID_Unknown: i32 = -1;
+    pub const kNameSpaceID_XMLNS: u32 = 1;
+    pub const kNameSpaceID_XML: u32 = 2;
+    pub const kNameSpaceID_XHTML: u32 = 3;
+    pub const kNameSpaceID_XLink: u32 = 4;
+    pub const kNameSpaceID_XSLT: u32 = 5;
+    pub const kNameSpaceID_XBL: u32 = 6;
+    pub const kNameSpaceID_MathML: u32 = 7;
+    pub const kNameSpaceID_RDF: u32 = 8;
+    pub const kNameSpaceID_XUL: u32 = 9;
+    pub const kNameSpaceID_SVG: u32 = 10;
+    pub const kNameSpaceID_disabled_MathML: u32 = 11;
+    pub const kNameSpaceID_disabled_SVG: u32 = 12;
+    pub const kNameSpaceID_LastBuiltin: u32 = 12;
+    pub const kNameSpaceID_Wildcard: i32 = -2147483648;
+    pub const NS_AUTHOR_SPECIFIED_BACKGROUND: u32 = 1;
+    pub const NS_AUTHOR_SPECIFIED_BORDER: u32 = 2;
+    pub const NS_AUTHOR_SPECIFIED_PADDING: u32 = 4;
+    pub const NS_STYLE_INHERIT_MASK: u32 = 16777215;
+    pub const NS_STYLE_HAS_TEXT_DECORATION_LINES: u32 = 16777216;
+    pub const NS_STYLE_HAS_PSEUDO_ELEMENT_DATA: u32 = 33554432;
+    pub const NS_STYLE_RELEVANT_LINK_VISITED: u32 = 67108864;
+    pub const NS_STYLE_IS_STYLE_IF_VISITED: u32 = 134217728;
+    pub const NS_STYLE_CHILD_USES_GRANDANCESTOR_STYLE: u32 = 268435456;
+    pub const NS_STYLE_IS_SHARED: u32 = 536870912;
+    pub const NS_STYLE_IS_GOING_AWAY: u32 = 1073741824;
+    pub const NS_STYLE_SUPPRESS_LINEBREAK: u32 = 2147483648;
+    pub const NS_STYLE_IN_DISPLAY_NONE_SUBTREE: u64 = 4294967296;
+    pub const NS_STYLE_INELIGIBLE_FOR_SHARING: u64 = 8589934592;
+    pub const NS_STYLE_HAS_CHILD_THAT_USES_RESET_STYLE: u64 = 17179869184;
+    pub const NS_STYLE_IS_TEXT_COMBINED: u64 = 34359738368;
+    pub const NS_STYLE_CONTEXT_IS_GECKO: u64 = 68719476736;
+    pub const NS_STYLE_CONTEXT_TYPE_SHIFT: u32 = 37;
     pub mod std {
         #[allow(unused_imports)]
         use self::super::super::root;
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct nothrow_t {
             pub _address: u8,
         }
@@ -1045,24 +1047,111 @@ pub mod root {
                 pub _address: u8,
             }
             pub type LinkedListElementTraits_RawType<T> = *mut T;
             pub type LinkedListElementTraits_ConstRawType<T> = *mut T;
             pub type LinkedListElementTraits_ClientType<T> = *mut T;
             pub type LinkedListElementTraits_ConstClientType<T> = *mut T;
             #[repr(C)]
             #[derive(Debug, Copy, Clone)]
+            pub struct VariantTag {
+                pub _address: u8,
+            }
+            pub type VariantTag_Type = u8;
+            #[repr(C)]
+            #[derive(Debug, Copy, Clone)]
             pub struct WeakReference {
                 pub _address: u8,
             }
             #[repr(C)]
             #[derive(Debug, Copy, Clone)]
             pub struct FreePolicy {
                 pub _address: u8,
             }
+            #[repr(C)]
+            #[derive(Debug)]
+            pub struct MutexImpl {
+                pub platformData_: [*mut ::std::os::raw::c_void; 5usize],
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct MutexImpl_PlatformData {
+                _unused: [u8; 0],
+            }
+            impl Clone for MutexImpl_PlatformData {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[test]
+            fn bindgen_test_layout_MutexImpl() {
+                assert_eq!(
+                    ::std::mem::size_of::<MutexImpl>(),
+                    40usize,
+                    concat!("Size of: ", stringify!(MutexImpl))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<MutexImpl>(),
+                    8usize,
+                    concat!("Alignment of ", stringify!(MutexImpl))
+                );
+                assert_eq!(
+                    unsafe {
+                        &(*(::std::ptr::null::<MutexImpl>())).platformData_ as *const _ as usize
+                    },
+                    0usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(MutexImpl),
+                        "::",
+                        stringify!(platformData_)
+                    )
+                );
+            }
+            #[repr(C)]
+            #[derive(Debug)]
+            pub struct ConditionVariableImpl {
+                pub platformData_: [*mut ::std::os::raw::c_void; 6usize],
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct ConditionVariableImpl_PlatformData {
+                _unused: [u8; 0],
+            }
+            impl Clone for ConditionVariableImpl_PlatformData {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[test]
+            fn bindgen_test_layout_ConditionVariableImpl() {
+                assert_eq!(
+                    ::std::mem::size_of::<ConditionVariableImpl>(),
+                    48usize,
+                    concat!("Size of: ", stringify!(ConditionVariableImpl))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<ConditionVariableImpl>(),
+                    8usize,
+                    concat!("Alignment of ", stringify!(ConditionVariableImpl))
+                );
+                assert_eq!(
+                    unsafe {
+                        &(*(::std::ptr::null::<ConditionVariableImpl>())).platformData_ as *const _
+                            as usize
+                    },
+                    0usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(ConditionVariableImpl),
+                        "::",
+                        stringify!(platformData_)
+                    )
+                );
+            }
         }
         pub type Conditional_Type<A> = A;
         pub const ArenaObjectID_eArenaObjectID_DummyBeforeFirstObjectID:
             root::mozilla::ArenaObjectID = 171;
         pub const ArenaObjectID_eArenaObjectID_GeckoStyleContext: root::mozilla::ArenaObjectID =
             172;
         pub const ArenaObjectID_eArenaObjectID_nsLineBox: root::mozilla::ArenaObjectID = 173;
         pub const ArenaObjectID_eArenaObjectID_nsRuleNode: root::mozilla::ArenaObjectID = 174;
@@ -1178,25 +1267,35 @@ pub mod root {
             #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
             pub enum SheetParsingMode {
                 eAuthorSheetFeatures = 0,
                 eUserSheetFeatures = 1,
                 eAgentSheetFeatures = 2,
                 eSafeAgentSheetFeatures = 3,
             }
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct GroupRule {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for GroupRule {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct ImageLoader {
                 _unused: [u8; 0],
             }
+            impl Clone for ImageLoader {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             #[repr(C)]
             pub struct URLValueData__bindgen_vtable(::std::os::raw::c_void);
             #[repr(C)]
             #[derive(Debug)]
             pub struct URLValueData {
                 pub vtable_: *const URLValueData__bindgen_vtable,
                 pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
                 pub mURI: root::nsMainThreadPtrHandle<root::nsIURI>,
@@ -1733,21 +1832,16 @@ pub mod root {
                     concat!(
                         "Offset of field: ",
                         stringify!(ComplexColorValue),
                         "::",
                         stringify!(mRefCnt)
                     )
                 );
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
-            pub struct SheetLoadData {
-                _unused: [u8; 0],
-            }
             /// Style sheet reuse *
             #[repr(C)]
             pub struct LoaderReusableStyleSheets {
                 pub mReusableSheets: root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>,
             }
             #[test]
             fn bindgen_test_layout_LoaderReusableStyleSheets() {
                 assert_eq!(
@@ -1773,17 +1867,16 @@ pub mod root {
                         stringify!(mReusableSheets)
                     )
                 );
             }
             #[repr(C)]
             pub struct Loader {
                 pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
                 pub mSheets: root::nsAutoPtr<root::mozilla::css::Loader_Sheets>,
-                pub mParsingDatas: [u64; 10usize],
                 pub mPostedEvents: root::mozilla::css::Loader_LoadDataArray,
                 pub mObservers: [u64; 2usize],
                 pub mDocument: *mut root::nsIDocument,
                 pub mDocGroup: root::RefPtr<root::mozilla::dom::DocGroup>,
                 pub mDatasToNotifyOn: u32,
                 pub mCompatMode: root::nsCompatibility,
                 pub mPreferredSheet: ::nsstring::nsStringRepr,
                 pub mStyleBackendType: [u8; 2usize],
@@ -1878,17 +1971,17 @@ pub mod root {
                 #[link_name = "\u{1}_ZN7mozilla3css6Loader21_cycleCollectorGlobalE"]
                 pub static mut Loader__cycleCollectorGlobal:
                     root::mozilla::css::Loader_cycleCollection;
             }
             #[test]
             fn bindgen_test_layout_Loader() {
                 assert_eq!(
                     ::std::mem::size_of::<Loader>(),
-                    176usize,
+                    96usize,
                     concat!("Size of: ", stringify!(Loader))
                 );
                 assert_eq!(
                     ::std::mem::align_of::<Loader>(),
                     8usize,
                     concat!("Alignment of ", stringify!(Loader))
                 );
                 assert_eq!(
@@ -1908,136 +2001,350 @@ pub mod root {
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mSheets)
                     )
                 );
                 assert_eq!(
                     unsafe {
-                        &(*(::std::ptr::null::<Loader>())).mParsingDatas as *const _ as usize
+                        &(*(::std::ptr::null::<Loader>())).mPostedEvents as *const _ as usize
                     },
                     16usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
-                        stringify!(mParsingDatas)
-                    )
-                );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<Loader>())).mPostedEvents as *const _ as usize
-                    },
-                    96usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(Loader),
-                        "::",
                         stringify!(mPostedEvents)
                     )
                 );
                 assert_eq!(
                     unsafe { &(*(::std::ptr::null::<Loader>())).mObservers as *const _ as usize },
-                    104usize,
+                    24usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mObservers)
                     )
                 );
                 assert_eq!(
                     unsafe { &(*(::std::ptr::null::<Loader>())).mDocument as *const _ as usize },
-                    120usize,
+                    40usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mDocument)
                     )
                 );
                 assert_eq!(
                     unsafe { &(*(::std::ptr::null::<Loader>())).mDocGroup as *const _ as usize },
-                    128usize,
+                    48usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mDocGroup)
                     )
                 );
                 assert_eq!(
                     unsafe {
                         &(*(::std::ptr::null::<Loader>())).mDatasToNotifyOn as *const _ as usize
                     },
-                    136usize,
+                    56usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mDatasToNotifyOn)
                     )
                 );
                 assert_eq!(
                     unsafe { &(*(::std::ptr::null::<Loader>())).mCompatMode as *const _ as usize },
-                    140usize,
+                    60usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mCompatMode)
                     )
                 );
                 assert_eq!(
                     unsafe {
                         &(*(::std::ptr::null::<Loader>())).mPreferredSheet as *const _ as usize
                     },
-                    144usize,
+                    64usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mPreferredSheet)
                     )
                 );
                 assert_eq!(
                     unsafe {
                         &(*(::std::ptr::null::<Loader>())).mStyleBackendType as *const _ as usize
                     },
-                    160usize,
+                    80usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mStyleBackendType)
                     )
                 );
                 assert_eq!(
                     unsafe { &(*(::std::ptr::null::<Loader>())).mEnabled as *const _ as usize },
-                    162usize,
+                    82usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mEnabled)
                     )
                 );
                 assert_eq!(
                     unsafe { &(*(::std::ptr::null::<Loader>())).mReporter as *const _ as usize },
-                    168usize,
+                    88usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mReporter)
                     )
                 );
             }
             #[repr(C)]
+            pub struct SheetLoadData {
+                pub _base: root::nsIRunnable,
+                pub _base_1: root::nsIUnicharStreamLoaderObserver,
+                pub _base_2: root::nsIThreadObserver,
+                pub mRefCnt: root::nsAutoRefCnt,
+                pub mLoader: root::RefPtr<root::mozilla::css::Loader>,
+                pub mTitle: ::nsstring::nsStringRepr,
+                pub mEncoding: *const root::mozilla::Encoding,
+                pub mURI: root::nsCOMPtr,
+                pub mLineNumber: u32,
+                pub mSheet: root::RefPtr<root::mozilla::StyleSheet>,
+                pub mNext: *mut root::mozilla::css::SheetLoadData,
+                pub mParentData: root::RefPtr<root::mozilla::css::SheetLoadData>,
+                pub mPendingChildren: u32,
+                pub _bitfield_1: root::__BindgenBitfieldUnit<[u8; 2usize], u8>,
+                pub mOwningElement: root::nsCOMPtr,
+                pub mObserver: root::nsCOMPtr,
+                pub mLoaderPrincipal: root::nsCOMPtr,
+                pub mRequestingNode: root::nsCOMPtr,
+                pub mPreloadEncoding: *const root::mozilla::Encoding,
+                pub mStatus: root::nsresult,
+            }
+            pub type SheetLoadData_HasThreadSafeRefCnt = root::mozilla::FalseType;
+            #[test]
+            fn bindgen_test_layout_SheetLoadData() {
+                assert_eq!(
+                    ::std::mem::size_of::<SheetLoadData>(),
+                    160usize,
+                    concat!("Size of: ", stringify!(SheetLoadData))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<SheetLoadData>(),
+                    8usize,
+                    concat!("Alignment of ", stringify!(SheetLoadData))
+                );
+            }
+            impl SheetLoadData {
+                #[inline]
+                pub fn mSyncLoad(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mSyncLoad(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(0usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mIsNonDocumentSheet(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mIsNonDocumentSheet(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(1usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mIsLoading(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mIsLoading(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(2usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mIsBeingParsed(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mIsBeingParsed(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(3usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mIsCancelled(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mIsCancelled(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(4usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mMustNotify(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mMustNotify(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(5usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mWasAlternate(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mWasAlternate(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(6usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mUseSystemPrincipal(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mUseSystemPrincipal(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(7usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mSheetAlreadyComplete(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mSheetAlreadyComplete(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(8usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mIsCrossOriginNoCORS(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mIsCrossOriginNoCORS(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(9usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn mBlockResourceTiming(&self) -> bool {
+                    unsafe { ::std::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u8) }
+                }
+                #[inline]
+                pub fn set_mBlockResourceTiming(&mut self, val: bool) {
+                    unsafe {
+                        let val: u8 = ::std::mem::transmute(val);
+                        self._bitfield_1.set(10usize, 1u8, val as u64)
+                    }
+                }
+                #[inline]
+                pub fn new_bitfield_1(
+                    mSyncLoad: bool,
+                    mIsNonDocumentSheet: bool,
+                    mIsLoading: bool,
+                    mIsBeingParsed: bool,
+                    mIsCancelled: bool,
+                    mMustNotify: bool,
+                    mWasAlternate: bool,
+                    mUseSystemPrincipal: bool,
+                    mSheetAlreadyComplete: bool,
+                    mIsCrossOriginNoCORS: bool,
+                    mBlockResourceTiming: bool,
+                ) -> root::__BindgenBitfieldUnit<[u8; 2usize], u8> {
+                    let mut __bindgen_bitfield_unit : root :: __BindgenBitfieldUnit < [ u8 ; 2usize ] , u8 > = Default :: default ( ) ;
+                    __bindgen_bitfield_unit.set(0usize, 1u8, {
+                        let mSyncLoad: u8 = unsafe { ::std::mem::transmute(mSyncLoad) };
+                        mSyncLoad as u64
+                    });
+                    __bindgen_bitfield_unit.set(1usize, 1u8, {
+                        let mIsNonDocumentSheet: u8 =
+                            unsafe { ::std::mem::transmute(mIsNonDocumentSheet) };
+                        mIsNonDocumentSheet as u64
+                    });
+                    __bindgen_bitfield_unit.set(2usize, 1u8, {
+                        let mIsLoading: u8 = unsafe { ::std::mem::transmute(mIsLoading) };
+                        mIsLoading as u64
+                    });
+                    __bindgen_bitfield_unit.set(3usize, 1u8, {
+                        let mIsBeingParsed: u8 = unsafe { ::std::mem::transmute(mIsBeingParsed) };
+                        mIsBeingParsed as u64
+                    });
+                    __bindgen_bitfield_unit.set(4usize, 1u8, {
+                        let mIsCancelled: u8 = unsafe { ::std::mem::transmute(mIsCancelled) };
+                        mIsCancelled as u64
+                    });
+                    __bindgen_bitfield_unit.set(5usize, 1u8, {
+                        let mMustNotify: u8 = unsafe { ::std::mem::transmute(mMustNotify) };
+                        mMustNotify as u64
+                    });
+                    __bindgen_bitfield_unit.set(6usize, 1u8, {
+                        let mWasAlternate: u8 = unsafe { ::std::mem::transmute(mWasAlternate) };
+                        mWasAlternate as u64
+                    });
+                    __bindgen_bitfield_unit.set(7usize, 1u8, {
+                        let mUseSystemPrincipal: u8 =
+                            unsafe { ::std::mem::transmute(mUseSystemPrincipal) };
+                        mUseSystemPrincipal as u64
+                    });
+                    __bindgen_bitfield_unit.set(8usize, 1u8, {
+                        let mSheetAlreadyComplete: u8 =
+                            unsafe { ::std::mem::transmute(mSheetAlreadyComplete) };
+                        mSheetAlreadyComplete as u64
+                    });
+                    __bindgen_bitfield_unit.set(9usize, 1u8, {
+                        let mIsCrossOriginNoCORS: u8 =
+                            unsafe { ::std::mem::transmute(mIsCrossOriginNoCORS) };
+                        mIsCrossOriginNoCORS as u64
+                    });
+                    __bindgen_bitfield_unit.set(10usize, 1u8, {
+                        let mBlockResourceTiming: u8 =
+                            unsafe { ::std::mem::transmute(mBlockResourceTiming) };
+                        mBlockResourceTiming as u64
+                    });
+                    __bindgen_bitfield_unit
+                }
+            }
+            #[repr(C)]
             #[derive(Debug)]
             pub struct Rule {
                 pub _base: root::nsISupports,
                 pub _base_1: root::nsWrapperCache,
                 pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
                 pub mSheet: *mut root::mozilla::StyleSheet,
                 pub mParentRule: *mut root::mozilla::css::GroupRule,
                 pub mLineNumber: u32,
@@ -2333,16 +2640,202 @@ pub mod root {
         pub type LinkedList_ConstRawType = root::mozilla::LinkedList_Traits;
         pub type LinkedList_ClientType = root::mozilla::LinkedList_Traits;
         pub type LinkedList_ConstClientType = root::mozilla::LinkedList_Traits;
         #[repr(C)]
         #[derive(Debug, Copy, Clone)]
         pub struct LinkedList_Iterator {
             pub mCurrent: root::mozilla::LinkedList_RawType,
         }
+        /// # mozilla::Variant
+        ///
+        /// A variant / tagged union / heterogenous disjoint union / sum-type template
+        /// class. Similar in concept to (but not derived from) `boost::variant`.
+        ///
+        /// Sometimes, you may wish to use a C union with non-POD types. However, this is
+        /// forbidden in C++ because it is not clear which type in the union should have
+        /// its constructor and destructor run on creation and deletion
+        /// respectively. This is the problem that `mozilla::Variant` solves.
+        ///
+        /// ## Usage
+        ///
+        /// A `mozilla::Variant` instance is constructed (via move or copy) from one of
+        /// its variant types (ignoring const and references). It does *not* support
+        /// construction from subclasses of variant types or types that coerce to one of
+        /// the variant types.
+        ///
+        /// Variant<char, uint32_t> v1('a');
+        /// Variant<UniquePtr<A>, B, C> v2(MakeUnique<A>());
+        /// Variant<bool, char> v3(VariantType<char>, 0); // disambiguation needed
+        /// Variant<int, int> v4(VariantIndex<1>, 0); // 2nd int
+        ///
+        /// Because specifying the full type of a Variant value is often verbose,
+        /// there are two easier ways to construct values:
+        ///
+        /// A. AsVariant() can be used to construct a Variant value using type inference
+        /// in contexts such as expressions or when returning values from functions.
+        /// Because AsVariant() must copy or move the value into a temporary and this
+        /// cannot necessarily be elided by the compiler, it's mostly appropriate only
+        /// for use with primitive or very small types.
+        ///
+        /// Variant<char, uint32_t> Foo() { return AsVariant('x'); }
+        /// // ...
+        /// Variant<char, uint32_t> v1 = Foo();  // v1 holds char('x').
+        ///
+        /// B. Brace-construction with VariantType or VariantIndex; this also allows
+        /// in-place construction with any number of arguments.
+        ///
+        /// struct AB { AB(int, int){...} };
+        /// static Variant<AB, bool> foo()
+        /// {
+        /// return {VariantIndex<0>{}, 1, 2};
+        /// }
+        /// // ...
+        /// Variant<AB, bool> v0 = Foo();  // v0 holds AB(1,2).
+        ///
+        /// All access to the contained value goes through type-safe accessors.
+        /// Either the stored type, or the type index may be provided.
+        ///
+        /// void
+        /// Foo(Variant<A, B, C> v)
+        /// {
+        /// if (v.is<A>()) {
+        /// A& ref = v.as<A>();
+        /// ...
+        /// } else (v.is<1>()) { // Instead of v.is<B>.
+        /// ...
+        /// } else {
+        /// ...
+        /// }
+        /// }
+        ///
+        /// In some situation, a Variant may be constructed from templated types, in
+        /// which case it is possible that the same type could be given multiple times by
+        /// an external developer. Or seemingly-different types could be aliases.
+        /// In this case, repeated types can only be accessed through their index, to
+        /// prevent ambiguous access by type.
+        ///
+        /// // Bad!
+        /// template <typename T>
+        /// struct ResultOrError
+        /// {
+        /// Variant<T, int> m;
+        /// ResultOrError() : m(int(0)) {} // Error '0' by default
+        /// ResultOrError(const T& r) : m(r) {}
+        /// bool IsResult() const { return m.is<T>(); }
+        /// bool IsError() const { return m.is<int>(); }
+        /// };
+        /// // Now instantiante with the result being an int too:
+        /// ResultOrError<int> myResult(123); // Fail!
+        /// // In Variant<int, int>, which 'int' are we refering to, from inside
+        /// // ResultOrError functions?
+        ///
+        /// // Good!
+        /// template <typename T>
+        /// struct ResultOrError
+        /// {
+        /// Variant<T, int> m;
+        /// ResultOrError() : m(VariantIndex<1>{}, 0) {} // Error '0' by default
+        /// ResultOrError(const T& r) : m(VariantIndex<0>{}, r) {}
+        /// bool IsResult() const { return m.is<0>(); } // 0 -> T
+        /// bool IsError() const { return m.is<1>(); } // 1 -> int
+        /// };
+        /// // Now instantiante with the result being an int too:
+        /// ResultOrError<int> myResult(123); // It now works!
+        ///
+        /// Attempting to use the contained value as type `T1` when the `Variant`
+        /// instance contains a value of type `T2` causes an assertion failure.
+        ///
+        /// A a;
+        /// Variant<A, B, C> v(a);
+        /// v.as<B>(); // <--- Assertion failure!
+        ///
+        /// Trying to use a `Variant<Ts...>` instance as some type `U` that is not a
+        /// member of the set of `Ts...` is a compiler error.
+        ///
+        /// A a;
+        /// Variant<A, B, C> v(a);
+        /// v.as<SomeRandomType>(); // <--- Compiler error!
+        ///
+        /// Additionally, you can turn a `Variant` that `is<T>` into a `T` by moving it
+        /// out of the containing `Variant` instance with the `extract<T>` method:
+        ///
+        /// Variant<UniquePtr<A>, B, C> v(MakeUnique<A>());
+        /// auto ptr = v.extract<UniquePtr<A>>();
+        ///
+        /// Finally, you can exhaustively match on the contained variant and branch into
+        /// different code paths depending on which type is contained. This is preferred
+        /// to manually checking every variant type T with is<T>() because it provides
+        /// compile-time checking that you handled every type, rather than runtime
+        /// assertion failures.
+        ///
+        /// // Bad!
+        /// char* foo(Variant<A, B, C, D>& v) {
+        /// if (v.is<A>()) {
+        /// return ...;
+        /// } else if (v.is<B>()) {
+        /// return ...;
+        /// } else {
+        /// return doSomething(v.as<C>()); // Forgot about case D!
+        /// }
+        /// }
+        ///
+        /// // Good!
+        /// struct FooMatcher
+        /// {
+        /// // The return type of all matchers must be identical.
+        /// char* match(A& a) { ... }
+        /// char* match(B& b) { ... }
+        /// char* match(C& c) { ... }
+        /// char* match(D& d) { ... } // Compile-time error to forget D!
+        /// }
+        /// char* foo(Variant<A, B, C, D>& v) {
+        /// return v.match(FooMatcher());
+        /// }
+        ///
+        /// ## Examples
+        ///
+        /// A tree is either an empty leaf, or a node with a value and two children:
+        ///
+        /// struct Leaf { };
+        ///
+        /// template<typename T>
+        /// struct Node
+        /// {
+        /// T value;
+        /// Tree<T>* left;
+        /// Tree<T>* right;
+        /// };
+        ///
+        /// template<typename T>
+        /// using Tree = Variant<Leaf, Node<T>>;
+        ///
+        /// A copy-on-write string is either a non-owning reference to some existing
+        /// string, or an owning reference to our copy:
+        ///
+        /// class CopyOnWriteString
+        /// {
+        /// Variant<const char*, UniquePtr<char[]>> string;
+        ///
+        /// ...
+        /// };
+        ///
+        /// Because Variant must be aligned suitable to hold any value stored within it,
+        /// and because |alignas| requirements don't affect platform ABI with respect to
+        /// how parameters are laid out in memory, Variant can't be used as the type of a
+        /// function parameter.  Pass Variant to functions by pointer or reference
+        /// instead.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct Variant {
+            pub rawData: *mut ::std::os::raw::c_uchar,
+            pub tag: root::mozilla::Variant_Tag,
+        }
+        pub type Variant_Tag = root::mozilla::detail::VariantTag;
+        pub type Variant_Impl = u8;
         #[repr(C)]
         #[derive(Debug, Copy, Clone)]
         pub struct Maybe {
             pub _address: u8,
         }
         pub type Maybe_ValueType<T> = T;
         pub mod gfx {
             #[allow(unused_imports)]
@@ -2491,20 +2984,25 @@ pub mod root {
                     )
                 );
             }
         }
         pub mod layers {
             #[allow(unused_imports)]
             use self::super::super::super::root;
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct LayerManager {
                 _unused: [u8; 0],
             }
+            impl Clone for LayerManager {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
         }
         pub mod dom {
             #[allow(unused_imports)]
             use self::super::super::super::root;
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct AllOwningUnionBase {
                 pub _address: u8,
@@ -2594,30 +3092,45 @@ pub mod root {
                 NonSystem = 1,
             }
             #[repr(C)]
             #[derive(Debug, Copy, Clone)]
             pub struct Nullable {
                 pub _address: u8,
             }
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct Promise {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for Promise {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct ClientSource {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for ClientSource {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct CSSImportRule {
                 _unused: [u8; 0],
             }
+            impl Clone for CSSImportRule {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             /// Struct that stores info on an attribute. The name and value must either both
             /// be null or both be non-null.
             ///
             /// Note that, just as the pointers returned by GetAttrNameAt, the pointers that
             /// this struct hold are only valid until the element or its attributes are
             /// mutated (directly or via script).
             #[repr(C)]
             #[derive(Debug, Copy)]
@@ -2947,64 +3460,109 @@ pub mod root {
                 );
                 assert_eq!(
                     ::std::mem::align_of::<EventTarget>(),
                     8usize,
                     concat!("Alignment of ", stringify!(EventTarget))
                 );
             }
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct BoxQuadOptions {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for BoxQuadOptions {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct ConvertCoordinateOptions {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for ConvertCoordinateOptions {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct DocGroup {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for DocGroup {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct DOMPoint {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for DOMPoint {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct DOMQuad {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for DOMQuad {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct TextOrElementOrDocument {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for TextOrElementOrDocument {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct DOMPointInit {
                 _unused: [u8; 0],
             }
+            impl Clone for DOMPointInit {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             pub const VisibilityState_Hidden: root::mozilla::dom::VisibilityState = 0;
             pub const VisibilityState_Visible: root::mozilla::dom::VisibilityState = 1;
             pub const VisibilityState_EndGuard_: root::mozilla::dom::VisibilityState = 2;
             pub type VisibilityState = u8;
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct IPCClientInfo {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for IPCClientInfo {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct TabGroup {
                 _unused: [u8; 0],
             }
+            impl Clone for TabGroup {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             #[repr(C)]
             pub struct DispatcherTrait__bindgen_vtable(::std::os::raw::c_void);
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct DispatcherTrait {
                 pub vtable_: *const DispatcherTrait__bindgen_vtable,
             }
             #[test]
@@ -3021,58 +3579,93 @@ pub mod root {
                 );
             }
             impl Clone for DispatcherTrait {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct IPCServiceWorkerDescriptor {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for IPCServiceWorkerDescriptor {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct AudioContext {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for AudioContext {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct Navigator {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for Navigator {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct Performance {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for Performance {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct ServiceWorkerRegistration {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for ServiceWorkerRegistration {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct TimeoutManager {
                 _unused: [u8; 0],
             }
+            impl Clone for TimeoutManager {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             pub const LargeAllocStatus_NONE: root::mozilla::dom::LargeAllocStatus = 0;
             pub const LargeAllocStatus_SUCCESS: root::mozilla::dom::LargeAllocStatus = 1;
             pub const LargeAllocStatus_NON_GET: root::mozilla::dom::LargeAllocStatus = 2;
             pub const LargeAllocStatus_NON_E10S: root::mozilla::dom::LargeAllocStatus = 3;
             pub const LargeAllocStatus_NOT_ONLY_TOPLEVEL_IN_TABGROUP:
                 root::mozilla::dom::LargeAllocStatus = 4;
             pub const LargeAllocStatus_NON_WIN32: root::mozilla::dom::LargeAllocStatus = 5;
             pub type LargeAllocStatus = u8;
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct StyleSheetList {
                 _unused: [u8; 0],
             }
+            impl Clone for StyleSheetList {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             /// A class meant to be shared by ShadowRoot and Document, that holds a list of
             /// stylesheets.
             ///
             /// TODO(emilio, bug 1418159): In the future this should hold most of the
             /// relevant style state, this should allow us to fix bug 548397.
             #[repr(C)]
             pub struct DocumentOrShadowRoot {
                 pub mStyleSheets: root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>,
@@ -3166,50 +3759,85 @@ pub mod root {
                         "Offset of field: ",
                         stringify!(DocumentOrShadowRoot),
                         "::",
                         stringify!(mKind)
                     )
                 );
             }
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct AnonymousContent {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for AnonymousContent {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct FontFaceSet {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for FontFaceSet {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct FullscreenRequest {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for FullscreenRequest {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct ImageTracker {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for ImageTracker {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct Link {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for Link {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct MediaQueryList {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for MediaQueryList {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct XPathEvaluator {
                 _unused: [u8; 0],
             }
+            impl Clone for XPathEvaluator {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             pub mod prototypes {
                 #[allow(unused_imports)]
                 use self::super::super::super::super::root;
             }
             pub mod constructors {
                 #[allow(unused_imports)]
                 use self::super::super::super::super::root;
             }
@@ -3502,25 +4130,35 @@ pub mod root {
             pub enum PlaybackDirection {
                 Normal = 0,
                 Reverse = 1,
                 Alternate = 2,
                 Alternate_reverse = 3,
                 EndGuard_ = 4,
             }
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct XBLChildrenElement {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for XBLChildrenElement {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct CustomElementData {
                 _unused: [u8; 0],
             }
+            impl Clone for CustomElementData {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             #[repr(C)]
             pub struct FragmentOrElement {
                 pub _base: root::nsIContent,
                 pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
                 /// Array containing all attributes and children for this element
                 pub mAttrsAndChildren: root::nsAttrAndChildArray,
             }
             pub type FragmentOrElement_HasThreadSafeRefCnt = root::mozilla::FalseType;
@@ -4389,65 +5027,60 @@ pub mod root {
                 );
             }
             impl Clone for ExplicitChildIterator {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
             #[repr(C)]
-            #[derive(Debug, Copy)]
+            #[derive(Debug)]
             pub struct FlattenedChildIterator {
                 pub _base: root::mozilla::dom::ExplicitChildIterator,
-                pub mXBLInvolved: bool,
                 pub mOriginalContent: *const root::nsIContent,
+                pub mXBLInvolved: [u8; 2usize],
             }
             #[test]
             fn bindgen_test_layout_FlattenedChildIterator() {
                 assert_eq!(
                     ::std::mem::size_of::<FlattenedChildIterator>(),
                     56usize,
                     concat!("Size of: ", stringify!(FlattenedChildIterator))
                 );
                 assert_eq!(
                     ::std::mem::align_of::<FlattenedChildIterator>(),
                     8usize,
                     concat!("Alignment of ", stringify!(FlattenedChildIterator))
                 );
                 assert_eq!(
                     unsafe {
+                        &(*(::std::ptr::null::<FlattenedChildIterator>())).mOriginalContent
+                            as *const _ as usize
+                    },
+                    40usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(FlattenedChildIterator),
+                        "::",
+                        stringify!(mOriginalContent)
+                    )
+                );
+                assert_eq!(
+                    unsafe {
                         &(*(::std::ptr::null::<FlattenedChildIterator>())).mXBLInvolved as *const _
                             as usize
                     },
-                    40usize,
+                    48usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(FlattenedChildIterator),
                         "::",
                         stringify!(mXBLInvolved)
                     )
                 );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<FlattenedChildIterator>())).mOriginalContent
-                            as *const _ as usize
-                    },
-                    48usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(FlattenedChildIterator),
-                        "::",
-                        stringify!(mOriginalContent)
-                    )
-                );
-            }
-            impl Clone for FlattenedChildIterator {
-                fn clone(&self) -> Self {
-                    *self
-                }
             }
             /// AllChildrenIterator traverses the children of an element including before /
             /// after content and optionally XBL children.  The iterator can be initialized
             /// to start at the end by providing false for aStartAtBeginning in order to
             /// start iterating in reverse from the last child.
             ///
             /// Note: it assumes that no mutation of the DOM or frame tree takes place during
             /// iteration, and will break horribly if that is not true.
@@ -5865,16 +6498,17 @@ pub mod root {
         impl Clone for ServoStyleSetSizes {
             fn clone(&self) -> Self {
                 *self
             }
         }
         pub const StyleBackendType_None: root::mozilla::StyleBackendType = 0;
         pub const StyleBackendType_Gecko: root::mozilla::StyleBackendType = 1;
         pub const StyleBackendType_Servo: root::mozilla::StyleBackendType = 2;
+        /// Enumeration that represents one of the two supported style system backends.
         pub type StyleBackendType = u8;
         pub mod profiler {
             #[allow(unused_imports)]
             use self::super::super::super::root;
         }
         pub type TimeStampValue = u64;
         /// Instances of this class represent the length of an interval of time.
         /// Negative durations are allowed, meaning the end is before the start.
@@ -5890,17 +6524,17 @@ pub mod root {
         #[repr(C)]
         #[derive(Debug, Copy, Clone)]
         pub struct BaseTimeDuration {
             pub mValue: i64,
         }
         #[repr(C)]
         #[derive(Debug, Copy, Clone)]
         pub struct BaseTimeDuration__SomethingVeryRandomHere {
-            pub _address: u8,
+            _unused: [u8; 0],
         }
         /// Perform arithmetic operations on the value of a BaseTimeDuration without
         /// doing strict checks on the range of values.
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct TimeDurationValueCalculator {
             pub _address: u8,
         }
@@ -6094,18 +6728,23 @@ pub mod root {
             pub const ReferrerPolicy_RP_Unsafe_URL: root::mozilla::net::ReferrerPolicy = 5;
             pub const ReferrerPolicy_RP_Same_Origin: root::mozilla::net::ReferrerPolicy = 6;
             pub const ReferrerPolicy_RP_Strict_Origin: root::mozilla::net::ReferrerPolicy = 7;
             pub const ReferrerPolicy_RP_Strict_Origin_When_Cross_Origin:
                 root::mozilla::net::ReferrerPolicy = 8;
             pub const ReferrerPolicy_RP_Unset: root::mozilla::net::ReferrerPolicy = 0;
             pub type ReferrerPolicy = u32;
         }
+        /// The default of not using CORS to validate cross-origin loads.
         pub const CORSMode_CORS_NONE: root::mozilla::CORSMode = 0;
+        /// Validate cross-site loads using CORS, but do not send any credentials
+        /// (cookies, HTTP auth logins, etc) along with the request.
         pub const CORSMode_CORS_ANONYMOUS: root::mozilla::CORSMode = 1;
+        /// Validate cross-site loads using CORS, and send credentials such as cookies
+        /// and HTTP auth logins along with the request.
         pub const CORSMode_CORS_USE_CREDENTIALS: root::mozilla::CORSMode = 2;
         pub type CORSMode = u8;
         /// Superclass for data common to CSSStyleSheet and ServoStyleSheet.
         #[repr(C)]
         pub struct StyleSheet {
             pub _base: root::nsICSSLoaderObserver,
             pub _base_1: root::nsWrapperCache,
             pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
@@ -6150,16 +6789,20 @@ pub mod root {
         }
         pub const StyleSheet_ChangeType_Added: root::mozilla::StyleSheet_ChangeType = 0;
         pub const StyleSheet_ChangeType_Removed: root::mozilla::StyleSheet_ChangeType = 1;
         pub const StyleSheet_ChangeType_ApplicableStateChanged:
             root::mozilla::StyleSheet_ChangeType = 2;
         pub const StyleSheet_ChangeType_RuleAdded: root::mozilla::StyleSheet_ChangeType = 3;
         pub const StyleSheet_ChangeType_RuleRemoved: root::mozilla::StyleSheet_ChangeType = 4;
         pub const StyleSheet_ChangeType_RuleChanged: root::mozilla::StyleSheet_ChangeType = 5;
+        /// The different changes that a stylesheet may go through.
+        ///
+        /// Used by the StyleSets in order to handle more efficiently some kinds of
+        /// changes.
         pub type StyleSheet_ChangeType = i32;
         pub const StyleSheet_DocumentAssociationMode_OwnedByDocument:
             root::mozilla::StyleSheet_DocumentAssociationMode = 0;
         pub const StyleSheet_DocumentAssociationMode_NotOwnedByDocument:
             root::mozilla::StyleSheet_DocumentAssociationMode = 1;
         pub type StyleSheet_DocumentAssociationMode = u8;
         #[repr(C)]
         #[derive(Debug, Copy)]
@@ -6378,28 +7021,63 @@ pub mod root {
             /// Contains IMEStatus plus information about the current
             /// input context that the IME can use as hints if desired.
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct IMEState {
                 pub mEnabled: root::mozilla::widget::IMEState_Enabled,
                 pub mOpen: root::mozilla::widget::IMEState_Open,
             }
+            /// 'Disabled' means the user cannot use IME. So, the IME open state should
+            /// be 'closed' during 'disabled'.
             pub const IMEState_Enabled_DISABLED: root::mozilla::widget::IMEState_Enabled = 0;
+            /// 'Enabled' means the user can use IME.
             pub const IMEState_Enabled_ENABLED: root::mozilla::widget::IMEState_Enabled = 1;
+            /// 'Password' state is a special case for the password editors.
+            /// E.g., on mac, the password editors should disable the non-Roman
+            /// keyboard layouts at getting focus. Thus, the password editor may have
+            /// special rules on some platforms.
             pub const IMEState_Enabled_PASSWORD: root::mozilla::widget::IMEState_Enabled = 2;
+            /// This state is used when a plugin is focused.
+            /// When a plug-in is focused content, we should send native events
+            /// directly. Because we don't process some native events, but they may
+            /// be needed by the plug-in.
             pub const IMEState_Enabled_PLUGIN: root::mozilla::widget::IMEState_Enabled = 3;
+            /// 'Unknown' is useful when you cache this enum.  So, this shouldn't be
+            /// used with nsIWidget::SetInputContext().
             pub const IMEState_Enabled_UNKNOWN: root::mozilla::widget::IMEState_Enabled = 4;
+            /// IME enabled states, the mEnabled value of
+            /// SetInputContext()/GetInputContext() should be one value of following
+            /// values.
+            ///
+            /// WARNING: If you change these values, you also need to edit:
+            /// nsIDOMWindowUtils.idl
+            /// nsContentUtils::GetWidgetStatusFromIMEStatus
             pub type IMEState_Enabled = u32;
+            /// 'Unsupported' means the platform cannot return actual IME open state.
+            /// This value is used only by GetInputContext().
             pub const IMEState_Open_OPEN_STATE_NOT_SUPPORTED: root::mozilla::widget::IMEState_Open =
                 0;
+            /// 'Don't change' means the widget shouldn't change IME open state when
+            /// SetInputContext() is called.
             pub const IMEState_Open_DONT_CHANGE_OPEN_STATE: root::mozilla::widget::IMEState_Open =
                 0;
+            /// 'Open' means that IME should compose in its primary language (or latest
+            /// input mode except direct ASCII character input mode).  Even if IME is
+            /// opened by this value, users should be able to close IME by theirselves.
+            /// Web contents can specify this value by |ime-mode: active;|.
             pub const IMEState_Open_OPEN: root::mozilla::widget::IMEState_Open = 1;
+            /// 'Closed' means that IME shouldn't handle key events (or should handle
+            /// as ASCII character inputs on mobile device).  Even if IME is closed by
+            /// this value, users should be able to open IME by theirselves.
+            /// Web contents can specify this value by |ime-mode: inactive;|.
             pub const IMEState_Open_CLOSED: root::mozilla::widget::IMEState_Open = 2;
+            /// IME open states the mOpen value of SetInputContext() should be one value of
+            /// OPEN, CLOSE or DONT_CHANGE_OPEN_STATE.  GetInputContext() should return
+            /// OPEN, CLOSE or OPEN_STATE_NOT_SUPPORTED.
             pub type IMEState_Open = u32;
             #[test]
             fn bindgen_test_layout_IMEState() {
                 assert_eq!(
                     ::std::mem::size_of::<IMEState>(),
                     8usize,
                     concat!("Size of: ", stringify!(IMEState))
                 );
@@ -6521,31 +7199,36 @@ pub mod root {
             fn clone(&self) -> Self {
                 *self
             }
         }
         pub mod a11y {
             #[allow(unused_imports)]
             use self::super::super::super::root;
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct DocAccessible {
                 _unused: [u8; 0],
             }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct Encoding {
-            _unused: [u8; 0],
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
+            impl Clone for DocAccessible {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
         pub struct DOMEventTargetHelper {
             _unused: [u8; 0],
         }
+        impl Clone for DOMEventTargetHelper {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
         pub const UseCounter_eUseCounter_UNKNOWN: root::mozilla::UseCounter = -1;
         pub const UseCounter_eUseCounter_SVGSVGElement_getElementById: root::mozilla::UseCounter =
             0;
         pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_getter:
             root::mozilla::UseCounter = 1;
         pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_setter:
             root::mozilla::UseCounter = 2;
         pub const UseCounter_eUseCounter_property_Fill: root::mozilla::UseCounter = 3;
@@ -6663,17 +7346,23 @@ pub mod root {
         pub const UseCounter_eUseCounter_ImageBitmapRenderingContext_TransferImageBitmap:
             root::mozilla::UseCounter = 82;
         pub const UseCounter_eUseCounter_URLCreateObjectURL_MediaStream: root::mozilla::UseCounter =
             83;
         pub const UseCounter_eUseCounter_XMLBaseAttribute: root::mozilla::UseCounter = 84;
         pub const UseCounter_eUseCounter_WindowContentUntrusted: root::mozilla::UseCounter = 85;
         pub const UseCounter_eUseCounter_RegisterProtocolHandlerInsecure:
             root::mozilla::UseCounter = 86;
-        pub const UseCounter_eUseCounter_Count: root::mozilla::UseCounter = 87;
+        pub const UseCounter_eUseCounter_MixedDisplayObjectSubrequest: root::mozilla::UseCounter =
+            87;
+        pub const UseCounter_eUseCounter_MotionEvent: root::mozilla::UseCounter = 88;
+        pub const UseCounter_eUseCounter_OrientationEvent: root::mozilla::UseCounter = 89;
+        pub const UseCounter_eUseCounter_ProximityEvent: root::mozilla::UseCounter = 90;
+        pub const UseCounter_eUseCounter_AmbientLightEvent: root::mozilla::UseCounter = 91;
+        pub const UseCounter_eUseCounter_Count: root::mozilla::UseCounter = 92;
         pub type UseCounter = i16;
         pub const LogLevel_Disabled: root::mozilla::LogLevel = 0;
         pub const LogLevel_Error: root::mozilla::LogLevel = 1;
         pub const LogLevel_Warning: root::mozilla::LogLevel = 2;
         pub const LogLevel_Info: root::mozilla::LogLevel = 3;
         pub const LogLevel_Debug: root::mozilla::LogLevel = 4;
         pub const LogLevel_Verbose: root::mozilla::LogLevel = 5;
         pub type LogLevel = i32;
@@ -6788,16 +7477,35 @@ pub mod root {
             );
             assert_eq!(
                 ::std::mem::align_of::<Runnable>(),
                 8usize,
                 concat!("Alignment of ", stringify!(Runnable))
             );
         }
         #[repr(C)]
+        #[derive(Debug)]
+        pub struct CancelableRunnable {
+            pub _base: root::mozilla::Runnable,
+            pub _base_1: root::nsICancelableRunnable,
+        }
+        #[test]
+        fn bindgen_test_layout_CancelableRunnable() {
+            assert_eq!(
+                ::std::mem::size_of::<CancelableRunnable>(),
+                40usize,
+                concat!("Size of: ", stringify!(CancelableRunnable))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<CancelableRunnable>(),
+                8usize,
+                concat!("Alignment of ", stringify!(CancelableRunnable))
+            );
+        }
+        #[repr(C)]
         #[derive(Debug, Copy, Clone)]
         pub struct SegmentedVector_SegmentImpl_Storage {
             pub mBuf: root::__BindgenUnionField<*mut ::std::os::raw::c_char>,
             pub mAlign: root::__BindgenUnionField<u8>,
             pub bindgen_union_field: u64,
         }
         pub type SegmentedVector_Segment = u8;
         #[repr(C)]
@@ -7263,30 +7971,45 @@ pub mod root {
                     "Offset of field: ",
                     stringify!(StaticPresData),
                     "::",
                     stringify!(mStaticLangGroupFontPrefs)
                 )
             );
         }
         #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
+        #[derive(Debug, Copy)]
         pub struct AnimationEventDispatcher {
             _unused: [u8; 0],
         }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
+        impl Clone for AnimationEventDispatcher {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
         pub struct EventStateManager {
             _unused: [u8; 0],
         }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
+        impl Clone for EventStateManager {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
         pub struct RestyleManager {
             _unused: [u8; 0],
         }
+        impl Clone for RestyleManager {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
         #[repr(C)]
         #[derive(Debug)]
         pub struct URLExtraData {
             pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
             pub mBaseURI: root::nsCOMPtr,
             pub mReferrer: root::nsCOMPtr,
             pub mPrincipal: root::nsCOMPtr,
             pub mIsChrome: bool,
@@ -7374,34 +8097,126 @@ pub mod root {
                 ::std::mem::align_of::<root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>>(),
                 8usize,
                 concat!(
                     "Alignment of template specialization: ",
                     stringify!(root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>)
                 )
             );
         }
+        /// BlockingResourceBase
+        /// Base class of resources that might block clients trying to acquire them.
+        /// Does debugging and deadlock detection in DEBUG builds.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct BlockingResourceBase {
+            pub _address: u8,
+        }
+        pub const BlockingResourceBase_BlockingResourceType_eMutex:
+            root::mozilla::BlockingResourceBase_BlockingResourceType = 0;
+        pub const BlockingResourceBase_BlockingResourceType_eReentrantMonitor:
+            root::mozilla::BlockingResourceBase_BlockingResourceType = 1;
+        pub const BlockingResourceBase_BlockingResourceType_eCondVar:
+            root::mozilla::BlockingResourceBase_BlockingResourceType = 2;
+        pub const BlockingResourceBase_BlockingResourceType_eRecursiveMutex:
+            root::mozilla::BlockingResourceBase_BlockingResourceType = 3;
+        pub type BlockingResourceBase_BlockingResourceType = u32;
+        extern "C" {
+            #[link_name = "\u{1}_ZN7mozilla20BlockingResourceBase17kResourceTypeNameE"]
+            pub static mut BlockingResourceBase_kResourceTypeName:
+                [*const ::std::os::raw::c_char; 0usize];
+        }
+        #[test]
+        fn bindgen_test_layout_BlockingResourceBase() {
+            assert_eq!(
+                ::std::mem::size_of::<BlockingResourceBase>(),
+                1usize,
+                concat!("Size of: ", stringify!(BlockingResourceBase))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<BlockingResourceBase>(),
+                1usize,
+                concat!("Alignment of ", stringify!(BlockingResourceBase))
+            );
+        }
+        /// OffTheBooksMutex is identical to Mutex, except that OffTheBooksMutex doesn't
+        /// include leak checking.  Sometimes you want to intentionally "leak" a mutex
+        /// until shutdown; in these cases, OffTheBooksMutex is for you.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct OffTheBooksMutex {
+            pub _base: root::mozilla::detail::MutexImpl,
+        }
+        #[test]
+        fn bindgen_test_layout_OffTheBooksMutex() {
+            assert_eq!(
+                ::std::mem::size_of::<OffTheBooksMutex>(),
+                40usize,
+                concat!("Size of: ", stringify!(OffTheBooksMutex))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<OffTheBooksMutex>(),
+                8usize,
+                concat!("Alignment of ", stringify!(OffTheBooksMutex))
+            );
+        }
+        /// Mutex
+        /// When possible, use MutexAutoLock/MutexAutoUnlock to lock/unlock this
+        /// mutex within a scope, instead of calling Lock/Unlock directly.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct Mutex {
+            pub _base: root::mozilla::OffTheBooksMutex,
+        }
+        #[test]
+        fn bindgen_test_layout_Mutex() {
+            assert_eq!(
+                ::std::mem::size_of::<Mutex>(),
+                40usize,
+                concat!("Size of: ", stringify!(Mutex))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<Mutex>(),
+                8usize,
+                concat!("Alignment of ", stringify!(Mutex))
+            );
+        }
         pub mod image {
             #[allow(unused_imports)]
             use self::super::super::super::root;
             #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            #[derive(Debug, Copy)]
             pub struct ImageURL {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for ImageURL {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct Image {
                 _unused: [u8; 0],
             }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
+            impl Clone for Image {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct ProgressTracker {
                 _unused: [u8; 0],
             }
+            impl Clone for ProgressTracker {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             #[repr(C)]
             pub struct IProgressObserver__bindgen_vtable(::std::os::raw::c_void);
             /// An interface for observing changes to image state, as reported by
             /// ProgressTracker.
             ///
             /// This is the ImageLib-internal version of imgINotificationObserver,
             /// essentially, with implementation details that code outside of ImageLib
             /// shouldn't see.
@@ -8174,16 +8989,17 @@ pub mod root {
         pub const SERVO_PREF_ENABLED__moz_float_edge: bool = false;
         pub const SERVO_PREF_ENABLED_flood_color: bool = false;
         pub const SERVO_PREF_ENABLED_flood_opacity: bool = false;
         pub const SERVO_PREF_ENABLED_font: bool = false;
         pub const SERVO_PREF_ENABLED_font_family: bool = false;
         pub const SERVO_PREF_ENABLED_font_feature_settings: bool = false;
         pub const SERVO_PREF_ENABLED_font_kerning: bool = false;
         pub const SERVO_PREF_ENABLED_font_language_override: bool = false;
+        pub const SERVO_PREF_ENABLED_font_optical_sizing: bool = true;
         pub const SERVO_PREF_ENABLED_font_size: bool = false;
         pub const SERVO_PREF_ENABLED_font_size_adjust: bool = false;
         pub const SERVO_PREF_ENABLED__moz_font_smoothing_background_color: bool = false;
         pub const SERVO_PREF_ENABLED_font_stretch: bool = false;
         pub const SERVO_PREF_ENABLED_font_style: bool = false;
         pub const SERVO_PREF_ENABLED_font_synthesis: bool = false;
         pub const SERVO_PREF_ENABLED_font_variant: bool = false;
         pub const SERVO_PREF_ENABLED_font_variant_alternates: bool = false;
@@ -8575,16 +9391,17 @@ pub mod root {
         pub const StyleAnimationValue_Unit_eUnit_Transform:
             root::mozilla::StyleAnimationValue_Unit = 24;
         pub const StyleAnimationValue_Unit_eUnit_BackgroundPositionCoord:
             root::mozilla::StyleAnimationValue_Unit = 25;
         pub const StyleAnimationValue_Unit_eUnit_CSSValuePairList:
             root::mozilla::StyleAnimationValue_Unit = 26;
         pub const StyleAnimationValue_Unit_eUnit_UnparsedString:
             root::mozilla::StyleAnimationValue_Unit = 27;
+        /// The types and values for the values that we extract and animate.
         pub type StyleAnimationValue_Unit = u32;
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct StyleAnimationValue__bindgen_ty_1 {
             pub mInt: root::__BindgenUnionField<i32>,
             pub mCoord: root::__BindgenUnionField<root::nscoord>,
             pub mFloat: root::__BindgenUnionField<f32>,
             pub mCSSValue: root::__BindgenUnionField<*mut root::nsCSSValue>,
@@ -9090,21 +9907,223 @@ pub mod root {
                 concat!(
                     "Offset of field: ",
                     stringify!(StyleSheetInfo),
                     "::",
                     stringify!(mSourceURL)
                 )
             );
         }
+        /// CondVar
+        /// Vanilla condition variable.  Please don't use this unless you have a
+        /// compelling reason --- Monitor provides a simpler API.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct CondVar {
+            pub mLock: *mut root::mozilla::Mutex,
+            pub mImpl: root::mozilla::detail::ConditionVariableImpl,
+        }
+        #[test]
+        fn bindgen_test_layout_CondVar() {
+            assert_eq!(
+                ::std::mem::size_of::<CondVar>(),
+                56usize,
+                concat!("Size of: ", stringify!(CondVar))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<CondVar>(),
+                8usize,
+                concat!("Alignment of ", stringify!(CondVar))
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<CondVar>())).mLock as *const _ as usize },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(CondVar),
+                    "::",
+                    stringify!(mLock)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<CondVar>())).mImpl as *const _ as usize },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(CondVar),
+                    "::",
+                    stringify!(mImpl)
+                )
+            );
+        }
+        /// Monitor provides a *non*-reentrant monitor: *not* a Java-style
+        /// monitor.  If your code needs support for reentrancy, use
+        /// ReentrantMonitor instead.  (Rarely should reentrancy be needed.)
+        ///
+        /// Instead of directly calling Monitor methods, it's safer and simpler
+        /// to instead use the RAII wrappers MonitorAutoLock and
+        /// MonitorAutoUnlock.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct Monitor {
+            pub mMutex: root::mozilla::Mutex,
+            pub mCondVar: root::mozilla::CondVar,
+        }
+        #[test]
+        fn bindgen_test_layout_Monitor() {
+            assert_eq!(
+                ::std::mem::size_of::<Monitor>(),
+                96usize,
+                concat!("Size of: ", stringify!(Monitor))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<Monitor>(),
+                8usize,
+                concat!("Alignment of ", stringify!(Monitor))
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<Monitor>())).mMutex as *const _ as usize },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(Monitor),
+                    "::",
+                    stringify!(mMutex)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<Monitor>())).mCondVar as *const _ as usize },
+                40usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(Monitor),
+                    "::",
+                    stringify!(mCondVar)
+                )
+            );
+        }
+        #[repr(C)]
+        pub struct MozPromiseRefcountable__bindgen_vtable(::std::os::raw::c_void);
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct MozPromiseRefcountable {
+            pub vtable_: *const MozPromiseRefcountable__bindgen_vtable,
+            pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
+        }
+        pub type MozPromiseRefcountable_HasThreadSafeRefCnt = root::mozilla::TrueType;
+        #[test]
+        fn bindgen_test_layout_MozPromiseRefcountable() {
+            assert_eq!(
+                ::std::mem::size_of::<MozPromiseRefcountable>(),
+                16usize,
+                concat!("Size of: ", stringify!(MozPromiseRefcountable))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<MozPromiseRefcountable>(),
+                8usize,
+                concat!("Alignment of ", stringify!(MozPromiseRefcountable))
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<MozPromiseRefcountable>())).mRefCnt as *const _ as usize
+                },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(MozPromiseRefcountable),
+                    "::",
+                    stringify!(mRefCnt)
+                )
+            );
+        }
+        pub type MozPromise_ResolveValueType<ResolveValueT> = ResolveValueT;
+        pub type MozPromise_RejectValueType<RejectValueT> = RejectValueT;
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct MozPromise_ResolveOrRejectValue {
+            pub mValue: root::mozilla::MozPromise_ResolveOrRejectValue_Storage,
+        }
+        pub const MozPromise_ResolveOrRejectValue_NothingIndex:
+            root::mozilla::MozPromise_ResolveOrRejectValue__bindgen_ty_1 = 0;
+        pub const MozPromise_ResolveOrRejectValue_ResolveIndex:
+            root::mozilla::MozPromise_ResolveOrRejectValue__bindgen_ty_1 = 0;
+        pub const MozPromise_ResolveOrRejectValue_RejectIndex:
+            root::mozilla::MozPromise_ResolveOrRejectValue__bindgen_ty_1 = 0;
+        pub type MozPromise_ResolveOrRejectValue__bindgen_ty_1 = i32;
+        pub type MozPromise_ResolveOrRejectValue_Storage = root::mozilla::Variant;
+        pub type MozPromise_AllPromiseType = u8;
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct MozPromise_AllPromiseHolder {
+            pub _base: root::mozilla::MozPromiseRefcountable,
+            pub mResolveValues: u8,
+            pub mPromise: root::RefPtr<root::mozilla::MozPromise_AllPromiseType>,
+            pub mOutstandingPromises: usize,
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct MozPromise_Request {
+            pub _base: root::mozilla::MozPromiseRefcountable,
+            pub mComplete: bool,
+            pub mDisconnected: bool,
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct MozPromise_ThenValueBase {
+            pub _base: root::mozilla::MozPromise_Request,
+            pub mResponseTarget: root::nsCOMPtr,
+            pub mMagic1: u32,
+            pub mCallSite: *const ::std::os::raw::c_char,
+            pub mMagic2: u32,
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct MozPromise_ThenValueBase_ResolveOrRejectRunnable {
+            pub _base: root::mozilla::CancelableRunnable,
+            pub mThenValue: root::RefPtr<root::mozilla::MozPromise_ThenValueBase>,
+            pub mPromise: u8,
+        }
         #[repr(C)]
         #[derive(Debug, Copy, Clone)]
+        pub struct MozPromise_ThenValue {
+            pub _address: u8,
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct MozPromise_ThenCommand<ThenValueType> {
+            pub mCallSite: *const ::std::os::raw::c_char,
+            pub mThenValue: root::RefPtr<ThenValueType>,
+            pub mReceiver: u8,
+            pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<ThenValueType>>,
+        }
+        pub type MozPromise_ThenCommand_PromiseType = [u8; 0usize];
+        pub type MozPromise_ThenCommand_Private = [u8; 0usize];
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct MozPromise_Private {
+            pub _base: u8,
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct MozPromiseHolder<PromiseType> {
+            pub mMonitor: *mut root::mozilla::Monitor,
+            pub mPromise: root::RefPtr<PromiseType>,
+            pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<PromiseType>>,
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
         pub struct ServoCSSRuleList {
             _unused: [u8; 0],
         }
+        impl Clone for ServoCSSRuleList {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        pub type StyleSheetParsePromise = [u64; 16usize];
         #[repr(C)]
         pub struct ServoStyleSheetInner {
             pub _base: root::mozilla::StyleSheetInfo,
             pub mContents: root::RefPtr<root::RawServoStyleSheetContents>,
             pub mURLData: root::RefPtr<root::mozilla::URLExtraData>,
         }
         #[test]
         fn bindgen_test_layout_ServoStyleSheetInner() {
@@ -9142,16 +10161,18 @@ pub mod root {
                     stringify!(mURLData)
                 )
             );
         }
         #[repr(C)]
         pub struct ServoStyleSheet {
             pub _base: root::mozilla::StyleSheet,
             pub mRuleList: root::RefPtr<root::mozilla::ServoCSSRuleList>,
+            pub mParsePromise:
+                root::mozilla::MozPromiseHolder<root::mozilla::StyleSheetParsePromise>,
         }
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct ServoStyleSheet_cycleCollection {
             pub _base: root::mozilla::StyleSheet_cycleCollection,
         }
         #[test]
         fn bindgen_test_layout_ServoStyleSheet_cycleCollection() {
@@ -9180,17 +10201,17 @@ pub mod root {
             #[link_name = "\u{1}_ZN7mozilla15ServoStyleSheet21_cycleCollectorGlobalE"]
             pub static mut ServoStyleSheet__cycleCollectorGlobal:
                 root::mozilla::ServoStyleSheet_cycleCollection;
         }
         #[test]
         fn bindgen_test_layout_ServoStyleSheet() {
             assert_eq!(
                 ::std::mem::size_of::<ServoStyleSheet>(),
-                136usize,
+                152usize,
                 concat!("Size of: ", stringify!(ServoStyleSheet))
             );
             assert_eq!(
                 ::std::mem::align_of::<ServoStyleSheet>(),
                 8usize,
                 concat!("Alignment of ", stringify!(ServoStyleSheet))
             );
             assert_eq!(
@@ -9200,16 +10221,28 @@ pub mod root {
                 128usize,
                 concat!(
                     "Offset of field: ",
                     stringify!(ServoStyleSheet),
                     "::",
                     stringify!(mRuleList)
                 )
             );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ServoStyleSheet>())).mParsePromise as *const _ as usize
+                },
+                136usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSheet),
+                    "::",
+                    stringify!(mParsePromise)
+                )
+            );
         }
         #[repr(C)]
         #[derive(Debug)]
         pub struct URIPrincipalReferrerPolicyAndCORSModeHashKey {
             pub _base: root::nsURIHashKey,
             pub mPrincipal: root::nsCOMPtr,
             pub mCORSMode: root::mozilla::CORSMode,
             pub mReferrerPolicy:
@@ -9276,16 +10309,319 @@ pub mod root {
                 concat!(
                     "Offset of field: ",
                     stringify!(URIPrincipalReferrerPolicyAndCORSModeHashKey),
                     "::",
                     stringify!(mReferrerPolicy)
                 )
             );
         }
+        /// An encoding as defined in the Encoding Standard
+        /// (https://encoding.spec.whatwg.org/).
+        ///
+        /// See https://docs.rs/encoding_rs/ for the Rust API docs.
+        ///
+        /// An _encoding_ defines a mapping from a byte sequence to a Unicode code point
+        /// sequence and, in most cases, vice versa. Each encoding has a name, an output
+        /// encoding, and one or more labels.
+        ///
+        /// _Labels_ are ASCII-case-insensitive strings that are used to identify an
+        /// encoding in formats and protocols. The _name_ of the encoding is the
+        /// preferred label in the case appropriate for returning from the
+        /// `characterSet` property of the `Document` DOM interface, except for
+        /// the replacement encoding whose name is not one of its labels.
+        ///
+        /// The _output encoding_ is the encoding used for form submission and URL
+        /// parsing on Web pages in the encoding. This is UTF-8 for the replacement,
+        /// UTF-16LE and UTF-16BE encodings and the encoding itself for other
+        /// encodings.
+        ///
+        /// # Streaming vs. Non-Streaming
+        ///
+        /// When you have the entire input in a single buffer, you can use the
+        /// methods `Decode()`, `DecodeWithBOMRemoval()`,
+        /// `DecodeWithoutBOMHandling()`,
+        /// `DecodeWithoutBOMHandlingAndWithoutReplacement()` and
+        /// `Encode()`. Unlike the rest of the API (apart from the `NewDecoder()` and
+        /// NewEncoder()` methods), these methods perform heap allocations. You should
+        /// the `Decoder` and `Encoder` objects when your input is split into multiple
+        /// buffers or when you want to control the allocation of the output buffers.
+        ///
+        /// # Instances
+        ///
+        /// All instances of `Encoding` are statically allocated and have the process's
+        /// lifetime. There is precisely one unique `Encoding` instance for each
+        /// encoding defined in the Encoding Standard.
+        ///
+        /// To obtain a reference to a particular encoding whose identity you know at
+        /// compile time, use a `static` that refers to encoding. There is a `static`
+        /// for each encoding. The `static`s are named in all caps with hyphens
+        /// replaced with underscores and with `_ENCODING` appended to the
+        /// name. For example, if you know at compile time that you will want to
+        /// decode using the UTF-8 encoding, use the `UTF_8_ENCODING` `static`.
+        ///
+        /// If you don't know what encoding you need at compile time and need to
+        /// dynamically get an encoding by label, use `Encoding::for_label()`.
+        ///
+        /// Pointers to `Encoding` can be compared with `==` to check for the sameness
+        /// of two encodings.
+        ///
+        /// A pointer to a `mozilla::Encoding` in C++ is the same thing as a pointer
+        /// to an `encoding_rs::Encoding` in Rust. When writing FFI code, use
+        /// `const mozilla::Encoding*` in the C signature and
+        /// `*const encoding_rs::Encoding` is the corresponding Rust signature.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct Encoding {
+            pub _address: u8,
+        }
+        #[test]
+        fn bindgen_test_layout_Encoding() {
+            assert_eq!(
+                ::std::mem::size_of::<Encoding>(),
+                1usize,
+                concat!("Size of: ", stringify!(Encoding))
+            );
+            assert_eq!