<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>9057</bug_id>
          
          <creation_ts>2006-05-23 02:25:47 -0700</creation_ts>
          <short_desc>Add HasIndexGetter support to bindings autogeneration system</short_desc>
          <delta_ts>2006-05-25 14:40:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>43248</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-23 02:25:47 -0700</bug_when>
    <thetext>Add HasIndexGetter support to bindings autogeneration system

One more autogen blocker out of the way...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43249</commentid>
    <comment_count>1</comment_count>
      <attachid>8476</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-23 02:26:33 -0700</bug_when>
    <thetext>Created attachment 8476
First stab.  This needs just a bit more testing, but posting for andersca&apos;s enjoyment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43252</commentid>
    <comment_count>2</comment_count>
      <attachid>8478</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-23 02:32:27 -0700</bug_when>
    <thetext>Created attachment 8478
Slightly better patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43276</commentid>
    <comment_count>3</comment_count>
      <attachid>8478</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-23 09:25:21 -0700</bug_when>
    <thetext>Comment on attachment 8478
Slightly better patch

The patch looks good. I&apos;d like to see some more testing of this mechanism with other classes, so we know that it&apos;s general enough (together with HasNameGetter)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43527</commentid>
    <comment_count>4</comment_count>
      <attachid>8528</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-24 17:22:01 -0700</bug_when>
    <thetext>Created attachment 8528
Even better patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43528</commentid>
    <comment_count>5</comment_count>
      <attachid>8529</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-05-24 17:48:09 -0700</bug_when>
    <thetext>Created attachment 8529
yet another patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43572</commentid>
    <comment_count>6</comment_count>
      <attachid>8529</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-05-25 14:29:36 -0700</bug_when>
    <thetext>Comment on attachment 8529
yet another patch for review

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8476</attachid>
            <date>2006-05-23 02:26:33 -0700</date>
            <delta_ts>2006-05-23 02:32:27 -0700</delta_ts>
            <desc>First stab.  This needs just a bit more testing, but posting for andersca&apos;s enjoyment.</desc>
            <filename>stab.patch</filename>
            <type>text/plain</type>
            <size>20189</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNDUzMikKKysr
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw4ICszNCw4IEBAIG15ICVpbXBsSW5jbHVkZXMgPSAoKTsKICMgRGVmYXVsdCAuaCB0ZW1wbGF0
ZQogbXkgJGhlYWRlclRlbXBsYXRlID0gPDwgIkVPRiI7CiAvKgotICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGtkb21pZGwucGwuIERPIE5PVCBNT0RJRlkhCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCiAKICAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM1Niw2ICszNTYsMTIgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBSZWZQdHI8JGltcGxDbGFzc05hbWU+IG1faW1wbDtc
biIpOwogICB9CiAgIAorICAjIEluZGV4IGdldHRlcgorICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSkgeworICAJcHVzaChAaGVhZGVyQ29udGVu
dCwgInByaXZhdGU6XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBL
SlM6OkpTVmFsdWUqIGluZGV4R2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU09iamVjdCos
IGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIGNvbnN0IEtKUzo6UHJvcGVydHlTbG90Jik7XG4iKQor
ICB9CisgIAogICBwdXNoKEBoZWFkZXJDb250ZW50LCAifTtcblxuIik7CiAgIAogICBpZiAoISRo
YXNQYXJlbnQpIHsKQEAgLTM5Myw3ICszOTksNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICA6IEtKUzo6SlNPYmplY3QoZXhlYy0+
bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5PYmplY3RQcm90b3R5cGUoKSkgeyB9XG4iKTsK
ICAgICAgIH0KICAgfQotICAKKyAgICAKICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn07XG5cbiIp
OwogICAKICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cblxuIik7CkBAIC02MzUsNyArNjQxLDM2
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChnZXRPdmVycmlkZVByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1
ZTtcbiIpOwogICAgIH0KLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVTbG90PCRjbGFzc05hbWUsICRwYXJlbnRDbGFzc05hbWU+KGV4ZWMsICYke2NsYXNz
TmFtZX1UYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgIAorCW15ICRy
ZXF1aXJlc01hbnVhbExvb2t1cCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c0luZGV4R2V0dGVyIn07CisJaWYgKCRyZXF1aXJlc01hbnVhbExvb2t1cCkgeworCQlwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gTG9va3VwOjpmaW5kRW50
cnkoJiRoYXNoTmFtZSwgcHJvcGVydHlOYW1lKTtcbiIpOworCQlwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoZW50cnkpIHtcbiIpOworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICAJc2xvdC5z
ZXRTdGF0aWNFbnRyeSh0aGlzLCBlbnRyeSwgc3RhdGljVmFsdWVHZXR0ZXI8JGNsYXNzTmFtZT4p
O1xuIik7CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIAlyZXR1cm4gdHJ1ZTtcbiIpOworCQlw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKKwkJCisJCSMgaWYgaXQgaGFzIGEgcHJvdG90
eXBlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgZmlyc3QgdG9vCisJCXB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChwcm90b3R5cGUoKS0+aXNPYmplY3QoKSAmJiBzdGF0aWNfY2FzdDxKU09iamVj
dCo+KHByb3RvdHlwZSgpKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOwor
CQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CisJfQorCQor
CWlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9KSB7
CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgb2s7XG4iKTsKKwkJcHVzaChAaW1wbENv
bnRlbnQsICIgICAgdW5zaWduZWQgdSA9IHByb3BlcnR5TmFtZS50b1VJbnQzMigmb2spO1xuIik7
CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChvayAmJiB1IDwgc3RhdGljX2Nhc3Q8JGlt
cGxDbGFzc05hbWUqPihpbXBsKCkpLT5sZW5ndGgoKSkge1xuIik7CisJCXB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMsIHUsIGluZGV4R2V0dGVyKTtc
biIpOworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKKwkJ
cHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CisJfQorCQorCSMgSGFzTmFtZUdldHRlciBj
b2RlIGdvZXMgaGVyZQorICAgIAorICAgIGlmICgkcmVxdWlyZXNNYW51YWxMb29rdXApIHsKKyAg
ICAJcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7cGFyZW50Q2xhc3NOYW1lfTo6Z2V0
T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgIAl9IGVs
c2UgeworICAgIAlwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVT
bG90PCRjbGFzc05hbWUsICRwYXJlbnRDbGFzc05hbWU+KGV4ZWMsICYke2NsYXNzTmFtZX1UYWJs
ZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgIH0KICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgIAogICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSog
JHtjbGFzc05hbWV9OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2Vu
KSBjb25zdFxue1xuIik7CkBAIC04MDMsNiArODM4LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKQogICB9CiAgIAorICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSkgeworICAgIHB1
c2goQGltcGxDb250ZW50LCAiXG5KU1ZhbHVlKiAke2NsYXNzTmFtZX06OmluZGV4R2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHNsb3Quc2xvdEJhc2Uo
KSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCBz
dGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmotPmltcGwoKSktPml0ZW0oc2xvdC5p
bmRleCgpKSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOworICB9CisgIAog
ICBpZiAoISRoYXNQYXJlbnQpIHsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgdG9GdW5jdGlvbnNG
b3IoJGNsYXNzTmFtZSwgJGltcGxDbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lKSk7CiAgIH0KSW5k
ZXg6IGJpbmRpbmdzL2pzL2tqc19jc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9ranNf
Y3NzLmgJKHJldmlzaW9uIDE0NTMyKQorKysgYmluZGluZ3MvanMva2pzX2Nzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTEsMTkgKzIxMSw2IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgIEpTVmFsdWUq
IHRvSlMoRXhlY1N0YXRlKiwgV2ViQ29yZTo6Q1NTVmFsdWUqKTsKIAotICBjbGFzcyBET01DU1NW
YWx1ZUxpc3QgOiBwdWJsaWMgRE9NQ1NTVmFsdWUgewotICBwdWJsaWM6Ci0gICAgRE9NQ1NTVmFs
dWVMaXN0KEV4ZWNTdGF0ZSosIFdlYkNvcmU6OkNTU1ZhbHVlTGlzdCopOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOwotICAgIEpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiwg
aW50IHRva2VuKSBjb25zdDsKLSAgICAvLyBubyBwdXQgLSBhbGwgcmVhZC1vbmx5Ci0gICAgdmly
dHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9
Ci0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwotICAgIGVudW0geyBMZW5ndGgsIEl0
ZW0gfTsKLSAgcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNWYWx1ZSogaW5kZXhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7
Ci0gIH07Ci0KICAgY2xhc3MgRE9NUkdCQ29sb3IgOiBwdWJsaWMgRE9NT2JqZWN0IHsKICAgcHVi
bGljOgogICAgIERPTVJHQkNvbG9yKHVuc2lnbmVkIGNvbG9yKSA6IG1fY29sb3IoY29sb3IpIHsg
fQpJbmRleDogYmluZGluZ3MvanMva2pzX2RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3Mv
anMva2pzX2RvbS5jcHAJKHJldmlzaW9uIDE0NTMyKQorKysgYmluZGluZ3MvanMva2pzX2RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg3MSw3ICs4NzEsNyBAQCBib29sIERPTU5hbWVkTm9kZU1h
cDo6Z2V0T3duUHJvcGVydHlTbG90CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgfSBlbHNlIHsKICAg
ICAvLyBMb29rIGluIHRoZSBwcm90b3R5cGUgKGZvciBmdW5jdGlvbnMpIGJlZm9yZSBhc3N1bWlu
ZyBpdCdzIGFuIGl0ZW0ncyBuYW1lCi0gICAgSlNWYWx1ZSAqcHJvdG8gPSBwcm90b3R5cGUoKTsK
KyAgICBKU1ZhbHVlKiBwcm90byA9IHByb3RvdHlwZSgpOwogICAgIGlmIChwcm90by0+aXNPYmpl
Y3QoKSAmJiBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHByb3RvKS0+aGFzUHJvcGVydHkoZXhlYywg
cHJvcGVydHlOYW1lKSkKICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogYmluZGluZ3MvanMv
SlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNI
VE1MSW5wdXRFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDE0NTMyKQorKysgYmluZGluZ3MvanMv
SlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDgg
QEAgSlNWYWx1ZSogSlNIVE1MSW5wdXRFbGVtZW50QmFzZVByb3RvRnVuYwogICAgIHJldHVybiAw
OwogfQogCi0vLyBTZXRTZWxlY3Rpb25SYW5nZSBpcyBpbXBsZW1lbnRlZCBvbiB0aGUgY2xhc3Mg
aW5zdGVhZCBvZiBvbiB0aGUgcHJvdG90eXBlLCBpbnRlbnRpb25hbGx5LgorLy8gU2V0U2VsZWN0
aW9uUmFuZ2UgaXMgaW1wbGVtZW50ZWQgb24gdGhlIGNsYXNzIGluc3RlYWQgb2Ygb24gdGhlIHBy
b3RvdHlwZQorLy8gdG8gbWFrZSBpdCBlYXNpZXIgdG8gZW5hYmxlL2Rpc2FibGUgbG9va3VwIG9m
IHRoZSBmdW5jdGlvbiBiYXNlZCBvbiBpbnB1dCB0eXBlLgogY2xhc3MgSlNIVE1MSW5wdXRFbGVt
ZW50QmFzZUZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb25JbXAgewogcHVibGljOgog
ICAgIEpTSFRNTElucHV0RWxlbWVudEJhc2VGdW5jdGlvbihFeGVjU3RhdGUqLCBpbnQgaSwgaW50
IGxlbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CkluZGV4OiBiaW5kaW5ncy9qcy9ranNfY3Nz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9ranNfY3NzLmNwcAkocmV2aXNpb24gMTQ1
MzIpCisrKyBiaW5kaW5ncy9qcy9ranNfY3NzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIkpTQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJKU0NT
U1J1bGUuaCIKICNpbmNsdWRlICJKU0NTU1N0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJK
U0NTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxl
U2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAia2pzX2RvbS5oIgpAQCAtOTgyLDcgKzk4Myw3IEBAIEpT
VmFsdWUqIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBDU1NWYWx1ZSAKICAgICByZXR1cm4gcmV0Owog
ICBlbHNlIHsKICAgICBpZiAodi0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgIHJldCA9IG5ldyBET01D
U1NWYWx1ZUxpc3QoZXhlYywgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odikpOworICAgICAg
cmV0ID0gbmV3IEpTQ1NTVmFsdWVMaXN0KGV4ZWMsIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHYpKTsKICAgICBlbHNlIGlmICh2LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICByZXQgPSBu
ZXcgSlNDU1NQcmltaXRpdmVWYWx1ZShleGVjLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHYpKTsKICAgICBlbHNlCkBAIC05OTQsNjkgKzk5NSw2IEBAIEpTVmFsdWUqIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBDU1NWYWx1ZSAKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBD
bGFzc0luZm8gRE9NQ1NTVmFsdWVMaXN0OjppbmZvID0geyAiQ1NTVmFsdWVMaXN0IiwgMCwgJkRP
TUNTU1ZhbHVlTGlzdFRhYmxlLCAwIH07Ci0KLS8qCi1AYmVnaW4gRE9NQ1NTVmFsdWVMaXN0VGFi
bGUgMwotICBsZW5ndGggICAgICAgICAgICAgICAgRE9NQ1NTVmFsdWVMaXN0OjpMZW5ndGggICAg
ICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGl0ZW0gICAgICAgICAgICAgICAgICBET01DU1NW
YWx1ZUxpc3Q6Okl0ZW0gICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotQGVuZAotKi8K
LUtKU19JTVBMRU1FTlRfUFJPVE9GVU5DKERPTUNTU1ZhbHVlTGlzdEZ1bmMpIC8vIG5vdCByZWFs
bHkgYSBwcm90bywgYnV0IGRvZXNuJ3QgbWF0dGVyCi0KLURPTUNTU1ZhbHVlTGlzdDo6RE9NQ1NT
VmFsdWVMaXN0KEV4ZWNTdGF0ZSogZXhlYywgQ1NTVmFsdWVMaXN0ICp2KQotICA6IERPTUNTU1Zh
bHVlKGV4ZWMsIHYpIAoteyAKLX0KLQotSlNWYWx1ZSogRE9NQ1NTVmFsdWVMaXN0OjpnZXRWYWx1
ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdAotewotICBhc3NlcnQo
dG9rZW4gPT0gTGVuZ3RoKTsKLSAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19jYXN0PENTU1ZhbHVl
TGlzdCo+KGltcGwoKSktPmxlbmd0aCgpKTsKLX0KLQotSlNWYWx1ZSogRE9NQ1NTVmFsdWVMaXN0
OjppbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvcmlnaW5hbE9iamVjdCwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci17Ci0gIERPTUNTU1ZhbHVlTGlzdCAqdGhpc09iaiA9IHN0YXRpY19jYXN0PERPTUNTU1ZhbHVl
TGlzdCo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gIHJldHVybiB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0
PENTU1ZhbHVlTGlzdCo+KHRoaXNPYmotPmltcGwoKSktPml0ZW0oc2xvdC5pbmRleCgpKSk7Ci19
Ci0KLWJvb2wgRE9NQ1NTVmFsdWVMaXN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
LXsKLSAgQ1NTVmFsdWVMaXN0ICZ2YWx1ZUxpc3QgPSAqc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0
Kj4oaW1wbCgpKTsKLSAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IExvb2t1cDo6ZmluZEVudHJ5
KCZET01DU1NWYWx1ZUxpc3RUYWJsZSwgcHJvcGVydHlOYW1lKTsKLSAgaWYgKGVudHJ5KSB7Ci0g
ICAgaWYgKGVudHJ5LT5hdHRyICYgRnVuY3Rpb24pCi0gICAgICBzbG90LnNldFN0YXRpY0VudHJ5
KHRoaXMsIGVudHJ5LCBzdGF0aWNGdW5jdGlvbkdldHRlcjxET01DU1NWYWx1ZUxpc3RGdW5jPik7
Ci0gICAgZWxzZQotICAgICAgc2xvdC5zZXRTdGF0aWNFbnRyeSh0aGlzLCBlbnRyeSwgc3RhdGlj
VmFsdWVHZXR0ZXI8RE9NQ1NTVmFsdWVMaXN0Pik7Ci0gIH0KLQotICBib29sIG9rOwotICB1bnNp
Z25lZCB1ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvayk7Ci0gIGlmIChvayAmJiB1IDwgdmFs
dWVMaXN0Lmxlbmd0aCgpKSB7Ci0gICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzLCB1LCBpbmRl
eEdldHRlcik7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICByZXR1cm4gRE9NQ1NTVmFsdWU6
OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1KU1Zh
bHVlKiBET01DU1NWYWx1ZUxpc3RGdW5jOjpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0ICZhcmdzKQotewotICBpZiAoIXRoaXNPYmot
PmluaGVyaXRzKCZLSlM6OkRPTUNTU1ZhbHVlOjppbmZvKSkKLSAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBUeXBlRXJyb3IpOwotICBDU1NWYWx1ZUxpc3QgJnZhbHVlTGlzdCA9ICpzdGF0aWNf
Y2FzdDxDU1NWYWx1ZUxpc3QqPihzdGF0aWNfY2FzdDxET01DU1NWYWx1ZUxpc3QqPih0aGlzT2Jq
KS0+aW1wbCgpKTsKLSAgc3dpdGNoIChpZCkgewotICAgIGNhc2UgRE9NQ1NTVmFsdWVMaXN0OjpJ
dGVtOgotICAgICAgcmV0dXJuIHRvSlMoZXhlYyx2YWx1ZUxpc3QuaXRlbShhcmdzWzBdLT50b0lu
dDMyKGV4ZWMpKSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICB9Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogY29uc3QgQ2xhc3NJbmZvIERPTVJHQkNv
bG9yOjppbmZvID0geyAiUkdCQ29sb3IiLCAwLCAmRE9NUkdCQ29sb3JUYWJsZSwgMCB9OwogCiAv
KgpJbmRleDogRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBEZXJpdmVkU291cmNl
cy5tYWtlCShyZXZpc2lvbiAxNDUzMikKKysrIERlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgYWxsIDogXAogICAgIEpTQ1NTUHJpbWl0aXZlVmFsdWUu
aCBcCiAgICAgSlNDU1NSdWxlLmggXAogICAgIEpTQ1NTVmFsdWUuaCBcCisgICAgSlNDU1NWYWx1
ZUxpc3QuaCBcCiAgICAgSlNDYW52YXNHcmFkaWVudC5oIFwKICAgICBKU0NhbnZhc1BhdHRlcm4u
aCBcCiAgICAgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBcCkluZGV4OiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI0OCw2ICsxMjQ4LDkgQEAKIAkJQThD
RkY3QTkwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNzlGMEExNTY5NzgwMDBBNDIz
NCAvKiBIVE1MTW9kRWxlbWVudC5jcHAgKi87IH07CiAJCUE4Q0ZGN0FBMEExNTY5NzgwMDBBNDIz
NCAvKiBIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOENGRjdBMDBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEJSRWxlbWVudC5oICov
OyB9OwogCQlBOENGRjdBQjBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEFuY2hvckVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGN0ExMEEx
NTY5NzgwMDBBNDIzNCAvKiBIVE1MQW5jaG9yRWxlbWVudC5oICovOyB9OworCQlBOEQwNTFGOTBB
MjJGNkFGMDA1RTcyMDMgLyogQ1NTVmFsdWVMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThEMDUxRjgwQTIyRjZBRjAwNUU3MjAzIC8qIENT
U1ZhbHVlTGlzdC5pZGwgKi87IH07CisJCUE4RDA1MjE0MEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NT
U1ZhbHVlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThEMDUyMTIwQTIyRjc4QjAwNUU3MjAzIC8qIEpTQ1NTVmFsdWVMaXN0LmggKi87IH07CisJ
CUE4RDA1MjE1MEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNTIxMzBBMjJGNzhCMDA1
RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuY3BwICovOyB9OwogCQlBOERGM0ZDRTA5N0ZBMEZDMDA1
Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1D
b2xsZWN0aW9uLmggKi87IH07CiAJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MRm9y
bUNvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAg
Ki87IH07CiAJCUE4REYzRkQwMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzgwOTdG
QTBGQjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmggKi87IH07CkBAIC0xNTM0LDYgKzE1Mzcs
MjMgQEAKIAkJRkFFMDQxOTAwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdlTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUUwNDE4RTA5NzU5
NkM5MDAwNTQwQkUgLyogU1ZHSW1hZ2VMb2FkZXIuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLwogCisvKiBCZWdpbiBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KKwkJQThE
MDUxRjEwQTIyRjVERDAwNUU3MjAzIC8qIERldmVsb3BtZW50ICovID0geworCQkJaXNhID0gUEJY
QnVpbGRTdHlsZTsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9
IE5POworCQkJfTsKKwkJCW5hbWUgPSBEZXZlbG9wbWVudDsKKwkJfTsKKwkJQThEMDUxRjIwQTIy
RjVERDAwNUU3MjAzIC8qIERlcGxveW1lbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhCdWlsZFN0eWxl
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJ
fTsKKwkJCW5hbWUgPSBEZXBsb3ltZW50OworCQl9OworLyogRW5kIFBCWEJ1aWxkU3R5bGUgc2Vj
dGlvbiAqLworCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCQlE
RDA0MUZGMDA5RDlFMzI1MDAxMEFGMkEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewog
CQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwpAQCAtMjg3Nyw2ICsyODk3LDkgQEAKIAkJ
QThDRkY3OUYwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTW9kRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGN0EwMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MQlJF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQlJFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGN0ExMEExNTY5NzgwMDBBNDIz
NCAvKiBIVE1MQW5jaG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTEFuY2hvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThE
MDUxRjgwQTIyRjZBRjAwNUU3MjAzIC8qIENTU1ZhbHVlTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IENTU1ZhbHVlTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE4RDA1MjEyMEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDU1NWYWx1ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQThEMDUyMTMwQTIyRjc4QjAwNUU3MjAzIC8qIEpTQ1NTVmFsdWVMaXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1ZhbHVlTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4REYzRkM2MDk3RkEwRkIwMDUy
OTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhUTUxGb3JtQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDODA5N0ZBMEZCMDA1Mjk4MUIg
LyogSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDQ1LDYgKzM0
NjgsOCBAQAogCQkJCTE0MjAxMUI1MEEwMDMxMzMwMDgzMDNGOSAvKiBKU0NTU1N0eWxlRGVjbGFy
YXRpb24uaCAqLywKIAkJCQkxNENGNzhBMzA5RjU4Q0JGMDBFQjM2NjUgLyogSlNDU1NWYWx1ZS5j
cHAgKi8sCiAJCQkJMTRDRjc4QTUwOUY1OENEODAwRUIzNjY1IC8qIEpTQ1NTVmFsdWUuaCAqLywK
KwkJCQlBOEQwNTIxMzBBMjJGNzhCMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuY3BwICovLAor
CQkJCUE4RDA1MjEyMEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlzdC5oICovLAogCQkJ
CTY1OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLywKIAkJCQk2NTlE
REM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICovLAogCQkJCTFBNDk0RURDMEEx
MjNGNEMwMEZEQUZDMSAvKiBKU0RvY3VtZW50RnJhZ21lbnQuY3BwICovLApAQCAtMzUwNiwyNCAr
MzUzMSwyNCBAQAogCQkJCTFBODVCMThFMEExQjE4QTIwMEQ4Qzg3QyAvKiBKU0hUTUxIdG1sRWxl
bWVudC5oICovLAogCQkJCTFBRTJBQTkzMEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJbWFnZUVs
ZW1lbnQuY3BwICovLAogCQkJCTFBRTJBQTk0MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJbWFn
ZUVsZW1lbnQuaCAqLywKLQkJCQkxQUUyQUE5NTBBMUNERDJEMDBCNDJCMjUgLyogSlNIVE1MSXNJ
bmRleEVsZW1lbnQuY3BwICovLAotCQkJCTFBRTJBQTk2MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hU
TUxJc0luZGV4RWxlbWVudC5oICovLAogCQkJCUE4MEU3RThFMEExQTgzRTMwMDdGQjhDNSAvKiBK
U0hUTUxJbnB1dEVsZW1lbnQuY3BwICovLAogCQkJCUE4MEU3RThEMEExQTgzRTMwMDdGQjhDNSAv
KiBKU0hUTUxJbnB1dEVsZW1lbnQuaCAqLywKLQkJCQlBODBFN0IwNjBBMTlENjA2MDA3RkI4QzUg
LyogSlNIVE1MTGlua0VsZW1lbnQuY3BwICovLAotCQkJCUE4MEU3QjAzMEExOUQ2MDYwMDdGQjhD
NSAvKiBKU0hUTUxMaW5rRWxlbWVudC5oICovLAotCQkJCUE4MEU3QTE1MEExOUMzRDYwMDdGQjhD
NSAvKiBKU0hUTUxNZXRhRWxlbWVudC5jcHAgKi8sCi0JCQkJQTgwRTdBMTYwQTE5QzNENjAwN0ZC
OEM1IC8qIEpTSFRNTE1ldGFFbGVtZW50LmggKi8sCisJCQkJMUFFMkFBOTUwQTFDREQyRDAwQjQy
QjI1IC8qIEpTSFRNTElzSW5kZXhFbGVtZW50LmNwcCAqLywKKwkJCQkxQUUyQUE5NjBBMUNERDJE
MDBCNDJCMjUgLyogSlNIVE1MSXNJbmRleEVsZW1lbnQuaCAqLywKIAkJCQkxQUUyQUIxNzBBMUNF
NjNCMDBCNDJCMjUgLyogSlNIVE1MTGFiZWxFbGVtZW50LmNwcCAqLywKIAkJCQkxQUUyQUIxODBB
MUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGFiZWxFbGVtZW50LmggKi8sCiAJCQkJMUFFMkFCMTkw
QTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExlZ2VuZEVsZW1lbnQuY3BwICovLAogCQkJCTFBRTJB
QjFBMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMZWdlbmRFbGVtZW50LmggKi8sCiAJCQkJMUFF
MkFCMUIwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5jcHAgKi8sCiAJCQkJMUFF
MkFCMUMwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5oICovLAorCQkJCUE4MEU3
QjA2MEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxMaW5rRWxlbWVudC5jcHAgKi8sCisJCQkJQTgw
RTdCMDMwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVtZW50LmggKi8sCiAJCQkJMUFF
MkFCMUQwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQuY3BwICovLAogCQkJCTFB
RTJBQjFFMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNYXBFbGVtZW50LmggKi8sCiAJCQkJMUFF
MkFFNTkwQTFEMjZGMjAwQjQyQjI1IC8qIEpTSFRNTE1lbnVFbGVtZW50LmNwcCAqLywKIAkJCQkx
QUUyQUU1QTBBMUQyNkYyMDBCNDJCMjUgLyogSlNIVE1MTWVudUVsZW1lbnQuaCAqLywKKwkJCQlB
ODBFN0ExNTBBMTlDM0Q2MDA3RkI4QzUgLyogSlNIVE1MTWV0YUVsZW1lbnQuY3BwICovLAorCQkJ
CUE4MEU3QTE2MEExOUMzRDYwMDdGQjhDNSAvKiBKU0hUTUxNZXRhRWxlbWVudC5oICovLAogCQkJ
CTFBRTJBQjFGMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNb2RFbGVtZW50LmNwcCAqLywKIAkJ
CQkxQUUyQUIyMDBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTW9kRWxlbWVudC5oICovLAogCQkJ
CTFBODVCMUU0MEExQjI0MDUwMEQ4Qzg3QyAvKiBKU0hUTUxPTGlzdEVsZW1lbnQuY3BwICovLApA
QCAtNTAxNCw2ICs1MDM5LDcgQEAKIAkJCQlCQ0VBNDc4QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NT
VmFsdWVLZXl3b3Jkcy5pbiAqLywKIAkJCQlBODBFNkNCQTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NT
VmFsdWVMaXN0LmNwcCAqLywKIAkJCQlBODBFNkNCRjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFs
dWVMaXN0LmggKi8sCisJCQkJQThEMDUxRjgwQTIyRjZBRjAwNUU3MjAzIC8qIENTU1ZhbHVlTGlz
dC5pZGwgKi8sCiAJCQkJQTgwRTZDRTEwQTE5ODlDQTAwN0ZCOEM1IC8qIERhc2hib2FyZFJlZ2lv
bi5oICovLAogCQkJCUE4MEU2Q0MyMEExOTg5Q0EwMDdGQjhDNSAvKiBGb250RmFtaWx5VmFsdWUu
Y3BwICovLAogCQkJCUE4MEU2Q0M5MEExOTg5Q0EwMDdGQjhDNSAvKiBGb250RmFtaWx5VmFsdWUu
aCAqLywKQEAgLTYwNzcsNiArNjEwMyw3IEBACiAJCQkJMUFFMkFFNUMwQTFEMjZGMjAwQjQyQjI1
IC8qIEpTSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyQUVDODBBMUQy
OTdCMDBCNDJCMjUgLyogSlNIVE1MUXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUyQUVFNzBBMUQyQTc1MDBCNDJCMjUgLyogSlNIVE1MQmxvY2txdW90ZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE4RDA1MjE0MEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC02MTEwLDYgKzYxMzcsMTIgQEAKIAkJMDg2N0Q2OTBGRTg0
MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVj
dDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJYnVpbGRTdHlsZXMgPSAoCisJCQkJQThE
MDUxRjEwQTIyRjVERDAwNUU3MjAzIC8qIERldmVsb3BtZW50ICovLAorCQkJCUE4RDA1MUYyMEEy
MkY1REQwMDVFNzIwMyAvKiBEZXBsb3ltZW50ICovLAorCQkJKTsKIAkJCWhhc1NjYW5uZWRGb3JF
bmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkBAIC02MjEz
LDYgKzYyNDYsNyBAQAogCQkJCTFBRTJBRTQ0MEExRDI2OUUwMEI0MkIyNSAvKiBIVE1MTWVudUVs
ZW1lbnQuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUUyQUVBNDBBMUQyOEU4MDBCNDJCMjUg
LyogSFRNTFF1b3RlRWxlbWVudC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBRTJBRUE4MEEx
RDI5MTkwMEI0MkIyNSAvKiBIVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsIGluIFJlc291cmNlcyAq
LywKKwkJCQlBOEQwNTFGOTBBMjJGNkFGMDA1RTcyMDMgLyogQ1NTVmFsdWVMaXN0LmlkbCBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC02OTM3LDYgKzY5NzEsNyBAQAogCQkJCTFBRTJBRTVCMEExRDI2RjIw
MEI0MkIyNSAvKiBKU0hUTUxNZW51RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUy
QUVDNzBBMUQyOTdCMDBCNDJCMjUgLyogSlNIVE1MUXVvdGVFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRTJBRUU2MEExRDJBNzUwMEI0MkIyNSAvKiBKU0hUTUxCbG9ja3F1b3RlRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEQwNTIxNTBBMjJGNzhCMDA1RTcyMDMgLyog
SlNDU1NWYWx1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBDaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDUzMikKKysrIENoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDA2LTA1LTIzICBFcmljIFNlaWRlbCAgPGVyaWNA
ZXNlaWRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNl
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfY3NzLmNwcDoKKyAgICAgICAgKEtKUzo6
dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2Nzcy5oOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL2tqc19kb20uY3BwOgorICAgICAgICAoS0pTOjpET01OYW1lZE5vZGVNYXA6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5pZGw6IEFkZGVkLgorCiAyMDA2LTA1
LTIyICBFcmljIFNlaWRlbCAgPGVyaWNAZXNlaWRlbC5jb20+CiAKICAgICAgICAgUnViYmVyLXN0
YW1wZWQgYnkgYWRlbGUuCkluZGV4OiBjc3MvQ1NTVmFsdWVMaXN0LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBjc3MvQ1NTVmFsdWVMaXN0LmlkbAkocmV2aXNpb24gMCkKKysrIGNzcy9DU1NWYWx1ZUxpc3Qu
aWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuCisgKi8KKworbW9kdWxlIGNzcyB7CisKKyAgICAvLyBJbnRyb2R1Y2VkIGlu
IERPTSBMZXZlbCAyOgorICAgIGludGVyZmFjZSBbSGFzSW5kZXhHZXR0ZXJdIENTU1ZhbHVlTGlz
dCA6IENTU1ZhbHVlIHsKKwkJcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgICAgbGVu
Z3RoOworCQlDU1NWYWx1ZSAgICAgICAgICAgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsK
KyAgICB9OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8478</attachid>
            <date>2006-05-23 02:32:27 -0700</date>
            <delta_ts>2006-05-24 17:22:01 -0700</delta_ts>
            <desc>Slightly better patch</desc>
            <filename>final.patch</filename>
            <type>text/plain</type>
            <size>20793</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNDUzMikKKysr
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw4ICszNCw4IEBAIG15ICVpbXBsSW5jbHVkZXMgPSAoKTsKICMgRGVmYXVsdCAuaCB0ZW1wbGF0
ZQogbXkgJGhlYWRlclRlbXBsYXRlID0gPDwgIkVPRiI7CiAvKgotICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGtkb21pZGwucGwuIERPIE5PVCBNT0RJRlkhCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBn
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCiAKICAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTM1Niw2ICszNTYsMTIgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBSZWZQdHI8JGltcGxDbGFzc05hbWU+IG1faW1wbDtc
biIpOwogICB9CiAgIAorICAjIEluZGV4IGdldHRlcgorICBpZiAoJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSkgeworICAJcHVzaChAaGVhZGVyQ29udGVu
dCwgInByaXZhdGU6XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBL
SlM6OkpTVmFsdWUqIGluZGV4R2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU09iamVjdCos
IGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIGNvbnN0IEtKUzo6UHJvcGVydHlTbG90Jik7XG4iKQor
ICB9CisgIAogICBwdXNoKEBoZWFkZXJDb250ZW50LCAifTtcblxuIik7CiAgIAogICBpZiAoISRo
YXNQYXJlbnQpIHsKQEAgLTM5Myw3ICszOTksNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICA6IEtKUzo6SlNPYmplY3QoZXhlYy0+
bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5PYmplY3RQcm90b3R5cGUoKSkgeyB9XG4iKTsK
ICAgICAgIH0KICAgfQotICAKKyAgICAKICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn07XG5cbiIp
OwogICAKICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cblxuIik7CkBAIC02MzUsNyArNjQxLDM2
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChnZXRPdmVycmlkZVByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1
ZTtcbiIpOwogICAgIH0KLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVTbG90PCRjbGFzc05hbWUsICRwYXJlbnRDbGFzc05hbWU+KGV4ZWMsICYke2NsYXNz
TmFtZX1UYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgIAorCW15ICRy
ZXF1aXJlc01hbnVhbExvb2t1cCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhh
c0luZGV4R2V0dGVyIn07CisJaWYgKCRyZXF1aXJlc01hbnVhbExvb2t1cCkgeworCQlwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gTG9va3VwOjpmaW5kRW50
cnkoJiRoYXNoTmFtZSwgcHJvcGVydHlOYW1lKTtcbiIpOworCQlwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoZW50cnkpIHtcbiIpOworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICAJc2xvdC5z
ZXRTdGF0aWNFbnRyeSh0aGlzLCBlbnRyeSwgc3RhdGljVmFsdWVHZXR0ZXI8JGNsYXNzTmFtZT4p
O1xuIik7CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIAlyZXR1cm4gdHJ1ZTtcbiIpOworCQlw
dXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKKwkJCisJCSMgaWYgaXQgaGFzIGEgcHJvdG90
eXBlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgZmlyc3QgdG9vCisJCXB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmIChwcm90b3R5cGUoKS0+aXNPYmplY3QoKSAmJiBzdGF0aWNfY2FzdDxKU09iamVj
dCo+KHByb3RvdHlwZSgpKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSlcbiIpOwor
CQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CisJfQorCQor
CWlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9KSB7
CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIGJvb2wgb2s7XG4iKTsKKwkJcHVzaChAaW1wbENv
bnRlbnQsICIgICAgdW5zaWduZWQgdSA9IHByb3BlcnR5TmFtZS50b1VJbnQzMigmb2spO1xuIik7
CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChvayAmJiB1IDwgc3RhdGljX2Nhc3Q8JGlt
cGxDbGFzc05hbWUqPihpbXBsKCkpLT5sZW5ndGgoKSkge1xuIik7CisJCXB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMsIHUsIGluZGV4R2V0dGVyKTtc
biIpOworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKKwkJ
cHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CisJfQorCQorCSMgSGFzTmFtZUdldHRlciBj
b2RlIGdvZXMgaGVyZQorICAgIAorICAgIGlmICgkcmVxdWlyZXNNYW51YWxMb29rdXApIHsKKyAg
ICAJcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICR7cGFyZW50Q2xhc3NOYW1lfTo6Z2V0
T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKKyAgIAl9IGVs
c2UgeworICAgIAlwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVT
bG90PCRjbGFzc05hbWUsICRwYXJlbnRDbGFzc05hbWU+KGV4ZWMsICYke2NsYXNzTmFtZX1UYWJs
ZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgIH0KICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cblxuIik7CiAgIAogICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSog
JHtjbGFzc05hbWV9OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2Vu
KSBjb25zdFxue1xuIik7CkBAIC04MDMsNiArODM4LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKQogICB9CiAgIAorICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSkgeworICAgIHB1
c2goQGltcGxDb250ZW50LCAiXG5KU1ZhbHVlKiAke2NsYXNzTmFtZX06OmluZGV4R2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdClcbiIpOworICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHNsb3Quc2xvdEJhc2Uo
KSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCBz
dGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRoaXNPYmotPmltcGwoKSktPml0ZW0oc2xvdC5p
bmRleCgpKSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOworICB9CisgIAog
ICBpZiAoISRoYXNQYXJlbnQpIHsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgdG9GdW5jdGlvbnNG
b3IoJGNsYXNzTmFtZSwgJGltcGxDbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lKSk7CiAgIH0KSW5k
ZXg6IGJpbmRpbmdzL2pzL2tqc19jc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9ranNf
Y3NzLmgJKHJldmlzaW9uIDE0NTMyKQorKysgYmluZGluZ3MvanMva2pzX2Nzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTEsMTkgKzIxMSw2IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgIEpTVmFsdWUq
IHRvSlMoRXhlY1N0YXRlKiwgV2ViQ29yZTo6Q1NTVmFsdWUqKTsKIAotICBjbGFzcyBET01DU1NW
YWx1ZUxpc3QgOiBwdWJsaWMgRE9NQ1NTVmFsdWUgewotICBwdWJsaWM6Ci0gICAgRE9NQ1NTVmFs
dWVMaXN0KEV4ZWNTdGF0ZSosIFdlYkNvcmU6OkNTU1ZhbHVlTGlzdCopOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5U2xvdCYpOwotICAgIEpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiwg
aW50IHRva2VuKSBjb25zdDsKLSAgICAvLyBubyBwdXQgLSBhbGwgcmVhZC1vbmx5Ci0gICAgdmly
dHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9
Ci0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwotICAgIGVudW0geyBMZW5ndGgsIEl0
ZW0gfTsKLSAgcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNWYWx1ZSogaW5kZXhHZXR0ZXIoRXhlY1N0
YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7
Ci0gIH07Ci0KICAgY2xhc3MgRE9NUkdCQ29sb3IgOiBwdWJsaWMgRE9NT2JqZWN0IHsKICAgcHVi
bGljOgogICAgIERPTVJHQkNvbG9yKHVuc2lnbmVkIGNvbG9yKSA6IG1fY29sb3IoY29sb3IpIHsg
fQpJbmRleDogYmluZGluZ3MvanMva2pzX2RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3Mv
anMva2pzX2RvbS5jcHAJKHJldmlzaW9uIDE0NTMyKQorKysgYmluZGluZ3MvanMva2pzX2RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg3MSw3ICs4NzEsNyBAQCBib29sIERPTU5hbWVkTm9kZU1h
cDo6Z2V0T3duUHJvcGVydHlTbG90CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgfSBlbHNlIHsKICAg
ICAvLyBMb29rIGluIHRoZSBwcm90b3R5cGUgKGZvciBmdW5jdGlvbnMpIGJlZm9yZSBhc3N1bWlu
ZyBpdCdzIGFuIGl0ZW0ncyBuYW1lCi0gICAgSlNWYWx1ZSAqcHJvdG8gPSBwcm90b3R5cGUoKTsK
KyAgICBKU1ZhbHVlKiBwcm90byA9IHByb3RvdHlwZSgpOwogICAgIGlmIChwcm90by0+aXNPYmpl
Y3QoKSAmJiBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHByb3RvKS0+aGFzUHJvcGVydHkoZXhlYywg
cHJvcGVydHlOYW1lKSkKICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogYmluZGluZ3MvanMv
SlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNI
VE1MSW5wdXRFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDE0NTMyKQorKysgYmluZGluZ3MvanMv
SlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDgg
QEAgSlNWYWx1ZSogSlNIVE1MSW5wdXRFbGVtZW50QmFzZVByb3RvRnVuYwogICAgIHJldHVybiAw
OwogfQogCi0vLyBTZXRTZWxlY3Rpb25SYW5nZSBpcyBpbXBsZW1lbnRlZCBvbiB0aGUgY2xhc3Mg
aW5zdGVhZCBvZiBvbiB0aGUgcHJvdG90eXBlLCBpbnRlbnRpb25hbGx5LgorLy8gU2V0U2VsZWN0
aW9uUmFuZ2UgaXMgaW1wbGVtZW50ZWQgb24gdGhlIGNsYXNzIGluc3RlYWQgb2Ygb24gdGhlIHBy
b3RvdHlwZQorLy8gdG8gbWFrZSBpdCBlYXNpZXIgdG8gZW5hYmxlL2Rpc2FibGUgbG9va3VwIG9m
IHRoZSBmdW5jdGlvbiBiYXNlZCBvbiBpbnB1dCB0eXBlLgogY2xhc3MgSlNIVE1MSW5wdXRFbGVt
ZW50QmFzZUZ1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb25JbXAgewogcHVibGljOgog
ICAgIEpTSFRNTElucHV0RWxlbWVudEJhc2VGdW5jdGlvbihFeGVjU3RhdGUqLCBpbnQgaSwgaW50
IGxlbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CkluZGV4OiBiaW5kaW5ncy9qcy9ranNfY3Nz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9ranNfY3NzLmNwcAkocmV2aXNpb24gMTQ1
MzIpCisrKyBiaW5kaW5ncy9qcy9ranNfY3NzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIkpTQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJKU0NT
U1J1bGUuaCIKICNpbmNsdWRlICJKU0NTU1N0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJK
U0NTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxl
U2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAia2pzX2RvbS5oIgpAQCAtOTgyLDcgKzk4Myw3IEBAIEpT
VmFsdWUqIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBDU1NWYWx1ZSAKICAgICByZXR1cm4gcmV0Owog
ICBlbHNlIHsKICAgICBpZiAodi0+aXNWYWx1ZUxpc3QoKSkKLSAgICAgIHJldCA9IG5ldyBET01D
U1NWYWx1ZUxpc3QoZXhlYywgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odikpOworICAgICAg
cmV0ID0gbmV3IEpTQ1NTVmFsdWVMaXN0KGV4ZWMsIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHYpKTsKICAgICBlbHNlIGlmICh2LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICByZXQgPSBu
ZXcgSlNDU1NQcmltaXRpdmVWYWx1ZShleGVjLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHYpKTsKICAgICBlbHNlCkBAIC05OTQsNjkgKzk5NSw2IEBAIEpTVmFsdWUqIHRvSlMoRXhl
Y1N0YXRlKiBleGVjLCBDU1NWYWx1ZSAKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCBD
bGFzc0luZm8gRE9NQ1NTVmFsdWVMaXN0OjppbmZvID0geyAiQ1NTVmFsdWVMaXN0IiwgMCwgJkRP
TUNTU1ZhbHVlTGlzdFRhYmxlLCAwIH07Ci0KLS8qCi1AYmVnaW4gRE9NQ1NTVmFsdWVMaXN0VGFi
bGUgMwotICBsZW5ndGggICAgICAgICAgICAgICAgRE9NQ1NTVmFsdWVMaXN0OjpMZW5ndGggICAg
ICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGl0ZW0gICAgICAgICAgICAgICAgICBET01DU1NW
YWx1ZUxpc3Q6Okl0ZW0gICAgICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMQotQGVuZAotKi8K
LUtKU19JTVBMRU1FTlRfUFJPVE9GVU5DKERPTUNTU1ZhbHVlTGlzdEZ1bmMpIC8vIG5vdCByZWFs
bHkgYSBwcm90bywgYnV0IGRvZXNuJ3QgbWF0dGVyCi0KLURPTUNTU1ZhbHVlTGlzdDo6RE9NQ1NT
VmFsdWVMaXN0KEV4ZWNTdGF0ZSogZXhlYywgQ1NTVmFsdWVMaXN0ICp2KQotICA6IERPTUNTU1Zh
bHVlKGV4ZWMsIHYpIAoteyAKLX0KLQotSlNWYWx1ZSogRE9NQ1NTVmFsdWVMaXN0OjpnZXRWYWx1
ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdAotewotICBhc3NlcnQo
dG9rZW4gPT0gTGVuZ3RoKTsKLSAgcmV0dXJuIGpzTnVtYmVyKHN0YXRpY19jYXN0PENTU1ZhbHVl
TGlzdCo+KGltcGwoKSktPmxlbmd0aCgpKTsKLX0KLQotSlNWYWx1ZSogRE9NQ1NTVmFsdWVMaXN0
OjppbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvcmlnaW5hbE9iamVjdCwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Ci17Ci0gIERPTUNTU1ZhbHVlTGlzdCAqdGhpc09iaiA9IHN0YXRpY19jYXN0PERPTUNTU1ZhbHVl
TGlzdCo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gIHJldHVybiB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0
PENTU1ZhbHVlTGlzdCo+KHRoaXNPYmotPmltcGwoKSktPml0ZW0oc2xvdC5pbmRleCgpKSk7Ci19
Ci0KLWJvb2wgRE9NQ1NTVmFsdWVMaXN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
LXsKLSAgQ1NTVmFsdWVMaXN0ICZ2YWx1ZUxpc3QgPSAqc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0
Kj4oaW1wbCgpKTsKLSAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IExvb2t1cDo6ZmluZEVudHJ5
KCZET01DU1NWYWx1ZUxpc3RUYWJsZSwgcHJvcGVydHlOYW1lKTsKLSAgaWYgKGVudHJ5KSB7Ci0g
ICAgaWYgKGVudHJ5LT5hdHRyICYgRnVuY3Rpb24pCi0gICAgICBzbG90LnNldFN0YXRpY0VudHJ5
KHRoaXMsIGVudHJ5LCBzdGF0aWNGdW5jdGlvbkdldHRlcjxET01DU1NWYWx1ZUxpc3RGdW5jPik7
Ci0gICAgZWxzZQotICAgICAgc2xvdC5zZXRTdGF0aWNFbnRyeSh0aGlzLCBlbnRyeSwgc3RhdGlj
VmFsdWVHZXR0ZXI8RE9NQ1NTVmFsdWVMaXN0Pik7Ci0gIH0KLQotICBib29sIG9rOwotICB1bnNp
Z25lZCB1ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvayk7Ci0gIGlmIChvayAmJiB1IDwgdmFs
dWVMaXN0Lmxlbmd0aCgpKSB7Ci0gICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzLCB1LCBpbmRl
eEdldHRlcik7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICByZXR1cm4gRE9NQ1NTVmFsdWU6
OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1KU1Zh
bHVlKiBET01DU1NWYWx1ZUxpc3RGdW5jOjpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0ICZhcmdzKQotewotICBpZiAoIXRoaXNPYmot
PmluaGVyaXRzKCZLSlM6OkRPTUNTU1ZhbHVlOjppbmZvKSkKLSAgICByZXR1cm4gdGhyb3dFcnJv
cihleGVjLCBUeXBlRXJyb3IpOwotICBDU1NWYWx1ZUxpc3QgJnZhbHVlTGlzdCA9ICpzdGF0aWNf
Y2FzdDxDU1NWYWx1ZUxpc3QqPihzdGF0aWNfY2FzdDxET01DU1NWYWx1ZUxpc3QqPih0aGlzT2Jq
KS0+aW1wbCgpKTsKLSAgc3dpdGNoIChpZCkgewotICAgIGNhc2UgRE9NQ1NTVmFsdWVMaXN0OjpJ
dGVtOgotICAgICAgcmV0dXJuIHRvSlMoZXhlYyx2YWx1ZUxpc3QuaXRlbShhcmdzWzBdLT50b0lu
dDMyKGV4ZWMpKSk7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwot
ICB9Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogY29uc3QgQ2xhc3NJbmZvIERPTVJHQkNv
bG9yOjppbmZvID0geyAiUkdCQ29sb3IiLCAwLCAmRE9NUkdCQ29sb3JUYWJsZSwgMCB9OwogCiAv
KgpJbmRleDogRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBEZXJpdmVkU291cmNl
cy5tYWtlCShyZXZpc2lvbiAxNDUzMikKKysrIERlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgYWxsIDogXAogICAgIEpTQ1NTUHJpbWl0aXZlVmFsdWUu
aCBcCiAgICAgSlNDU1NSdWxlLmggXAogICAgIEpTQ1NTVmFsdWUuaCBcCisgICAgSlNDU1NWYWx1
ZUxpc3QuaCBcCiAgICAgSlNDYW52YXNHcmFkaWVudC5oIFwKICAgICBKU0NhbnZhc1BhdHRlcm4u
aCBcCiAgICAgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBcCkluZGV4OiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDUzMikKKysrIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTI0OCw2ICsxMjQ4LDkgQEAKIAkJQThD
RkY3QTkwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGNzlGMEExNTY5NzgwMDBBNDIz
NCAvKiBIVE1MTW9kRWxlbWVudC5jcHAgKi87IH07CiAJCUE4Q0ZGN0FBMEExNTY5NzgwMDBBNDIz
NCAvKiBIVE1MQlJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOENGRjdBMDBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEJSRWxlbWVudC5oICov
OyB9OwogCQlBOENGRjdBQjBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTEFuY2hvckVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGN0ExMEEx
NTY5NzgwMDBBNDIzNCAvKiBIVE1MQW5jaG9yRWxlbWVudC5oICovOyB9OworCQlBOEQwNTFGOTBB
MjJGNkFGMDA1RTcyMDMgLyogQ1NTVmFsdWVMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThEMDUxRjgwQTIyRjZBRjAwNUU3MjAzIC8qIENT
U1ZhbHVlTGlzdC5pZGwgKi87IH07CisJCUE4RDA1MjE0MEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NT
U1ZhbHVlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThEMDUyMTIwQTIyRjc4QjAwNUU3MjAzIC8qIEpTQ1NTVmFsdWVMaXN0LmggKi87IH07CisJ
CUE4RDA1MjE1MEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNTIxMzBBMjJGNzhCMDA1
RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuY3BwICovOyB9OwogCQlBOERGM0ZDRTA5N0ZBMEZDMDA1
Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1D
b2xsZWN0aW9uLmggKi87IH07CiAJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MRm9y
bUNvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAg
Ki87IH07CiAJCUE4REYzRkQwMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzgwOTdG
QTBGQjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmggKi87IH07CkBAIC0xNTM0LDYgKzE1Mzcs
MjMgQEAKIAkJRkFFMDQxOTAwOTc1OTZDOTAwMDU0MEJFIC8qIFNWR0ltYWdlTG9hZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUUwNDE4RTA5NzU5
NkM5MDAwNTQwQkUgLyogU1ZHSW1hZ2VMb2FkZXIuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLwogCisvKiBCZWdpbiBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KKwkJQThE
MDUxRjEwQTIyRjVERDAwNUU3MjAzIC8qIERldmVsb3BtZW50ICovID0geworCQkJaXNhID0gUEJY
QnVpbGRTdHlsZTsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9
IE5POworCQkJfTsKKwkJCW5hbWUgPSBEZXZlbG9wbWVudDsKKwkJfTsKKwkJQThEMDUxRjIwQTIy
RjVERDAwNUU3MjAzIC8qIERlcGxveW1lbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhCdWlsZFN0eWxl
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJ
fTsKKwkJCW5hbWUgPSBEZXBsb3ltZW50OworCQl9OworLyogRW5kIFBCWEJ1aWxkU3R5bGUgc2Vj
dGlvbiAqLworCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCQlE
RDA0MUZGMDA5RDlFMzI1MDAxMEFGMkEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewog
CQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwpAQCAtMjg3Nyw2ICsyODk3LDkgQEAKIAkJ
QThDRkY3OUYwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTW9kRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGN0EwMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MQlJF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQlJFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGN0ExMEExNTY5NzgwMDBBNDIz
NCAvKiBIVE1MQW5jaG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTEFuY2hvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThE
MDUxRjgwQTIyRjZBRjAwNUU3MjAzIC8qIENTU1ZhbHVlTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IENTU1ZhbHVlTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE4RDA1MjEyMEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDU1NWYWx1ZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQThEMDUyMTMwQTIyRjc4QjAwNUU3MjAzIC8qIEpTQ1NTVmFsdWVMaXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1ZhbHVlTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4REYzRkM2MDk3RkEwRkIwMDUy
OTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhUTUxGb3JtQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOERGM0ZDNzA5N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRm9ybUNvbGxlY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOERGM0ZDODA5N0ZBMEZCMDA1Mjk4MUIg
LyogSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhU
TUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDQ1LDYgKzM0
NjgsOCBAQAogCQkJCTE0MjAxMUI1MEEwMDMxMzMwMDgzMDNGOSAvKiBKU0NTU1N0eWxlRGVjbGFy
YXRpb24uaCAqLywKIAkJCQkxNENGNzhBMzA5RjU4Q0JGMDBFQjM2NjUgLyogSlNDU1NWYWx1ZS5j
cHAgKi8sCiAJCQkJMTRDRjc4QTUwOUY1OENEODAwRUIzNjY1IC8qIEpTQ1NTVmFsdWUuaCAqLywK
KwkJCQlBOEQwNTIxMzBBMjJGNzhCMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuY3BwICovLAor
CQkJCUE4RDA1MjEyMEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlzdC5oICovLAogCQkJ
CTY1OUREQzgwMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLywKIAkJCQk2NTlE
REM4MTA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5oICovLAogCQkJCTFBNDk0RURDMEEx
MjNGNEMwMEZEQUZDMSAvKiBKU0RvY3VtZW50RnJhZ21lbnQuY3BwICovLApAQCAtMzUwNiwyNCAr
MzUzMSwyNCBAQAogCQkJCTFBODVCMThFMEExQjE4QTIwMEQ4Qzg3QyAvKiBKU0hUTUxIdG1sRWxl
bWVudC5oICovLAogCQkJCTFBRTJBQTkzMEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJbWFnZUVs
ZW1lbnQuY3BwICovLAogCQkJCTFBRTJBQTk0MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJbWFn
ZUVsZW1lbnQuaCAqLywKLQkJCQkxQUUyQUE5NTBBMUNERDJEMDBCNDJCMjUgLyogSlNIVE1MSXNJ
bmRleEVsZW1lbnQuY3BwICovLAotCQkJCTFBRTJBQTk2MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hU
TUxJc0luZGV4RWxlbWVudC5oICovLAogCQkJCUE4MEU3RThFMEExQTgzRTMwMDdGQjhDNSAvKiBK
U0hUTUxJbnB1dEVsZW1lbnQuY3BwICovLAogCQkJCUE4MEU3RThEMEExQTgzRTMwMDdGQjhDNSAv
KiBKU0hUTUxJbnB1dEVsZW1lbnQuaCAqLywKLQkJCQlBODBFN0IwNjBBMTlENjA2MDA3RkI4QzUg
LyogSlNIVE1MTGlua0VsZW1lbnQuY3BwICovLAotCQkJCUE4MEU3QjAzMEExOUQ2MDYwMDdGQjhD
NSAvKiBKU0hUTUxMaW5rRWxlbWVudC5oICovLAotCQkJCUE4MEU3QTE1MEExOUMzRDYwMDdGQjhD
NSAvKiBKU0hUTUxNZXRhRWxlbWVudC5jcHAgKi8sCi0JCQkJQTgwRTdBMTYwQTE5QzNENjAwN0ZC
OEM1IC8qIEpTSFRNTE1ldGFFbGVtZW50LmggKi8sCisJCQkJMUFFMkFBOTUwQTFDREQyRDAwQjQy
QjI1IC8qIEpTSFRNTElzSW5kZXhFbGVtZW50LmNwcCAqLywKKwkJCQkxQUUyQUE5NjBBMUNERDJE
MDBCNDJCMjUgLyogSlNIVE1MSXNJbmRleEVsZW1lbnQuaCAqLywKIAkJCQkxQUUyQUIxNzBBMUNF
NjNCMDBCNDJCMjUgLyogSlNIVE1MTGFiZWxFbGVtZW50LmNwcCAqLywKIAkJCQkxQUUyQUIxODBB
MUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGFiZWxFbGVtZW50LmggKi8sCiAJCQkJMUFFMkFCMTkw
QTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExlZ2VuZEVsZW1lbnQuY3BwICovLAogCQkJCTFBRTJB
QjFBMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMZWdlbmRFbGVtZW50LmggKi8sCiAJCQkJMUFF
MkFCMUIwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5jcHAgKi8sCiAJCQkJMUFF
MkFCMUMwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExJRWxlbWVudC5oICovLAorCQkJCUE4MEU3
QjA2MEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxMaW5rRWxlbWVudC5jcHAgKi8sCisJCQkJQTgw
RTdCMDMwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVtZW50LmggKi8sCiAJCQkJMUFF
MkFCMUQwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQuY3BwICovLAogCQkJCTFB
RTJBQjFFMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNYXBFbGVtZW50LmggKi8sCiAJCQkJMUFF
MkFFNTkwQTFEMjZGMjAwQjQyQjI1IC8qIEpTSFRNTE1lbnVFbGVtZW50LmNwcCAqLywKIAkJCQkx
QUUyQUU1QTBBMUQyNkYyMDBCNDJCMjUgLyogSlNIVE1MTWVudUVsZW1lbnQuaCAqLywKKwkJCQlB
ODBFN0ExNTBBMTlDM0Q2MDA3RkI4QzUgLyogSlNIVE1MTWV0YUVsZW1lbnQuY3BwICovLAorCQkJ
CUE4MEU3QTE2MEExOUMzRDYwMDdGQjhDNSAvKiBKU0hUTUxNZXRhRWxlbWVudC5oICovLAogCQkJ
CTFBRTJBQjFGMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNb2RFbGVtZW50LmNwcCAqLywKIAkJ
CQkxQUUyQUIyMDBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTW9kRWxlbWVudC5oICovLAogCQkJ
CTFBODVCMUU0MEExQjI0MDUwMEQ4Qzg3QyAvKiBKU0hUTUxPTGlzdEVsZW1lbnQuY3BwICovLApA
QCAtNTAxNCw2ICs1MDM5LDcgQEAKIAkJCQlCQ0VBNDc4QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NT
VmFsdWVLZXl3b3Jkcy5pbiAqLywKIAkJCQlBODBFNkNCQTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NT
VmFsdWVMaXN0LmNwcCAqLywKIAkJCQlBODBFNkNCRjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFs
dWVMaXN0LmggKi8sCisJCQkJQThEMDUxRjgwQTIyRjZBRjAwNUU3MjAzIC8qIENTU1ZhbHVlTGlz
dC5pZGwgKi8sCiAJCQkJQTgwRTZDRTEwQTE5ODlDQTAwN0ZCOEM1IC8qIERhc2hib2FyZFJlZ2lv
bi5oICovLAogCQkJCUE4MEU2Q0MyMEExOTg5Q0EwMDdGQjhDNSAvKiBGb250RmFtaWx5VmFsdWUu
Y3BwICovLAogCQkJCUE4MEU2Q0M5MEExOTg5Q0EwMDdGQjhDNSAvKiBGb250RmFtaWx5VmFsdWUu
aCAqLywKQEAgLTYwNzcsNiArNjEwMyw3IEBACiAJCQkJMUFFMkFFNUMwQTFEMjZGMjAwQjQyQjI1
IC8qIEpTSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyQUVDODBBMUQy
OTdCMDBCNDJCMjUgLyogSlNIVE1MUXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUyQUVFNzBBMUQyQTc1MDBCNDJCMjUgLyogSlNIVE1MQmxvY2txdW90ZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE4RDA1MjE0MEEyMkY3OEIwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC02MTEwLDYgKzYxMzcsMTIgQEAKIAkJMDg2N0Q2OTBGRTg0
MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogCQkJaXNhID0gUEJYUHJvamVj
dDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJYnVpbGRTdHlsZXMgPSAoCisJCQkJQThE
MDUxRjEwQTIyRjVERDAwNUU3MjAzIC8qIERldmVsb3BtZW50ICovLAorCQkJCUE4RDA1MUYyMEEy
MkY1REQwMDVFNzIwMyAvKiBEZXBsb3ltZW50ICovLAorCQkJKTsKIAkJCWhhc1NjYW5uZWRGb3JF
bmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkBAIC02MjEz
LDYgKzYyNDYsNyBAQAogCQkJCTFBRTJBRTQ0MEExRDI2OUUwMEI0MkIyNSAvKiBIVE1MTWVudUVs
ZW1lbnQuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUUyQUVBNDBBMUQyOEU4MDBCNDJCMjUg
LyogSFRNTFF1b3RlRWxlbWVudC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBRTJBRUE4MEEx
RDI5MTkwMEI0MkIyNSAvKiBIVE1MQmxvY2txdW90ZUVsZW1lbnQuaWRsIGluIFJlc291cmNlcyAq
LywKKwkJCQlBOEQwNTFGOTBBMjJGNkFGMDA1RTcyMDMgLyogQ1NTVmFsdWVMaXN0LmlkbCBpbiBS
ZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC02OTM3LDYgKzY5NzEsNyBAQAogCQkJCTFBRTJBRTVCMEExRDI2RjIw
MEI0MkIyNSAvKiBKU0hUTUxNZW51RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUy
QUVDNzBBMUQyOTdCMDBCNDJCMjUgLyogSlNIVE1MUXVvdGVFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRTJBRUU2MEExRDJBNzUwMEI0MkIyNSAvKiBKU0hUTUxCbG9ja3F1b3RlRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEQwNTIxNTBBMjJGNzhCMDA1RTcyMDMgLyog
SlNDU1NWYWx1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBDaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDUzMikKKysrIENoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDA2LTA1LTIzICBFcmljIFNlaWRlbCAgPGVyaWNA
ZXNlaWRlbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkICJIYXNJbmRleEdldHRlciIgc3VwcG9ydCB0byBiaW5kaW5ncyBhdXRvZ2VuIHN5
c3RlbS4KKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDU3CisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfY3Nz
LmNwcDoKKyAgICAgICAgKEtKUzo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2Nz
cy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19kb20uY3BwOgorICAgICAgICAoS0pTOjpE
T01OYW1lZE5vZGVNYXA6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5p
ZGw6IEFkZGVkLgorCiAyMDA2LTA1LTIyICBFcmljIFNlaWRlbCAgPGVyaWNAZXNlaWRlbC5jb20+
CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgYWRlbGUuCkluZGV4OiBjc3MvQ1NTVmFsdWVM
aXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvQ1NTVmFsdWVMaXN0LmlkbAkocmV2aXNpb24gMCkK
KysrIGNzcy9DU1NWYWx1ZUxpc3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21v
ZHVsZSBjc3MgeworCisgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKKyAgICBpbnRl
cmZhY2UgW0hhc0luZGV4R2V0dGVyXSBDU1NWYWx1ZUxpc3QgOiBDU1NWYWx1ZSB7CisJCXJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgIGxlbmd0aDsKKwkJQ1NTVmFsdWUgICAgICAg
ICAgIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgfTsKK30K
</data>
<flag name="review"
          id="2407"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8528</attachid>
            <date>2006-05-24 17:22:01 -0700</date>
            <delta_ts>2006-05-24 17:48:09 -0700</delta_ts>
            <desc>Even better patch</desc>
            <filename>better.patch</filename>
            <type>text/plain</type>
            <size>60183</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNDU3NykKKysr
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw4ICszNCw4IEBACiAjIERlZmF1bHQgLmggdGVtcGxhdGUKIG15ICRoZWFkZXJUZW1wbGF0ZSA9
IDw8ICJFT0YiOwogLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3Qu
Ci0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBrZG9taWRsLnBsLiBETyBOT1Qg
TU9ESUZZIQorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xODcsOCAr
MTg3LDggQEAKICAgbXkgJGNsYXNzTmFtZSA9ICJKUyRpbnRlcmZhY2VOYW1lIjsKICAgbXkgJGlt
cGxDbGFzc05hbWUgPSAkaW50ZXJmYWNlTmFtZTsKICAgCi0gICMgRklYTUU6IElmIHdlJ3JlIHN1
cmUgdGhhdCBhbiBpbnRlcmZhY2UgY2FuJ3QgaGF2ZSBtb3JlIHRoYW4KLSAgIyBvbmUgcGFyZW50
IHdlIGNhbiBkbyB0aGUgY2hlY2sgaW4gdGhlIHBhcnNlciBpbnN0ZWFkCisgICMgRklYTUU6IEZv
ciBTVkcgd2UgbmVlZCB0byBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgcGFyZW50CisgICMgQnV0IG5v
IG1vcmUgdGhhbiBvbmUgcGFyZW50IGNhbiBiZSAiY29uY3JldGUiCiAgIGlmIChAeyRkYXRhTm9k
ZS0+cGFyZW50c30gPiAxKSB7CiAgICAgZGllICJBIGNsYXNzIGNhbid0IGhhdmUgbW9yZSB0aGFu
IG9uZSBwYXJlbnQiOwogICB9CkBAIC0zNjEsNiArMzYxLDE4IEBACiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBSZWZQdHI8JGltcGxDbGFzc05hbWU+IG1faW1wbDtcbiIpOwogICB9CiAg
IAorICAjIEluZGV4IGdldHRlcgorICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSGFzSW5kZXhHZXR0ZXIifSkgeworICAJcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6
XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBLSlM6OkpTVmFsdWUq
IGluZGV4R2V0dGVyKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU09iamVjdCosIGNvbnN0IEtKUzo6
SWRlbnRpZmllciYsIGNvbnN0IEtKUzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgfQorICAjIE5h
bWUgZ2V0dGVyCisgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNOYW1l
R2V0dGVyIn0pIHsKKyAgCXB1c2goQGhlYWRlckNvbnRlbnQsICJwcml2YXRlOlxuIik7CisgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgS0pTOjpKU1ZhbHVlKiBuYW1lR2V0dGVy
KEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU09iamVjdCosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYs
IGNvbnN0IEtKUzo6UHJvcGVydHlTbG90Jik7XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHN0YXRpYyBib29sIGNhbkdldEl0ZW1zRm9yTmFtZShLSlM6OkV4ZWNTdGF0ZSosICRp
bXBsQ2xhc3NOYW1lKiwgY29uc3QgQXRvbWljU3RyaW5nJik7XG4iKQorICB9CisgIAogICBwdXNo
KEBoZWFkZXJDb250ZW50LCAifTtcblxuIik7CiAgIAogICBpZiAoISRoYXNQYXJlbnQpIHsKQEAg
LTY0MCw3ICs2NTIsNDMgQEAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGdl
dE92ZXJyaWRlUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpXG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAg
fQorICAgIAorCW15ICRyZXF1aXJlc01hbnVhbExvb2t1cCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9OworCWlmICgkcmVxdWlyZXNNYW51YWxMb29rdXApIHsK
KwkJcHVzaChAaW1wbENvbnRlbnQsICIgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IExvb2t1
cDo6ZmluZEVudHJ5KCYke2NsYXNzTmFtZX1UYWJsZSwgcHJvcGVydHlOYW1lKTtcbiIpOworCQlw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoZW50cnkpIHtcbiIpOworCQlwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAJc2xvdC5zZXRTdGF0aWNFbnRyeSh0aGlzLCBlbnRyeSwgc3RhdGljVmFsdWVH
ZXR0ZXI8JGNsYXNzTmFtZT4pO1xuIik7CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIAlyZXR1
cm4gdHJ1ZTtcbiIpOworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKKwl9CisJCisJ
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSkgewor
CQkjIGlmIGl0IGhhcyBhIHByb3RvdHlwZSwgd2UgbmVlZCB0byBjaGVjayB0aGF0IGZpcnN0IHRv
bworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAocHJvdG90eXBlKCktPmlzT2JqZWN0KCkg
JiYgc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihwcm90b3R5cGUoKSktPmhhc1Byb3BlcnR5KGV4ZWMs
IHByb3BlcnR5TmFtZSkpXG4iKTsKKwkJcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biBmYWxzZTtcbiIpOworCX0KKwkKKwlpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSGFzSW5kZXhHZXR0ZXIifSkgeworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICBib29sIG9r
O1xuIik7CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIHVuc2lnbmVkIHUgPSBwcm9wZXJ0eU5h
bWUudG9VSW50MzIoJm9rKTtcbiIpOworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAob2sg
JiYgdSA8IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKS0+bGVuZ3RoKCkpIHtc
biIpOworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0
aGlzLCB1LCBpbmRleEdldHRlcik7XG4iKTsKKwkJcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiB0cnVlO1xuIik7CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOworCX0K
KwkKKwlpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9
KSB7CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChjYW5HZXRJdGVtc0Zvck5hbWUoZXhl
Yywgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpLCBwcm9wZXJ0eU5hbWUpKSB7
XG4iKTsKKwkJcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMs
IG5hbWVHZXR0ZXIpO1xuIik7CisJCXB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dHJ1ZTtcbiIpOworCQlwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKKwl9CisgICAgCisg
ICAgaWYgKCRyZXF1aXJlc01hbnVhbExvb2t1cCkgeworICAgIAlwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gJHtwYXJlbnRDbGFzc05hbWV9OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgCX0gZWxzZSB7CiAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDwkY2xhc3NOYW1lLCAkcGFyZW50
Q2xhc3NOYW1lPihleGVjLCAmJHtjbGFzc05hbWV9VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7XG4iKTsKKyAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAK
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUqICR7Y2xhc3NOYW1lfTo6Z2V0VmFsdWVQ
cm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbikgY29uc3RcbntcbiIpOwpAQCAtODA4
LDYgKzg1NiwxNCBAQAogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIikKICAgfQogICAKKyAg
aWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0luZGV4R2V0dGVyIn0pIHsK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuSlNWYWx1ZSogJHtjbGFzc05hbWV9OjppbmRleEdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvcmlnaW5hbE9iamVjdCwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICR7Y2xhc3NOYW1lfSogdGhpc09iaiA9IHN0YXRpY19jYXN0PCRjbGFzc05hbWUqPihzbG90LnNs
b3RCYXNlKCkpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRvSlMo
ZXhlYywgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPih0aGlzT2JqLT5pbXBsKCkpLT5pdGVt
KHNsb3QuaW5kZXgoKSkpO1xuIik7CisgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKKyAg
fQorICAgIAogICBpZiAoISRoYXNQYXJlbnQpIHsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgdG9G
dW5jdGlvbnNGb3IoJGNsYXNzTmFtZSwgJGltcGxDbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lKSk7
CiAgIH0KQEAgLTEwMzgsOSArMTA5NCw2IEBACiAgICAgICRpbXBsSW5jbHVkZXN7IlN0eWxlU2hl
ZXRMaXN0LmgifSA9IDE7CiAgICAgICRpbXBsSW5jbHVkZXN7Imtqc19jc3MuaCJ9ID0gMTsKICAg
ICAgcmV0dXJuICJ0b0pTKGV4ZWMsICR2YWx1ZSwgaW1wbCkiOwotICB9IGVsc2lmICgkdHlwZSBl
cSAiQ1NTUnVsZUxpc3QiKSB7Ci0gICAgICRpbXBsSW5jbHVkZXN7IkNTU1J1bGVMaXN0LmgifSA9
IDE7Ci0gICAgIHJldHVybiAidG9KUyhleGVjLCAkdmFsdWUpIjsgIAogICAgfSBlbHNpZiAoJHR5
cGUgZXEgIkNTU1N0eWxlRGVjbGFyYXRpb24iIG9yICR0eXBlIGVxICJSZWN0IikgewogICAgICRp
bXBsSW5jbHVkZXN7IkNTU1N0eWxlRGVjbGFyYXRpb24uaCJ9ID0gMTsKICAgICAkaW1wbEluY2x1
ZGVzeyJSZWN0SW1wbC5oIn0gPSAxOwpJbmRleDogYmluZGluZ3MvanMva2pzX25hdmlnYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMva2pzX25hdmlnYXRvci5jcHAJKHJldmlzaW9u
IDE0NTc3KQorKysgYmluZGluZ3MvanMva2pzX25hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDcgKzQ1LDYgQEAKICAgICAgICAgc3RhdGljIHZvaWQgY2FjaGVQbHVnaW5EYXRhSWZO
ZWNlc3NhcnkoKTsKICAgICAgICAgc3RhdGljIFZlY3RvcjxQbHVnaW5JbmZvKj4gKnBsdWdpbnM7
CiAgICAgICAgIHN0YXRpYyBWZWN0b3I8TWltZUNsYXNzSW5mbyo+ICptaW1lczsKLQogICAgIHBy
aXZhdGU6CiAgICAgICAgIHN0YXRpYyBpbnQgbV9wbHVnSW5DYWNoZVJlZkNvdW50OwogICAgIH07
CkluZGV4OiBiaW5kaW5ncy9qcy9ranNfY3NzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMv
a2pzX2Nzcy5oCShyZXZpc2lvbiAxNDU3NykKKysrIGJpbmRpbmdzL2pzL2tqc19jc3MuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDI1ICsxNDgsNiBAQAogICAgIGVudW0geyBPd25lclJ1bGUsIENz
c1J1bGVzLCBSdWxlcywgSW5zZXJ0UnVsZSwgRGVsZXRlUnVsZSwgQWRkUnVsZSwgUmVtb3ZlUnVs
ZSB9OwogICB9OwogCi0gIGNsYXNzIERPTUNTU1J1bGVMaXN0IDogcHVibGljIERPTU9iamVjdCB7
Ci0gIHB1YmxpYzoKLSAgICBET01DU1NSdWxlTGlzdChFeGVjU3RhdGUqLCBXZWJDb3JlOjpDU1NS
dWxlTGlzdCopOwotICAgIHZpcnR1YWwgfkRPTUNTU1J1bGVMaXN0KCk7Ci0gICAgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlTbG90Jik7Ci0gICAgSlNWYWx1ZSogZ2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBp
bnQgdG9rZW4pIGNvbnN0OwotICAgIC8vIG5vIHB1dCAtIGFsbCByZWFkLW9ubHkKLSAgICB2aXJ0
dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0K
LSAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87Ci0gICAgZW51bSB7IEl0ZW0sIExlbmd0
aCB9OwotICAgIFdlYkNvcmU6OkNTU1J1bGVMaXN0KiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9p
bXBsLmdldCgpOyB9Ci0gIHByaXZhdGU6Ci0gICAgc3RhdGljIEpTVmFsdWUqIGluZGV4R2V0dGVy
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5
U2xvdCYpOwotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNTU1J1bGVMaXN0PiBtX2ltcGw7Ci0gIH07
Ci0KLSAgSlNWYWx1ZSogdG9KUyhFeGVjU3RhdGUqLCBXZWJDb3JlOjpDU1NSdWxlTGlzdCopOwot
CiAgIGNsYXNzIERPTUNTU1J1bGUgOiBwdWJsaWMgRE9NT2JqZWN0IHsKICAgcHVibGljOgogICAg
IERPTUNTU1J1bGUoRXhlY1N0YXRlKiwgV2ViQ29yZTo6Q1NTUnVsZSopOwpAQCAtMjExLDE5ICsx
OTIsNiBAQAogCiAgIEpTVmFsdWUqIHRvSlMoRXhlY1N0YXRlKiwgV2ViQ29yZTo6Q1NTVmFsdWUq
KTsKIAotICBjbGFzcyBET01DU1NWYWx1ZUxpc3QgOiBwdWJsaWMgRE9NQ1NTVmFsdWUgewotICBw
dWJsaWM6Ci0gICAgRE9NQ1NTVmFsdWVMaXN0KEV4ZWNTdGF0ZSosIFdlYkNvcmU6OkNTU1ZhbHVl
TGlzdCopOwotICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTVmFsdWUqIGdldFZhbHVl
UHJvcGVydHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKLSAgICAvLyBubyBwdXQgLSBh
bGwgcmVhZC1vbmx5Ci0gICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNv
bnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwot
ICAgIGVudW0geyBMZW5ndGgsIEl0ZW0gfTsKLSAgcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNWYWx1
ZSogaW5kZXhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90Jik7Ci0gIH07Ci0KICAgY2xhc3MgRE9NUkdCQ29sb3IgOiBwdWJs
aWMgRE9NT2JqZWN0IHsKICAgcHVibGljOgogICAgIERPTVJHQkNvbG9yKHVuc2lnbmVkIGNvbG9y
KSA6IG1fY29sb3IoY29sb3IpIHsgfQpJbmRleDogYmluZGluZ3MvanMva2pzX2h0bWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9ranNfaHRtbC5oCShyZXZpc2lvbiAxNDU3NykKKysrIGJp
bmRpbmdzL2pzL2tqc19odG1sLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAKICAg
ICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgc3RhdGlj
IGNvbnN0IENsYXNzSW5mbyBpbmZvOwogCi0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBmb3Jt
X2luZm8sCisgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbwogICAgICAgc2VsZWN0X2luZm8sIG9i
amVjdF9pbmZvLCAKICAgICAgIGVtYmVkX2luZm8sIHRhYmxlX2luZm8sIGNhcHRpb25faW5mbywg
Y29sX2luZm8sIHRhYmxlc2VjdGlvbl9pbmZvLCB0cl9pbmZvLAogICAgICAgdGFibGVjZWxsX2lu
Zm8sIGZyYW1lU2V0X2luZm8sIGZyYW1lX2luZm8sIGlGcmFtZV9pbmZvLCBtYXJxdWVlX2luZm87
CkBAIC04OCwxMyArODgsMTEgQEAKICAgICB0eXBlZGVmIHZvaWQgKEpTSFRNTEVsZW1lbnQ6OipT
ZXR0ZXJGdW5jdGlvbikoRXhlY1N0YXRlKiwgaW50IHRva2VuLCBKU1ZhbHVlKiwgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJik7CiAgICAgc3RydWN0IEFjY2Vzc29ycyB7IEdldHRlckZ1bmN0aW9uIG1f
Z2V0dGVyOyBTZXR0ZXJGdW5jdGlvbiBtX3NldHRlcjsgfTsKICAgICBjb25zdCBBY2Nlc3NvcnMq
IGFjY2Vzc29ycygpIGNvbnN0OwotICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NvcnMgZm9ybV9hY2Nl
c3NvcnMsCisgICAgc3RhdGljIGNvbnN0IEFjY2Vzc29ycwogICAgICAgc2VsZWN0X2FjY2Vzc29y
cywgb2JqZWN0X2FjY2Vzc29ycywgZW1iZWRfYWNjZXNzb3JzLCB0YWJsZV9hY2Nlc3NvcnMsCiAg
ICAgICBjYXB0aW9uX2FjY2Vzc29ycywgY29sX2FjY2Vzc29ycywgdGFibGVzZWN0aW9uX2FjY2Vz
c29ycywgdHJfYWNjZXNzb3JzLAogICAgICAgdGFibGVjZWxsX2FjY2Vzc29ycywgZnJhbWVTZXRf
YWNjZXNzb3JzLCBmcmFtZV9hY2Nlc3NvcnMsIGlGcmFtZV9hY2Nlc3NvcnMsIG1hcnF1ZWVfYWNj
ZXNzb3JzOwogCi0gICAgSlNWYWx1ZSogZm9ybUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGludCB0
b2tlbikgY29uc3Q7Ci0gICAgdm9pZCAgZm9ybVNldHRlcihFeGVjU3RhdGUqLCBpbnQgdG9rZW4s
IEpTVmFsdWUqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICBKU1ZhbHVlKiBzZWxlY3RH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4pIGNvbnN0OwogICAgIHZvaWQgIHNlbGVj
dFNldHRlcihFeGVjU3RhdGUqLCBpbnQgdG9rZW4sIEpTVmFsdWUqLCBjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKICAgICBKU1ZhbHVlKiBvYmplY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBpbnQg
dG9rZW4pIGNvbnN0OwpAQCAtMTIzLDggKzEyMSw3IEBACiAgICAgdm9pZCAgbWFycXVlZVNldHRl
cihFeGVjU3RhdGUqLCBpbnQgdG9rZW4sIEpTVmFsdWUqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcm
KTsKIAogICAgIGVudW0gewotICAgICAgICAgICBGb3JtQWN0aW9uLCBGb3JtRW5jVHlwZSwgRm9y
bUVsZW1lbnRzLCBGb3JtTGVuZ3RoLCBGb3JtQWNjZXB0Q2hhcnNldCwKLSAgICAgICAgICAgRm9y
bVJlc2V0LCBGb3JtVGFyZ2V0LCBGb3JtTmFtZSwgRm9ybU1ldGhvZCwgRm9ybVN1Ym1pdCwgU2Vs
ZWN0QWRkLAorICAgICAgICAgICBTZWxlY3RBZGQsCiAgICAgICAgICAgIFNlbGVjdFRhYkluZGV4
LCBTZWxlY3RWYWx1ZSwgU2VsZWN0U2VsZWN0ZWRJbmRleCwgU2VsZWN0TGVuZ3RoLAogICAgICAg
ICAgICBTZWxlY3RSZW1vdmUsIFNlbGVjdEZvcm0sIFNlbGVjdEJsdXIsIFNlbGVjdFR5cGUsIFNl
bGVjdE9wdGlvbnMsCiAgICAgICAgICAgIFNlbGVjdERpc2FibGVkLCBTZWxlY3RNdWx0aXBsZSwg
U2VsZWN0TmFtZSwgU2VsZWN0U2l6ZSwgU2VsZWN0Rm9jdXMsCkBAIC0xNjEsOCArMTU4LDYgQEAK
ICAgICAgICAgICAgRWxlbWVudElzQ29udGVudEVkaXRhYmxlLCBFbGVtZW50T3V0ZXJIVE1MLCBF
bGVtZW50T3V0ZXJUZXh0CiAgIH07CiAgIHByaXZhdGU6Ci0gICAgc3RhdGljIEpTVmFsdWUqIGZv
cm1JbmRleEdldHRlcihFeGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSogZm9ybU5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIEpTVmFsdWUqIHNlbGVjdEluZGV4R2V0dGVyKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBKU1ZhbHVlKiBmcmFtZXNldE5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIEpT
VmFsdWUqIGZyYW1lV2luZG93UHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CkluZGV4OiBiaW5kaW5ncy9q
cy9ranNfZG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9ranNfZG9tLmNwcAkocmV2
aXNpb24gMTQ1NzcpCisrKyBiaW5kaW5ncy9qcy9ranNfZG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzMzLDcgKzczMyw3IEBACiBKU1ZhbHVlICpET01Ob2RlTGlzdDo6bmFtZUdldHRlcihFeGVj
U3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICpvcmlnaW5hbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgIERPTU5vZGVMaXN0
ICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8RE9NTm9kZUxpc3QqPihzbG90LnNsb3RCYXNlKCkpOwot
ICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5tX2ltcGwtPml0ZW1CeUlkKHByb3BlcnR5TmFt
ZSkpOworICByZXR1cm4gdG9KUyhleGVjLCB0aGlzT2JqLT5tX2ltcGwtPml0ZW1XaXRoTmFtZShw
cm9wZXJ0eU5hbWUpKTsKIH0KIAogYm9vbCBET01Ob2RlTGlzdDo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCkBAIC03NDgsMTUgKzc0OCwxMyBAQAogICAgIHJldHVybiB0cnVlOwogICB9
CiAKLSAgTm9kZUxpc3QgJmxpc3QgPSAqbV9pbXBsOwotCiAgIC8vIGFycmF5IGluZGV4ID8KICAg
Ym9vbCBvazsKICAgdW5zaWduZWQgaWR4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvayk7Ci0g
IGlmIChvayAmJiBpZHggPCBsaXN0Lmxlbmd0aCgpKSB7CisgIGlmIChvayAmJiBpZHggPCBtX2lt
cGwtPmxlbmd0aCgpKSB7CiAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzLCBpZHgsIGluZGV4
R2V0dGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIGlmIChsaXN0Lml0ZW1CeUlkKFN0
cmluZyhwcm9wZXJ0eU5hbWUpLmltcGwoKSkpIHsKKyAgfSBlbHNlIGlmIChtX2ltcGwtPml0ZW1X
aXRoTmFtZShTdHJpbmcocHJvcGVydHlOYW1lKS5pbXBsKCkpKSB7CiAgICAgc2xvdC5zZXRDdXN0
b20odGhpcywgbmFtZUdldHRlcik7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KSW5kZXg6IGJpbmRp
bmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdz
L2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAxNDU3NykKKysrIGJpbmRp
bmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8vIFNldFNlbGVjdGlvblJhbmdlIGlzIGlt
cGxlbWVudGVkIG9uIHRoZSBjbGFzcyBpbnN0ZWFkIG9mIG9uIHRoZSBwcm90b3R5cGUsIGludGVu
dGlvbmFsbHkuCisvLyBTZXRTZWxlY3Rpb25SYW5nZSBpcyBpbXBsZW1lbnRlZCBvbiB0aGUgY2xh
c3MgaW5zdGVhZCBvZiBvbiB0aGUgcHJvdG90eXBlCisvLyB0byBtYWtlIGl0IGVhc2llciB0byBl
bmFibGUvZGlzYWJsZSBsb29rdXAgb2YgdGhlIGZ1bmN0aW9uIGJhc2VkIG9uIGlucHV0IHR5cGUu
CiBjbGFzcyBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbkltcCB7CiBwdWJsaWM6CiAgICAgSlNIVE1MSW5wdXRFbGVtZW50QmFzZUZ1bmN0aW9u
KEV4ZWNTdGF0ZSosIGludCBpLCBpbnQgbGVuLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKSW5k
ZXg6IGJpbmRpbmdzL2pzL2tqc19jc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL2tq
c19jc3MuY3BwCShyZXZpc2lvbiAxNDU3NykKKysrIGJpbmRpbmdzL2pzL2tqc19jc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiSlNDU1NQcmltaXRpdmVW
YWx1ZS5oIgogI2luY2x1ZGUgIkpTQ1NTUnVsZS5oIgogI2luY2x1ZGUgIkpTQ1NTU3R5bGVEZWNs
YXJhdGlvbi5oIgorI2luY2x1ZGUgIkpTQ1NTUnVsZUxpc3QuaCIKKyNpbmNsdWRlICJKU0NTU1Zh
bHVlTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRM
aXN0LmgiCiAjaW5jbHVkZSAia2pzX2RvbS5oIgpAQCAtNjM4LDg2ICs2NDAsNiBAQAogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBET01DU1NSdWxlTGlzdDo6aW5mbyA9
IHsgIkNTU1J1bGVMaXN0IiwgMCwgJkRPTUNTU1J1bGVMaXN0VGFibGUsIDAgfTsKLS8qCi1AYmVn
aW4gRE9NQ1NTUnVsZUxpc3RUYWJsZSAyCi0gIGxlbmd0aCAgICAgICAgICAgICAgICBET01DU1NS
dWxlTGlzdDo6TGVuZ3RoICAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgaXRlbSAgICAg
ICAgICAgICAgICAgIERPTUNTU1J1bGVMaXN0OjpJdGVtICAgICAgICAgICAgRG9udERlbGV0ZXxG
dW5jdGlvbiAxCi1AZW5kCi0qLwotS0pTX0lNUExFTUVOVF9QUk9UT0ZVTkMoRE9NQ1NTUnVsZUxp
c3RGdW5jKSAvLyBub3QgcmVhbGx5IGEgcHJvdG8sIGJ1dCBkb2Vzbid0IG1hdHRlcgotCi1ET01D
U1NSdWxlTGlzdDo6RE9NQ1NTUnVsZUxpc3QoRXhlY1N0YXRlICosIFdlYkNvcmU6OkNTU1J1bGVM
aXN0ICpybCkgCi0gIDogbV9pbXBsKHJsKSAKLXsgCi19Ci0KLURPTUNTU1J1bGVMaXN0Ojp+RE9N
Q1NTUnVsZUxpc3QoKQotewotICBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NT2JqZWN0KG1f
aW1wbC5nZXQoKSk7Ci19Ci0KLUpTVmFsdWUqIERPTUNTU1J1bGVMaXN0OjpnZXRWYWx1ZVByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdAotewotICBzd2l0Y2ggKHRva2Vu
KSB7Ci0gIGNhc2UgTGVuZ3RoOgotICAgIHJldHVybiBqc051bWJlcihtX2ltcGwtPmxlbmd0aCgp
KTsKLSAgZGVmYXVsdDoKLSAgICBhc3NlcnQoMCk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Ci0gIH0KLX0KLQotSlNWYWx1ZSogRE9NQ1NTUnVsZUxpc3Q6OmluZGV4R2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgRE9NQ1NTUnVsZUxpc3Qg
KnRoaXNPYmogPSBzdGF0aWNfY2FzdDxET01DU1NSdWxlTGlzdCo+KHNsb3Quc2xvdEJhc2UoKSk7
Ci0gIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPm1faW1wbC0+aXRlbShzbG90LmluZGV4KCkp
KTsKLX0KLQotYm9vbCBET01DU1NSdWxlTGlzdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCi17Ci0gIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBMb29rdXA6OmZpbmRFbnRyeSgmRE9N
Q1NTUnVsZUxpc3RUYWJsZSwgcHJvcGVydHlOYW1lKTsKLQotICBpZiAoZW50cnkpIHsKLSAgICBp
ZiAoZW50cnktPmF0dHIgJiBGdW5jdGlvbikKLSAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhp
cywgZW50cnksIHN0YXRpY0Z1bmN0aW9uR2V0dGVyPERPTUNTU1J1bGVMaXN0RnVuYz4pOwotICAg
IGVsc2UKLSAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhpcywgZW50cnksIHN0YXRpY1ZhbHVl
R2V0dGVyPERPTUNTU1J1bGVMaXN0Pik7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBDU1NS
dWxlTGlzdCAmY3NzUnVsZUxpc3QgPSAqbV9pbXBsOwotCi0gIGJvb2wgb2s7Ci0gIHVuc2lnbmVk
IHUgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKLSAgaWYgKG9rICYmIHUgPCBjc3NSdWxl
TGlzdC5sZW5ndGgoKSkgewotICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgdSwgaW5kZXhH
ZXR0ZXIpOwotICAgIHJldHVybiB0cnVlOwotICB9Ci0KLSAgcmV0dXJuIERPTU9iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLUpTVmFsdWUq
IERPTUNTU1J1bGVMaXN0RnVuYzo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogdGhpc09iaiwgY29uc3QgTGlzdCAmYXJncykKLXsKLSAgaWYgKCF0aGlzT2JqLT5pbmhl
cml0cygmS0pTOjpET01DU1NSdWxlTGlzdDo6aW5mbykpCi0gICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgVHlwZUVycm9yKTsKLSAgQ1NTUnVsZUxpc3QgJmNzc1J1bGVMaXN0ID0gKnN0YXRpY19j
YXN0PERPTUNTU1J1bGVMaXN0Kj4odGhpc09iaiktPmltcGwoKTsKLSAgc3dpdGNoIChpZCkgewot
ICAgIGNhc2UgRE9NQ1NTUnVsZUxpc3Q6Okl0ZW06Ci0gICAgICByZXR1cm4gdG9KUyhleGVjLGNz
c1J1bGVMaXN0Lml0ZW0oYXJnc1swXS0+dG9JbnQzMihleGVjKSkpOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgfQotfQotCi1KU1ZhbHVlKiB0b0pTKEV4ZWNT
dGF0ZSogZXhlYywgQ1NTUnVsZUxpc3QgKnJsKQotewotICByZXR1cm4gY2FjaGVET01PYmplY3Q8
Q1NTUnVsZUxpc3QsIERPTUNTU1J1bGVMaXN0PihleGVjLCBybCk7Ci19Ci0KLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQogS0pTX0lNUExFTUVOVF9QUk9UT0ZVTkMoRE9NQ1NTUnVsZUZ1bmMpIC8vIE5v
dCBhIHByb3RvLCBidXQgZG9lc24ndCBtYXR0ZXIKIAogRE9NQ1NTUnVsZTo6RE9NQ1NTUnVsZShF
eGVjU3RhdGUqLCBXZWJDb3JlOjpDU1NSdWxlKiByKQpAQCAtOTgyLDcgKzkwNCw3IEBACiAgICAg
cmV0dXJuIHJldDsKICAgZWxzZSB7CiAgICAgaWYgKHYtPmlzVmFsdWVMaXN0KCkpCi0gICAgICBy
ZXQgPSBuZXcgRE9NQ1NTVmFsdWVMaXN0KGV4ZWMsIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHYpKTsKKyAgICAgIHJldCA9IG5ldyBKU0NTU1ZhbHVlTGlzdChleGVjLCBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUxpc3QqPih2KSk7CiAgICAgZWxzZSBpZiAodi0+aXNQcmltaXRpdmVWYWx1ZSgpKQog
ICAgICAgcmV0ID0gbmV3IEpTQ1NTUHJpbWl0aXZlVmFsdWUoZXhlYywgc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2KSk7CiAgICAgZWxzZQpAQCAtOTk0LDY5ICs5MTYsNiBAQAogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBET01DU1NWYWx1ZUxpc3Q6Omlu
Zm8gPSB7ICJDU1NWYWx1ZUxpc3QiLCAwLCAmRE9NQ1NTVmFsdWVMaXN0VGFibGUsIDAgfTsKLQot
LyoKLUBiZWdpbiBET01DU1NWYWx1ZUxpc3RUYWJsZSAzCi0gIGxlbmd0aCAgICAgICAgICAgICAg
ICBET01DU1NWYWx1ZUxpc3Q6Okxlbmd0aCAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAg
aXRlbSAgICAgICAgICAgICAgICAgIERPTUNTU1ZhbHVlTGlzdDo6SXRlbSAgICAgICAgICAgRG9u
dERlbGV0ZXxGdW5jdGlvbiAxCi1AZW5kCi0qLwotS0pTX0lNUExFTUVOVF9QUk9UT0ZVTkMoRE9N
Q1NTVmFsdWVMaXN0RnVuYykgLy8gbm90IHJlYWxseSBhIHByb3RvLCBidXQgZG9lc24ndCBtYXR0
ZXIKLQotRE9NQ1NTVmFsdWVMaXN0OjpET01DU1NWYWx1ZUxpc3QoRXhlY1N0YXRlKiBleGVjLCBD
U1NWYWx1ZUxpc3QgKnYpCi0gIDogRE9NQ1NTVmFsdWUoZXhlYywgdikgCi17IAotfQotCi1KU1Zh
bHVlKiBET01DU1NWYWx1ZUxpc3Q6OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBp
bnQgdG9rZW4pIGNvbnN0Ci17Ci0gIGFzc2VydCh0b2tlbiA9PSBMZW5ndGgpOwotICByZXR1cm4g
anNOdW1iZXIoc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oaW1wbCgpKS0+bGVuZ3RoKCkpOwot
fQotCi1KU1ZhbHVlKiBET01DU1NWYWx1ZUxpc3Q6OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgRE9NQ1NTVmFsdWVMaXN0ICp0aGlz
T2JqID0gc3RhdGljX2Nhc3Q8RE9NQ1NTVmFsdWVMaXN0Kj4oc2xvdC5zbG90QmFzZSgpKTsKLSAg
cmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odGhpc09iai0+aW1w
bCgpKS0+aXRlbShzbG90LmluZGV4KCkpKTsKLX0KLQotYm9vbCBET01DU1NWYWx1ZUxpc3Q6Omdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotewotICBDU1NWYWx1ZUxpc3QgJnZhbHVlTGlz
dCA9ICpzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihpbXBsKCkpOwotICBjb25zdCBIYXNoRW50
cnkqIGVudHJ5ID0gTG9va3VwOjpmaW5kRW50cnkoJkRPTUNTU1ZhbHVlTGlzdFRhYmxlLCBwcm9w
ZXJ0eU5hbWUpOwotICBpZiAoZW50cnkpIHsKLSAgICBpZiAoZW50cnktPmF0dHIgJiBGdW5jdGlv
bikKLSAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhpcywgZW50cnksIHN0YXRpY0Z1bmN0aW9u
R2V0dGVyPERPTUNTU1ZhbHVlTGlzdEZ1bmM+KTsKLSAgICBlbHNlCi0gICAgICBzbG90LnNldFN0
YXRpY0VudHJ5KHRoaXMsIGVudHJ5LCBzdGF0aWNWYWx1ZUdldHRlcjxET01DU1NWYWx1ZUxpc3Q+
KTsKLSAgfQotCi0gIGJvb2wgb2s7Ci0gIHVuc2lnbmVkIHUgPSBwcm9wZXJ0eU5hbWUudG9VSW50
MzIoJm9rKTsKLSAgaWYgKG9rICYmIHUgPCB2YWx1ZUxpc3QubGVuZ3RoKCkpIHsKLSAgICBzbG90
LnNldEN1c3RvbUluZGV4KHRoaXMsIHUsIGluZGV4R2V0dGVyKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LSAgfQotCi0gIHJldHVybiBET01DU1NWYWx1ZTo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLUpTVmFsdWUqIERPTUNTU1ZhbHVlTGlzdEZ1bmM6OmNh
bGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IExp
c3QgJmFyZ3MpCi17Ci0gIGlmICghdGhpc09iai0+aW5oZXJpdHMoJktKUzo6RE9NQ1NTVmFsdWU6
OmluZm8pKQotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gIENTU1Zh
bHVlTGlzdCAmdmFsdWVMaXN0ID0gKnN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHN0YXRpY19j
YXN0PERPTUNTU1ZhbHVlTGlzdCo+KHRoaXNPYmopLT5pbXBsKCkpOwotICBzd2l0Y2ggKGlkKSB7
Ci0gICAgY2FzZSBET01DU1NWYWx1ZUxpc3Q6Okl0ZW06Ci0gICAgICByZXR1cm4gdG9KUyhleGVj
LHZhbHVlTGlzdC5pdGVtKGFyZ3NbMF0tPnRvSW50MzIoZXhlYykpKTsKLSAgICBkZWZhdWx0Ogot
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gIH0KLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCiBjb25zdCBDbGFzc0luZm8gRE9NUkdCQ29sb3I6OmluZm8gPSB7ICJSR0JDb2xvciIsIDAs
ICZET01SR0JDb2xvclRhYmxlLCAwIH07CiAKIC8qCkluZGV4OiBiaW5kaW5ncy9qcy9KU0hUTUxF
bGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTSFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAJKHJldmlzaW9uIDE0NTc3KQorKysgYmluZGluZ3Mv
anMvSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxETGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
RmllbGRTZXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvbnRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEhlYWRpbmdFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhSRWxlbWVudC5oIgpA
QCAtNzksNiArODAsNyBAQAogI2luY2x1ZGUgIkpTSFRNTERMaXN0RWxlbWVudC5oIgogI2luY2x1
ZGUgIkpTSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTEZvbnRFbGVtZW50
LmgiCisjaW5jbHVkZSAiSlNIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxIZWFk
RWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTEhlYWRpbmdFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SlNIVE1MSFJFbGVtZW50LmgiCkBAIC0xMzUsNiArMTM3LDcgQEAKICAgICBtYWNybyhkaXYsIERp
dikgXAogICAgIG1hY3JvKGRsLCBETGlzdCkgXAogICAgIG1hY3JvKGZpZWxkc2V0LCBGaWVsZFNl
dCkgXAorICAgIG1hY3JvKGZvcm0sIEZvcm0pIFwKICAgICBtYWNybyhmb250LCBGb250KSBcCiAg
ICAgbWFjcm8oaDEsIEhlYWRpbmcpIFwKICAgICBtYWNybyhoZWFkLCBIZWFkKSBcCkBAIC0xODgs
OSArMTkxLDkgQEAKICAgICAgICAgbWFwLnNldChpbnNUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBj
cmVhdGVNb2RXcmFwcGVyKTsKICAgICAgICAgbWFwLnNldChsaXN0aW5nVGFnLmxvY2FsTmFtZSgp
LmltcGwoKSwgY3JlYXRlUHJlV3JhcHBlcik7CiAgICAgfQotICAgIENyZWF0ZUhUTUxFbGVtZW50
V3JhcHBlckZ1bmN0aW9uIGYgPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7
Ci0gICAgaWYgKGYpCi0gICAgICAgIHJldHVybiBmKGV4ZWMsIGVsZW1lbnQpOworICAgIENyZWF0
ZUhUTUxFbGVtZW50V3JhcHBlckZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbiA9IG1hcC5n
ZXQoZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKTsKKyAgICBpZiAoY3JlYXRlV3JhcHBlckZ1
bmN0aW9uKQorICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGV4ZWMsIGVsZW1l
bnQpOwogICAgIHJldHVybiBuZXcgS0pTOjpKU0hUTUxFbGVtZW50KGV4ZWMsIGVsZW1lbnQuZ2V0
KCkpOwogfQogCkluZGV4OiBiaW5kaW5ncy9qcy9ranNfaHRtbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
YmluZGluZ3MvanMva2pzX2h0bWwuY3BwCShyZXZpc2lvbiAxNDU3NykKKysrIGJpbmRpbmdzL2pz
L2tqc19odG1sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQzLDcgKzQ0Myw2IEBACiBjb25zdCBD
bGFzc0luZm8gSlNIVE1MRWxlbWVudDo6Y2FwdGlvbl9pbmZvID0geyAiSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQiLCAmSlNIVE1MRWxlbWVudDo6aW5mbywgJkhUTUxUYWJsZUNhcHRpb25FbGVtZW50
VGFibGUsIDAgfTsKIGNvbnN0IENsYXNzSW5mbyBKU0hUTUxFbGVtZW50Ojpjb2xfaW5mbyA9IHsg
IkhUTUxUYWJsZUNvbEVsZW1lbnQiLCAmSlNIVE1MRWxlbWVudDo6aW5mbywgJkhUTUxUYWJsZUNv
bEVsZW1lbnRUYWJsZSwgMCB9OwogY29uc3QgQ2xhc3NJbmZvIEpTSFRNTEVsZW1lbnQ6OmVtYmVk
X2luZm8gPSB7ICJIVE1MRW1iZWRFbGVtZW50IiwgJkpTSFRNTEVsZW1lbnQ6OmluZm8sICZIVE1M
RW1iZWRFbGVtZW50VGFibGUsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU0hUTUxFbGVtZW50Ojpm
b3JtX2luZm8gPSB7ICJIVE1MRm9ybUVsZW1lbnQiLCAmSlNIVE1MRWxlbWVudDo6aW5mbywgJkhU
TUxGb3JtRWxlbWVudFRhYmxlLCAwIH07CiBjb25zdCBDbGFzc0luZm8gSlNIVE1MRWxlbWVudDo6
ZnJhbWVTZXRfaW5mbyA9IHsgIkhUTUxGcmFtZVNldEVsZW1lbnQiLCAmSlNIVE1MRWxlbWVudDo6
aW5mbywgJkhUTUxGcmFtZVNldEVsZW1lbnRUYWJsZSwgMCB9OwogY29uc3QgQ2xhc3NJbmZvIEpT
SFRNTEVsZW1lbnQ6OmZyYW1lX2luZm8gPSB7ICJIVE1MRnJhbWVFbGVtZW50IiwgJkpTSFRNTEVs
ZW1lbnQ6OmluZm8sICZIVE1MRnJhbWVFbGVtZW50VGFibGUsIDAgfTsKIGNvbnN0IENsYXNzSW5m
byBKU0hUTUxFbGVtZW50OjppRnJhbWVfaW5mbyA9IHsgIkhUTUxJRnJhbWVFbGVtZW50IiwgJkpT
SFRNTEVsZW1lbnQ6OmluZm8sICZIVE1MSUZyYW1lRWxlbWVudFRhYmxlLCAwIH07CkBAIC00NjQs
NyArNDYzLDYgQEAKICAgICAgICAgY2xhc3NJbmZvTWFwLnNldChjb2xUYWcubG9jYWxOYW1lKCku
aW1wbCgpLCAmY29sX2luZm8pOwogICAgICAgICBjbGFzc0luZm9NYXAuc2V0KGNvbGdyb3VwVGFn
LmxvY2FsTmFtZSgpLmltcGwoKSwgJmNvbF9pbmZvKTsKICAgICAgICAgY2xhc3NJbmZvTWFwLnNl
dChlbWJlZFRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZlbWJlZF9pbmZvKTsKLSAgICAgICAgY2xh
c3NJbmZvTWFwLnNldChmb3JtVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJmZvcm1faW5mbyk7CiAg
ICAgICAgIGNsYXNzSW5mb01hcC5zZXQoZnJhbWVUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmZnJh
bWVfaW5mbyk7CiAgICAgICAgIGNsYXNzSW5mb01hcC5zZXQoZnJhbWVzZXRUYWcubG9jYWxOYW1l
KCkuaW1wbCgpLCAmZnJhbWVTZXRfaW5mbyk7CiAgICAgICAgIGNsYXNzSW5mb01hcC5zZXQoaWZy
YW1lVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJmlGcmFtZV9pbmZvKTsKQEAgLTQ4Nyw3ICs0ODUs
NiBAQAogICAgIHJldHVybiAmaW5mbzsKIH0KIAotY29uc3QgSlNIVE1MRWxlbWVudDo6QWNjZXNz
b3JzIEpTSFRNTEVsZW1lbnQ6OmZvcm1fYWNjZXNzb3JzID0geyAmSlNIVE1MRWxlbWVudDo6Zm9y
bUdldHRlciwgJkpTSFRNTEVsZW1lbnQ6OmZvcm1TZXR0ZXIgfTsKIGNvbnN0IEpTSFRNTEVsZW1l
bnQ6OkFjY2Vzc29ycyBKU0hUTUxFbGVtZW50OjpzZWxlY3RfYWNjZXNzb3JzID0geyAmSlNIVE1M
RWxlbWVudDo6c2VsZWN0R2V0dGVyLCAmSlNIVE1MRWxlbWVudDo6c2VsZWN0U2V0dGVyIH07CiBj
b25zdCBKU0hUTUxFbGVtZW50OjpBY2Nlc3NvcnMgSlNIVE1MRWxlbWVudDo6b2JqZWN0X2FjY2Vz
c29ycyA9IHsgJkpTSFRNTEVsZW1lbnQ6Om9iamVjdEdldHRlciwgJkpTSFRNTEVsZW1lbnQ6Om9i
amVjdFNldHRlciB9OwogY29uc3QgSlNIVE1MRWxlbWVudDo6QWNjZXNzb3JzIEpTSFRNTEVsZW1l
bnQ6OmVtYmVkX2FjY2Vzc29ycyA9IHsgJkpTSFRNTEVsZW1lbnQ6OmVtYmVkR2V0dGVyLCAmSlNI
VE1MRWxlbWVudDo6ZW1iZWRTZXR0ZXIgfTsKQEAgLTUxMCw3ICs1MDcsNiBAQAogICAgICAgICBh
Y2Nlc3Nvck1hcC5hZGQoY29sVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJmNvbF9hY2Nlc3NvcnMp
OwogICAgICAgICBhY2Nlc3Nvck1hcC5hZGQoY29sZ3JvdXBUYWcubG9jYWxOYW1lKCkuaW1wbCgp
LCAmY29sX2FjY2Vzc29ycyk7CiAgICAgICAgIGFjY2Vzc29yTWFwLmFkZChlbWJlZFRhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksICZlbWJlZF9hY2Nlc3NvcnMpOwotICAgICAgICBhY2Nlc3Nvck1hcC5h
ZGQoZm9ybVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZmb3JtX2FjY2Vzc29ycyk7CiAgICAgICAg
IGFjY2Vzc29yTWFwLmFkZChmcmFtZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZmcmFtZV9hY2Nl
c3NvcnMpOwogICAgICAgICBhY2Nlc3Nvck1hcC5hZGQoZnJhbWVzZXRUYWcubG9jYWxOYW1lKCku
aW1wbCgpLCAmZnJhbWVTZXRfYWNjZXNzb3JzKTsKICAgICAgICAgYWNjZXNzb3JNYXAuYWRkKGlm
cmFtZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZpRnJhbWVfYWNjZXNzb3JzKTsKQEAgLTU1MSwx
OSArNTQ3LDYgQEAKICAgY29udGVudEVkaXRhYmxlICAgS0pTOjpKU0hUTUxFbGVtZW50OjpFbGVt
ZW50Q29udGVudEVkaXRhYmxlICBEb250RGVsZXRlCiAgIGlzQ29udGVudEVkaXRhYmxlIEtKUzo6
SlNIVE1MRWxlbWVudDo6RWxlbWVudElzQ29udGVudEVkaXRhYmxlICBEb250RGVsZXRlfFJlYWRP
bmx5CiBAZW5kCi1AYmVnaW4gSFRNTEZvcm1FbGVtZW50VGFibGUgMTEKLSMgQWxzbyBzdXBwb3J0
ZWQsIGJ5IG5hbWUvaW5kZXgKLSAgZWxlbWVudHMgICAgICBLSlM6OkpTSFRNTEVsZW1lbnQ6OkZv
cm1FbGVtZW50cyAgRG9udERlbGV0ZXxSZWFkT25seQotICBsZW5ndGggICAgICAgIEtKUzo6SlNI
VE1MRWxlbWVudDo6Rm9ybUxlbmd0aCAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG5hbWUgICAg
ICAgICAgS0pTOjpKU0hUTUxFbGVtZW50OjpGb3JtTmFtZSAgICAgIERvbnREZWxldGUKLSAgYWNj
ZXB0Q2hhcnNldCBLSlM6OkpTSFRNTEVsZW1lbnQ6OkZvcm1BY2NlcHRDaGFyc2V0ICAgICBEb250
RGVsZXRlCi0gIGFjdGlvbiAgICAgICAgS0pTOjpKU0hUTUxFbGVtZW50OjpGb3JtQWN0aW9uICAg
IERvbnREZWxldGUKLSAgZW5jdHlwZSAgICAgICBLSlM6OkpTSFRNTEVsZW1lbnQ6OkZvcm1FbmNU
eXBlICAgRG9udERlbGV0ZQotICBtZXRob2QgICAgICAgIEtKUzo6SlNIVE1MRWxlbWVudDo6Rm9y
bU1ldGhvZCAgICBEb250RGVsZXRlCi0gIHRhcmdldCAgICAgICAgS0pTOjpKU0hUTUxFbGVtZW50
OjpGb3JtVGFyZ2V0ICAgIERvbnREZWxldGUKLSAgc3VibWl0ICAgICAgICBLSlM6OkpTSFRNTEVs
ZW1lbnQ6OkZvcm1TdWJtaXQgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCi0gIHJlc2V0ICAgICAg
ICAgS0pTOjpKU0hUTUxFbGVtZW50OjpGb3JtUmVzZXQgICAgIERvbnREZWxldGV8RnVuY3Rpb24g
MAotQGVuZAogQGJlZ2luIEhUTUxTZWxlY3RFbGVtZW50VGFibGUgMTEKICMgQWxzbyBzdXBwb3J0
ZWQsIGJ5IGluZGV4CiAgIHR5cGUgICAgICAgICAgS0pTOjpKU0hUTUxFbGVtZW50OjpTZWxlY3RU
eXBlICAgIERvbnREZWxldGV8UmVhZE9ubHkKQEAgLTczOSwyMiArNzIyLDYgQEAKICAgICBzZXRQ
cm90b3R5cGUoSlNIVE1MRWxlbWVudFByb3RvOjpzZWxmKGV4ZWMpKTsKIH0KIAotSlNWYWx1ZSAq
SlNIVE1MRWxlbWVudDo6Zm9ybUluZGV4R2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3Qg
Km9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBKU0hUTUxFbGVtZW50ICp0aGlzT2JqID0gc3RhdGlj
X2Nhc3Q8SlNIVE1MRWxlbWVudCo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgSFRNTEZvcm1FbGVt
ZW50ICpmb3JtID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4odGhpc09iai0+aW1wbCgp
KTsKLQotICAgIHJldHVybiB0b0pTKGV4ZWMsIGZvcm0tPmVsZW1lbnRzKCktPml0ZW0oc2xvdC5p
bmRleCgpKSk7Ci19Ci0KLUpTVmFsdWUgKkpTSFRNTEVsZW1lbnQ6OmZvcm1OYW1lR2V0dGVyKEV4
ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKm9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBKU0hUTUxF
bGVtZW50ICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KHNsb3Quc2xvdEJh
c2UoKSk7Ci0gICAgSFRNTEZvcm1FbGVtZW50ICpmb3JtID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1F
bGVtZW50Kj4odGhpc09iai0+aW1wbCgpKTsKLSAgICAKLSAgICByZXR1cm4gSlNIVE1MQ29sbGVj
dGlvbihleGVjLCBmb3JtLT5lbGVtZW50cygpLmdldCgpKS5nZXROYW1lZEl0ZW1zKGV4ZWMsIHBy
b3BlcnR5TmFtZSk7Ci19Ci0KIEpTVmFsdWUgKkpTSFRNTEVsZW1lbnQ6OnNlbGVjdEluZGV4R2V0
dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKm9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBK
U0hUTUxFbGVtZW50ICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KHNsb3Qu
c2xvdEJhc2UoKSk7CkBAIC03OTksMjMgKzc2Niw3IEBACiAgICAgSFRNTEVsZW1lbnQgJmVsZW1l
bnQgPSAqc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihpbXBsKCkpOwogCiAgICAgLy8gRmlyc3Qg
bG9vayBhdCBkeW5hbWljIHByb3BlcnRpZXMKLSAgICBpZiAoZWxlbWVudC5oYXNMb2NhbE5hbWUo
Zm9ybVRhZykpIHsKLSAgICAgICAgSFRNTEZvcm1FbGVtZW50ICZmb3JtID0gc3RhdGljX2Nhc3Q8
SFRNTEZvcm1FbGVtZW50ICY+KGVsZW1lbnQpOwotICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSBy
ZXRyaWV2aW5nIGFuIGVsZW1lbnQgKGJ5IGluZGV4IG9yIGJ5IG5hbWUpCi0gICAgICAgIGJvb2wg
b2s7Ci0gICAgICAgIHVuc2lnbmVkIHUgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKLSAg
ICAgICAgaWYgKG9rKSB7Ci0gICAgICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMsIHUs
IGZvcm1JbmRleEdldHRlcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIEZJWE1FOiBuZWVkIGZhc3RlciB3YXkgdG8gY2hlY2sgZm9yIGEgbmFtZWQg
aXRlbSBhbmQvb3IgYSB3YXkgdG8gcGFzcyBvbiB0aGUgbmFtZWQgaXRlbXMgc3ViY29sbGVjdGlv
bgotICAgICAgICBKU1ZhbHVlICpuYW1lZEl0ZW1zID0gSlNIVE1MQ29sbGVjdGlvbihleGVjLCBm
b3JtLmVsZW1lbnRzKCkuZ2V0KCkpLmdldE5hbWVkSXRlbXMoZXhlYywgcHJvcGVydHlOYW1lKTsK
LSAgICAgICAgaWYgKCFuYW1lZEl0ZW1zLT5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICBz
bG90LnNldEN1c3RvbSh0aGlzLCBmb3JtTmFtZUdldHRlcik7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNMb2NhbE5hbWUoc2Vs
ZWN0VGFnKSkgeworICAgIGlmIChlbGVtZW50Lmhhc0xvY2FsTmFtZShzZWxlY3RUYWcpKSB7CiAg
ICAgICAgIGJvb2wgb2s7CiAgICAgICAgIHVuc2lnbmVkIHUgPSBwcm9wZXJ0eU5hbWUudG9VSW50
MzIoJm9rKTsKICAgICAgICAgaWYgKG9rKSB7CkBAIC04ODEsMjIgKzgzMiw2IEBACiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLUpTVmFsdWUgKkpTSFRNTEVsZW1lbnQ6OmZvcm1HZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4pIGNvbnN0Ci17Ci0gICAgSFRNTEZvcm1FbGVt
ZW50JiBmb3JtID0gKnN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGltcGwoKSk7Ci0gICAg
c3dpdGNoICh0b2tlbikgewotICAgICAgICBjYXNlIEZvcm1FbGVtZW50czogICAgICAgIHJldHVy
biBnZXRIVE1MQ29sbGVjdGlvbihleGVjLCBmb3JtLmVsZW1lbnRzKCkuZ2V0KCkpOwotICAgICAg
ICBjYXNlIEZvcm1MZW5ndGg6ICAgICAgICAgIHJldHVybiBqc051bWJlcihmb3JtLmxlbmd0aCgp
KTsKLSAgICAgICAgY2FzZSBGb3JtTmFtZTogICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZm9y
bS5uYW1lKCkpOwotICAgICAgICBjYXNlIEZvcm1BY2NlcHRDaGFyc2V0OiAgIHJldHVybiBqc1N0
cmluZyhmb3JtLmFjY2VwdENoYXJzZXQoKSk7Ci0gICAgICAgIGNhc2UgRm9ybUFjdGlvbjogICAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nKGZvcm0uYWN0aW9uKCkpOwotICAgICAgICBjYXNlIEZvcm1F
bmNUeXBlOiAgICAgICAgIHJldHVybiBqc1N0cmluZyhmb3JtLmVuY3R5cGUoKSk7Ci0gICAgICAg
IGNhc2UgRm9ybU1ldGhvZDogICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGZvcm0ubWV0aG9kKCkp
OwotICAgICAgICBjYXNlIEZvcm1UYXJnZXQ6ICAgICAgICAgIHJldHVybiBqc1N0cmluZyhmb3Jt
LnRhcmdldCgpKTsKLSAgICB9Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIEpTVmFs
dWUgKkpTSFRNTEVsZW1lbnQ6OnNlbGVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tl
bikgY29uc3QKIHsKICAgICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0ID0gKnN0YXRpY19jYXN0
PEhUTUxTZWxlY3RFbGVtZW50Kj4oaW1wbCgpKTsKQEAgLTEyNDksMTggKzExODQsNyBAQAogICAg
IERPTUV4Y2VwdGlvblRyYW5zbGF0b3IgZXhjZXB0aW9uKGV4ZWMpOwogICAgIEhUTUxFbGVtZW50
ICZlbGVtZW50ID0gKnN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1M
RWxlbWVudCo+KHRoaXNPYmopLT5pbXBsKCkpOwogCi0gICAgaWYgKGVsZW1lbnQuaGFzTG9jYWxO
YW1lKGZvcm1UYWcpKSB7Ci0gICAgICAgIEhUTUxGb3JtRWxlbWVudCAmZm9ybSA9IHN0YXRpY19j
YXN0PEhUTUxGb3JtRWxlbWVudCAmPihlbGVtZW50KTsKLSAgICAgICAgaWYgKGlkID09IEpTSFRN
TEVsZW1lbnQ6OkZvcm1TdWJtaXQpIHsKLSAgICAgICAgICAgIGZvcm0uc3VibWl0KCk7Ci0gICAg
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlm
IChpZCA9PSBKU0hUTUxFbGVtZW50OjpGb3JtUmVzZXQpIHsKLSAgICAgICAgICAgIGZvcm0ucmVz
ZXQoKTsKLSAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICB9Ci0gICAg
fQotICAgIGVsc2UgaWYgKGVsZW1lbnQuaGFzTG9jYWxOYW1lKHNlbGVjdFRhZykpIHsKKyAgICBp
ZiAoZWxlbWVudC5oYXNMb2NhbE5hbWUoc2VsZWN0VGFnKSkgewogICAgICAgICBIVE1MU2VsZWN0
RWxlbWVudCAmc2VsZWN0ID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQgJj4oZWxlbWVu
dCk7CiAgICAgICAgIGlmIChpZCA9PSBKU0hUTUxFbGVtZW50OjpTZWxlY3RBZGQpIHsKICAgICAg
ICAgICAgIHNlbGVjdC5hZGQodG9IVE1MRWxlbWVudChhcmdzWzBdKSwgdG9IVE1MRWxlbWVudChh
cmdzWzFdKSwgZXhjZXB0aW9uKTsKQEAgLTEzODEsMjEgKzEzMDUsNiBAQAogICAgIGxvb2t1cFB1
dDxKU0hUTUxFbGVtZW50LCBKU0VsZW1lbnQ+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0
dHIsICZIVE1MRWxlbWVudFRhYmxlLCB0aGlzKTsKIH0KIAotdm9pZCBKU0hUTUxFbGVtZW50Ojpm
b3JtU2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlICp2YWx1ZSwgY29u
c3QgV2ViQ29yZTo6U3RyaW5nJiBzdHIpCi17Ci0gICAgSFRNTEZvcm1FbGVtZW50JiBmb3JtID0g
KnN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGltcGwoKSk7Ci0gICAgc3dpdGNoICh0b2tl
bikgewotICAgICAgICAvLyByZWFkLW9ubHk6IGVsZW1lbnRzCi0gICAgICAgIC8vIHJlYWQtb25s
eTogbGVuZ3RoCi0gICAgICAgIGNhc2UgRm9ybU5hbWU6ICAgICAgICAgICAgeyBmb3JtLnNldE5h
bWUoc3RyKTsgcmV0dXJuOyB9Ci0gICAgICAgIGNhc2UgRm9ybUFjY2VwdENoYXJzZXQ6ICAgeyBm
b3JtLnNldEFjY2VwdENoYXJzZXQoc3RyKTsgcmV0dXJuOyB9Ci0gICAgICAgIGNhc2UgRm9ybUFj
dGlvbjogICAgICAgICAgeyBmb3JtLnNldEFjdGlvbihzdHIpOyByZXR1cm47IH0KLSAgICAgICAg
Y2FzZSBGb3JtRW5jVHlwZTogICAgICAgICB7IGZvcm0uc2V0RW5jdHlwZShzdHIpOyByZXR1cm47
IH0KLSAgICAgICAgY2FzZSBGb3JtTWV0aG9kOiAgICAgICAgICB7IGZvcm0uc2V0TWV0aG9kKHN0
cik7IHJldHVybjsgfQotICAgICAgICBjYXNlIEZvcm1UYXJnZXQ6ICAgICAgICAgIHsgZm9ybS5z
ZXRUYXJnZXQoc3RyKTsgcmV0dXJuOyB9Ci0gICAgfQotfQotCiB2b2lkIEpTSFRNTEVsZW1lbnQ6
OnNlbGVjdFNldHRlcihFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSAqdmFsdWUs
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgc3RyKQogewogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBz
ZWxlY3QgPSAqc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihpbXBsKCkpOwpJbmRleDog
YmluZGluZ3MvanMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJp
bmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIGJp
bmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTSFRNTEZvcm1FbGVtZW50LmgiCisKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2UgS0pTOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqIGV4ZWMsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCit7CisgICAgLy8gRklYTUU6IGlkZWFsbHkgdGhl
cmUgc2hvdWxkIGJlIGEgbGlnaHRlci13ZWlnaHQgd2F5IG9mIGRvaW5nIHRoaXMKKyAgICBKU1Zh
bHVlKiBuYW1lZEl0ZW1zID0gSlNIVE1MQ29sbGVjdGlvbihleGVjLCBmb3JtLT5lbGVtZW50cygp
LmdldCgpKS5nZXROYW1lZEl0ZW1zKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuICFu
YW1lZEl0ZW1zLT5pc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlKiBKU0hUTUxGb3JtRWxlbWVu
dDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvcmlnaW5hbE9iamVjdCwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgSlNIVE1MRWxlbWVudCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTSFRNTEVsZW1l
bnQqPihzbG90LnNsb3RCYXNlKCkpOworICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IHN0YXRp
Y19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KHRoaXNPYmotPmltcGwoKSk7CisgICAgCisgICAgcmV0
dXJuIEpTSFRNTENvbGxlY3Rpb24oZXhlYywgZm9ybS0+ZWxlbWVudHMoKS5nZXQoKSkuZ2V0TmFt
ZWRJdGVtcyhleGVjLCBwcm9wZXJ0eU5hbWUpOworfQorCit9CkluZGV4OiBEZXJpdmVkU291cmNl
cy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIERlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE0NTc3
KQorKysgRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsOSBA
QAogICAgIEpTQXR0ci5oIFwKICAgICBKU0NTU1ByaW1pdGl2ZVZhbHVlLmggXAogICAgIEpTQ1NT
UnVsZS5oIFwKKyAgICBKU0NTU1J1bGVMaXN0LmggXAogICAgIEpTQ1NTVmFsdWUuaCBcCisgICAg
SlNDU1NWYWx1ZUxpc3QuaCBcCiAgICAgSlNDYW52YXNHcmFkaWVudC5oIFwKICAgICBKU0NhbnZh
c1BhdHRlcm4uaCBcCiAgICAgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBcCkBAIC03OSw2
ICs4MSw3IEBACiAgICAgSlNIVE1MRWxlbWVudC5oIFwKICAgICBKU0hUTUxGaWVsZFNldEVsZW1l
bnQuaCBcCiAJSlNIVE1MRm9udEVsZW1lbnQuaCBcCisJSlNIVE1MRm9ybUVsZW1lbnQuaCBcCiAg
ICAgSlNIVE1MSGVhZEVsZW1lbnQuaCBcCiAgICAgSlNIVE1MSGVhZGluZ0VsZW1lbnQuaCBcCiAg
ICAgSlNIVE1MSFJFbGVtZW50LmggXApJbmRleDogaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gaHRtbC9IVE1MVGFibGVFbGVtZW50LmgJKHJldmlzaW9uIDE0NTc3KQorKysg
aHRtbC9IVE1MVGFibGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDggQEAK
ICAgICBIVE1MRWxlbWVudCogaW5zZXJ0Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgZGVsZXRlUm93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUmVm
UHRyPEhUTUxDb2xsZWN0aW9uPiByb3dzKCk7Ci0gICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB0
Qm9kaWVzKCk7CisgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gcm93cygpOworICAgIFBh
c3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHRCb2RpZXMoKTsKIAogICAgIFN0cmluZyBhbGlnbigp
IGNvbnN0OwogICAgIHZvaWQgc2V0QWxpZ24oY29uc3QgU3RyaW5nJik7CkluZGV4OiBodG1sL0hU
TUxGb3JtRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRs
CShyZXZpc2lvbiAwKQorKysgaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl
IFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8K
KworbW9kdWxlIGh0bWwgeworCisgICAgaW50ZXJmYWNlIFtMZWdhY3lQYXJlbnQ9S0pTOjpKU0hU
TUxFbGVtZW50LCBIYXNJbmRleEdldHRlciwgSGFzTmFtZUdldHRlcl0gSFRNTEZvcm1FbGVtZW50
IDogSFRNTEVsZW1lbnQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rp
b24gIGVsZW1lbnRzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAg
IGxlbmd0aDsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICBuYW1l
OworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIGFjY2VwdENoYXJz
ZXQ7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgYWN0aW9uOwor
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIGVuY3R5cGU7CisgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgbWV0aG9kOworICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIHRhcmdldDsKKyAgICAgICAgCisgICAg
ICAgIHZvaWQgICAgICAgICAgICAgICBzdWJtaXQoKTsKKyAgICAgICAgdm9pZCAgICAgICAgICAg
ICAgIHJlc2V0KCk7CisgICAgfTsKK30KSW5kZXg6IGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTc3KQor
KysgaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3
LDcgQEAKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCi1pbnQg
SFRNTEZvcm1FbGVtZW50OjpsZW5ndGgoKSBjb25zdAordW5zaWduZWQgSFRNTEZvcm1FbGVtZW50
OjpsZW5ndGgoKSBjb25zdAogewogICAgIGludCBsZW4gPSAwOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBmb3JtRWxlbWVudHMuc2l6ZSgpOyArK2kpCkBAIC0xMTcsNiArMTE3LDEwIEBA
CiAgICAgcmV0dXJuIGxlbjsKIH0KIAorTm9kZSogSFRNTEZvcm1FbGVtZW50OjppdGVtKHVuc2ln
bmVkIGluZGV4KQoreworICAgIHJldHVybiBlbGVtZW50cygpLT5pdGVtKGluZGV4KTsKK30KIAog
dm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdENsaWNrKCkKIHsKQEAgLTUxNiw5ICs1MjAsOSBA
QAogICAgIHJlbW92ZUZyb21WZWN0b3IoaW1nRWxlbWVudHMsIGUpOwogfQogCi1SZWZQdHI8SFRN
TENvbGxlY3Rpb24+IEhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudHMoKQorUGFzc1JlZlB0cjxIVE1M
Q29sbGVjdGlvbj4gSFRNTEZvcm1FbGVtZW50OjplbGVtZW50cygpCiB7Ci0gICAgcmV0dXJuIFJl
ZlB0cjxIVE1MQ29sbGVjdGlvbj4obmV3IEhUTUxGb3JtQ29sbGVjdGlvbih0aGlzKSk7CisgICAg
cmV0dXJuIG5ldyBIVE1MRm9ybUNvbGxlY3Rpb24odGhpcyk7CiB9CiAKIFN0cmluZyBIVE1MRm9y
bUVsZW1lbnQ6Om5hbWUoKSBjb25zdApJbmRleDogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBodG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NDU3NykKKysrIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2MSw5ICsxNjEsOSBAQAogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogfQogCi1SZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKCkKK1Bhc3NSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKCkKIHsKLSAgICBy
ZXR1cm4gUmVmUHRyPEhUTUxDb2xsZWN0aW9uPihuZXcgSFRNTENvbGxlY3Rpb24odGhpcywgSFRN
TENvbGxlY3Rpb246OlRSX0NFTExTKSk7CisgICAgcmV0dXJuIG5ldyBIVE1MQ29sbGVjdGlvbih0
aGlzLCBIVE1MQ29sbGVjdGlvbjo6VFJfQ0VMTFMpOwogfQogCiB2b2lkIEhUTUxUYWJsZVJvd0Vs
ZW1lbnQ6OnNldENlbGxzKEhUTUxDb2xsZWN0aW9uICosIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRl
eDogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQuaAkocmV2aXNpb24gMTQ1NzcpCisrKyBodG1sL0hUTUxUYWJs
ZVNlY3Rpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAKICAgICBT
dHJpbmcgdkFsaWduKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWQWxpZ24oY29uc3QgU3RyaW5nJik7
CiAKLSAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IHJvd3MoKTsKKyAgICBQYXNzUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiByb3dzKCk7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBodG1sL0hU
TUxGb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHJl
dmlzaW9uIDE0NTc3KQorKysgaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQAogY2xhc3MgSFRNTEZvcm1FbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50CiB7CiBwdWJsaWM6Ci0gICAgSFRNTEZvcm1FbGVtZW50KERvY3VtZW50ICpkb2MpOworICAg
IEhUTUxGb3JtRWxlbWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxGb3JtRWxlbWVu
dCgpOwogCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29u
c3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KQEAgLTUyLDggKzUyLDkgQEAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwogIAotICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZWxlbWVu
dHMoKTsKLSAgICBpbnQgbGVuZ3RoKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVj
dGlvbj4gZWxlbWVudHMoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBOb2Rl
KiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKIAogICAgIFN0cmluZyBlbmN0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmN0eXBlOyB9CiAgICAgdm9pZCBzZXRFbmN0eXBlKGNvbnN0IFN0cmluZyAmKTsK
QEAgLTEwMCw4ICsxMDEsNiBAQAogICAgIFN0cmluZyB0YXJnZXQoKSBjb25zdDsKICAgICB2b2lk
IHNldFRhcmdldChjb25zdCBTdHJpbmcgJik7CiAKLSAgICBzdGF0aWMgdm9pZCBpMThuRGF0YSgp
OwotCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbjsKIAogICAgIEhUTUxDb2xs
ZWN0aW9uOjpDb2xsZWN0aW9uSW5mbyAqY29sbGVjdGlvbkluZm87CkluZGV4OiBodG1sL0hUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBodG1sL0hUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1NzcpCisrKyBodG1sL0hUTUxUYWJsZVNlY3Rpb25F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDkgKzE1Myw5IEBACiAgICAgc2V0QXR0
cmlidXRlKHZhbGlnbkF0dHIsIHZhbHVlKTsKIH0KIAotUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBI
VE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cygpCitQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cygpCiB7Ci0gICAgcmV0dXJuIFJlZlB0cjxI
VE1MQ29sbGVjdGlvbj4obmV3IEhUTUxDb2xsZWN0aW9uKHRoaXMsIEhUTUxDb2xsZWN0aW9uOjpU
QUJMRV9ST1dTKSk7CisgICAgcmV0dXJuIG5ldyBIVE1MQ29sbGVjdGlvbih0aGlzLCBIVE1MQ29s
bGVjdGlvbjo6VEFCTEVfUk9XUyk7CiB9CiAKIH0KSW5kZXg6IGh0bWwvSFRNTFRhYmxlUm93RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5oCShyZXZpc2lv
biAxNDU3NykKKysrIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw3ICs1Miw3IEBACiAKICAgICB2b2lkIHNldFNlY3Rpb25Sb3dJbmRleChpbnQpOwogCi0g
ICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBjZWxscygpOworICAgIFBhc3NSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IGNlbGxzKCk7CiAgICAgdm9pZCBzZXRDZWxscyhIVE1MQ29sbGVjdGlvbiAqLCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICBTdHJpbmcgYWxpZ24oKSBjb25zdDsKSW5kZXg6IGh0bWwv
SFRNTFRhYmxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcAkocmV2aXNpb24gMTQ1NzcpCisrKyBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MTEsMTQgKzUxMSwxNCBAQAogICAgIHJldHVybiBhdHRyLT5uYW1lKCkg
PT0gYmFja2dyb3VuZEF0dHI7CiB9CiAKLVJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxl
RWxlbWVudDo6cm93cygpCitQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVt
ZW50Ojpyb3dzKCkKIHsKLSAgICByZXR1cm4gUmVmUHRyPEhUTUxDb2xsZWN0aW9uPihuZXcgSFRN
TENvbGxlY3Rpb24odGhpcywgSFRNTENvbGxlY3Rpb246OlRBQkxFX1JPV1MpKTsKKyAgICByZXR1
cm4gbmV3IEhUTUxDb2xsZWN0aW9uKHRoaXMsIEhUTUxDb2xsZWN0aW9uOjpUQUJMRV9ST1dTKTsK
IH0KIAotUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojp0Qm9kaWVzKCkK
K1Bhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnRCb2RpZXMoKQog
ewotICAgIHJldHVybiBSZWZQdHI8SFRNTENvbGxlY3Rpb24+KG5ldyBIVE1MQ29sbGVjdGlvbih0
aGlzLCBIVE1MQ29sbGVjdGlvbjo6VEFCTEVfVEJPRElFUykpOworICAgIHJldHVybiBuZXcgSFRN
TENvbGxlY3Rpb24odGhpcywgSFRNTENvbGxlY3Rpb246OlRBQkxFX1RCT0RJRVMpOwogfQogCiBT
dHJpbmcgSFRNTFRhYmxlRWxlbWVudDo6YWxpZ24oKSBjb25zdApJbmRleDogZG9tL05hbWVkQXR0
ck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL05hbWVkQXR0ck1hcC5jcHAJKHJldmlzaW9uIDE0
NTc3KQorKysgZG9tL05hbWVkQXR0ck1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5
LDggQEAKIHsKICAgICBTdHJpbmcgbG9jYWxOYW1lID0gaW5IVE1MRG9jdW1lbnQoZWxlbWVudCkg
PyBuYW1lLmxvd2VyKCkgOiBuYW1lOwogICAgIEF0dHJpYnV0ZSogYSA9IGdldEF0dHJpYnV0ZUl0
ZW0obG9jYWxOYW1lKTsKLSAgICBpZiAoIWEpIHJldHVybiAwOworICAgIGlmICghYSkKKyAgICAg
ICAgcmV0dXJuIDA7CiAgICAgCiAgICAgcmV0dXJuIGEtPmNyZWF0ZUF0dHJJZk5lZWRlZChlbGVt
ZW50KTsKIH0KQEAgLTg5LDcgKzkwLDggQEAKIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWRBdHRyTWFw
OjpnZXROYW1lZEl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICBB
dHRyaWJ1dGUqIGEgPSBnZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOwotICAgIGlmICghYSkgcmV0dXJu
IDA7CisgICAgaWYgKCFhKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBhLT5jcmVh
dGVBdHRySWZOZWVkZWQoZWxlbWVudCk7CiB9CkluZGV4OiBkb20vTm9kZUxpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBkb20vTm9kZUxpc3QuaAkocmV2aXNpb24gMTQ1NzcpCisrKyBkb20vTm9kZUxpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQAogICAgIC8vIERPTSBtZXRob2RzICYg
YXR0cmlidXRlcyBmb3IgTm9kZUxpc3QKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0ID0g
MDsKLSAgICBOb2RlKiBpdGVtQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICBO
b2RlKiBpdGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAKICAgICAvLyBP
dGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCiAgICAgdmlydHVhbCB2b2lkIHJvb3ROb2Rl
Q2hpbGRyZW5DaGFuZ2VkKCk7CkluZGV4OiBkb20vTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGRvbS9Ob2RlTGlzdC5jcHAJKHJldmlzaW9uIDE0NTc3KQorKysgZG9tL05vZGVMaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBACiAgICAgcmV0dXJuIDA7IC8vIG5vIG1h
dGNoaW5nIG5vZGUgaW4gdGhpcyBzdWJ0cmVlCiB9CiAKLU5vZGUqIE5vZGVMaXN0OjppdGVtQnlJ
ZChjb25zdCBBdG9taWNTdHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKK05vZGUqIE5vZGVMaXN0Ojpp
dGVtV2l0aE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7CiAgICAg
aWYgKHJvb3ROb2RlLT5pc0RvY3VtZW50Tm9kZSgpIHx8IHJvb3ROb2RlLT5pbkRvY3VtZW50KCkp
IHsKICAgICAgICAgTm9kZSogbm9kZSA9IHJvb3ROb2RlLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50
QnlJZChlbGVtZW50SWQpOwpJbmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTQ1NzcpCisrKyBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTExOTUsNiArMTE5NSwxNiBAQAogCQlBOENGRjdBOTBBMTU2OTc4MDAwQTQyMzQg
LyogSFRNTE1vZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThDRkY3OUYwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmNw
cCAqLzsgfTsKIAkJQThDRkY3QUEwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxCUkVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGN0EwMEEx
NTY5NzgwMDBBNDIzNCAvKiBIVE1MQlJFbGVtZW50LmggKi87IH07CiAJCUE4Q0ZGN0FCMEExNTY5
NzgwMDBBNDIzNCAvKiBIVE1MQW5jaG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDRkY3QTEwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxB
bmNob3JFbGVtZW50LmggKi87IH07CisJCUE4RDA1RkE3MEEyM0IzMDEwMDVFNzIwMyAvKiBKU0NT
U1J1bGVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4RDA1RkE1MEEyM0IzMDEwMDVFNzIwMyAvKiBKU0NTU1J1bGVMaXN0LmNwcCAqLzsgfTsK
KwkJQThEMDVGQTgwQTIzQjMwMTAwNUU3MjAzIC8qIEpTQ1NTUnVsZUxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDA1RkE2MEEyM0IzMDEwMDVF
NzIwMyAvKiBKU0NTU1J1bGVMaXN0LmggKi87IH07CisJCUE4RDA1RkFCMEEyM0IzMEYwMDVFNzIw
MyAvKiBKU0NTU1ZhbHVlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEQwNUZBOTBBMjNCMzBGMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3Qu
Y3BwICovOyB9OworCQlBOEQwNUZBQzBBMjNCMzBGMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDA1RkFB
MEEyM0IzMEYwMDVFNzIwMyAvKiBKU0NTU1ZhbHVlTGlzdC5oICovOyB9OworCQlBOEQwNjRGMDBB
MjNCRkVBMDA1RTcyMDMgLyogSFRNTEZvcm1FbGVtZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThEMDY0RUYwQTIzQkZFQTAwNUU3MjAzIC8q
IEhUTUxGb3JtRWxlbWVudC5pZGwgKi87IH07CisJCUE4RDA2NEZCMEEyM0MwQ0MwMDVFNzIwMyAv
KiBKU0hUTUxGb3JtRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOEQwNjRGOTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1l
bnQuY3BwICovOyB9OworCQlBOEQwNjRGQzBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
RDA2NEZBMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5oICovOyB9OworCQlB
OEQwNjUxRDBBMjNDMUZFMDA1RTcyMDMgLyogQ1NTUnVsZUxpc3QuaWRsIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNjUxQjBBMjNDMUZFMDA1RTcy
MDMgLyogQ1NTUnVsZUxpc3QuaWRsICovOyB9OworCQlBOEQwNjUxRTBBMjNDMUZFMDA1RTcyMDMg
LyogQ1NTVmFsdWVMaXN0LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThEMDY1MUMwQTIzQzFGRTAwNUU3MjAzIC8qIENTU1ZhbHVlTGlzdC5pZGwg
Ki87IH07CisJCUE4RDA2NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEQwNjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwICov
OyB9OwogCQlBOERGM0ZDRTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDNjA5
N0ZBMEZCMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggKi87IH07CiAJCUE4REYzRkNG
MDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFC
IC8qIEhUTUxGb3JtQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCUE4REYzRkQwMDk3RkEwRkMwMDUy
OTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThERjNGQzgwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9u
LmggKi87IH07CkBAIC0xODg0LDcgKzE4OTQsNiBAQAogCQk5MzBDQUFENjA5QzQ5NUI2MDAyMjlD
MDQgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzBDQUI4ODA5QzQ5RUZBMDAyMjlDMDQgLyogQ2FudmFzR3JhZGllbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc0dyYWRpZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTMwQ0FCOEYwOUM0OUYxQjAwMjI5QzA0IC8qIENhbnZhc1BhdHRlcm4uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENhbnZhc1BhdHRlcm4uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk5MzBDQUI5NjA5QzQ5RkFBMDAyMjlDMDQgLyogQ29kZUdlbmVyYXRv
ckpTLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5lcmF0b3JK
Uy5wbTsgcGF0aCA9IC4uL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MzEyNkY2MDA5RDdBNzM2MDA4RDk2MjYgLyogU3RyaW5nSGFzaC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdIYXNoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMjZEQzBBMDlEQUQ1QkUwMEFGQzg0NyAvKiBDaGFyc2V0
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFyc2V0RGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzI3QTk0MTA5OTY4RDFBMDA2OEE1NDYgLyog
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yODQyLDYgKzI4NTEsMTYgQEAKIAkJQThDRkY3OUYwQTE1Njk3ODAwMEE0MjM0IC8q
IEhUTUxNb2RFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MTW9kRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZG
N0EwMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MQlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4Q0ZGN0ExMEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MQW5jaG9yRWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEFuY2hvckVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThEMDVGQTUwQTIzQjMwMTAwNUU3MjAzIC8qIEpT
Q1NTUnVsZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q1NTUnVsZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEQwNUZBNjBB
MjNCMzAxMDA1RTcyMDMgLyogSlNDU1NSdWxlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDU1NSdWxlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBOEQwNUZBOTBBMjNCMzBGMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1NTVmFsdWVMaXN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThEMDVGQUEwQTIzQjMwRjAwNUU3MjAzIC8qIEpTQ1NT
VmFsdWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NTU1ZhbHVl
TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEQwNjRFRjBBMjNCRkVBMDA1
RTcyMDMgLyogSFRNTEZvcm1FbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRN
TEZvcm1FbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThEMDY0Rjkw
QTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGb3JtRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE4RDA2NEZBMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3Jt
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MRm9ybUVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThEMDY1MUIwQTIzQzFGRTAw
NUU3MjAzIC8qIENTU1J1bGVMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTUnVs
ZUxpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEQwNjUxQzBBMjNDMUZF
MDA1RTcyMDMgLyogQ1NTVmFsdWVMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NT
VmFsdWVMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThEMDY1QUQwQTI0
NDZDRDAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhU
TUxGb3JtQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRN
TEZvcm1Db2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4REYzRkM3
MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGb3JtQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4REYzRkM4MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQ29s
bGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTENvbGxlY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0MDYsMTAgKzM0MjUsMTQgQEAK
IAkJCQk5MzA3MDVFQTA5RTBDOUY2MDBCMTdGRTQgLyogSlNDU1NQcmltaXRpdmVWYWx1ZS5oICov
LAogCQkJCTE0Q0Y3QjMxMDlGNkVDRDcwMEVCMzY2NSAvKiBKU0NTU1J1bGUuY3BwICovLAogCQkJ
CTE0Q0Y3QjMyMDlGNkVDRDcwMEVCMzY2NSAvKiBKU0NTU1J1bGUuaCAqLywKKwkJCQlBOEQwNUZB
NTBBMjNCMzAxMDA1RTcyMDMgLyogSlNDU1NSdWxlTGlzdC5jcHAgKi8sCisJCQkJQThEMDVGQTYw
QTIzQjMwMTAwNUU3MjAzIC8qIEpTQ1NTUnVsZUxpc3QuaCAqLywKIAkJCQkxNDIwMTFCNDBBMDAz
MTMzMDA4MzAzRjkgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCAqLywKIAkJCQkxNDIwMTFC
NTBBMDAzMTMzMDA4MzAzRjkgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8sCiAJCQkJMTRD
Rjc4QTMwOUY1OENCRjAwRUIzNjY1IC8qIEpTQ1NTVmFsdWUuY3BwICovLAogCQkJCTE0Q0Y3OEE1
MDlGNThDRDgwMEVCMzY2NSAvKiBKU0NTU1ZhbHVlLmggKi8sCisJCQkJQThEMDVGQTkwQTIzQjMw
RjAwNUU3MjAzIC8qIEpTQ1NTVmFsdWVMaXN0LmNwcCAqLywKKwkJCQlBOEQwNUZBQTBBMjNCMzBG
MDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuaCAqLywKIAkJCQk2NTlEREM4MDA5RTE5OEJBMDAx
QkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi8sCiAJCQkJNjU5RERDODEwOUUxOThCQTAwMUJGM0M2
IC8qIEpTRG9jdW1lbnQuaCAqLywKIAkJCQkxQTQ5NEVEQzBBMTIzRjRDMDBGREFGQzEgLyogSlNE
b2N1bWVudEZyYWdtZW50LmNwcCAqLywKQEAgLTM0NjEsNiArMzQ4NCw4IEBACiAJCQkJMUFFMkFB
MTMwQTFDREFCMzAwQjQyQjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVudC5oICovLAogCQkJCTFB
RTJBQTE0MEExQ0RBQjMwMEI0MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5jcHAgKi8sCiAJCQkJ
MUFFMkFBMTUwQTFDREFCMzAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmggKi8sCisJCQkJ
QThEMDY0RjkwQTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmNwcCAqLywKKwkJ
CQlBOEQwNjRGQTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuaCAqLywKIAkJ
CQlBODBFN0IwQTBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1MSGVhZEVsZW1lbnQuY3BwICovLAog
CQkJCUE4MEU3QjBCMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxIZWFkRWxlbWVudC5oICovLAog
CQkJCTFBRTJBQTFBMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxIZWFkaW5nRWxlbWVudC5jcHAg
Ki8sCkBAIC0zNDcxLDI0ICszNDk2LDI0IEBACiAJCQkJMUE4NUIxOEUwQTFCMThBMjAwRDhDODdD
IC8qIEpTSFRNTEh0bWxFbGVtZW50LmggKi8sCiAJCQkJMUFFMkFBOTMwQTFDREQyRDAwQjQyQjI1
IC8qIEpTSFRNTEltYWdlRWxlbWVudC5jcHAgKi8sCiAJCQkJMUFFMkFBOTQwQTFDREQyRDAwQjQy
QjI1IC8qIEpTSFRNTEltYWdlRWxlbWVudC5oICovLAotCQkJCTFBRTJBQTk1MEExQ0REMkQwMEI0
MkIyNSAvKiBKU0hUTUxJc0luZGV4RWxlbWVudC5jcHAgKi8sCi0JCQkJMUFFMkFBOTYwQTFDREQy
RDAwQjQyQjI1IC8qIEpTSFRNTElzSW5kZXhFbGVtZW50LmggKi8sCiAJCQkJQTgwRTdFOEUwQTFB
ODNFMzAwN0ZCOEM1IC8qIEpTSFRNTElucHV0RWxlbWVudC5jcHAgKi8sCiAJCQkJQTgwRTdFOEQw
QTFBODNFMzAwN0ZCOEM1IC8qIEpTSFRNTElucHV0RWxlbWVudC5oICovLAotCQkJCUE4MEU3QjA2
MEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxMaW5rRWxlbWVudC5jcHAgKi8sCi0JCQkJQTgwRTdC
MDMwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVtZW50LmggKi8sCi0JCQkJQTgwRTdB
MTUwQTE5QzNENjAwN0ZCOEM1IC8qIEpTSFRNTE1ldGFFbGVtZW50LmNwcCAqLywKLQkJCQlBODBF
N0ExNjBBMTlDM0Q2MDA3RkI4QzUgLyogSlNIVE1MTWV0YUVsZW1lbnQuaCAqLywKKwkJCQkxQUUy
QUE5NTBBMUNERDJEMDBCNDJCMjUgLyogSlNIVE1MSXNJbmRleEVsZW1lbnQuY3BwICovLAorCQkJ
CTFBRTJBQTk2MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJc0luZGV4RWxlbWVudC5oICovLAog
CQkJCTFBRTJBQjE3MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1lbnQuY3BwICov
LAogCQkJCTFBRTJBQjE4MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1lbnQuaCAq
LywKIAkJCQkxQUUyQUIxOTBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGVnZW5kRWxlbWVudC5j
cHAgKi8sCiAJCQkJMUFFMkFCMUEwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExlZ2VuZEVsZW1l
bnQuaCAqLywKIAkJCQkxQUUyQUIxQjBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTElFbGVtZW50
LmNwcCAqLywKIAkJCQkxQUUyQUIxQzBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTElFbGVtZW50
LmggKi8sCisJCQkJQTgwRTdCMDYwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVtZW50
LmNwcCAqLywKKwkJCQlBODBFN0IwMzBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1MTGlua0VsZW1l
bnQuaCAqLywKIAkJCQkxQUUyQUIxRDBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTWFwRWxlbWVu
dC5jcHAgKi8sCiAJCQkJMUFFMkFCMUUwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1hcEVsZW1l
bnQuaCAqLywKIAkJCQkxQUUyQUU1OTBBMUQyNkYyMDBCNDJCMjUgLyogSlNIVE1MTWVudUVsZW1l
bnQuY3BwICovLAogCQkJCTFBRTJBRTVBMEExRDI2RjIwMEI0MkIyNSAvKiBKU0hUTUxNZW51RWxl
bWVudC5oICovLAorCQkJCUE4MEU3QTE1MEExOUMzRDYwMDdGQjhDNSAvKiBKU0hUTUxNZXRhRWxl
bWVudC5jcHAgKi8sCisJCQkJQTgwRTdBMTYwQTE5QzNENjAwN0ZCOEM1IC8qIEpTSFRNTE1ldGFF
bGVtZW50LmggKi8sCiAJCQkJMUFFMkFCMUYwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1vZEVs
ZW1lbnQuY3BwICovLAogCQkJCTFBRTJBQjIwMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNb2RF
bGVtZW50LmggKi8sCiAJCQkJMUE4NUIxRTQwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRNTE9MaXN0
RWxlbWVudC5jcHAgKi8sCkBAIC0zOTAwLDYgKzM5MjUsNyBAQAogCQkJCUE4REYzRkM2MDk3RkEw
RkIwMDUyOTgxQiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uaCAqLywKIAkJCQlBODEzNjlCNTA5NzM3
NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1FbGVtZW50LmNwcCAqLywKIAkJCQlBODEzNjlCNDA5NzM3
NEY1MDBENzQ0NjMgLyogSFRNTEZvcm1FbGVtZW50LmggKi8sCisJCQkJQThEMDY0RUYwQTIzQkZF
QTAwNUU3MjAzIC8qIEhUTUxGb3JtRWxlbWVudC5pZGwgKi8sCiAJCQkJQTg3MURFMTcwQTE1MkFD
ODAwQjEyQTY4IC8qIEhUTUxGcmFtZUVsZW1lbnQuY3BwICovLAogCQkJCUE4NzFERTFGMEExNTJB
QzgwMEIxMkE2OCAvKiBIVE1MRnJhbWVFbGVtZW50LmggKi8sCiAJCQkJQTg3MURFMjIwQTE1MkFD
ODAwQjEyQTY4IC8qIEhUTUxGcmFtZVNldEVsZW1lbnQuY3BwICovLApAQCAtNDY2MSwxMiArNDY4
NywxMiBAQAogCQlCQzFBMzc5MzA5N0M2RkIxMDAxOUYzRDggLyoganMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTkzMENBQjk2MDlDNDlGQUEwMDIyOUMw
NCAvKiBDb2RlR2VuZXJhdG9ySlMucG0gKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYz
IC8qIEpTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk5M0I3MEQz
RjA5RUIwQzdDMDA5RDg0NjggLyogSlNET01QYXJzZXIuY3BwICovLAogCQkJCTkzQjcwRDQwMDlF
QjBDN0MwMDlEODQ2OCAvKiBKU0RPTVBhcnNlci5oICovLAogCQkJCTkzOEU2NUY2MDlGMDk4NUQw
MDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwICovLAogCQkJCTkzOEU2
NUYwMDlGMDk4NDAwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCAqLywK
KwkJCQlBOEQwNjVBRDBBMjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20u
Y3BwICovLAogCQkJCUE4MEU3RTY0MEExQTgyRUMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVsZW1l
bnRCYXNlLmNwcCAqLywKIAkJCQlBODBFN0U2MzBBMUE4MkVDMDA3RkI4QzUgLyogSlNIVE1MSW5w
dXRFbGVtZW50QmFzZS5oICovLAogCQkJCUE4MjZFOEFEMEExQThGMjMwMENEMUJCNiAvKiBKU0hU
TUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwICovLApAQCAtNDk2Miw2ICs0OTg4LDcgQEAK
IAkJCQkxNENGN0E3MDA5RjVDRjlBMDBFQjM2NjUgLyogQ1NTUnVsZS5pZGwgKi8sCiAJCQkJQTgw
RTZDREYwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1J1bGVMaXN0LmNwcCAqLywKIAkJCQlBODBFNkND
ODBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTUnVsZUxpc3QuaCAqLywKKwkJCQlBOEQwNjUxQjBBMjND
MUZFMDA1RTcyMDMgLyogQ1NTUnVsZUxpc3QuaWRsICovLAogCQkJCUE4MEU3MzQ4MEExOTlDNzcw
MDdGQjhDNSAvKiBDU1NTZWxlY3Rvci5jcHAgKi8sCiAJCQkJQTgwRTczNEIwQTE5OUM3NzAwN0ZC
OEM1IC8qIENTU1NlbGVjdG9yLmggKi8sCiAJCQkJQTgwRTZFMEUwQTE5OTExQzAwN0ZCOEM1IC8q
IENTU1N0eWxlRGVjbGFyYXRpb24uY3BwICovLApAQCAtNDk3OSw2ICs1MDA2LDcgQEAKIAkJCQlC
Q0VBNDc4QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5pbiAqLywKIAkJCQlB
ODBFNkNCQTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmNwcCAqLywKIAkJCQlBODBF
NkNCRjBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmggKi8sCisJCQkJQThEMDY1MUMw
QTIzQzFGRTAwNUU3MjAzIC8qIENTU1ZhbHVlTGlzdC5pZGwgKi8sCiAJCQkJQTgwRTZDRTEwQTE5
ODlDQTAwN0ZCOEM1IC8qIERhc2hib2FyZFJlZ2lvbi5oICovLAogCQkJCUE4MEU2Q0MyMEExOTg5
Q0EwMDdGQjhDNSAvKiBGb250RmFtaWx5VmFsdWUuY3BwICovLAogCQkJCUE4MEU2Q0M5MEExOTg5
Q0EwMDdGQjhDNSAvKiBGb250RmFtaWx5VmFsdWUuaCAqLywKQEAgLTYwNDEsNiArNjA2OSw5IEBA
CiAJCQkJMUFFMkFFNUMwQTFEMjZGMjAwQjQyQjI1IC8qIEpTSFRNTE1lbnVFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUUyQUVDODBBMUQyOTdCMDBCNDJCMjUgLyogSlNIVE1MUXVvdGVF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUyQUVFNzBBMUQyQTc1MDBCNDJCMjUgLyog
SlNIVE1MQmxvY2txdW90ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4RDA1RkE4MEEy
M0IzMDEwMDVFNzIwMyAvKiBKU0NTU1J1bGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBOEQw
NUZBQzBBMjNCMzBGMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE4RDA2NEZDMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJREQ3Q0RGMjUwQTIzQ0Y5ODAwMDY5OTI4IC8qIENTU1Vua25vd25SdWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKQEAgLTYxMzIsNiArNjE2Myw5IEBACiAJCQkJQTdCOTdCODIwOTc5QzNBMTAw
MEU4RUIxIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICov
LAogCQkJCUE3Qjk3Qjg1MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCUE3NjM4QTkyMDk5NTkyQzMwMDA3RTE0RiAv
KiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJ
QThEMDY0RjAwQTIzQkZFQTAwNUU3MjAzIC8qIEhUTUxGb3JtRWxlbWVudC5pZGwgaW4gUmVzb3Vy
Y2VzICovLAorCQkJCUE4RDA2NTFEMEEyM0MxRkUwMDVFNzIwMyAvKiBDU1NSdWxlTGlzdC5pZGwg
aW4gUmVzb3VyY2VzICovLAorCQkJCUE4RDA2NTFFMEEyM0MxRkUwMDVFNzIwMyAvKiBDU1NWYWx1
ZUxpc3QuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTY4NTYsNiArNjg5MCwxMCBAQAogCQkJCTFB
RTJBRTVCMEExRDI2RjIwMEI0MkIyNSAvKiBKU0hUTUxNZW51RWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUUyQUVDNzBBMUQyOTdCMDBCNDJCMjUgLyogSlNIVE1MUXVvdGVFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBRUU2MEExRDJBNzUwMEI0MkIyNSAvKiBKU0hU
TUxCbG9ja3F1b3RlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEQwNUZBNzBBMjNC
MzAxMDA1RTcyMDMgLyogSlNDU1NSdWxlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEQw
NUZBQjBBMjNCMzBGMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQThEMDY0RkIwQTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUE4RDA2NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3Jt
RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IENoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTc3KQorKysgQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDYtMDUtMjMgIEVyaWMgU2VpZGVsICA8ZXJpY0Bl
c2VpZGVsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgIkhhc0luZGV4R2V0dGVyIiBzdXBwb3J0IHRvIGJpbmRpbmdzIGF1dG9nZW4gc3lz
dGVtLgorICAgICAgICBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dp
P2lkPTkwNTcKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
SFRNTElucHV0RWxlbWVudEJhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19jc3Mu
Y3BwOgorICAgICAgICAoS0pTOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfY3Nz
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2RvbS5jcHA6CisgICAgICAgIChLSlM6OkRP
TU5hbWVkTm9kZU1hcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0Lmlk
bDogQWRkZWQuCisKIDIwMDYtMDUtMjQgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBBbmRlcnMuCkluZGV4OiBjc3MvTWVkaWFM
aXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBjc3MvTWVkaWFMaXN0LmlkbAkocmV2aXNpb24gMCkKKysr
IGNzcy9NZWRpYUxpc3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBz
dHlsZXNoZWV0cyB7CisKKyAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgorICAgIGlu
dGVyZmFjZSBNZWRpYUxpc3QgeworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
ICAgICAgICBtZWRpYVRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgIGxlbmd0aDsKKyAgICAgICAgRE9NU3RyaW5nICAgICAg
ICAgIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIHZvaWQgICAgICAgICAg
ICAgICBkZWxldGVNZWRpdW0oaW4gRE9NU3RyaW5nIG9sZE1lZGl1bSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIHZvaWQgICAgICAgICAgICAgICBhcHBlbmRNZWRpdW0oaW4gRE9NU3RyaW5nIG5ld01lZGl1
bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisgICAgfTsKK30KSW5kZXg6IGNzcy9DU1NSdWxlTGlzdC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gY3NzL0NTU1J1bGVMaXN0LmlkbAkocmV2aXNpb24gMCkKKysrIGNzcy9DU1NSdWxl
TGlzdC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNzcyB7CisKKyAg
ICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgorICAgIGludGVyZmFjZSBbSGFzSW5kZXhH
ZXR0ZXJdIENTU1J1bGVMaXN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgICAgbGVuZ3RoOworICAgICAgICBDU1NSdWxlICAgICAgICAgICBpdGVtKGluIHVuc2ln
bmVkIGxvbmcgaW5kZXgpOworICAgIH07Cit9CkluZGV4OiBjc3MvQ1NTVmFsdWVMaXN0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBjc3MvQ1NTVmFsdWVMaXN0LmlkbAkocmV2aXNpb24gMCkKKysrIGNzcy9D
U1NWYWx1ZUxpc3QuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBjc3Mg
eworCisgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKKyAgICBpbnRlcmZhY2UgW0hh
c0luZGV4R2V0dGVyXSBDU1NWYWx1ZUxpc3QgOiBDU1NWYWx1ZSB7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgIGxlbmd0aDsKKyAgICAgICAgQ1NTVmFsdWUgICAg
ICAgICAgIGl0ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgfTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8529</attachid>
            <date>2006-05-24 17:48:09 -0700</date>
            <delta_ts>2006-05-25 14:29:36 -0700</delta_ts>
            <desc>yet another patch for review</desc>
            <filename>better.patch</filename>
            <type>text/plain</type>
            <size>60054</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNDU3NykKKysr
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw4ICszNCw4IEBACiAjIERlZmF1bHQgLmggdGVtcGxhdGUKIG15ICRoZWFkZXJUZW1wbGF0ZSA9
IDw8ICJFT0YiOwogLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3Qu
Ci0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBrZG9taWRsLnBsLiBETyBOT1Qg
TU9ESUZZIQorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMDksNyAr
MTA5LDYgQEAKICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7ICAKICAgCiAgICRtb2R1bGUgPSAkZGF0
YU5vZGUtPm1vZHVsZTsKLQogfQogCiBzdWIgR2V0UGFyZW50Q2xhc3NOYW1lCkBAIC0xODcsOCAr
MTg2LDggQEAKICAgbXkgJGNsYXNzTmFtZSA9ICJKUyRpbnRlcmZhY2VOYW1lIjsKICAgbXkgJGlt
cGxDbGFzc05hbWUgPSAkaW50ZXJmYWNlTmFtZTsKICAgCi0gICMgRklYTUU6IElmIHdlJ3JlIHN1
cmUgdGhhdCBhbiBpbnRlcmZhY2UgY2FuJ3QgaGF2ZSBtb3JlIHRoYW4KLSAgIyBvbmUgcGFyZW50
IHdlIGNhbiBkbyB0aGUgY2hlY2sgaW4gdGhlIHBhcnNlciBpbnN0ZWFkCisgICAgIyBGSVhNRTog
Rm9yIFNWRyB3ZSBuZWVkIHRvIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBwYXJlbnQKKyAgICAjIEJ1
dCBubyBtb3JlIHRoYW4gb25lIHBhcmVudCBjYW4gYmUgImNvbmNyZXRlIgogICBpZiAoQHskZGF0
YU5vZGUtPnBhcmVudHN9ID4gMSkgewogICAgIGRpZSAiQSBjbGFzcyBjYW4ndCBoYXZlIG1vcmUg
dGhhbiBvbmUgcGFyZW50IjsKICAgfQpAQCAtMzYxLDYgKzM2MCwxOCBAQAogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgUmVmUHRyPCRpbXBsQ2xhc3NOYW1lPiBtX2ltcGw7XG4iKTsKICAg
fQogICAKKyAgICAjIEluZGV4IGdldHRlcgorICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9KSB7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJwcml2YXRlOlxuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIEtKUzo6SlNWYWx1ZSogaW5kZXhHZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTT2Jq
ZWN0KiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pTOjpQcm9wZXJ0eVNsb3QmKTtc
biIpOworICAgIH0KKyAgICAjIE5hbWUgZ2V0dGVyCisgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ikhhc05hbWVHZXR0ZXIifSkgeworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAicHJpdmF0ZTpcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IHN0YXRpYyBLSlM6OkpTVmFsdWUqIG5hbWVHZXR0ZXIoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpT
T2JqZWN0KiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pTOjpQcm9wZXJ0eVNsb3Qm
KTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBib29sIGNh
bkdldEl0ZW1zRm9yTmFtZShLSlM6OkV4ZWNTdGF0ZSosICRpbXBsQ2xhc3NOYW1lKiwgY29uc3Qg
QXRvbWljU3RyaW5nJik7XG4iKQorICAgIH0KKyAgCiAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9
O1xuXG4iKTsKICAgCiAgIGlmICghJGhhc1BhcmVudCkgewpAQCAtNjQwLDcgKzY1MSw0MyBAQAog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoZ2V0T3ZlcnJpZGVQcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICB9CisgICAgCisgICAgbXkgJHJl
cXVpcmVzTWFudWFsTG9va3VwID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFz
SW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNOYW1l
R2V0dGVyIn07CisgICAgaWYgKCRyZXF1aXJlc01hbnVhbExvb2t1cCkgeworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gTG9va3VwOjpmaW5k
RW50cnkoJiR7Y2xhc3NOYW1lfVRhYmxlLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmIChlbnRyeSkge1xuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBzbG90LnNldFN0YXRpY0VudHJ5KHRoaXMsIGVudHJ5LCBzdGF0
aWNWYWx1ZUdldHRlcjwkY2xhc3NOYW1lPik7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIH1cbiIpOworICAgIH0KKyAgICAKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSGFzTmFtZUdldHRlciJ9KSB7CisgICAgICAgICMgaWYgaXQgaGFzIGEgcHJv
dG90eXBlLCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgZmlyc3QgdG9vCisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGlmIChwcm90b3R5cGUoKS0+aXNPYmplY3QoKSAmJiBzdGF0aWNfY2Fz
dDxKU09iamVjdCo+KHByb3RvdHlwZSgpKS0+aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1l
KSlcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNl
O1xuIik7CisgICAgfQorICAgIAorICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJIYXNJbmRleEdldHRlciJ9KSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGJvb2wgb2s7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdW5zaWduZWQg
dSA9IHByb3BlcnR5TmFtZS50b1VJbnQzMigmb2spO1xuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmIChvayAmJiB1IDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihp
bXBsKCkpLT5sZW5ndGgoKSkge1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMsIHUsIGluZGV4R2V0dGVyKTtcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CisgICAgfQorICAgIAorICAgIGlmICgk
ZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNOYW1lR2V0dGVyIn0pIHsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCBz
dGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSksIHByb3BlcnR5TmFtZSkpIHtcbiIp
OworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2xvdC5zZXRDdXN0b20odGhp
cywgbmFtZUdldHRlcik7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IHJldHVybiB0cnVlO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIp
OworICAgIH0KKyAgICAKKyAgICBpZiAoJHJlcXVpcmVzTWFudWFsTG9va3VwKSB7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAke3BhcmVudENsYXNzTmFtZX06OmdldE93
blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgfSBlbHNl
IHsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90
PCRjbGFzc05hbWUsICRwYXJlbnRDbGFzc05hbWU+KGV4ZWMsICYke2NsYXNzTmFtZX1UYWJsZSwg
dGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgIH0KICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn1cblxuIik7CiAgIAogICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSogJHtj
bGFzc05hbWV9OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBj
b25zdFxue1xuIik7CkBAIC04MDgsNiArODU1LDE0IEBACiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG4iKQogICB9CiAgIAorICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SGFzSW5kZXhHZXR0ZXIifSkgeworICAgIHB1c2goQGltcGxDb250ZW50LCAiXG5KU1ZhbHVlKiAk
e2NsYXNzTmFtZX06OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9yaWdp
bmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdClcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8
JGNsYXNzTmFtZSo+KHNsb3Quc2xvdEJhc2UoKSk7XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHRo
aXNPYmotPmltcGwoKSktPml0ZW0oc2xvdC5pbmRleCgpKSk7XG4iKTsKKyAgICBwdXNoKEBpbXBs
Q29udGVudCwgIn1cbiIpOworICB9CisgICAgCiAgIGlmICghJGhhc1BhcmVudCkgewogICAgIHB1
c2goQGltcGxDb250ZW50LCB0b0Z1bmN0aW9uc0ZvcigkY2xhc3NOYW1lLCAkaW1wbENsYXNzTmFt
ZSwgJGludGVyZmFjZU5hbWUpKTsKICAgfQpAQCAtMTAzOCw5ICsxMDkzLDYgQEAKICAgICAgJGlt
cGxJbmNsdWRlc3siU3R5bGVTaGVldExpc3QuaCJ9ID0gMTsKICAgICAgJGltcGxJbmNsdWRlc3si
a2pzX2Nzcy5oIn0gPSAxOwogICAgICByZXR1cm4gInRvSlMoZXhlYywgJHZhbHVlLCBpbXBsKSI7
Ci0gIH0gZWxzaWYgKCR0eXBlIGVxICJDU1NSdWxlTGlzdCIpIHsKLSAgICAgJGltcGxJbmNsdWRl
c3siQ1NTUnVsZUxpc3QuaCJ9ID0gMTsKLSAgICAgcmV0dXJuICJ0b0pTKGV4ZWMsICR2YWx1ZSki
OyAgCiAgICB9IGVsc2lmICgkdHlwZSBlcSAiQ1NTU3R5bGVEZWNsYXJhdGlvbiIgb3IgJHR5cGUg
ZXEgIlJlY3QiKSB7CiAgICAgJGltcGxJbmNsdWRlc3siQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIn0g
PSAxOwogICAgICRpbXBsSW5jbHVkZXN7IlJlY3RJbXBsLmgifSA9IDE7CkluZGV4OiBiaW5kaW5n
cy9qcy9ranNfY3NzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMva2pzX2Nzcy5oCShyZXZp
c2lvbiAxNDU3NykKKysrIGJpbmRpbmdzL2pzL2tqc19jc3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ4LDI1ICsxNDgsNiBAQAogICAgIGVudW0geyBPd25lclJ1bGUsIENzc1J1bGVzLCBSdWxlcywg
SW5zZXJ0UnVsZSwgRGVsZXRlUnVsZSwgQWRkUnVsZSwgUmVtb3ZlUnVsZSB9OwogICB9OwogCi0g
IGNsYXNzIERPTUNTU1J1bGVMaXN0IDogcHVibGljIERPTU9iamVjdCB7Ci0gIHB1YmxpYzoKLSAg
ICBET01DU1NSdWxlTGlzdChFeGVjU3RhdGUqLCBXZWJDb3JlOjpDU1NSdWxlTGlzdCopOwotICAg
IHZpcnR1YWwgfkRPTUNTU1J1bGVMaXN0KCk7Ci0gICAgdmlydHVhbCBib29sIGdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0g
ICAgSlNWYWx1ZSogZ2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0
OwotICAgIC8vIG5vIHB1dCAtIGFsbCByZWFkLW9ubHkKLSAgICB2aXJ0dWFsIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KLSAgICBzdGF0aWMgY29u
c3QgQ2xhc3NJbmZvIGluZm87Ci0gICAgZW51bSB7IEl0ZW0sIExlbmd0aCB9OwotICAgIFdlYkNv
cmU6OkNTU1J1bGVMaXN0KiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9Ci0g
IHByaXZhdGU6Ci0gICAgc3RhdGljIEpTVmFsdWUqIGluZGV4R2V0dGVyKEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotCi0gICAg
UmVmUHRyPFdlYkNvcmU6OkNTU1J1bGVMaXN0PiBtX2ltcGw7Ci0gIH07Ci0KLSAgSlNWYWx1ZSog
dG9KUyhFeGVjU3RhdGUqLCBXZWJDb3JlOjpDU1NSdWxlTGlzdCopOwotCiAgIGNsYXNzIERPTUNT
U1J1bGUgOiBwdWJsaWMgRE9NT2JqZWN0IHsKICAgcHVibGljOgogICAgIERPTUNTU1J1bGUoRXhl
Y1N0YXRlKiwgV2ViQ29yZTo6Q1NTUnVsZSopOwpAQCAtMjExLDE5ICsxOTIsNiBAQAogCiAgIEpT
VmFsdWUqIHRvSlMoRXhlY1N0YXRlKiwgV2ViQ29yZTo6Q1NTVmFsdWUqKTsKIAotICBjbGFzcyBE
T01DU1NWYWx1ZUxpc3QgOiBwdWJsaWMgRE9NQ1NTVmFsdWUgewotICBwdWJsaWM6Ci0gICAgRE9N
Q1NTVmFsdWVMaXN0KEV4ZWNTdGF0ZSosIFdlYkNvcmU6OkNTU1ZhbHVlTGlzdCopOwotICAgIHZp
cnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5U2xvdCYpOwotICAgIEpTVmFsdWUqIGdldFZhbHVlUHJvcGVydHkoRXhlY1N0
YXRlKiwgaW50IHRva2VuKSBjb25zdDsKLSAgICAvLyBubyBwdXQgLSBhbGwgcmVhZC1vbmx5Ci0g
ICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZp
bmZvOyB9Ci0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwotICAgIGVudW0geyBMZW5n
dGgsIEl0ZW0gfTsKLSAgcHJpdmF0ZToKLSAgICBzdGF0aWMgSlNWYWx1ZSogaW5kZXhHZXR0ZXIo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jik7Ci0gIH07Ci0KICAgY2xhc3MgRE9NUkdCQ29sb3IgOiBwdWJsaWMgRE9NT2JqZWN0IHsK
ICAgcHVibGljOgogICAgIERPTVJHQkNvbG9yKHVuc2lnbmVkIGNvbG9yKSA6IG1fY29sb3IoY29s
b3IpIHsgfQpJbmRleDogYmluZGluZ3MvanMva2pzX2h0bWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5k
aW5ncy9qcy9ranNfaHRtbC5oCShyZXZpc2lvbiAxNDU3NykKKysrIGJpbmRpbmdzL2pzL2tqc19o
dG1sLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAKICAgICB2aXJ0dWFsIGNvbnN0
IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5m
byBpbmZvOwogCi0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBmb3JtX2luZm8sCisgICAgc3Rh
dGljIGNvbnN0IENsYXNzSW5mbwogICAgICAgc2VsZWN0X2luZm8sIG9iamVjdF9pbmZvLCAKICAg
ICAgIGVtYmVkX2luZm8sIHRhYmxlX2luZm8sIGNhcHRpb25faW5mbywgY29sX2luZm8sIHRhYmxl
c2VjdGlvbl9pbmZvLCB0cl9pbmZvLAogICAgICAgdGFibGVjZWxsX2luZm8sIGZyYW1lU2V0X2lu
Zm8sIGZyYW1lX2luZm8sIGlGcmFtZV9pbmZvLCBtYXJxdWVlX2luZm87CkBAIC04OCwxMyArODgs
MTEgQEAKICAgICB0eXBlZGVmIHZvaWQgKEpTSFRNTEVsZW1lbnQ6OipTZXR0ZXJGdW5jdGlvbiko
RXhlY1N0YXRlKiwgaW50IHRva2VuLCBKU1ZhbHVlKiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7
CiAgICAgc3RydWN0IEFjY2Vzc29ycyB7IEdldHRlckZ1bmN0aW9uIG1fZ2V0dGVyOyBTZXR0ZXJG
dW5jdGlvbiBtX3NldHRlcjsgfTsKICAgICBjb25zdCBBY2Nlc3NvcnMqIGFjY2Vzc29ycygpIGNv
bnN0OwotICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NvcnMgZm9ybV9hY2Nlc3NvcnMsCisgICAgc3Rh
dGljIGNvbnN0IEFjY2Vzc29ycwogICAgICAgc2VsZWN0X2FjY2Vzc29ycywgb2JqZWN0X2FjY2Vz
c29ycywgZW1iZWRfYWNjZXNzb3JzLCB0YWJsZV9hY2Nlc3NvcnMsCiAgICAgICBjYXB0aW9uX2Fj
Y2Vzc29ycywgY29sX2FjY2Vzc29ycywgdGFibGVzZWN0aW9uX2FjY2Vzc29ycywgdHJfYWNjZXNz
b3JzLAogICAgICAgdGFibGVjZWxsX2FjY2Vzc29ycywgZnJhbWVTZXRfYWNjZXNzb3JzLCBmcmFt
ZV9hY2Nlc3NvcnMsIGlGcmFtZV9hY2Nlc3NvcnMsIG1hcnF1ZWVfYWNjZXNzb3JzOwogCi0gICAg
SlNWYWx1ZSogZm9ybUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbikgY29uc3Q7Ci0g
ICAgdm9pZCAgZm9ybVNldHRlcihFeGVjU3RhdGUqLCBpbnQgdG9rZW4sIEpTVmFsdWUqLCBjb25z
dCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICBKU1ZhbHVlKiBzZWxlY3RHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBpbnQgdG9rZW4pIGNvbnN0OwogICAgIHZvaWQgIHNlbGVjdFNldHRlcihFeGVjU3Rh
dGUqLCBpbnQgdG9rZW4sIEpTVmFsdWUqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICBK
U1ZhbHVlKiBvYmplY3RHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4pIGNvbnN0OwpA
QCAtMTIzLDggKzEyMSw3IEBACiAgICAgdm9pZCAgbWFycXVlZVNldHRlcihFeGVjU3RhdGUqLCBp
bnQgdG9rZW4sIEpTVmFsdWUqLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKIAogICAgIGVudW0g
ewotICAgICAgICAgICBGb3JtQWN0aW9uLCBGb3JtRW5jVHlwZSwgRm9ybUVsZW1lbnRzLCBGb3Jt
TGVuZ3RoLCBGb3JtQWNjZXB0Q2hhcnNldCwKLSAgICAgICAgICAgRm9ybVJlc2V0LCBGb3JtVGFy
Z2V0LCBGb3JtTmFtZSwgRm9ybU1ldGhvZCwgRm9ybVN1Ym1pdCwgU2VsZWN0QWRkLAorICAgICAg
ICAgICBTZWxlY3RBZGQsCiAgICAgICAgICAgIFNlbGVjdFRhYkluZGV4LCBTZWxlY3RWYWx1ZSwg
U2VsZWN0U2VsZWN0ZWRJbmRleCwgU2VsZWN0TGVuZ3RoLAogICAgICAgICAgICBTZWxlY3RSZW1v
dmUsIFNlbGVjdEZvcm0sIFNlbGVjdEJsdXIsIFNlbGVjdFR5cGUsIFNlbGVjdE9wdGlvbnMsCiAg
ICAgICAgICAgIFNlbGVjdERpc2FibGVkLCBTZWxlY3RNdWx0aXBsZSwgU2VsZWN0TmFtZSwgU2Vs
ZWN0U2l6ZSwgU2VsZWN0Rm9jdXMsCkBAIC0xNjEsOCArMTU4LDYgQEAKICAgICAgICAgICAgRWxl
bWVudElzQ29udGVudEVkaXRhYmxlLCBFbGVtZW50T3V0ZXJIVE1MLCBFbGVtZW50T3V0ZXJUZXh0
CiAgIH07CiAgIHByaXZhdGU6Ci0gICAgc3RhdGljIEpTVmFsdWUqIGZvcm1JbmRleEdldHRlcihF
eGVjU3RhdGUqLCBKU09iamVjdCosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNs
b3QmKTsKLSAgICBzdGF0aWMgSlNWYWx1ZSogZm9ybU5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CiAgICAgc3Rh
dGljIEpTVmFsdWUqIHNlbGVjdEluZGV4R2V0dGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVl
KiBmcmFtZXNldE5hbWVHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIEpTVmFsdWUqIGZyYW1lV2lu
ZG93UHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90Jik7CkluZGV4OiBiaW5kaW5ncy9qcy9ranNfZG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9ranNfZG9tLmNwcAkocmV2aXNpb24gMTQ1NzcpCisr
KyBiaW5kaW5ncy9qcy9ranNfZG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMzLDcgKzczMyw3
IEBACiBKU1ZhbHVlICpET01Ob2RlTGlzdDo6bmFtZUdldHRlcihFeGVjU3RhdGUgKmV4ZWMsIEpT
T2JqZWN0ICpvcmlnaW5hbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgIERPTU5vZGVMaXN0ICp0aGlzT2JqID0gc3Rh
dGljX2Nhc3Q8RE9NTm9kZUxpc3QqPihzbG90LnNsb3RCYXNlKCkpOwotICByZXR1cm4gdG9KUyhl
eGVjLCB0aGlzT2JqLT5tX2ltcGwtPml0ZW1CeUlkKHByb3BlcnR5TmFtZSkpOworICByZXR1cm4g
dG9KUyhleGVjLCB0aGlzT2JqLT5tX2ltcGwtPml0ZW1XaXRoTmFtZShwcm9wZXJ0eU5hbWUpKTsK
IH0KIAogYm9vbCBET01Ob2RlTGlzdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBA
IC03NDgsMTUgKzc0OCwxMyBAQAogICAgIHJldHVybiB0cnVlOwogICB9CiAKLSAgTm9kZUxpc3Qg
Jmxpc3QgPSAqbV9pbXBsOwotCiAgIC8vIGFycmF5IGluZGV4ID8KICAgYm9vbCBvazsKICAgdW5z
aWduZWQgaWR4ID0gcHJvcGVydHlOYW1lLnRvVUludDMyKCZvayk7Ci0gIGlmIChvayAmJiBpZHgg
PCBsaXN0Lmxlbmd0aCgpKSB7CisgIGlmIChvayAmJiBpZHggPCBtX2ltcGwtPmxlbmd0aCgpKSB7
CiAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzLCBpZHgsIGluZGV4R2V0dGVyKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgfSBlbHNlIGlmIChsaXN0Lml0ZW1CeUlkKFN0cmluZyhwcm9wZXJ0eU5h
bWUpLmltcGwoKSkpIHsKKyAgfSBlbHNlIGlmIChtX2ltcGwtPml0ZW1XaXRoTmFtZShTdHJpbmco
cHJvcGVydHlOYW1lKS5pbXBsKCkpKSB7CiAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgbmFtZUdl
dHRlcik7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KSW5kZXg6IGJpbmRpbmdzL2pzL0pTSFRNTElu
cHV0RWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTSFRNTElucHV0
RWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiAxNDU3NykKKysrIGJpbmRpbmdzL2pzL0pTSFRNTElu
cHV0RWxlbWVudEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw4IEBACiAgICAg
cmV0dXJuIDA7CiB9CiAKLS8vIFNldFNlbGVjdGlvblJhbmdlIGlzIGltcGxlbWVudGVkIG9uIHRo
ZSBjbGFzcyBpbnN0ZWFkIG9mIG9uIHRoZSBwcm90b3R5cGUsIGludGVudGlvbmFsbHkuCisvLyBT
ZXRTZWxlY3Rpb25SYW5nZSBpcyBpbXBsZW1lbnRlZCBvbiB0aGUgY2xhc3MgaW5zdGVhZCBvZiBv
biB0aGUgcHJvdG90eXBlCisvLyB0byBtYWtlIGl0IGVhc2llciB0byBlbmFibGUvZGlzYWJsZSBs
b29rdXAgb2YgdGhlIGZ1bmN0aW9uIGJhc2VkIG9uIGlucHV0IHR5cGUuCiBjbGFzcyBKU0hUTUxJ
bnB1dEVsZW1lbnRCYXNlRnVuY3Rpb24gOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbkltcCB7CiBw
dWJsaWM6CiAgICAgSlNIVE1MSW5wdXRFbGVtZW50QmFzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIGlu
dCBpLCBpbnQgbGVuLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKTsKSW5kZXg6IGJpbmRpbmdzL2pz
L2tqc19jc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL2tqc19jc3MuY3BwCShyZXZp
c2lvbiAxNDU3NykKKysrIGJpbmRpbmdzL2pzL2tqc19jc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiSlNDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1
ZGUgIkpTQ1NTUnVsZS5oIgogI2luY2x1ZGUgIkpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTQ1NTUnVsZUxpc3QuaCIKKyNpbmNsdWRlICJKU0NTU1ZhbHVlTGlzdC5oIgogI2lu
Y2x1ZGUgIk1lZGlhTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVk
ZSAia2pzX2RvbS5oIgpAQCAtNjM4LDg2ICs2NDAsNiBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLWNvbnN0IENsYXNzSW5mbyBET01DU1NSdWxlTGlzdDo6aW5mbyA9IHsgIkNTU1J1bGVMaXN0
IiwgMCwgJkRPTUNTU1J1bGVMaXN0VGFibGUsIDAgfTsKLS8qCi1AYmVnaW4gRE9NQ1NTUnVsZUxp
c3RUYWJsZSAyCi0gIGxlbmd0aCAgICAgICAgICAgICAgICBET01DU1NSdWxlTGlzdDo6TGVuZ3Ro
ICAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgaXRlbSAgICAgICAgICAgICAgICAgIERP
TUNTU1J1bGVMaXN0OjpJdGVtICAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi1AZW5k
Ci0qLwotS0pTX0lNUExFTUVOVF9QUk9UT0ZVTkMoRE9NQ1NTUnVsZUxpc3RGdW5jKSAvLyBub3Qg
cmVhbGx5IGEgcHJvdG8sIGJ1dCBkb2Vzbid0IG1hdHRlcgotCi1ET01DU1NSdWxlTGlzdDo6RE9N
Q1NTUnVsZUxpc3QoRXhlY1N0YXRlICosIFdlYkNvcmU6OkNTU1J1bGVMaXN0ICpybCkgCi0gIDog
bV9pbXBsKHJsKSAKLXsgCi19Ci0KLURPTUNTU1J1bGVMaXN0Ojp+RE9NQ1NTUnVsZUxpc3QoKQot
ewotICBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NT2JqZWN0KG1faW1wbC5nZXQoKSk7Ci19
Ci0KLUpTVmFsdWUqIERPTUNTU1J1bGVMaXN0OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSog
ZXhlYywgaW50IHRva2VuKSBjb25zdAotewotICBzd2l0Y2ggKHRva2VuKSB7Ci0gIGNhc2UgTGVu
Z3RoOgotICAgIHJldHVybiBqc051bWJlcihtX2ltcGwtPmxlbmd0aCgpKTsKLSAgZGVmYXVsdDoK
LSAgICBhc3NlcnQoMCk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gIH0KLX0KLQotSlNW
YWx1ZSogRE9NQ1NTUnVsZUxpc3Q6OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgRE9NQ1NTUnVsZUxpc3QgKnRoaXNPYmogPSBzdGF0
aWNfY2FzdDxET01DU1NSdWxlTGlzdCo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gIHJldHVybiB0b0pT
KGV4ZWMsIHRoaXNPYmotPm1faW1wbC0+aXRlbShzbG90LmluZGV4KCkpKTsKLX0KLQotYm9vbCBE
T01DU1NSdWxlTGlzdDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gIGNvbnN0
IEhhc2hFbnRyeSogZW50cnkgPSBMb29rdXA6OmZpbmRFbnRyeSgmRE9NQ1NTUnVsZUxpc3RUYWJs
ZSwgcHJvcGVydHlOYW1lKTsKLQotICBpZiAoZW50cnkpIHsKLSAgICBpZiAoZW50cnktPmF0dHIg
JiBGdW5jdGlvbikKLSAgICAgIHNsb3Quc2V0U3RhdGljRW50cnkodGhpcywgZW50cnksIHN0YXRp
Y0Z1bmN0aW9uR2V0dGVyPERPTUNTU1J1bGVMaXN0RnVuYz4pOwotICAgIGVsc2UKLSAgICAgIHNs
b3Quc2V0U3RhdGljRW50cnkodGhpcywgZW50cnksIHN0YXRpY1ZhbHVlR2V0dGVyPERPTUNTU1J1
bGVMaXN0Pik7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLQotICBDU1NSdWxlTGlzdCAmY3NzUnVs
ZUxpc3QgPSAqbV9pbXBsOwotCi0gIGJvb2wgb2s7Ci0gIHVuc2lnbmVkIHUgPSBwcm9wZXJ0eU5h
bWUudG9VSW50MzIoJm9rKTsKLSAgaWYgKG9rICYmIHUgPCBjc3NSdWxlTGlzdC5sZW5ndGgoKSkg
ewotICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgdSwgaW5kZXhHZXR0ZXIpOwotICAgIHJl
dHVybiB0cnVlOwotICB9Ci0KLSAgcmV0dXJuIERPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLUpTVmFsdWUqIERPTUNTU1J1bGVMaXN0
RnVuYzo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwg
Y29uc3QgTGlzdCAmYXJncykKLXsKLSAgaWYgKCF0aGlzT2JqLT5pbmhlcml0cygmS0pTOjpET01D
U1NSdWxlTGlzdDo6aW5mbykpCi0gICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9y
KTsKLSAgQ1NTUnVsZUxpc3QgJmNzc1J1bGVMaXN0ID0gKnN0YXRpY19jYXN0PERPTUNTU1J1bGVM
aXN0Kj4odGhpc09iaiktPmltcGwoKTsKLSAgc3dpdGNoIChpZCkgewotICAgIGNhc2UgRE9NQ1NT
UnVsZUxpc3Q6Okl0ZW06Ci0gICAgICByZXR1cm4gdG9KUyhleGVjLGNzc1J1bGVMaXN0Lml0ZW0o
YXJnc1swXS0+dG9JbnQzMihleGVjKSkpOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLSAgfQotfQotCi1KU1ZhbHVlKiB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgQ1NT
UnVsZUxpc3QgKnJsKQotewotICByZXR1cm4gY2FjaGVET01PYmplY3Q8Q1NTUnVsZUxpc3QsIERP
TUNTU1J1bGVMaXN0PihleGVjLCBybCk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogS0pT
X0lNUExFTUVOVF9QUk9UT0ZVTkMoRE9NQ1NTUnVsZUZ1bmMpIC8vIE5vdCBhIHByb3RvLCBidXQg
ZG9lc24ndCBtYXR0ZXIKIAogRE9NQ1NTUnVsZTo6RE9NQ1NTUnVsZShFeGVjU3RhdGUqLCBXZWJD
b3JlOjpDU1NSdWxlKiByKQpAQCAtOTgyLDcgKzkwNCw3IEBACiAgICAgcmV0dXJuIHJldDsKICAg
ZWxzZSB7CiAgICAgaWYgKHYtPmlzVmFsdWVMaXN0KCkpCi0gICAgICByZXQgPSBuZXcgRE9NQ1NT
VmFsdWVMaXN0KGV4ZWMsIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHYpKTsKKyAgICAgIHJl
dCA9IG5ldyBKU0NTU1ZhbHVlTGlzdChleGVjLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2
KSk7CiAgICAgZWxzZSBpZiAodi0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgcmV0ID0gbmV3
IEpTQ1NTUHJpbWl0aXZlVmFsdWUoZXhlYywgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2KSk7CiAgICAgZWxzZQpAQCAtOTk0LDY5ICs5MTYsNiBAQAogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLWNvbnN0IENsYXNzSW5mbyBET01DU1NWYWx1ZUxpc3Q6OmluZm8gPSB7ICJDU1NWYWx1
ZUxpc3QiLCAwLCAmRE9NQ1NTVmFsdWVMaXN0VGFibGUsIDAgfTsKLQotLyoKLUBiZWdpbiBET01D
U1NWYWx1ZUxpc3RUYWJsZSAzCi0gIGxlbmd0aCAgICAgICAgICAgICAgICBET01DU1NWYWx1ZUxp
c3Q6Okxlbmd0aCAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgaXRlbSAgICAgICAgICAg
ICAgICAgIERPTUNTU1ZhbHVlTGlzdDo6SXRlbSAgICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlv
biAxCi1AZW5kCi0qLwotS0pTX0lNUExFTUVOVF9QUk9UT0ZVTkMoRE9NQ1NTVmFsdWVMaXN0RnVu
YykgLy8gbm90IHJlYWxseSBhIHByb3RvLCBidXQgZG9lc24ndCBtYXR0ZXIKLQotRE9NQ1NTVmFs
dWVMaXN0OjpET01DU1NWYWx1ZUxpc3QoRXhlY1N0YXRlKiBleGVjLCBDU1NWYWx1ZUxpc3QgKnYp
Ci0gIDogRE9NQ1NTVmFsdWUoZXhlYywgdikgCi17IAotfQotCi1KU1ZhbHVlKiBET01DU1NWYWx1
ZUxpc3Q6OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4pIGNvbnN0
Ci17Ci0gIGFzc2VydCh0b2tlbiA9PSBMZW5ndGgpOwotICByZXR1cm4ganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oaW1wbCgpKS0+bGVuZ3RoKCkpOwotfQotCi1KU1ZhbHVlKiBE
T01DU1NWYWx1ZUxpc3Q6OmluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9y
aWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3Bl
cnR5U2xvdCYgc2xvdCkKLXsKLSAgRE9NQ1NTVmFsdWVMaXN0ICp0aGlzT2JqID0gc3RhdGljX2Nh
c3Q8RE9NQ1NTVmFsdWVMaXN0Kj4oc2xvdC5zbG90QmFzZSgpKTsKLSAgcmV0dXJuIHRvSlMoZXhl
Yywgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odGhpc09iai0+aW1wbCgpKS0+aXRlbShzbG90
LmluZGV4KCkpKTsKLX0KLQotYm9vbCBET01DU1NWYWx1ZUxpc3Q6OmdldE93blByb3BlcnR5U2xv
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90JiBzbG90KQotewotICBDU1NWYWx1ZUxpc3QgJnZhbHVlTGlzdCA9ICpzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPihpbXBsKCkpOwotICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0gTG9v
a3VwOjpmaW5kRW50cnkoJkRPTUNTU1ZhbHVlTGlzdFRhYmxlLCBwcm9wZXJ0eU5hbWUpOwotICBp
ZiAoZW50cnkpIHsKLSAgICBpZiAoZW50cnktPmF0dHIgJiBGdW5jdGlvbikKLSAgICAgIHNsb3Qu
c2V0U3RhdGljRW50cnkodGhpcywgZW50cnksIHN0YXRpY0Z1bmN0aW9uR2V0dGVyPERPTUNTU1Zh
bHVlTGlzdEZ1bmM+KTsKLSAgICBlbHNlCi0gICAgICBzbG90LnNldFN0YXRpY0VudHJ5KHRoaXMs
IGVudHJ5LCBzdGF0aWNWYWx1ZUdldHRlcjxET01DU1NWYWx1ZUxpc3Q+KTsKLSAgfQotCi0gIGJv
b2wgb2s7Ci0gIHVuc2lnbmVkIHUgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKLSAgaWYg
KG9rICYmIHUgPCB2YWx1ZUxpc3QubGVuZ3RoKCkpIHsKLSAgICBzbG90LnNldEN1c3RvbUluZGV4
KHRoaXMsIHUsIGluZGV4R2V0dGVyKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSAgfQotCi0gIHJldHVy
biBET01DU1NWYWx1ZTo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7Ci19Ci0KLUpTVmFsdWUqIERPTUNTU1ZhbHVlTGlzdEZ1bmM6OmNhbGxBc0Z1bmN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QgJmFyZ3MpCi17Ci0g
IGlmICghdGhpc09iai0+aW5oZXJpdHMoJktKUzo6RE9NQ1NTVmFsdWU6OmluZm8pKQotICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gIENTU1ZhbHVlTGlzdCAmdmFsdWVM
aXN0ID0gKnN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHN0YXRpY19jYXN0PERPTUNTU1ZhbHVl
TGlzdCo+KHRoaXNPYmopLT5pbXBsKCkpOwotICBzd2l0Y2ggKGlkKSB7Ci0gICAgY2FzZSBET01D
U1NWYWx1ZUxpc3Q6Okl0ZW06Ci0gICAgICByZXR1cm4gdG9KUyhleGVjLHZhbHVlTGlzdC5pdGVt
KGFyZ3NbMF0tPnRvSW50MzIoZXhlYykpKTsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gIH0KLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBjb25zdCBDbGFz
c0luZm8gRE9NUkdCQ29sb3I6OmluZm8gPSB7ICJSR0JDb2xvciIsIDAsICZET01SR0JDb2xvclRh
YmxlLCAwIH07CiAKIC8qCkluZGV4OiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50V3JhcHBlckZh
Y3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRXcmFwcGVy
RmFjdG9yeS5jcHAJKHJldmlzaW9uIDE0NTc3KQorKysgYmluZGluZ3MvanMvSlNIVE1MRWxlbWVu
dFdyYXBwZXJGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxETGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEZvbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEZvcm1FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRp
bmdFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEhSRWxlbWVudC5oIgpAQCAtNzksNiArODAsNyBA
QAogI2luY2x1ZGUgIkpTSFRNTERMaXN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTEZpZWxk
U2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkpTSFRNTEZvbnRFbGVtZW50LmgiCisjaW5jbHVkZSAi
SlNIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxIZWFkRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkpTSFRNTEhlYWRpbmdFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNIVE1MSFJFbGVtZW50
LmgiCkBAIC0xMzUsNiArMTM3LDcgQEAKICAgICBtYWNybyhkaXYsIERpdikgXAogICAgIG1hY3Jv
KGRsLCBETGlzdCkgXAogICAgIG1hY3JvKGZpZWxkc2V0LCBGaWVsZFNldCkgXAorICAgIG1hY3Jv
KGZvcm0sIEZvcm0pIFwKICAgICBtYWNybyhmb250LCBGb250KSBcCiAgICAgbWFjcm8oaDEsIEhl
YWRpbmcpIFwKICAgICBtYWNybyhoZWFkLCBIZWFkKSBcCkBAIC0xODgsOSArMTkxLDkgQEAKICAg
ICAgICAgbWFwLnNldChpbnNUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCBjcmVhdGVNb2RXcmFwcGVy
KTsKICAgICAgICAgbWFwLnNldChsaXN0aW5nVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRl
UHJlV3JhcHBlcik7CiAgICAgfQotICAgIENyZWF0ZUhUTUxFbGVtZW50V3JhcHBlckZ1bmN0aW9u
IGYgPSBtYXAuZ2V0KGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgaWYgKGYpCi0g
ICAgICAgIHJldHVybiBmKGV4ZWMsIGVsZW1lbnQpOworICAgIENyZWF0ZUhUTUxFbGVtZW50V3Jh
cHBlckZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbiA9IG1hcC5nZXQoZWxlbWVudC0+bG9j
YWxOYW1lKCkuaW1wbCgpKTsKKyAgICBpZiAoY3JlYXRlV3JhcHBlckZ1bmN0aW9uKQorICAgICAg
ICByZXR1cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGV4ZWMsIGVsZW1lbnQpOwogICAgIHJldHVy
biBuZXcgS0pTOjpKU0hUTUxFbGVtZW50KGV4ZWMsIGVsZW1lbnQuZ2V0KCkpOwogfQogCkluZGV4
OiBiaW5kaW5ncy9qcy9ranNfaHRtbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMva2pz
X2h0bWwuY3BwCShyZXZpc2lvbiAxNDU3NykKKysrIGJpbmRpbmdzL2pzL2tqc19odG1sLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQzLDcgKzQ0Myw2IEBACiBjb25zdCBDbGFzc0luZm8gSlNIVE1M
RWxlbWVudDo6Y2FwdGlvbl9pbmZvID0geyAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQiLCAmSlNI
VE1MRWxlbWVudDo6aW5mbywgJkhUTUxUYWJsZUNhcHRpb25FbGVtZW50VGFibGUsIDAgfTsKIGNv
bnN0IENsYXNzSW5mbyBKU0hUTUxFbGVtZW50Ojpjb2xfaW5mbyA9IHsgIkhUTUxUYWJsZUNvbEVs
ZW1lbnQiLCAmSlNIVE1MRWxlbWVudDo6aW5mbywgJkhUTUxUYWJsZUNvbEVsZW1lbnRUYWJsZSwg
MCB9OwogY29uc3QgQ2xhc3NJbmZvIEpTSFRNTEVsZW1lbnQ6OmVtYmVkX2luZm8gPSB7ICJIVE1M
RW1iZWRFbGVtZW50IiwgJkpTSFRNTEVsZW1lbnQ6OmluZm8sICZIVE1MRW1iZWRFbGVtZW50VGFi
bGUsIDAgfTsKLWNvbnN0IENsYXNzSW5mbyBKU0hUTUxFbGVtZW50Ojpmb3JtX2luZm8gPSB7ICJI
VE1MRm9ybUVsZW1lbnQiLCAmSlNIVE1MRWxlbWVudDo6aW5mbywgJkhUTUxGb3JtRWxlbWVudFRh
YmxlLCAwIH07CiBjb25zdCBDbGFzc0luZm8gSlNIVE1MRWxlbWVudDo6ZnJhbWVTZXRfaW5mbyA9
IHsgIkhUTUxGcmFtZVNldEVsZW1lbnQiLCAmSlNIVE1MRWxlbWVudDo6aW5mbywgJkhUTUxGcmFt
ZVNldEVsZW1lbnRUYWJsZSwgMCB9OwogY29uc3QgQ2xhc3NJbmZvIEpTSFRNTEVsZW1lbnQ6OmZy
YW1lX2luZm8gPSB7ICJIVE1MRnJhbWVFbGVtZW50IiwgJkpTSFRNTEVsZW1lbnQ6OmluZm8sICZI
VE1MRnJhbWVFbGVtZW50VGFibGUsIDAgfTsKIGNvbnN0IENsYXNzSW5mbyBKU0hUTUxFbGVtZW50
OjppRnJhbWVfaW5mbyA9IHsgIkhUTUxJRnJhbWVFbGVtZW50IiwgJkpTSFRNTEVsZW1lbnQ6Omlu
Zm8sICZIVE1MSUZyYW1lRWxlbWVudFRhYmxlLCAwIH07CkBAIC00NjQsNyArNDYzLDYgQEAKICAg
ICAgICAgY2xhc3NJbmZvTWFwLnNldChjb2xUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmY29sX2lu
Zm8pOwogICAgICAgICBjbGFzc0luZm9NYXAuc2V0KGNvbGdyb3VwVGFnLmxvY2FsTmFtZSgpLmlt
cGwoKSwgJmNvbF9pbmZvKTsKICAgICAgICAgY2xhc3NJbmZvTWFwLnNldChlbWJlZFRhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksICZlbWJlZF9pbmZvKTsKLSAgICAgICAgY2xhc3NJbmZvTWFwLnNldChm
b3JtVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJmZvcm1faW5mbyk7CiAgICAgICAgIGNsYXNzSW5m
b01hcC5zZXQoZnJhbWVUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmZnJhbWVfaW5mbyk7CiAgICAg
ICAgIGNsYXNzSW5mb01hcC5zZXQoZnJhbWVzZXRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmZnJh
bWVTZXRfaW5mbyk7CiAgICAgICAgIGNsYXNzSW5mb01hcC5zZXQoaWZyYW1lVGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSwgJmlGcmFtZV9pbmZvKTsKQEAgLTQ4Nyw3ICs0ODUsNiBAQAogICAgIHJldHVy
biAmaW5mbzsKIH0KIAotY29uc3QgSlNIVE1MRWxlbWVudDo6QWNjZXNzb3JzIEpTSFRNTEVsZW1l
bnQ6OmZvcm1fYWNjZXNzb3JzID0geyAmSlNIVE1MRWxlbWVudDo6Zm9ybUdldHRlciwgJkpTSFRN
TEVsZW1lbnQ6OmZvcm1TZXR0ZXIgfTsKIGNvbnN0IEpTSFRNTEVsZW1lbnQ6OkFjY2Vzc29ycyBK
U0hUTUxFbGVtZW50OjpzZWxlY3RfYWNjZXNzb3JzID0geyAmSlNIVE1MRWxlbWVudDo6c2VsZWN0
R2V0dGVyLCAmSlNIVE1MRWxlbWVudDo6c2VsZWN0U2V0dGVyIH07CiBjb25zdCBKU0hUTUxFbGVt
ZW50OjpBY2Nlc3NvcnMgSlNIVE1MRWxlbWVudDo6b2JqZWN0X2FjY2Vzc29ycyA9IHsgJkpTSFRN
TEVsZW1lbnQ6Om9iamVjdEdldHRlciwgJkpTSFRNTEVsZW1lbnQ6Om9iamVjdFNldHRlciB9Owog
Y29uc3QgSlNIVE1MRWxlbWVudDo6QWNjZXNzb3JzIEpTSFRNTEVsZW1lbnQ6OmVtYmVkX2FjY2Vz
c29ycyA9IHsgJkpTSFRNTEVsZW1lbnQ6OmVtYmVkR2V0dGVyLCAmSlNIVE1MRWxlbWVudDo6ZW1i
ZWRTZXR0ZXIgfTsKQEAgLTUxMCw3ICs1MDcsNiBAQAogICAgICAgICBhY2Nlc3Nvck1hcC5hZGQo
Y29sVGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgJmNvbF9hY2Nlc3NvcnMpOwogICAgICAgICBhY2Nl
c3Nvck1hcC5hZGQoY29sZ3JvdXBUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmY29sX2FjY2Vzc29y
cyk7CiAgICAgICAgIGFjY2Vzc29yTWFwLmFkZChlbWJlZFRhZy5sb2NhbE5hbWUoKS5pbXBsKCks
ICZlbWJlZF9hY2Nlc3NvcnMpOwotICAgICAgICBhY2Nlc3Nvck1hcC5hZGQoZm9ybVRhZy5sb2Nh
bE5hbWUoKS5pbXBsKCksICZmb3JtX2FjY2Vzc29ycyk7CiAgICAgICAgIGFjY2Vzc29yTWFwLmFk
ZChmcmFtZVRhZy5sb2NhbE5hbWUoKS5pbXBsKCksICZmcmFtZV9hY2Nlc3NvcnMpOwogICAgICAg
ICBhY2Nlc3Nvck1hcC5hZGQoZnJhbWVzZXRUYWcubG9jYWxOYW1lKCkuaW1wbCgpLCAmZnJhbWVT
ZXRfYWNjZXNzb3JzKTsKICAgICAgICAgYWNjZXNzb3JNYXAuYWRkKGlmcmFtZVRhZy5sb2NhbE5h
bWUoKS5pbXBsKCksICZpRnJhbWVfYWNjZXNzb3JzKTsKQEAgLTU1MSwxOSArNTQ3LDYgQEAKICAg
Y29udGVudEVkaXRhYmxlICAgS0pTOjpKU0hUTUxFbGVtZW50OjpFbGVtZW50Q29udGVudEVkaXRh
YmxlICBEb250RGVsZXRlCiAgIGlzQ29udGVudEVkaXRhYmxlIEtKUzo6SlNIVE1MRWxlbWVudDo6
RWxlbWVudElzQ29udGVudEVkaXRhYmxlICBEb250RGVsZXRlfFJlYWRPbmx5CiBAZW5kCi1AYmVn
aW4gSFRNTEZvcm1FbGVtZW50VGFibGUgMTEKLSMgQWxzbyBzdXBwb3J0ZWQsIGJ5IG5hbWUvaW5k
ZXgKLSAgZWxlbWVudHMgICAgICBLSlM6OkpTSFRNTEVsZW1lbnQ6OkZvcm1FbGVtZW50cyAgRG9u
dERlbGV0ZXxSZWFkT25seQotICBsZW5ndGggICAgICAgIEtKUzo6SlNIVE1MRWxlbWVudDo6Rm9y
bUxlbmd0aCAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIG5hbWUgICAgICAgICAgS0pTOjpKU0hU
TUxFbGVtZW50OjpGb3JtTmFtZSAgICAgIERvbnREZWxldGUKLSAgYWNjZXB0Q2hhcnNldCBLSlM6
OkpTSFRNTEVsZW1lbnQ6OkZvcm1BY2NlcHRDaGFyc2V0ICAgICBEb250RGVsZXRlCi0gIGFjdGlv
biAgICAgICAgS0pTOjpKU0hUTUxFbGVtZW50OjpGb3JtQWN0aW9uICAgIERvbnREZWxldGUKLSAg
ZW5jdHlwZSAgICAgICBLSlM6OkpTSFRNTEVsZW1lbnQ6OkZvcm1FbmNUeXBlICAgRG9udERlbGV0
ZQotICBtZXRob2QgICAgICAgIEtKUzo6SlNIVE1MRWxlbWVudDo6Rm9ybU1ldGhvZCAgICBEb250
RGVsZXRlCi0gIHRhcmdldCAgICAgICAgS0pTOjpKU0hUTUxFbGVtZW50OjpGb3JtVGFyZ2V0ICAg
IERvbnREZWxldGUKLSAgc3VibWl0ICAgICAgICBLSlM6OkpTSFRNTEVsZW1lbnQ6OkZvcm1TdWJt
aXQgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCi0gIHJlc2V0ICAgICAgICAgS0pTOjpKU0hUTUxF
bGVtZW50OjpGb3JtUmVzZXQgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMAotQGVuZAogQGJlZ2lu
IEhUTUxTZWxlY3RFbGVtZW50VGFibGUgMTEKICMgQWxzbyBzdXBwb3J0ZWQsIGJ5IGluZGV4CiAg
IHR5cGUgICAgICAgICAgS0pTOjpKU0hUTUxFbGVtZW50OjpTZWxlY3RUeXBlICAgIERvbnREZWxl
dGV8UmVhZE9ubHkKQEAgLTczOSwyMiArNzIyLDYgQEAKICAgICBzZXRQcm90b3R5cGUoSlNIVE1M
RWxlbWVudFByb3RvOjpzZWxmKGV4ZWMpKTsKIH0KIAotSlNWYWx1ZSAqSlNIVE1MRWxlbWVudDo6
Zm9ybUluZGV4R2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywgSlNPYmplY3QgKm9yaWdpbmFsT2JqZWN0
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCkKLXsKLSAgICBKU0hUTUxFbGVtZW50ICp0aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNIVE1MRWxl
bWVudCo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgSFRNTEZvcm1FbGVtZW50ICpmb3JtID0gc3Rh
dGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4odGhpc09iai0+aW1wbCgpKTsKLQotICAgIHJldHVy
biB0b0pTKGV4ZWMsIGZvcm0tPmVsZW1lbnRzKCktPml0ZW0oc2xvdC5pbmRleCgpKSk7Ci19Ci0K
LUpTVmFsdWUgKkpTSFRNTEVsZW1lbnQ6OmZvcm1OYW1lR2V0dGVyKEV4ZWNTdGF0ZSAqZXhlYywg
SlNPYmplY3QgKm9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBKU0hUTUxFbGVtZW50ICp0aGlzT2Jq
ID0gc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgSFRN
TEZvcm1FbGVtZW50ICpmb3JtID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4odGhpc09i
ai0+aW1wbCgpKTsKLSAgICAKLSAgICByZXR1cm4gSlNIVE1MQ29sbGVjdGlvbihleGVjLCBmb3Jt
LT5lbGVtZW50cygpLmdldCgpKS5nZXROYW1lZEl0ZW1zKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci19
Ci0KIEpTVmFsdWUgKkpTSFRNTEVsZW1lbnQ6OnNlbGVjdEluZGV4R2V0dGVyKEV4ZWNTdGF0ZSAq
ZXhlYywgSlNPYmplY3QgKm9yaWdpbmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0hUTUxFbGVtZW50ICp0
aGlzT2JqID0gc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KHNsb3Quc2xvdEJhc2UoKSk7CkBA
IC03OTksMjMgKzc2Niw3IEBACiAgICAgSFRNTEVsZW1lbnQgJmVsZW1lbnQgPSAqc3RhdGljX2Nh
c3Q8SFRNTEVsZW1lbnQqPihpbXBsKCkpOwogCiAgICAgLy8gRmlyc3QgbG9vayBhdCBkeW5hbWlj
IHByb3BlcnRpZXMKLSAgICBpZiAoZWxlbWVudC5oYXNMb2NhbE5hbWUoZm9ybVRhZykpIHsKLSAg
ICAgICAgSFRNTEZvcm1FbGVtZW50ICZmb3JtID0gc3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50
ICY+KGVsZW1lbnQpOwotICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSByZXRyaWV2aW5nIGFuIGVs
ZW1lbnQgKGJ5IGluZGV4IG9yIGJ5IG5hbWUpCi0gICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIHVu
c2lnbmVkIHUgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKLSAgICAgICAgaWYgKG9rKSB7
Ci0gICAgICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXMsIHUsIGZvcm1JbmRleEdldHRl
cik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZJ
WE1FOiBuZWVkIGZhc3RlciB3YXkgdG8gY2hlY2sgZm9yIGEgbmFtZWQgaXRlbSBhbmQvb3IgYSB3
YXkgdG8gcGFzcyBvbiB0aGUgbmFtZWQgaXRlbXMgc3ViY29sbGVjdGlvbgotICAgICAgICBKU1Zh
bHVlICpuYW1lZEl0ZW1zID0gSlNIVE1MQ29sbGVjdGlvbihleGVjLCBmb3JtLmVsZW1lbnRzKCku
Z2V0KCkpLmdldE5hbWVkSXRlbXMoZXhlYywgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgaWYgKCFu
YW1lZEl0ZW1zLT5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0
aGlzLCBmb3JtTmFtZUdldHRlcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNMb2NhbE5hbWUoc2VsZWN0VGFnKSkgeworICAg
IGlmIChlbGVtZW50Lmhhc0xvY2FsTmFtZShzZWxlY3RUYWcpKSB7CiAgICAgICAgIGJvb2wgb2s7
CiAgICAgICAgIHVuc2lnbmVkIHUgPSBwcm9wZXJ0eU5hbWUudG9VSW50MzIoJm9rKTsKICAgICAg
ICAgaWYgKG9rKSB7CkBAIC04ODEsMjIgKzgzMiw2IEBACiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiB9CiAKLUpTVmFsdWUgKkpTSFRNTEVsZW1lbnQ6OmZvcm1HZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgdG9rZW4pIGNvbnN0Ci17Ci0gICAgSFRNTEZvcm1FbGVtZW50JiBmb3JtID0gKnN0
YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGltcGwoKSk7Ci0gICAgc3dpdGNoICh0b2tlbikg
ewotICAgICAgICBjYXNlIEZvcm1FbGVtZW50czogICAgICAgIHJldHVybiBnZXRIVE1MQ29sbGVj
dGlvbihleGVjLCBmb3JtLmVsZW1lbnRzKCkuZ2V0KCkpOwotICAgICAgICBjYXNlIEZvcm1MZW5n
dGg6ICAgICAgICAgIHJldHVybiBqc051bWJlcihmb3JtLmxlbmd0aCgpKTsKLSAgICAgICAgY2Fz
ZSBGb3JtTmFtZTogICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZm9ybS5uYW1lKCkpOwotICAg
ICAgICBjYXNlIEZvcm1BY2NlcHRDaGFyc2V0OiAgIHJldHVybiBqc1N0cmluZyhmb3JtLmFjY2Vw
dENoYXJzZXQoKSk7Ci0gICAgICAgIGNhc2UgRm9ybUFjdGlvbjogICAgICAgICAgcmV0dXJuIGpz
U3RyaW5nKGZvcm0uYWN0aW9uKCkpOwotICAgICAgICBjYXNlIEZvcm1FbmNUeXBlOiAgICAgICAg
IHJldHVybiBqc1N0cmluZyhmb3JtLmVuY3R5cGUoKSk7Ci0gICAgICAgIGNhc2UgRm9ybU1ldGhv
ZDogICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGZvcm0ubWV0aG9kKCkpOwotICAgICAgICBjYXNl
IEZvcm1UYXJnZXQ6ICAgICAgICAgIHJldHVybiBqc1N0cmluZyhmb3JtLnRhcmdldCgpKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIEpTVmFsdWUgKkpTSFRNTEVsZW1l
bnQ6OnNlbGVjdEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tlbikgY29uc3QKIHsKICAg
ICBIVE1MU2VsZWN0RWxlbWVudCYgc2VsZWN0ID0gKnN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVt
ZW50Kj4oaW1wbCgpKTsKQEAgLTEyNDksMTggKzExODQsNyBAQAogICAgIERPTUV4Y2VwdGlvblRy
YW5zbGF0b3IgZXhjZXB0aW9uKGV4ZWMpOwogICAgIEhUTUxFbGVtZW50ICZlbGVtZW50ID0gKnN0
YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oc3RhdGljX2Nhc3Q8SlNIVE1MRWxlbWVudCo+KHRoaXNP
YmopLT5pbXBsKCkpOwogCi0gICAgaWYgKGVsZW1lbnQuaGFzTG9jYWxOYW1lKGZvcm1UYWcpKSB7
Ci0gICAgICAgIEhUTUxGb3JtRWxlbWVudCAmZm9ybSA9IHN0YXRpY19jYXN0PEhUTUxGb3JtRWxl
bWVudCAmPihlbGVtZW50KTsKLSAgICAgICAgaWYgKGlkID09IEpTSFRNTEVsZW1lbnQ6OkZvcm1T
dWJtaXQpIHsKLSAgICAgICAgICAgIGZvcm0uc3VibWl0KCk7Ci0gICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpZCA9PSBKU0hUTUxF
bGVtZW50OjpGb3JtUmVzZXQpIHsKLSAgICAgICAgICAgIGZvcm0ucmVzZXQoKTsKLSAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYg
KGVsZW1lbnQuaGFzTG9jYWxOYW1lKHNlbGVjdFRhZykpIHsKKyAgICBpZiAoZWxlbWVudC5oYXNM
b2NhbE5hbWUoc2VsZWN0VGFnKSkgewogICAgICAgICBIVE1MU2VsZWN0RWxlbWVudCAmc2VsZWN0
ID0gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQgJj4oZWxlbWVudCk7CiAgICAgICAgIGlm
IChpZCA9PSBKU0hUTUxFbGVtZW50OjpTZWxlY3RBZGQpIHsKICAgICAgICAgICAgIHNlbGVjdC5h
ZGQodG9IVE1MRWxlbWVudChhcmdzWzBdKSwgdG9IVE1MRWxlbWVudChhcmdzWzFdKSwgZXhjZXB0
aW9uKTsKQEAgLTEzODEsMjEgKzEzMDUsNiBAQAogICAgIGxvb2t1cFB1dDxKU0hUTUxFbGVtZW50
LCBKU0VsZW1lbnQ+KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsICZIVE1MRWxlbWVu
dFRhYmxlLCB0aGlzKTsKIH0KIAotdm9pZCBKU0hUTUxFbGVtZW50Ojpmb3JtU2V0dGVyKEV4ZWNT
dGF0ZSAqZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlICp2YWx1ZSwgY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiBzdHIpCi17Ci0gICAgSFRNTEZvcm1FbGVtZW50JiBmb3JtID0gKnN0YXRpY19jYXN0PEhU
TUxGb3JtRWxlbWVudCo+KGltcGwoKSk7Ci0gICAgc3dpdGNoICh0b2tlbikgewotICAgICAgICAv
LyByZWFkLW9ubHk6IGVsZW1lbnRzCi0gICAgICAgIC8vIHJlYWQtb25seTogbGVuZ3RoCi0gICAg
ICAgIGNhc2UgRm9ybU5hbWU6ICAgICAgICAgICAgeyBmb3JtLnNldE5hbWUoc3RyKTsgcmV0dXJu
OyB9Ci0gICAgICAgIGNhc2UgRm9ybUFjY2VwdENoYXJzZXQ6ICAgeyBmb3JtLnNldEFjY2VwdENo
YXJzZXQoc3RyKTsgcmV0dXJuOyB9Ci0gICAgICAgIGNhc2UgRm9ybUFjdGlvbjogICAgICAgICAg
eyBmb3JtLnNldEFjdGlvbihzdHIpOyByZXR1cm47IH0KLSAgICAgICAgY2FzZSBGb3JtRW5jVHlw
ZTogICAgICAgICB7IGZvcm0uc2V0RW5jdHlwZShzdHIpOyByZXR1cm47IH0KLSAgICAgICAgY2Fz
ZSBGb3JtTWV0aG9kOiAgICAgICAgICB7IGZvcm0uc2V0TWV0aG9kKHN0cik7IHJldHVybjsgfQot
ICAgICAgICBjYXNlIEZvcm1UYXJnZXQ6ICAgICAgICAgIHsgZm9ybS5zZXRUYXJnZXQoc3RyKTsg
cmV0dXJuOyB9Ci0gICAgfQotfQotCiB2b2lkIEpTSFRNTEVsZW1lbnQ6OnNlbGVjdFNldHRlcihF
eGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbiwgSlNWYWx1ZSAqdmFsdWUsIGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYgc3RyKQogewogICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3QgPSAqc3RhdGlj
X2Nhc3Q8SFRNTFNlbGVjdEVsZW1lbnQqPihpbXBsKCkpOwpJbmRleDogYmluZGluZ3MvanMvSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTSFRN
TEZvcm1FbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIGJpbmRpbmdzL2pzL0pTSFRN
TEZvcm1FbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTSFRNTEZv
cm1FbGVtZW50LmgiCisKKyNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MQ29sbGVjdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2UgS0pTOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2Jvb2wgSlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVj
U3RhdGUqIGV4ZWMsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3QgQXRvbWljU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpCit7CisgICAgLy8gRklYTUU6IGlkZWFsbHkgdGhlcmUgc2hvdWxkIGJlIGEg
bGlnaHRlci13ZWlnaHQgd2F5IG9mIGRvaW5nIHRoaXMKKyAgICBKU1ZhbHVlKiBuYW1lZEl0ZW1z
ID0gSlNIVE1MQ29sbGVjdGlvbihleGVjLCBmb3JtLT5lbGVtZW50cygpLmdldCgpKS5nZXROYW1l
ZEl0ZW1zKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuICFuYW1lZEl0ZW1zLT5pc1Vu
ZGVmaW5lZCgpOworfQorCitKU1ZhbHVlKiBKU0hUTUxGb3JtRWxlbWVudDo6bmFtZUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvcmlnaW5hbE9iamVjdCwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgSlNIVE1M
RWxlbWVudCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTSFRNTEVsZW1lbnQqPihzbG90LnNsb3RC
YXNlKCkpOworICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IHN0YXRpY19jYXN0PEhUTUxGb3Jt
RWxlbWVudCo+KHRoaXNPYmotPmltcGwoKSk7CisgICAgCisgICAgcmV0dXJuIEpTSFRNTENvbGxl
Y3Rpb24oZXhlYywgZm9ybS0+ZWxlbWVudHMoKS5nZXQoKSkuZ2V0TmFtZWRJdGVtcyhleGVjLCBw
cm9wZXJ0eU5hbWUpOworfQorCit9CkluZGV4OiBEZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIERlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDE0NTc3KQorKysgRGVyaXZlZFNv
dXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsOSBAQAogICAgIEpTQXR0ci5o
IFwKICAgICBKU0NTU1ByaW1pdGl2ZVZhbHVlLmggXAogICAgIEpTQ1NTUnVsZS5oIFwKKyAgICBK
U0NTU1J1bGVMaXN0LmggXAogICAgIEpTQ1NTVmFsdWUuaCBcCisgICAgSlNDU1NWYWx1ZUxpc3Qu
aCBcCiAgICAgSlNDYW52YXNHcmFkaWVudC5oIFwKICAgICBKU0NhbnZhc1BhdHRlcm4uaCBcCiAg
ICAgSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBcCkBAIC03OSw2ICs4MSw3IEBACiAgICAg
SlNIVE1MRWxlbWVudC5oIFwKICAgICBKU0hUTUxGaWVsZFNldEVsZW1lbnQuaCBcCiAJSlNIVE1M
Rm9udEVsZW1lbnQuaCBcCisJSlNIVE1MRm9ybUVsZW1lbnQuaCBcCiAgICAgSlNIVE1MSGVhZEVs
ZW1lbnQuaCBcCiAgICAgSlNIVE1MSGVhZGluZ0VsZW1lbnQuaCBcCiAgICAgSlNIVE1MSFJFbGVt
ZW50LmggXApJbmRleDogaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHRt
bC9IVE1MVGFibGVFbGVtZW50LmgJKHJldmlzaW9uIDE0NTc3KQorKysgaHRtbC9IVE1MVGFibGVF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDggQEAKICAgICBIVE1MRWxlbWVu
dCogaW5zZXJ0Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRl
Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgUmVmUHRyPEhUTUxDb2xsZWN0
aW9uPiByb3dzKCk7Ci0gICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiB0Qm9kaWVzKCk7CisgICAg
UGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gcm93cygpOworICAgIFBhc3NSZWZQdHI8SFRNTENv
bGxlY3Rpb24+IHRCb2RpZXMoKTsKIAogICAgIFN0cmluZyBhbGlnbigpIGNvbnN0OwogICAgIHZv
aWQgc2V0QWxpZ24oY29uc3QgU3RyaW5nJik7CkluZGV4OiBodG1sL0hUTUxGb3JtRWxlbWVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCShyZXZpc2lvbiAwKQor
KysgaHRtbC9IVE1MRm9ybUVsZW1lbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworbW9kdWxlIGh0bWwg
eworCisgICAgaW50ZXJmYWNlIFtMZWdhY3lQYXJlbnQ9S0pTOjpKU0hUTUxFbGVtZW50LCBIYXNJ
bmRleEdldHRlciwgSGFzTmFtZUdldHRlcl0gSFRNTEZvcm1FbGVtZW50IDogSFRNTEVsZW1lbnQg
eworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rpb24gIGVsZW1lbnRzOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgIGxlbmd0aDsKKyAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICBuYW1lOworICAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIGFjY2VwdENoYXJzZXQ7CisgICAgICAgICAg
ICAgICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgYWN0aW9uOworICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIGVuY3R5cGU7CisgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZSBET01TdHJpbmcgICAgICAgbWV0aG9kOworICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUgRE9NU3RyaW5nICAgICAgIHRhcmdldDsKKyAgICAgICAgCisgICAgICAgIHZvaWQgICAgICAg
ICAgICAgICBzdWJtaXQoKTsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgIHJlc2V0KCk7Cisg
ICAgfTsKK30KSW5kZXg6IGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBo
dG1sL0hUTUxGb3JtRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTc3KQorKysgaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAKICAgICBIVE1M
RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCi1pbnQgSFRNTEZvcm1FbGVtZW50
OjpsZW5ndGgoKSBjb25zdAordW5zaWduZWQgSFRNTEZvcm1FbGVtZW50OjpsZW5ndGgoKSBjb25z
dAogewogICAgIGludCBsZW4gPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3Jt
RWxlbWVudHMuc2l6ZSgpOyArK2kpCkBAIC0xMTcsNiArMTE3LDEwIEBACiAgICAgcmV0dXJuIGxl
bjsKIH0KIAorTm9kZSogSFRNTEZvcm1FbGVtZW50OjppdGVtKHVuc2lnbmVkIGluZGV4KQorewor
ICAgIHJldHVybiBlbGVtZW50cygpLT5pdGVtKGluZGV4KTsKK30KIAogdm9pZCBIVE1MRm9ybUVs
ZW1lbnQ6OnN1Ym1pdENsaWNrKCkKIHsKQEAgLTUxNiw5ICs1MjAsOSBAQAogICAgIHJlbW92ZUZy
b21WZWN0b3IoaW1nRWxlbWVudHMsIGUpOwogfQogCi1SZWZQdHI8SFRNTENvbGxlY3Rpb24+IEhU
TUxGb3JtRWxlbWVudDo6ZWxlbWVudHMoKQorUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRN
TEZvcm1FbGVtZW50OjplbGVtZW50cygpCiB7Ci0gICAgcmV0dXJuIFJlZlB0cjxIVE1MQ29sbGVj
dGlvbj4obmV3IEhUTUxGb3JtQ29sbGVjdGlvbih0aGlzKSk7CisgICAgcmV0dXJuIG5ldyBIVE1M
Rm9ybUNvbGxlY3Rpb24odGhpcyk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUVsZW1lbnQ6Om5hbWUo
KSBjb25zdApJbmRleDogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBodG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDU3NykKKysrIGh0bWwv
SFRNTFRhYmxlUm93RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw5ICsxNjEsOSBA
QAogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogfQogCi1SZWZQdHI8SFRNTENvbGxlY3Rp
b24+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKCkKK1Bhc3NSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKCkKIHsKLSAgICByZXR1cm4gUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPihuZXcgSFRNTENvbGxlY3Rpb24odGhpcywgSFRNTENvbGxlY3Rpb246OlRS
X0NFTExTKSk7CisgICAgcmV0dXJuIG5ldyBIVE1MQ29sbGVjdGlvbih0aGlzLCBIVE1MQ29sbGVj
dGlvbjo6VFJfQ0VMTFMpOwogfQogCiB2b2lkIEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnNldENlbGxz
KEhUTUxDb2xsZWN0aW9uICosIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRleDogaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuaAkocmV2aXNpb24gMTQ1NzcpCisrKyBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAKICAgICBTdHJpbmcgdkFsaWduKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRWQWxpZ24oY29uc3QgU3RyaW5nJik7CiAKLSAgICBSZWZQdHI8
SFRNTENvbGxlY3Rpb24+IHJvd3MoKTsKKyAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBy
b3dzKCk7CiB9OwogCiB9IC8vbmFtZXNwYWNlCkluZGV4OiBodG1sL0hUTUxGb3JtRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGh0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDE0NTc3KQor
KysgaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBA
QAogY2xhc3MgSFRNTEZvcm1FbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50CiB7CiBwdWJsaWM6
Ci0gICAgSFRNTEZvcm1FbGVtZW50KERvY3VtZW50ICpkb2MpOworICAgIEhUTUxGb3JtRWxlbWVu
dChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxGb3JtRWxlbWVudCgpOwogCiAgICAgdmly
dHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFn
U3RhdHVzUmVxdWlyZWQ7IH0KQEAgLTUyLDggKzUyLDkgQEAKICAgICB2aXJ0dWFsIHZvaWQgaW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVu
dCgpOwogIAotICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZWxlbWVudHMoKTsKLSAgICBpbnQg
bGVuZ3RoKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZWxlbWVudHMo
KTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBOb2RlKiBpdGVtKHVuc2lnbmVk
IGluZGV4KTsKIAogICAgIFN0cmluZyBlbmN0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9lbmN0eXBl
OyB9CiAgICAgdm9pZCBzZXRFbmN0eXBlKGNvbnN0IFN0cmluZyAmKTsKQEAgLTEwMCw4ICsxMDEs
NiBAQAogICAgIFN0cmluZyB0YXJnZXQoKSBjb25zdDsKICAgICB2b2lkIHNldFRhcmdldChjb25z
dCBTdHJpbmcgJik7CiAKLSAgICBzdGF0aWMgdm9pZCBpMThuRGF0YSgpOwotCiAgICAgZnJpZW5k
IGNsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbjsKIAogICAgIEhUTUxDb2xsZWN0aW9uOjpDb2xsZWN0
aW9uSW5mbyAqY29sbGVjdGlvbkluZm87CkluZGV4OiBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAko
cmV2aXNpb24gMTQ1NzcpCisrKyBodG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUzLDkgKzE1Myw5IEBACiAgICAgc2V0QXR0cmlidXRlKHZhbGlnbkF0
dHIsIHZhbHVlKTsKIH0KIAotUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVTZWN0aW9u
RWxlbWVudDo6cm93cygpCitQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVTZWN0
aW9uRWxlbWVudDo6cm93cygpCiB7Ci0gICAgcmV0dXJuIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4o
bmV3IEhUTUxDb2xsZWN0aW9uKHRoaXMsIEhUTUxDb2xsZWN0aW9uOjpUQUJMRV9ST1dTKSk7Cisg
ICAgcmV0dXJuIG5ldyBIVE1MQ29sbGVjdGlvbih0aGlzLCBIVE1MQ29sbGVjdGlvbjo6VEFCTEVf
Uk9XUyk7CiB9CiAKIH0KSW5kZXg6IGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5oCShyZXZpc2lvbiAxNDU3NykKKysrIGh0
bWwvSFRNTFRhYmxlUm93RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBA
CiAKICAgICB2b2lkIHNldFNlY3Rpb25Sb3dJbmRleChpbnQpOwogCi0gICAgUmVmUHRyPEhUTUxD
b2xsZWN0aW9uPiBjZWxscygpOworICAgIFBhc3NSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNlbGxz
KCk7CiAgICAgdm9pZCBzZXRDZWxscyhIVE1MQ29sbGVjdGlvbiAqLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICBTdHJpbmcgYWxpZ24oKSBjb25zdDsKSW5kZXg6IGh0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkocmV2aXNpb24g
MTQ1NzcpCisrKyBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MTEsMTQgKzUxMSwxNCBAQAogICAgIHJldHVybiBhdHRyLT5uYW1lKCkgPT0gYmFja2dyb3VuZEF0
dHI7CiB9CiAKLVJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlRWxlbWVudDo6cm93cygp
CitQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojpyb3dzKCkKIHsK
LSAgICByZXR1cm4gUmVmUHRyPEhUTUxDb2xsZWN0aW9uPihuZXcgSFRNTENvbGxlY3Rpb24odGhp
cywgSFRNTENvbGxlY3Rpb246OlRBQkxFX1JPV1MpKTsKKyAgICByZXR1cm4gbmV3IEhUTUxDb2xs
ZWN0aW9uKHRoaXMsIEhUTUxDb2xsZWN0aW9uOjpUQUJMRV9ST1dTKTsKIH0KIAotUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojp0Qm9kaWVzKCkKK1Bhc3NSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnRCb2RpZXMoKQogewotICAgIHJldHVybiBS
ZWZQdHI8SFRNTENvbGxlY3Rpb24+KG5ldyBIVE1MQ29sbGVjdGlvbih0aGlzLCBIVE1MQ29sbGVj
dGlvbjo6VEFCTEVfVEJPRElFUykpOworICAgIHJldHVybiBuZXcgSFRNTENvbGxlY3Rpb24odGhp
cywgSFRNTENvbGxlY3Rpb246OlRBQkxFX1RCT0RJRVMpOwogfQogCiBTdHJpbmcgSFRNTFRhYmxl
RWxlbWVudDo6YWxpZ24oKSBjb25zdApJbmRleDogZG9tL05hbWVkQXR0ck1hcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gZG9tL05hbWVkQXR0ck1hcC5jcHAJKHJldmlzaW9uIDE0NTc3KQorKysgZG9tL05h
bWVkQXR0ck1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDggQEAKIHsKICAgICBT
dHJpbmcgbG9jYWxOYW1lID0gaW5IVE1MRG9jdW1lbnQoZWxlbWVudCkgPyBuYW1lLmxvd2VyKCkg
OiBuYW1lOwogICAgIEF0dHJpYnV0ZSogYSA9IGdldEF0dHJpYnV0ZUl0ZW0obG9jYWxOYW1lKTsK
LSAgICBpZiAoIWEpIHJldHVybiAwOworICAgIGlmICghYSkKKyAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCiAgICAgcmV0dXJuIGEtPmNyZWF0ZUF0dHJJZk5lZWRlZChlbGVtZW50KTsKIH0KQEAgLTg5
LDcgKzkwLDggQEAKIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWRBdHRyTWFwOjpnZXROYW1lZEl0ZW0o
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICBBdHRyaWJ1dGUqIGEgPSBn
ZXRBdHRyaWJ1dGVJdGVtKG5hbWUpOwotICAgIGlmICghYSkgcmV0dXJuIDA7CisgICAgaWYgKCFh
KQorICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBhLT5jcmVhdGVBdHRySWZOZWVkZWQo
ZWxlbWVudCk7CiB9CkluZGV4OiBkb20vTm9kZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vTm9k
ZUxpc3QuaAkocmV2aXNpb24gMTQ1NzcpCisrKyBkb20vTm9kZUxpc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNyArNDMsNyBAQAogICAgIC8vIERPTSBtZXRob2RzICYgYXR0cmlidXRlcyBmb3Ig
Tm9kZUxpc3QKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKLSAgICBOb2RlKiBp
dGVtQnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICBOb2RlKiBpdGVtV2l0aE5h
bWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAKICAgICAvLyBPdGhlciBtZXRob2RzIChu
b3QgcGFydCBvZiBET00pCiAgICAgdmlydHVhbCB2b2lkIHJvb3ROb2RlQ2hpbGRyZW5DaGFuZ2Vk
KCk7CkluZGV4OiBkb20vTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9Ob2RlTGlzdC5j
cHAJKHJldmlzaW9uIDE0NTc3KQorKysgZG9tL05vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAwLDcgKzEwMCw3IEBACiAgICAgcmV0dXJuIDA7IC8vIG5vIG1hdGNoaW5nIG5vZGUgaW4g
dGhpcyBzdWJ0cmVlCiB9CiAKLU5vZGUqIE5vZGVMaXN0OjppdGVtQnlJZChjb25zdCBBdG9taWNT
dHJpbmcmIGVsZW1lbnRJZCkgY29uc3QKK05vZGUqIE5vZGVMaXN0OjppdGVtV2l0aE5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiBlbGVtZW50SWQpIGNvbnN0CiB7CiAgICAgaWYgKHJvb3ROb2RlLT5p
c0RvY3VtZW50Tm9kZSgpIHx8IHJvb3ROb2RlLT5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgTm9k
ZSogbm9kZSA9IHJvb3ROb2RlLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQp
OwpJbmRleDogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTQ1NzcpCisrKyBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExOTUs
NiArMTE5NSwxNiBAQAogCQlBOENGRjdBOTBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTE1vZEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
RkY3OUYwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50LmNwcCAqLzsgfTsKIAkJQThD
RkY3QUEwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxCUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4Q0ZGN0EwMEExNTY5NzgwMDBBNDIzNCAv
KiBIVE1MQlJFbGVtZW50LmggKi87IH07CiAJCUE4Q0ZGN0FCMEExNTY5NzgwMDBBNDIzNCAvKiBI
VE1MQW5jaG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThDRkY3QTEwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxBbmNob3JFbGVtZW50Lmgg
Ki87IH07CisJCUE4RDA1RkE3MEEyM0IzMDEwMDVFNzIwMyAvKiBKU0NTU1J1bGVMaXN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDA1RkE1MEEy
M0IzMDEwMDVFNzIwMyAvKiBKU0NTU1J1bGVMaXN0LmNwcCAqLzsgfTsKKwkJQThEMDVGQTgwQTIz
QjMwMTAwNUU3MjAzIC8qIEpTQ1NTUnVsZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDA1RkE2MEEyM0IzMDEwMDVFNzIwMyAvKiBKU0NTU1J1
bGVMaXN0LmggKi87IH07CisJCUE4RDA1RkFCMEEyM0IzMEYwMDVFNzIwMyAvKiBKU0NTU1ZhbHVl
TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEQwNUZBOTBBMjNCMzBGMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuY3BwICovOyB9OworCQlB
OEQwNUZBQzBBMjNCMzBGMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDA1RkFBMEEyM0IzMEYwMDVFNzIw
MyAvKiBKU0NTU1ZhbHVlTGlzdC5oICovOyB9OworCQlBOEQwNjRGMDBBMjNCRkVBMDA1RTcyMDMg
LyogSFRNTEZvcm1FbGVtZW50LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQThEMDY0RUYwQTIzQkZFQTAwNUU3MjAzIC8qIEhUTUxGb3JtRWxlbWVu
dC5pZGwgKi87IH07CisJCUE4RDA2NEZCMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
OEQwNjRGOTBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuY3BwICovOyB9Owor
CQlBOEQwNjRGQzBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RDA2NEZBMEEyM0MwQ0Mw
MDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5oICovOyB9OworCQlBOEQwNjUxRDBBMjNDMUZF
MDA1RTcyMDMgLyogQ1NTUnVsZUxpc3QuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNjUxQjBBMjNDMUZFMDA1RTcyMDMgLyogQ1NTUnVsZUxp
c3QuaWRsICovOyB9OworCQlBOEQwNjUxRTBBMjNDMUZFMDA1RTcyMDMgLyogQ1NTVmFsdWVMaXN0
LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThE
MDY1MUMwQTIzQzFGRTAwNUU3MjAzIC8qIENTU1ZhbHVlTGlzdC5pZGwgKi87IH07CisJCUE4RDA2
NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEQwNjVBRDBBMjQ0NkNE
MDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlBOERGM0ZD
RTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTEZvcm1Db2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOERGM0ZDNjA5N0ZBMEZCMDA1Mjk4MUIg
LyogSFRNTEZvcm1Db2xsZWN0aW9uLmggKi87IH07CiAJCUE4REYzRkNGMDk3RkEwRkMwMDUyOTgx
QiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThERjNGQzcwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29s
bGVjdGlvbi5jcHAgKi87IH07CiAJCUE4REYzRkQwMDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThERjNGQzgwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxDb2xsZWN0aW9uLmggKi87IH07CkBAIC0x
ODg0LDcgKzE4OTQsNiBAQAogCQk5MzBDQUFENjA5QzQ5NUI2MDAyMjlDMDQgLyogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzBDQUI4ODA5
QzQ5RUZBMDAyMjlDMDQgLyogQ2FudmFzR3JhZGllbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IENhbnZhc0dyYWRpZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMw
Q0FCOEYwOUM0OUYxQjAwMjI5QzA0IC8qIENhbnZhc1BhdHRlcm4uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IENhbnZhc1BhdHRlcm4uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5MzBDQUI5NjA5QzQ5RkFBMDAyMjlDMDQgLyogQ29kZUdlbmVyYXRvckpTLnBtICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5lcmF0b3JKUy5wbTsgcGF0aCA9IC4u
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzEyNkY2MDA5RDdBNzM2MDA4RDk2MjYgLyogU3RyaW5nSGFzaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzMjZEQzBBMDlEQUQ1QkUwMEFGQzg0NyAvKiBDaGFyc2V0RGF0YS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGFyc2V0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzI3QTk0MTA5OTY4RDFBMDA2OEE1NDYgLyogSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxPcHRp
b25zQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODQyLDYg
KzI4NTEsMTYgQEAKIAkJQThDRkY3OUYwQTE1Njk3ODAwMEE0MjM0IC8qIEhUTUxNb2RFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTW9kRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGN0EwMEExNTY5NzgwMDBB
NDIzNCAvKiBIVE1MQlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIVE1MQlJFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4Q0ZGN0Ex
MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MQW5jaG9yRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSFRNTEFuY2hvckVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQThEMDVGQTUwQTIzQjMwMTAwNUU3MjAzIC8qIEpTQ1NTUnVsZUxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1NTUnVsZUxpc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEQwNUZBNjBBMjNCMzAxMDA1RTcyMDMg
LyogSlNDU1NSdWxlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
U1NSdWxlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEQwNUZBOTBBMjNC
MzBGMDA1RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQ1NTVmFsdWVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQThEMDVGQUEwQTIzQjMwRjAwNUU3MjAzIC8qIEpTQ1NTVmFsdWVMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NTU1ZhbHVlTGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBOEQwNjRFRjBBMjNCRkVBMDA1RTcyMDMgLyogSFRNTEZv
cm1FbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEZvcm1FbGVtZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThEMDY0RjkwQTIzQzBDQzAwNUU3MjAz
IC8qIEpTSFRNTEZvcm1FbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0hUTUxGb3JtRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE4RDA2NEZBMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MRm9ybUVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThEMDY1MUIwQTIzQzFGRTAwNUU3MjAzIC8qIENTU1J1
bGVMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTUnVsZUxpc3QuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEQwNjUxQzBBMjNDMUZFMDA1RTcyMDMgLyogQ1NT
VmFsdWVMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTVmFsdWVMaXN0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThEMDY1QUQwQTI0NDZDRDAwNUU3MjAzIC8q
IEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThERjNGQzYwOTdGQTBGQjAwNTI5ODFCIC8qIEhUTUxGb3JtQ29sbGVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEZvcm1Db2xsZWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4REYzRkM3MDk3RkEwRkIwMDUyOTgx
QiAvKiBIVE1MRm9ybUNvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhUTUxGb3JtQ29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4REYzRkM4MDk3RkEwRkIwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0MDYsMTAgKzM0MjUsMTQgQEAKIAkJCQk5MzA3MDVFQTA5
RTBDOUY2MDBCMTdGRTQgLyogSlNDU1NQcmltaXRpdmVWYWx1ZS5oICovLAogCQkJCTE0Q0Y3QjMx
MDlGNkVDRDcwMEVCMzY2NSAvKiBKU0NTU1J1bGUuY3BwICovLAogCQkJCTE0Q0Y3QjMyMDlGNkVD
RDcwMEVCMzY2NSAvKiBKU0NTU1J1bGUuaCAqLywKKwkJCQlBOEQwNUZBNTBBMjNCMzAxMDA1RTcy
MDMgLyogSlNDU1NSdWxlTGlzdC5jcHAgKi8sCisJCQkJQThEMDVGQTYwQTIzQjMwMTAwNUU3MjAz
IC8qIEpTQ1NTUnVsZUxpc3QuaCAqLywKIAkJCQkxNDIwMTFCNDBBMDAzMTMzMDA4MzAzRjkgLyog
SlNDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCAqLywKIAkJCQkxNDIwMTFCNTBBMDAzMTMzMDA4MzAz
RjkgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uLmggKi8sCiAJCQkJMTRDRjc4QTMwOUY1OENCRjAw
RUIzNjY1IC8qIEpTQ1NTVmFsdWUuY3BwICovLAogCQkJCTE0Q0Y3OEE1MDlGNThDRDgwMEVCMzY2
NSAvKiBKU0NTU1ZhbHVlLmggKi8sCisJCQkJQThEMDVGQTkwQTIzQjMwRjAwNUU3MjAzIC8qIEpT
Q1NTVmFsdWVMaXN0LmNwcCAqLywKKwkJCQlBOEQwNUZBQTBBMjNCMzBGMDA1RTcyMDMgLyogSlND
U1NWYWx1ZUxpc3QuaCAqLywKIAkJCQk2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1
bWVudC5jcHAgKi8sCiAJCQkJNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQu
aCAqLywKIAkJCQkxQTQ5NEVEQzBBMTIzRjRDMDBGREFGQzEgLyogSlNEb2N1bWVudEZyYWdtZW50
LmNwcCAqLywKQEAgLTM0NjEsNiArMzQ4NCw4IEBACiAJCQkJMUFFMkFBMTMwQTFDREFCMzAwQjQy
QjI1IC8qIEpTSFRNTEZpZWxkU2V0RWxlbWVudC5oICovLAogCQkJCTFBRTJBQTE0MEExQ0RBQjMw
MEI0MkIyNSAvKiBKU0hUTUxGb250RWxlbWVudC5jcHAgKi8sCiAJCQkJMUFFMkFBMTUwQTFDREFC
MzAwQjQyQjI1IC8qIEpTSFRNTEZvbnRFbGVtZW50LmggKi8sCisJCQkJQThEMDY0RjkwQTIzQzBD
QzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmNwcCAqLywKKwkJCQlBOEQwNjRGQTBBMjND
MENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuaCAqLywKIAkJCQlBODBFN0IwQTBBMTlE
NjA2MDA3RkI4QzUgLyogSlNIVE1MSGVhZEVsZW1lbnQuY3BwICovLAogCQkJCUE4MEU3QjBCMEEx
OUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxIZWFkRWxlbWVudC5oICovLAogCQkJCTFBRTJBQTFBMEEx
Q0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxIZWFkaW5nRWxlbWVudC5jcHAgKi8sCkBAIC0zNDcxLDI0
ICszNDk2LDI0IEBACiAJCQkJMUE4NUIxOEUwQTFCMThBMjAwRDhDODdDIC8qIEpTSFRNTEh0bWxF
bGVtZW50LmggKi8sCiAJCQkJMUFFMkFBOTMwQTFDREQyRDAwQjQyQjI1IC8qIEpTSFRNTEltYWdl
RWxlbWVudC5jcHAgKi8sCiAJCQkJMUFFMkFBOTQwQTFDREQyRDAwQjQyQjI1IC8qIEpTSFRNTElt
YWdlRWxlbWVudC5oICovLAotCQkJCTFBRTJBQTk1MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJ
c0luZGV4RWxlbWVudC5jcHAgKi8sCi0JCQkJMUFFMkFBOTYwQTFDREQyRDAwQjQyQjI1IC8qIEpT
SFRNTElzSW5kZXhFbGVtZW50LmggKi8sCiAJCQkJQTgwRTdFOEUwQTFBODNFMzAwN0ZCOEM1IC8q
IEpTSFRNTElucHV0RWxlbWVudC5jcHAgKi8sCiAJCQkJQTgwRTdFOEQwQTFBODNFMzAwN0ZCOEM1
IC8qIEpTSFRNTElucHV0RWxlbWVudC5oICovLAotCQkJCUE4MEU3QjA2MEExOUQ2MDYwMDdGQjhD
NSAvKiBKU0hUTUxMaW5rRWxlbWVudC5jcHAgKi8sCi0JCQkJQTgwRTdCMDMwQTE5RDYwNjAwN0ZC
OEM1IC8qIEpTSFRNTExpbmtFbGVtZW50LmggKi8sCi0JCQkJQTgwRTdBMTUwQTE5QzNENjAwN0ZC
OEM1IC8qIEpTSFRNTE1ldGFFbGVtZW50LmNwcCAqLywKLQkJCQlBODBFN0ExNjBBMTlDM0Q2MDA3
RkI4QzUgLyogSlNIVE1MTWV0YUVsZW1lbnQuaCAqLywKKwkJCQkxQUUyQUE5NTBBMUNERDJEMDBC
NDJCMjUgLyogSlNIVE1MSXNJbmRleEVsZW1lbnQuY3BwICovLAorCQkJCTFBRTJBQTk2MEExQ0RE
MkQwMEI0MkIyNSAvKiBKU0hUTUxJc0luZGV4RWxlbWVudC5oICovLAogCQkJCTFBRTJBQjE3MEEx
Q0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1lbnQuY3BwICovLAogCQkJCTFBRTJBQjE4
MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJlbEVsZW1lbnQuaCAqLywKIAkJCQkxQUUyQUIx
OTBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGVnZW5kRWxlbWVudC5jcHAgKi8sCiAJCQkJMUFF
MkFCMUEwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExlZ2VuZEVsZW1lbnQuaCAqLywKIAkJCQkx
QUUyQUIxQjBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTElFbGVtZW50LmNwcCAqLywKIAkJCQkx
QUUyQUIxQzBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTElFbGVtZW50LmggKi8sCisJCQkJQTgw
RTdCMDYwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVtZW50LmNwcCAqLywKKwkJCQlB
ODBFN0IwMzBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1MTGlua0VsZW1lbnQuaCAqLywKIAkJCQkx
QUUyQUIxRDBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTWFwRWxlbWVudC5jcHAgKi8sCiAJCQkJ
MUFFMkFCMUUwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQuaCAqLywKIAkJCQkx
QUUyQUU1OTBBMUQyNkYyMDBCNDJCMjUgLyogSlNIVE1MTWVudUVsZW1lbnQuY3BwICovLAogCQkJ
CTFBRTJBRTVBMEExRDI2RjIwMEI0MkIyNSAvKiBKU0hUTUxNZW51RWxlbWVudC5oICovLAorCQkJ
CUE4MEU3QTE1MEExOUMzRDYwMDdGQjhDNSAvKiBKU0hUTUxNZXRhRWxlbWVudC5jcHAgKi8sCisJ
CQkJQTgwRTdBMTYwQTE5QzNENjAwN0ZCOEM1IC8qIEpTSFRNTE1ldGFFbGVtZW50LmggKi8sCiAJ
CQkJMUFFMkFCMUYwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1vZEVsZW1lbnQuY3BwICovLAog
CQkJCTFBRTJBQjIwMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNb2RFbGVtZW50LmggKi8sCiAJ
CQkJMUE4NUIxRTQwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRNTE9MaXN0RWxlbWVudC5jcHAgKi8s
CkBAIC0zOTAwLDYgKzM5MjUsNyBAQAogCQkJCUE4REYzRkM2MDk3RkEwRkIwMDUyOTgxQiAvKiBI
VE1MRm9ybUNvbGxlY3Rpb24uaCAqLywKIAkJCQlBODEzNjlCNTA5NzM3NEY1MDBENzQ0NjMgLyog
SFRNTEZvcm1FbGVtZW50LmNwcCAqLywKIAkJCQlBODEzNjlCNDA5NzM3NEY1MDBENzQ0NjMgLyog
SFRNTEZvcm1FbGVtZW50LmggKi8sCisJCQkJQThEMDY0RUYwQTIzQkZFQTAwNUU3MjAzIC8qIEhU
TUxGb3JtRWxlbWVudC5pZGwgKi8sCiAJCQkJQTg3MURFMTcwQTE1MkFDODAwQjEyQTY4IC8qIEhU
TUxGcmFtZUVsZW1lbnQuY3BwICovLAogCQkJCUE4NzFERTFGMEExNTJBQzgwMEIxMkE2OCAvKiBI
VE1MRnJhbWVFbGVtZW50LmggKi8sCiAJCQkJQTg3MURFMjIwQTE1MkFDODAwQjEyQTY4IC8qIEhU
TUxGcmFtZVNldEVsZW1lbnQuY3BwICovLApAQCAtNDY2MSwxMiArNDY4NywxMiBAQAogCQlCQzFB
Mzc5MzA5N0M2RkIxMDAxOUYzRDggLyoganMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCTkzMENBQjk2MDlDNDlGQUEwMDIyOUMwNCAvKiBDb2RlR2VuZXJh
dG9ySlMucG0gKi8sCiAJCQkJMUE5RUY0NTYwQTFCOTU3RDAwMzMyQjYzIC8qIEpTQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCAqLywKIAkJCQk5M0I3MEQzRjA5RUIwQzdDMDA5RDg0
NjggLyogSlNET01QYXJzZXIuY3BwICovLAogCQkJCTkzQjcwRDQwMDlFQjBDN0MwMDlEODQ2OCAv
KiBKU0RPTVBhcnNlci5oICovLAogCQkJCTkzOEU2NUY2MDlGMDk4NUQwMDhBNDhFQyAvKiBKU0hU
TUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwICovLAogCQkJCTkzOEU2NUYwMDlGMDk4NDAwMDhB
NDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaCAqLywKKwkJCQlBOEQwNjVBRDBB
MjQ0NkNEMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUE4
MEU3RTY0MEExQTgyRUMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcCAqLywK
IAkJCQlBODBFN0U2MzBBMUE4MkVDMDA3RkI4QzUgLyogSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5o
ICovLAogCQkJCUE4MjZFOEFEMEExQThGMjMwMENEMUJCNiAvKiBKU0hUTUxPcHRpb25FbGVtZW50
Q29uc3RydWN0b3IuY3BwICovLApAQCAtNDk2Miw2ICs0OTg4LDcgQEAKIAkJCQkxNENGN0E3MDA5
RjVDRjlBMDBFQjM2NjUgLyogQ1NTUnVsZS5pZGwgKi8sCiAJCQkJQTgwRTZDREYwQTE5ODlDQTAw
N0ZCOEM1IC8qIENTU1J1bGVMaXN0LmNwcCAqLywKIAkJCQlBODBFNkNDODBBMTk4OUNBMDA3RkI4
QzUgLyogQ1NTUnVsZUxpc3QuaCAqLywKKwkJCQlBOEQwNjUxQjBBMjNDMUZFMDA1RTcyMDMgLyog
Q1NTUnVsZUxpc3QuaWRsICovLAogCQkJCUE4MEU3MzQ4MEExOTlDNzcwMDdGQjhDNSAvKiBDU1NT
ZWxlY3Rvci5jcHAgKi8sCiAJCQkJQTgwRTczNEIwQTE5OUM3NzAwN0ZCOEM1IC8qIENTU1NlbGVj
dG9yLmggKi8sCiAJCQkJQTgwRTZFMEUwQTE5OTExQzAwN0ZCOEM1IC8qIENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwICovLApAQCAtNDk3OSw2ICs1MDA2LDcgQEAKIAkJCQlCQ0VBNDc4QzA5N0NBQUM4
MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5pbiAqLywKIAkJCQlBODBFNkNCQTBBMTk4OUNB
MDA3RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmNwcCAqLywKIAkJCQlBODBFNkNCRjBBMTk4OUNBMDA3
RkI4QzUgLyogQ1NTVmFsdWVMaXN0LmggKi8sCisJCQkJQThEMDY1MUMwQTIzQzFGRTAwNUU3MjAz
IC8qIENTU1ZhbHVlTGlzdC5pZGwgKi8sCiAJCQkJQTgwRTZDRTEwQTE5ODlDQTAwN0ZCOEM1IC8q
IERhc2hib2FyZFJlZ2lvbi5oICovLAogCQkJCUE4MEU2Q0MyMEExOTg5Q0EwMDdGQjhDNSAvKiBG
b250RmFtaWx5VmFsdWUuY3BwICovLAogCQkJCUE4MEU2Q0M5MEExOTg5Q0EwMDdGQjhDNSAvKiBG
b250RmFtaWx5VmFsdWUuaCAqLywKQEAgLTYwNDEsNiArNjA2OSw5IEBACiAJCQkJMUFFMkFFNUMw
QTFEMjZGMjAwQjQyQjI1IC8qIEpTSFRNTE1lbnVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUUyQUVDODBBMUQyOTdCMDBCNDJCMjUgLyogSlNIVE1MUXVvdGVFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUUyQUVFNzBBMUQyQTc1MDBCNDJCMjUgLyogSlNIVE1MQmxvY2txdW90
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4RDA1RkE4MEEyM0IzMDEwMDVFNzIwMyAv
KiBKU0NTU1J1bGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBOEQwNUZBQzBBMjNCMzBGMDA1
RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4RDA2NEZDMEEy
M0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
REQ3Q0RGMjUwQTIzQ0Y5ODAwMDY5OTI4IC8qIENTU1Vua25vd25SdWxlLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAg
LTYxMzIsNiArNjE2Myw5IEBACiAJCQkJQTdCOTdCODIwOTc5QzNBMTAwMEU4RUIxIC8qIFdLTGlu
ZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCUE3Qjk3Qjg1
MDk3OUMzQTEwMDBFOEVCMSAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4gUmVz
b3VyY2VzICovLAogCQkJCUE3NjM4QTkyMDk5NTkyQzMwMDA3RTE0RiAvKiBXS0Rpc3BsYWNlbWVu
dE1hcEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJQThEMDY0RjAwQTIzQkZF
QTAwNUU3MjAzIC8qIEhUTUxGb3JtRWxlbWVudC5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUE4
RDA2NTFEMEEyM0MxRkUwMDVFNzIwMyAvKiBDU1NSdWxlTGlzdC5pZGwgaW4gUmVzb3VyY2VzICov
LAorCQkJCUE4RDA2NTFFMEEyM0MxRkUwMDVFNzIwMyAvKiBDU1NWYWx1ZUxpc3QuaWRsIGluIFJl
c291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTY4NTYsNiArNjg5MCwxMCBAQAogCQkJCTFBRTJBRTVCMEExRDI2RjIw
MEI0MkIyNSAvKiBKU0hUTUxNZW51RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUy
QUVDNzBBMUQyOTdCMDBCNDJCMjUgLyogSlNIVE1MUXVvdGVFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBRTJBRUU2MEExRDJBNzUwMEI0MkIyNSAvKiBKU0hUTUxCbG9ja3F1b3RlRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEQwNUZBNzBBMjNCMzAxMDA1RTcyMDMgLyog
SlNDU1NSdWxlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEQwNUZBQjBBMjNCMzBGMDA1
RTcyMDMgLyogSlNDU1NWYWx1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThEMDY0RkIw
QTIzQzBDQzAwNUU3MjAzIC8qIEpTSFRNTEZvcm1FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUE4RDA2NUFFMEEyNDQ2Q0QwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VM
b2cJKHJldmlzaW9uIDE0NTc3KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMDYtMDUtMjMgIEVyaWMgU2VpZGVsICA8ZXJpY0Blc2VpZGVsLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgIkhhc0lu
ZGV4R2V0dGVyIiBzdXBwb3J0IHRvIGJpbmRpbmdzIGF1dG9nZW4gc3lzdGVtLgorICAgICAgICBo
dHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTkwNTcKKworICAg
ICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVu
dEJhc2UuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19jc3MuY3BwOgorICAgICAgICAo
S0pTOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfY3NzLmg6CisgICAgICAgICog
YmluZGluZ3MvanMva2pzX2RvbS5jcHA6CisgICAgICAgIChLSlM6OkRPTU5hbWVkTm9kZU1hcDo6
Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmlkbDogQWRkZWQuCisKIDIw
MDYtMDUtMjQgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBS
dWJiZXIgc3RhbXBlZCBieSBBbmRlcnMuCkluZGV4OiBjc3MvTWVkaWFMaXN0LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBjc3MvTWVkaWFMaXN0LmlkbAkocmV2aXNpb24gMCkKKysrIGNzcy9NZWRpYUxpc3Qu
aWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBzdHlsZXNoZWV0cyB7CisK
KyAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAyOgorICAgIGludGVyZmFjZSBNZWRpYUxp
c3QgeworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgICBtZWRpYVRl
eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGVyIHJh
aXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nICAgIGxlbmd0aDsKKyAgICAgICAgRE9NU3RyaW5nICAgICAgICAgIGl0ZW0oaW4gdW5z
aWduZWQgbG9uZyBpbmRleCk7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgICBkZWxldGVNZWRp
dW0oaW4gRE9NU3RyaW5nIG9sZE1lZGl1bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgICAgICAg
ICAgICAgICBhcHBlbmRNZWRpdW0oaW4gRE9NU3RyaW5nIG5ld01lZGl1bSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Cisg
ICAgfTsKK30KSW5kZXg6IGNzcy9DU1NSdWxlTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3NzL0NT
U1J1bGVMaXN0LmlkbAkocmV2aXNpb24gMCkKKysrIGNzcy9DU1NSdWxlTGlzdC5pZGwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNzcyB7CisKKyAgICAvLyBJbnRyb2R1Y2Vk
IGluIERPTSBMZXZlbCAyOgorICAgIGludGVyZmFjZSBbSGFzSW5kZXhHZXR0ZXJdIENTU1J1bGVM
aXN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgICAgbGVuZ3Ro
OworICAgICAgICBDU1NSdWxlICAgICAgICAgICBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIH07Cit9CkluZGV4OiBjc3MvQ1NTVmFsdWVMaXN0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBj
c3MvQ1NTVmFsdWVMaXN0LmlkbAkocmV2aXNpb24gMCkKKysrIGNzcy9DU1NWYWx1ZUxpc3QuaWRs
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBjc3MgeworCisgICAgLy8gSW50
cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKKyAgICBpbnRlcmZhY2UgW0hhc0luZGV4R2V0dGVyXSBD
U1NWYWx1ZUxpc3QgOiBDU1NWYWx1ZSB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nICAgIGxlbmd0aDsKKyAgICAgICAgQ1NTVmFsdWUgICAgICAgICAgIGl0ZW0oaW4g
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgfTsKK30K
</data>
<flag name="review"
          id="2435"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>