<?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>165307</bug_id>
          
          <creation_ts>2016-12-02 08:46:20 -0800</creation_ts>
          <short_desc>[WebIDL] Remove support for the &apos;Nondeterministic&apos; extended attribute</short_desc>
          <delta_ts>2016-12-02 10:41:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1255689</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-02 08:46:20 -0800</bug_when>
    <thetext>[WebIDL] Remove support for the &apos;Nondeterministic&apos; extended attribute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255691</commentid>
    <comment_count>1</comment_count>
      <attachid>295948</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-12-02 08:48:51 -0800</bug_when>
    <thetext>Created attachment 295948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255694</commentid>
    <comment_count>2</comment_count>
      <attachid>295948</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-12-02 08:55:12 -0800</bug_when>
    <thetext>Comment on attachment 295948
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255753</commentid>
    <comment_count>3</comment_count>
      <attachid>295948</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-02 10:41:13 -0800</bug_when>
    <thetext>Comment on attachment 295948
Patch

Clearing flags on attachment: 295948

Committed r209247: &lt;http://trac.webkit.org/changeset/209247&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255754</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-02 10:41:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295948</attachid>
            <date>2016-12-02 08:48:51 -0800</date>
            <delta_ts>2016-12-02 10:41:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165307-20161202084821.patch</filename>
            <type>text/plain</type>
            <size>44274</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTIzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTEyLTAyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gUmVtb3ZlIHN1cHBvcnQg
Zm9yIHRoZSAnTm9uZGV0ZXJtaW5pc3RpYycgZXh0ZW5kZWQgYXR0cmlidXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUzMDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBhcmUgbm90IGN1cnJlbnRs
eSB1c2luZyB0aGUgV2ViUmVwbGF5IGZ1bmN0aW9uYWxpdHkgdGhhdCB0aGUgTm9uZGV0ZXJtaW5p
c3RpYworICAgICAgICBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gYWlkZS4gSWYg
d2UgY29tZSBiYWNrIHRvIFdlYlJlcGxheSBpbiB0aGUgZnV0dXJlLAorICAgICAgICB3ZSBjYW4g
YnJpbmcgaXQgYmFjay4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEdldE5hdGl2ZVR5cGVG
b3JNZW1vaXphdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExB
dHRyaWJ1dGVzLnR4dDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5vbmRldGVybWluaXN0aWMuaWRsOiBSZW1vdmVkLgor
ICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmlkbDoKKyAgICAgICAgKiBwYWdlL1NjcmVlbi5pZGw6
CisKIDIwMTYtMTItMDIgIERhdmUgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0NTUyBQYXJzZXJdIE1ha2Ugc3VyZSBtYXJnaW4gYW5kIGZvbnQgc2V0IHRoZSBpbXBsaWNpdCBm
bGFnIHByb3Blcmx5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA5MjM4KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAg
LTMzMjUsMzQgKzMzMjUsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTtc
biIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Tm9uZGV0ZXJtaW5pc3RpY30pIHsKLSAgICAgICAgICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiTWVtb2l6ZWRET01SZXN1bHQuaCIsICJXRUJfUkVQTEFZIik7Ci0gICAg
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxyZXBsYXkvSW5wdXRDdXJzb3IuaD4iLCAi
V0VCX1JFUExBWSIpOwotICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL05l
dmVyRGVzdHJveWVkLmg+IiwgIldFQl9SRVBMQVkiKTsKLQotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2lmIEVOQUJMRShXRUJfUkVQTEFZKVxuIik7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgY3Vyc29yID0gc3RhdGUubGV4aWNhbEds
b2JhbE9iamVjdCgpLT5pbnB1dEN1cnNvcigpO1xuIik7Ci0KLSAgICAgICAgICAgICAgICBteSAk
bmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwotICAgICAgICAg
ICAgICAgIG15ICRtZW1vaXplZFR5cGUgPSBHZXROYXRpdmVUeXBlRm9yTWVtb2l6YXRpb24oJGlu
dGVyZmFjZSwgJHR5cGUpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKFwi
JGludGVyZmFjZU5hbWUuJG5hbWVcIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY3Vy
c29yLmlzQ2FwdHVyaW5nKCkpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAkbWVtb2l6ZWRUeXBlIG1lbW9pemVkUmVzdWx0ID0gdGhpc09iamVjdC53
cmFwcGVkKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKTtcbiIpOwotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRE
T01SZXN1bHQ8JG1lbW9pemVkVHlwZT4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1v
aXplZFJlc3VsdCwgMCk7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJp
YnV0ZSwgMCwgJGludGVyZmFjZSwgIm1lbW9pemVkUmVzdWx0IiwgInRoaXNPYmplY3QiKSAuICI7
XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGN1cnNvci5pc1JlcGxheWluZygpKSB7XG4iKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJG1lbW9pemVkVHlw
ZSBtZW1vaXplZFJlc3VsdDtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBNZW1vaXplZERPTVJlc3VsdEJhc2UqIGlucHV0ID0gY3Vyc29yLmZldGNoSW5w
dXQ8TWVtb2l6ZWRET01SZXN1bHRCYXNlPigpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIGlmIChpbnB1dCAmJiBpbnB1dC0+Y29udmVydFRvPCRtZW1v
aXplZFR5cGU+KG1lbW9pemVkUmVzdWx0KSkge1xuIik7Ci0gICAgICAgICAgICAgICAgIyBGSVhN
RTogdGhlIGdlbmVyYXRlZCBjb2RlIHNob3VsZCByZXBvcnQgYW4gZXJyb3IgaWYgYW4gaW5wdXQg
Y2Fubm90IGJlIGZldGNoZWQgb3IgY29udmVydGVkLgotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1Jl
ZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgIm1lbW9pemVkUmVzdWx0IiwgInRo
aXNPYmplY3QiKSAuICI7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgfVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpOwot
ICAgICAgICAgICAgfSAjIGF0dHJpYnV0ZSBOb25kZXRlcm1pbmlzdGljCi0KICAgICAgICAgICAg
IGlmIChIYXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0aGlzT2JqZWN0
LiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKHN0YXRlKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNp
ZiAoJHR5cGUtPm5hbWUgZXEgIkV2ZW50SGFuZGxlciIpIHsKQEAgLTQ4NjgsNDkgKzQ4NDAsMTEg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQogewogICAgIG15ICgk
ZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgJGluZGVudCwgJGludGVyZmFjZSkgPSBAXzsKIAot
ICAgIG15ICRub25kZXRlcm1pbmlzdGljID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntOb25kZXRlcm1pbmlzdGljfTsKLQogICAgIGlmICgkZnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEg
InZvaWQiIHx8IElzUmV0dXJuaW5nUHJvbWlzZSgkZnVuY3Rpb24pKSB7Ci0gICAgICAgIGlmICgk
bm9uZGV0ZXJtaW5pc3RpYykgewotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxyZXBs
YXkvSW5wdXRDdXJzb3IuaD4iLCAiV0VCX1JFUExBWSIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjaWYgRU5BQkxFKFdFQl9SRVBMQVkpXG4iKTsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAkaW5kZW50IC4gIklucHV0Q3Vyc29yJiBjdXJzb3IgPSBzdGF0ZS0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5pbnB1dEN1cnNvcigpO1xuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGluZGVudCAuICJpZiAoIWN1cnNvci5pc1JlcGxheWluZygpKVxuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgJGZ1bmN0aW9u
U3RyaW5nO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbHNlXG4iKTsK
LSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmlu
ZztcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
JGZ1bmN0aW9uU3RyaW5nO1xuIik7Ci0gICAgICAgIH0KKyAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRpbmRlbnQgLiAiJGZ1bmN0aW9uU3RyaW5nO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkaW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
XG4iKTsKICAgICB9IGVsc2UgewogICAgICAgICBteSAkdGhpc09iamVjdCA9ICRmdW5jdGlvbi0+
aXNTdGF0aWMgPyAwIDogImNhc3RlZFRoaXMiOwotICAgICAgICBpZiAoJG5vbmRldGVybWluaXN0
aWMpIHsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJNZW1vaXplZERPTVJlc3VsdC5o
IiwgIldFQl9SRVBMQVkiKTsKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8cmVwbGF5
L0lucHV0Q3Vyc29yLmg+IiwgIldFQl9SRVBMQVkiKTsKLSAgICAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCI8d3RmL05ldmVyRGVzdHJveWVkLmg+IiwgIldFQl9SRVBMQVkiKTsKLQotICAgICAg
ICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICRmdW5jdGlv
bi0+dHlwZSk7Ci0gICAgICAgICAgICBteSAkbWVtb2l6ZWRUeXBlID0gR2V0TmF0aXZlVHlwZUZv
ck1lbW9pemF0aW9uKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+dHlwZSk7Ci0gICAgICAgICAgICBt
eSAkYmluZGluZ05hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gIi4iIC4gJGZ1bmN0aW9u
LT5uYW1lOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgRU5BQkxFKFdFQl9S
RVBMQVkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gImF1
dG8mIGN1cnNvciA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmlucHV0Q3Vyc29yKCk7
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKFwiJGJpbmRpbmdO
YW1lXCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpO1xuIik7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJpZiAoY3Vyc29yLmlzQ2FwdHVyaW5n
KCkpIHtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAg
ICRuYXRpdmVUeXBlIG1lbW9pemVkUmVzdWx0ID0gJGZ1bmN0aW9uU3RyaW5nO1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgY3Vyc29yLmFwcGVuZElu
cHV0PE1lbW9pemVkRE9NUmVzdWx0PCRtZW1vaXplZFR5cGU+PihiaW5kaW5nTmFtZS5nZXQoKS5z
dHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgJGluZGVudCAuICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgiIC4gTmF0aXZl
VG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICJtZW1vaXpl
ZFJlc3VsdCIsICR0aGlzT2JqZWN0KSAuICIpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgJGluZGVudCAuICJ9XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAkaW5kZW50IC4gImlmIChjdXJzb3IuaXNSZXBsYXlpbmcoKSkge1xuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgYXV0byogaW5wdXQgPSBjdXJzb3Iu
ZmV0Y2hJbnB1dDxNZW1vaXplZERPTVJlc3VsdEJhc2U+KCk7XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICAkbWVtb2l6ZWRUeXBlIG1lbW9pemVkUmVz
dWx0O1xuIik7Ci0gICAgICAgICAgICAjIEZJWE1FOiB0aGUgZ2VuZXJhdGVkIGNvZGUgc2hvdWxk
IHJlcG9ydCBhbiBlcnJvciBpZiBhbiBpbnB1dCBjYW5ub3QgYmUgZmV0Y2hlZCBvciBjb252ZXJ0
ZWQuCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgaWYgKGlu
cHV0ICYmIGlucHV0LT5jb252ZXJ0VG88JG1lbW9pemVkVHlwZT4obWVtb2l6ZWRSZXN1bHQpKVxu
Iik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1
bmN0aW9uLCAxLCAkaW50ZXJmYWNlLCAibWVtb2l6ZWRSZXN1bHQiLCAkdGhpc09iamVjdCkgLiAi
KTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAifVxuIik7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIik7Ci0gICAgICAgIH0K
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAicmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSgiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEsICRpbnRl
cmZhY2UsICRmdW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4gIik7XG4iKTsKICAgICB9CiB9
CkBAIC01MjAyLDEzICs1MTM2LDYgQEAgc3ViIEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MKICAg
ICByZXR1cm4gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiB9CiAKLXN1YiBHZXRO
YXRpdmVUeXBlRm9yTWVtb2l6YXRpb24KLXsKLSAgICBteSAoJGludGVyZmFjZSwgJHR5cGUpID0g
QF87Ci0KLSAgICByZXR1cm4gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7Ci19Ci0K
IHN1YiBTaG91bGRQYXNzQXJndW1lbnRCeVJlZmVyZW5jZQogewogICAgIG15ICgkYXJndW1lbnQp
ID0gQF87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy50eHQJKHJldmlzaW9uIDIwOTIzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2
LDYgQEAgTmFtZWRDb25zdHJ1Y3Rvcj0qCiBOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2lu
dHMKIE5ld09iamVjdAogTm9JbnRlcmZhY2VPYmplY3QKLU5vbmRldGVybWluaXN0aWMKIE5vdEVu
dW1lcmFibGUKIE92ZXJyaWRlQnVpbHRpbnMKIFBhc3NDb250ZXh0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5vbmRldGVybWluaXN0aWMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Tm9uZGV0
ZXJtaW5pc3RpYy5pZGwJKHJldmlzaW9uIDIwOTIzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0Tm9uZGV0ZXJtaW5pc3RpYy5pZGwJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1hdHMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGluZyB0
aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0cmFja2luZwotLy8gY2hhbmdlcyBp
biBpdHMgb3VwdXQuCi0KLWludGVyZmFjZSBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyB7Ci0gICAgW05v
bmRldGVybWluaXN0aWNdIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG5vbmRldGVybWluaXN0aWNS
ZWFkb25seUF0dHI7Ci0gICAgW05vbmRldGVybWluaXN0aWNdIGF0dHJpYnV0ZSBET01TdHJpbmcg
bm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHI7Ci0gICAgW05vbmRldGVybWluaXN0aWMsIE1h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5vbmRldGVybWluaXN0
aWNFeGNlcHRpb25BdHRyOwotICAgIFtOb25kZXRlcm1pbmlzdGljLCBHZXR0ZXJNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBub25kZXRlcm1pbmlzdGljR2V0dGVy
RXhjZXB0aW9uQXR0cjsKLSAgICBbTm9uZGV0ZXJtaW5pc3RpYywgU2V0dGVyTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgbm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4
Y2VwdGlvbkF0dHI7Ci0KLSAgICBbTm9uZGV0ZXJtaW5pc3RpY10gYm9vbGVhbiBub25kZXRlcm1p
bmlzdGljWmVyb0FyZ0Z1bmN0aW9uKCk7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRl
cm1pbmlzdGljLmNwcAkocmV2aXNpb24gMjA5MjM4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCShub25leGlzdGVu
dCkKQEAgLTEsNTIwICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVzdE5vbmRldGVybWluaXN0aWMuaCIKLQotI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKLSNpbmNs
dWRlICJKU0RPTUNvbnZlcnQuaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
LQotI2lmIEVOQUJMRShXRUJfUkVQTEFZKQotI2luY2x1ZGUgIk1lbW9pemVkRE9NUmVzdWx0Lmgi
Ci0jaW5jbHVkZSA8cmVwbGF5L0lucHV0Q3Vyc29yLmg+Ci0jZW5kaWYKLQotdXNpbmcgbmFtZXNw
YWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGdW5jdGlvbnMKLQotSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5
cGVGdW5jdGlvbk5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUq
KTsKLQotLy8gQXR0cmlidXRlcwotCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVy
bWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1i
b29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY0V4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25k
ZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RO
b25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29s
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVz
dE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCi1jbGFzcyBKU1Rlc3ROb25kZXRlcm1p
bmlzdGljUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6
Ci0gICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0g
ICAgewotICAgICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5
cGU+KHZtLmhlYXApKSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKHZtLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
ICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJv
dG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVy
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19
OwotCi11c2luZyBKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPjsKLQotdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVj
dC5mdW5jdGlvblByb3RvdHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5vbmRldGVybWluaXN0aWM6OnByb3RvdHlwZSh2
bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRlc3ROb25kZXRlcm1pbmlzdGljIikpKSwgUmVh
ZE9ubHkgfCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKLX0KLQotdGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKSB9OwotCi0vKiBI
YXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7
ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5vbmRldGVybWluaXN0aWND
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcikgfSB9LAotICAg
IHsgIm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vz
c29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9u
bHlBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oMCkgfSB9LAotICAgIHsgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIiwgQ3Vz
dG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNXcml0ZWFibGVBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNX
cml0ZWFibGVBdHRyKSB9IH0sCi0gICAgeyAibm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIi
LCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY0V4Y2VwdGlvbkF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5p
c3RpY0V4Y2VwdGlvbkF0dHIpIH0gfSwKLSAgICB7ICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhj
ZXB0aW9uQXR0ciIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5vbmRldGVybWlu
aXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cikgfSB9LAotICAgIHsgIm5v
bmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIiwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25B
dHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRp
b25BdHRyKSB9IH0sCi0gICAgeyAibm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbiIsIEpT
Qzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVG
dW5jdGlvbj4oanNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJt
aW5pc3RpY1plcm9BcmdGdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKLX07Ci0KLWNvbnN0
IENsYXNzSW5mbyBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlOjpzX2luZm8gPSB7ICJU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSkgfTsKLQotdm9pZCBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17
Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGll
cyh2bSwgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7
Ci19Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpzX2luZm8gPSB7
ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYykgfTsKLQotSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yzo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROb25kZXRlcm1pbmlzdGljPiYmIGltcGwp
Ci0gICAgOiBKU0RPTVdyYXBwZXI8VGVzdE5vbmRldGVybWluaXN0aWM+KHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQotewotfQotCi12b2lkIEpTVGVzdE5vbmRldGVybWlu
aXN0aWM6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7Ci0gICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotCi19Ci0KLUpTT2JqZWN0KiBK
U1Rlc3ROb25kZXRlcm1pbmlzdGljOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
UHJvdG90eXBlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE5vbmRldGVybWlu
aXN0aWM6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17
Ci0gICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPih2bSwg
Z2xvYmFsT2JqZWN0KTsKLX0KLQotdm9pZCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpkZXN0cm95
KEpTQzo6SlNDZWxsKiBjZWxsKQotewotICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIHRoaXNP
YmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oY2VsbCk7Ci0gICAg
dGhpc09iamVjdC0+SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6fkpTVGVzdE5vbmRldGVybWluaXN0
aWMoKTsKLX0KLQotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogQmlu
ZGluZ0NhbGxlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVj
U3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCi17Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci19Ci0KLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIEJp
bmRpbmdDYWxsZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz46OmNhc3RGb3JPcGVyYXRpb24oRXhl
Y1N0YXRlJiBzdGF0ZSkKLXsKLSAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyo+KHN0YXRlLnRoaXNWYWx1ZSgpKTsKLX0KLQotc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE5vbmRldGVybWluaXN0aWMmLCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKTsKLQotRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNSZWFkb25seUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYz46OmF0dHJpYnV0ZTxqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9u
ZGV0ZXJtaW5pc3RpY1JlYWRvbmx5QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgIm5vbmRl
dGVybWluaXN0aWNSZWFkb25seUF0dHIiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE5vbmRldGVybWluaXN0aWMmIHRoaXNPYmplY3QsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0jaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgYXV0byYg
Y3Vyc29yID0gc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpLT5pbnB1dEN1cnNvcigpOwotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgaWYgKGN1cnNvci5pc0NhcHR1cmlu
ZygpKSB7Ci0gICAgICAgIGludDMyX3QgbWVtb2l6ZWRSZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKCk7Ci0gICAgICAgIGN1cnNvci5hcHBl
bmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxpbnQzMl90Pj4oYmluZGluZ05hbWUuZ2V0KCkuc3Ry
aW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKLSAgICAgICAgcmV0dXJuIHRvSlM8SURMTG9uZz4o
bWVtb2l6ZWRSZXN1bHQpOwotICAgIH0KLQotICAgIGlmIChjdXJzb3IuaXNSZXBsYXlpbmcoKSkg
ewotICAgICAgICBpbnQzMl90IG1lbW9pemVkUmVzdWx0OwotICAgICAgICBNZW1vaXplZERPTVJl
c3VsdEJhc2UqIGlucHV0ID0gY3Vyc29yLmZldGNoSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHRCYXNl
PigpOwotICAgICAgICBpZiAoaW5wdXQgJiYgaW5wdXQtPmNvbnZlcnRUbzxpbnQzMl90PihtZW1v
aXplZFJlc3VsdCkpIHsKLSAgICAgICAgICAgIHJldHVybiB0b0pTPElETExvbmc+KG1lbW9pemVk
UmVzdWx0KTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTG9uZz4oaW1w
bC5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJt
aW5pc3RpY1dyaXRlYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RO
b25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz46OmF0dHJpYnV0ZTxqc1Rl
c3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHJHZXR0ZXI+KHN0
YXRlLCB0aGlzVmFsdWUsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIpOwotfQotCi1z
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNXcml0ZWFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE5vbmRldGVybWlu
aXN0aWMmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCi17Ci0gICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0jaWYgRU5BQkxF
KFdFQl9SRVBMQVkpCi0gICAgYXV0byYgY3Vyc29yID0gc3RhdGUubGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5pbnB1dEN1cnNvcigpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
aWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlz
dGljV3JpdGVhYmxlQXR0ciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwot
ICAgIGlmIChjdXJzb3IuaXNDYXB0dXJpbmcoKSkgewotICAgICAgICBTdHJpbmcgbWVtb2l6ZWRS
ZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5ub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0
cigpOwotICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5n
Pj4oYmluZGluZ05hbWUuZ2V0KCkuc3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKLSAgICAg
ICAgcmV0dXJuIHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwotICAg
IH0KLQotICAgIGlmIChjdXJzb3IuaXNSZXBsYXlpbmcoKSkgewotICAgICAgICBTdHJpbmcgbWVt
b2l6ZWRSZXN1bHQ7Ci0gICAgICAgIE1lbW9pemVkRE9NUmVzdWx0QmFzZSogaW5wdXQgPSBjdXJz
b3IuZmV0Y2hJbnB1dDxNZW1vaXplZERPTVJlc3VsdEJhc2U+KCk7Ci0gICAgICAgIGlmIChpbnB1
dCAmJiBpbnB1dC0+Y29udmVydFRvPFN0cmluZz4obWVtb2l6ZWRSZXN1bHQpKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBtZW1vaXplZFJlc3VsdCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFw
cGVkKCk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGlt
cGwubm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljRXhjZXB0aW9uQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3ROb25kZXRlcm1p
bmlzdGljJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVz
dE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPjo6YXR0cmlidXRlPGpz
VGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ckdldHRlcj4o
c3RhdGUsIHRoaXNWYWx1ZSwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5p
c3RpY0V4Y2VwdGlvbkF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKLXsKLSAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSNpZiBFTkFC
TEUoV0VCX1JFUExBWSkKLSAgICBhdXRvJiBjdXJzb3IgPSBzdGF0ZS5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPmlucHV0Q3Vyc29yKCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0
b21pY1N0cmluZz4gYmluZGluZ05hbWUoIlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWlu
aXN0aWNFeGNlcHRpb25BdHRyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7
Ci0gICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7Ci0gICAgICAgIFN0cmluZyBtZW1vaXpl
ZFJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25B
dHRyKCk7Ci0gICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxNZW1vaXplZERPTVJlc3VsdDxTdHJp
bmc+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsIDApOwotICAg
ICAgICByZXR1cm4gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBtZW1vaXplZFJlc3VsdCk7Ci0g
ICAgfQotCi0gICAgaWYgKGN1cnNvci5pc1JlcGxheWluZygpKSB7Ci0gICAgICAgIFN0cmluZyBt
ZW1vaXplZFJlc3VsdDsKLSAgICAgICAgTWVtb2l6ZWRET01SZXN1bHRCYXNlKiBpbnB1dCA9IGN1
cnNvci5mZXRjaElucHV0PE1lbW9pemVkRE9NUmVzdWx0QmFzZT4oKTsKLSAgICAgICAgaWYgKGlu
cHV0ICYmIGlucHV0LT5jb252ZXJ0VG88U3RyaW5nPihtZW1vaXplZFJlc3VsdCkpIHsKLSAgICAg
ICAgICAgIHJldHVybiB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIG1lbW9pemVkUmVzdWx0KTsK
LSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwg
aW1wbC5ub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cigpKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdE5v
bmRldGVybWluaXN0aWMmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKLQotRW5jb2RlZEpTVmFs
dWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25B
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+
OjphdHRyaWJ1dGU8anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJF
eGNlcHRpb25BdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAibm9uZGV0ZXJtaW5pc3RpY0dl
dHRlckV4Y2VwdGlvbkF0dHIiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljJiB0aGlzT2JqZWN0LCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQotewotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwotI2lmIEVOQUJMRShXRUJfUkVQTEFZKQotICAgIGF1dG8m
IGN1cnNvciA9IHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKS0+aW5wdXRDdXJzb3IoKTsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiBiaW5kaW5nTmFtZSgi
VGVzdE5vbmRldGVybWluaXN0aWMubm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpZiAoY3Vyc29yLmlz
Q2FwdHVyaW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0ID0gdGhpc09iamVj
dC53cmFwcGVkKCkubm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoKTsKLSAgICAg
ICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PFN0cmluZz4+KGJpbmRpbmdO
YW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgMCk7Ci0gICAgICAgIHJldHVybiB0
b0pTPElETERPTVN0cmluZz4oc3RhdGUsIG1lbW9pemVkUmVzdWx0KTsKLSAgICB9Ci0KLSAgICBp
ZiAoY3Vyc29yLmlzUmVwbGF5aW5nKCkpIHsKLSAgICAgICAgU3RyaW5nIG1lbW9pemVkUmVzdWx0
OwotICAgICAgICBNZW1vaXplZERPTVJlc3VsdEJhc2UqIGlucHV0ID0gY3Vyc29yLmZldGNoSW5w
dXQ8TWVtb2l6ZWRET01SZXN1bHRCYXNlPigpOwotICAgICAgICBpZiAoaW5wdXQgJiYgaW5wdXQt
PmNvbnZlcnRUbzxTdHJpbmc+KG1lbW9pemVkUmVzdWx0KSkgewotICAgICAgICAgICAgcmV0dXJu
IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwotICAgICAgICB9Ci0g
ICAgfQotI2VuZGlmCi0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLm5vbmRldGVy
bWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5p
c3RpY1NldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz46OmF0dHJp
YnV0ZTxqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhj
ZXB0aW9uQXR0ciIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE5vbmRldGVybWluaXN0aWMmIHRoaXNPYmplY3QsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7Ci0jaWYgRU5BQkxFKFdFQl9SRVBMQVkpCi0gICAgYXV0byYgY3Vyc29y
ID0gc3RhdGUubGV4aWNhbEdsb2JhbE9iamVjdCgpLT5pbnB1dEN1cnNvcigpOwotICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGJpbmRpbmdOYW1lKCJUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYy5ub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIsIEF0b21p
Y1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIGlmIChjdXJzb3IuaXNDYXB0dXJp
bmcoKSkgewotICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKS5ub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cigpOwotICAgICAgICBjdXJz
b3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8U3RyaW5nPj4oYmluZGluZ05hbWUuZ2V0
KCkuc3RyaW5nKCksIG1lbW9pemVkUmVzdWx0LCAwKTsKLSAgICAgICAgcmV0dXJuIHRvSlM8SURM
RE9NU3RyaW5nPihzdGF0ZSwgbWVtb2l6ZWRSZXN1bHQpOwotICAgIH0KLQotICAgIGlmIChjdXJz
b3IuaXNSZXBsYXlpbmcoKSkgewotICAgICAgICBTdHJpbmcgbWVtb2l6ZWRSZXN1bHQ7Ci0gICAg
ICAgIE1lbW9pemVkRE9NUmVzdWx0QmFzZSogaW5wdXQgPSBjdXJzb3IuZmV0Y2hJbnB1dDxNZW1v
aXplZERPTVJlc3VsdEJhc2U+KCk7Ci0gICAgICAgIGlmIChpbnB1dCAmJiBpbnB1dC0+Y29udmVy
dFRvPFN0cmluZz4obWVtb2l6ZWRSZXN1bHQpKSB7Ci0gICAgICAgICAgICByZXR1cm4gdG9KUzxJ
RExET01TdHJpbmc+KHN0YXRlLCBtZW1vaXplZFJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0j
ZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwubm9uZGV0ZXJtaW5pc3Rp
Y1NldHRlckV4Y2VwdGlvbkF0dHIoKSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotRW5jb2Rl
ZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwotICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqIGRvbU9iamVjdCA9
IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7Ci0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRDb25zdHJ1
Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29s
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsK
LSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7Ci0gICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSogZG9tT2Jq
ZWN0ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVj
dCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IKLSAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0
YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKLX0KLQotc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVh
YmxlQXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE5vbmRldGVybWluaXN0aWMmLCBKU1Zh
bHVlLCBUaHJvd1Njb3BlJik7Ci0KLWJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+OjpzZXRBdHRyaWJ1dGU8c2V0SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyRnVuY3Rpb24+
KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFi
bGVBdHRyIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlz
dGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQotewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRl
LCB2YWx1ZSwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCk7Ci0gICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaW1wbC5zZXROb25kZXRl
cm1pbmlzdGljV3JpdGVhYmxlQXR0cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0
aWNOb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYsIEpTVGVz
dE5vbmRldGVybWluaXN0aWMmLCBKU1ZhbHVlLCBUaHJvd1Njb3BlJik7Ci0KLWJvb2wgc2V0SlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0
aWM+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0
aWNFeGNlcHRpb25BdHRyRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
Im5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHJG
dW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQotewotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb246Ok5vcm1hbCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7Ci0gICAgaW1wbC5zZXROb25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cihXVEZNb3ZlKG5h
dGl2ZVZhbHVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLQotc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9u
QXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE5vbmRldGVybWluaXN0aWMmLCBKU1ZhbHVl
LCBUaHJvd1Njb3BlJik7Ci0KLWJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVy
bWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+OjpzZXRBdHRyaWJ1dGU8c2V0
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRy
RnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm5vbmRldGVybWluaXN0
aWNHZXR0ZXJFeGNlcHRpb25BdHRyIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHJGdW5j
dGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQotewotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVy
dDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRp
b246Ok5vcm1hbCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
Ci0gICAgaW1wbC5zZXROb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0cihXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLQotc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0
aW9uQXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYsIEpTVGVzdE5vbmRldGVybWluaXN0aWMmLCBKU1Zh
bHVlLCBUaHJvd1Njb3BlJik7Ci0KLWJvb2wgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRl
dGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+OjpzZXRBdHRyaWJ1dGU8
c2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25B
dHRyRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm5vbmRldGVybWlu
aXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHJG
dW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQotewotICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29u
dmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSwgU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb246Ok5vcm1hbCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7Ci0gICAgaW1wbC5zZXROb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLQotSlNWYWx1ZSBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpT
VGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRl
dGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0
ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE5vbmRldGVybWluaXN0aWM+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaXN0aWNaZXJv
QXJnRnVuY3Rpb25DYWxsZXI+KHN0YXRlLCAibm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlv
biIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlv
bkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKLXsKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotI2lmIEVOQUJMRShXRUJfUkVQTEFZKQotICAgIGF1
dG8mIGN1cnNvciA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmlucHV0Q3Vyc29yKCk7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmluZz4gYmluZGluZ05h
bWUoIlRlc3ROb25kZXRlcm1pbmlzdGljLm5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBpZiAoY3Vyc29yLmlz
Q2FwdHVyaW5nKCkpIHsKLSAgICAgICAgYm9vbCBtZW1vaXplZFJlc3VsdCA9IGltcGwubm9uZGV0
ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbigpOwotICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8
TWVtb2l6ZWRET01SZXN1bHQ8Ym9vbD4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1v
aXplZFJlc3VsdCwgMCk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExC
b29sZWFuPihtZW1vaXplZFJlc3VsdCkpOwotICAgIH0KLSAgICBpZiAoY3Vyc29yLmlzUmVwbGF5
aW5nKCkpIHsKLSAgICAgICAgYXV0byogaW5wdXQgPSBjdXJzb3IuZmV0Y2hJbnB1dDxNZW1vaXpl
ZERPTVJlc3VsdEJhc2U+KCk7Ci0gICAgICAgIGJvb2wgbWVtb2l6ZWRSZXN1bHQ7Ci0gICAgICAg
IGlmIChpbnB1dCAmJiBpbnB1dC0+Y29udmVydFRvPGJvb2w+KG1lbW9pemVkUmVzdWx0KSkKLSAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihtZW1vaXpl
ZFJlc3VsdCkpOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExCb29sZWFuPihpbXBsLm5vbmRldGVybWluaXN0aWNaZXJvQXJnRnVuY3Rpb24oKSkpOwot
fQotCi1ib29sIEpTVGVzdE5vbmRldGVybWluaXN0aWNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKLXsKLSAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKLSAgICBVTlVTRURf
UEFSQU0odmlzaXRvcik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEpTVGVzdE5vbmRl
dGVybWluaXN0aWNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgYXV0byoganNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyA9
IGpzQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkp
OwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy0+
d3JhcHBlZCgpLCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljKTsKLX0KLQotI2lmIEVOQUJMRShCSU5E
SU5HX0lOVEVHUklUWSkKLSNpZiBQTEFURk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDQ4MykKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigi
Pz9fN1Rlc3ROb25kZXRlcm1pbmlzdGljQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1l
eHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3ROb25kZXRlcm1pbmlz
dGljRVtdOyB9Ci0jZW5kaWYKLSNlbmRpZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYz4mJiBpbXBsKQotewotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5U
RUdSSVRZKQotICAgIHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSAqKHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCoqPihpbXBsLnB0cigpKSk7Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4
cGVjdGVkVlRhYmxlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KF9faWRlbnRpZmll
cigiPz9fN1Rlc3ROb25kZXRlcm1pbmlzdGljQFdlYkNvcmVAQDZCQCIpKTsKLSNlbHNlCi0gICAg
dm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyMFRlc3ROb25kZXRl
cm1pbmlzdGljRVsyXTsKLSNpZiBDT01QSUxFUihDTEFORykKLSAgICAvLyBJZiB0aGlzIGZhaWxz
IFRlc3ROb25kZXRlcm1pbmlzdGljIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVk
IHRvIGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0
byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KF9faXNfcG9seW1v
cnBoaWMoVGVzdE5vbmRldGVybWluaXN0aWMpLCAiVGVzdE5vbmRldGVybWluaXN0aWMgaXMgbm90
IHBvbHltb3JwaGljIik7Ci0jZW5kaWYKLSNlbmRpZgotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBh
c3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8v
IFRlc3ROb25kZXRlcm1pbmlzdGljIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2Ug
Y3VycmVudGx5IHJlcXVpcmUgVGVzdE5vbmRldGVybWluaXN0aWMgeW91IHRvIG9wdCBvdXQgb2Yg
YmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0
aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFT
RV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwot
I2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5vbmRldGVybWluaXN0aWM+KGds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5v
bmRldGVybWluaXN0aWMmIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAoc3RhdGUsIGdsb2JhbE9i
amVjdCwgaW1wbCk7Ci19Ci0KLVRlc3ROb25kZXRlcm1pbmlzdGljKiBKU1Rlc3ROb25kZXRlcm1p
bmlzdGljOjp0b1dyYXBwZWQoSlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3
cmFwcGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KHZhbHVl
KSkKLSAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCShyZXZp
c2lvbiAyMDkyMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCShub25leGlzdGVudCkKQEAgLTEsODUgKzAsMCBAQAot
LyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2pl
Y3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5n
cy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRE9N
V3JhcHBlci5oIgotI2luY2x1ZGUgIlRlc3ROb25kZXRlcm1pbmlzdGljLmgiCi0jaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5vbmRldGVybWlu
aXN0aWM+IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROb25k
ZXRlcm1pbmlzdGljPjsKLSAgICBzdGF0aWMgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY3JlYXRl
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4mJiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVz
dE5vbmRldGVybWluaXN0aWMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwotICAg
ICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVh
dGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
Ci0gICAgc3RhdGljIFRlc3ROb25kZXRlcm1pbmlzdGljKiB0b1dyYXBwZWQoSlNDOjpKU1ZhbHVl
KTsKLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0KLSAgICBERUNMQVJF
X0lORk87Ci0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKLXByb3RlY3RlZDoKLSAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKEpTQzo6U3RydWN0dXJl
KiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5vbmRldGVybWluaXN0aWM+JiYpOwotCi0g
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotCi1jbGFzcyBKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotcHVibGlj
OgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNv
bnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIo
RE9NV3JhcHBlcldvcmxkJiwgVGVzdE5vbmRldGVybWluaXN0aWMqKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXI+IG93bmVyOwotICAgIHJl
dHVybiAmb3duZXIuZ2V0KCk7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3ROb25k
ZXRlcm1pbmlzdGljKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJuIHdyYXBwYWJsZU9i
amVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFRlc3ROb25kZXRlcm1pbmlzdGljJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMoc3RhdGUs
IGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRv
SlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYz4mJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWZQdHI8VGVzdE5vbmRldGVybWluaXN0aWM+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/
IHRvSlNOZXdseUNyZWF0ZWQoc3RhdGUsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVs
bCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVy
Q29udmVydGVyVHJhaXRzPFRlc3ROb25kZXRlcm1pbmlzdGljPiB7Ci0gICAgdXNpbmcgV3JhcHBl
ckNsYXNzID0gSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzsKLSAgICB1c2luZyBUb1dyYXBwZWRSZXR1
cm5UeXBlID0gVGVzdE5vbmRldGVybWluaXN0aWMqOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkocmV2aXNpb24gMjA5MjM4KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw4ICsyMiw4IEBACiBdIGludGVyZmFjZSBOYXZpZ2F0b3IgewogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01QbHVnaW5BcnJheSBwbHVnaW5zOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01N
aW1lVHlwZUFycmF5IG1pbWVUeXBlczsKLSAgICBbTm9uZGV0ZXJtaW5pc3RpY10gcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gY29va2llRW5hYmxlZDsKLSAgICBbTm9uZGV0ZXJtaW5pc3RpY10g
Ym9vbGVhbiBqYXZhRW5hYmxlZCgpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNv
b2tpZUVuYWJsZWQ7CisgICAgYm9vbGVhbiBqYXZhRW5hYmxlZCgpOwogCiAgICAgLy8gRklYTUU6
IENvbnZlcnQgdGhpcyAjaWYnZGVmIHRvIGFuIElETCBjb25kaXRpb25hbCBhdHRyaWJ1dGUuCiAj
aWYgZGVmaW5lZChXVEZfUExBVEZPUk1fSU9TKSAmJiBXVEZfUExBVEZPUk1fSU9TCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9TY3JlZW4uaWRsCShyZXZpc2lvbiAyMDkyMzgpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NjcmVlbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEzICszMCwxMyBAQAogWwogICAg
IEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbEZyYW1lLAogXSBpbnRlcmZhY2UgU2NyZWVuIHsKLSAg
ICBbTm9uZGV0ZXJtaW5pc3RpY10gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVp
Z2h0OwotICAgIFtOb25kZXRlcm1pbmlzdGljXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyB3aWR0aDsKLSAgICBbTm9uZGV0ZXJtaW5pc3RpY10gcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgY29sb3JEZXB0aDsKLSAgICBbTm9uZGV0ZXJtaW5pc3RpY10gcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgcGl4ZWxEZXB0aDsKLSAgICBbTm9uZGV0ZXJtaW5pc3Rp
Y10gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgYXZhaWxMZWZ0OwotICAgIFtOb25kZXRlcm1pbmlz
dGljXSByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBhdmFpbFRvcDsKLSAgICBbTm9uZGV0ZXJtaW5p
c3RpY10gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYXZhaWxIZWlnaHQ7Ci0gICAg
W05vbmRldGVybWluaXN0aWNdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGF2YWls
V2lkdGg7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGNvbG9yRGVwdGg7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIGxvbmcgcGl4ZWxEZXB0aDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBh
dmFpbExlZnQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgYXZhaWxUb3A7CisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYXZhaWxIZWlnaHQ7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYXZhaWxXaWR0aDsKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>