<?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>185457</bug_id>
          
          <creation_ts>2018-05-08 16:49:08 -0700</creation_ts>
          <short_desc>Speed up AbstractInterpreter::executeEdges</short_desc>
          <delta_ts>2018-05-09 17:16:38 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1422037</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-08 16:49:08 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422038</commentid>
    <comment_count>1</comment_count>
      <attachid>339900</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-08 16:50:28 -0700</bug_when>
    <thetext>Created attachment 339900
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422039</commentid>
    <comment_count>2</comment_count>
      <attachid>339900</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-08 16:51:19 -0700</bug_when>
    <thetext>Comment on attachment 339900
the patch

This doesn&apos;t achieve what I wanted it to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422138</commentid>
    <comment_count>3</comment_count>
      <attachid>339929</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-08 22:16:40 -0700</bug_when>
    <thetext>Created attachment 339929
more

This turned into an adventure.  It&apos;s probably not over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422402</commentid>
    <comment_count>4</comment_count>
      <attachid>340001</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-09 12:20:17 -0700</bug_when>
    <thetext>Created attachment 340001
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422403</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-09 12:22:10 -0700</bug_when>
    <thetext>Attachment 340001 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h:248:  The parameter name &quot;edge&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h:248:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422454</commentid>
    <comment_count>6</comment_count>
      <attachid>340001</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-09 13:39:44 -0700</bug_when>
    <thetext>Comment on attachment 340001
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=340001&amp;action=review

r=me
but I think you have a function you forgot to call for the fast path

&gt; Source/JavaScriptCore/ChangeLog:31
&gt; +        But that fix revealed an amazing timeout in

what an adventure

&gt; Source/JavaScriptCore/dfg/DFGAbstractValue.h:343
&gt; +    ALWAYS_INLINE FiltrationResult fastForwardToAndFilter(AbstractValueClobberEpoch newEpoch, SpeculatedType type)

This doesn&apos;t seem to be called from anywhere. Maybe InPlaceAbstractState was supposed to call this instead of the below function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422555</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-09 16:27:06 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #6)
&gt; Comment on attachment 340001 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=340001&amp;action=review
&gt; 
&gt; r=me
&gt; but I think you have a function you forgot to call for the fast path
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:31
&gt; &gt; +        But that fix revealed an amazing timeout in
&gt; 
&gt; what an adventure
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractValue.h:343
&gt; &gt; +    ALWAYS_INLINE FiltrationResult fastForwardToAndFilter(AbstractValueClobberEpoch newEpoch, SpeculatedType type)
&gt; 
&gt; This doesn&apos;t seem to be called from anywhere. Maybe InPlaceAbstractState was
&gt; supposed to call this instead of the below function?

No, I added this function for &quot;completeness&quot;.  I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422557</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-09 16:31:32 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/231607/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422575</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-09 17:16:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/40113141&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339900</attachid>
            <date>2018-05-08 16:50:28 -0700</date>
            <delta_ts>2018-05-08 22:16:40 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>3381</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMxNTIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDE4LTA1LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyIHNob3VsZCBoYXZlIGFuIGlubGluZSBmYXN0IHBhdGgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTQ1NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBhZGRzIGEgZmFzdCBwYXRoIGZvciB0aGUgbW9zdCBjb21tb24gY2FzZSBvZiBmaWx0ZXJpbmcu
CisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdyk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0ZXIpOgorCiAy
MDE4LTA1LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZH
OjpGbG93TWFwOjpyZXNpemUoKSBzaG91bGRuJ3QgcmVzaXplIHRoZSBzaGFkb3cgbWFwIHVubGVz
cyB3ZSdyZSBpbiBTU0EKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMjMxNTIyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDI0ICsz
MzIsOCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckNsCiAgICAgcmV0
dXJuIG5vcm1hbGl6ZUNsYXJpdHkoZ3JhcGgpOwogfQogCi1GaWx0cmF0aW9uUmVzdWx0IEFic3Ry
YWN0VmFsdWU6OmZpbHRlcihTcGVjdWxhdGVkVHlwZSB0eXBlKQorRmlsdHJhdGlvblJlc3VsdCBB
YnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiB7Ci0gICAgaWYg
KChtX3R5cGUgJiB0eXBlKSA9PSBtX3R5cGUpCi0gICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7
Ci0gICAgCi0gICAgLy8gRmFzdCBwYXRoIGZvciB0aGUgY2FzZSB0aGF0IHdlIGRvbid0IGV2ZW4g
aGF2ZSBhIGNlbGwuCi0gICAgaWYgKCEobV90eXBlICYgU3BlY0NlbGwpKSB7Ci0gICAgICAgIG1f
dHlwZSAmPSB0eXBlOwotICAgICAgICBGaWx0cmF0aW9uUmVzdWx0IHJlc3VsdDsKLSAgICAgICAg
aWYgKG1fdHlwZSA9PSBTcGVjTm9uZSkgewotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IENvbnRyYWRpY3Rpb247Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
cmVzdWx0ID0gRmlsdHJhdGlvbk9LOwotICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAogICAgIG1fdHlwZSAmPSB0eXBlOwogICAg
IAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBwcmlvciB0byB0aGlzIGZpbHRlcigpIGNhbGwg
d2UgaGFkLCBzYXksIChGaW5hbCwgVE9QKSwgYW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMjMxNTIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxMiw3ICszMTIsMjggQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIEZpbHRyYXRpb25S
ZXN1bHQgZmlsdGVyKEdyYXBoJiwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYsIFNwZWN1
bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSk7CiAgICAgCiAgICAgRmlsdHJhdGlv
blJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMpOwotICAgIEZpbHRyYXRpb25SZXN1
bHQgZmlsdGVyKFNwZWN1bGF0ZWRUeXBlKTsKKworICAgIEFMV0FZU19JTkxJTkUgRmlsdHJhdGlv
blJlc3VsdCBmaWx0ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIGlmICgo
bV90eXBlICYgdHlwZSkgPT0gbV90eXBlKQorICAgICAgICAgICAgcmV0dXJuIEZpbHRyYXRpb25P
SzsKKyAgICAKKyAgICAgICAgLy8gRmFzdCBwYXRoIGZvciB0aGUgY2FzZSB0aGF0IHdlIGRvbid0
IGV2ZW4gaGF2ZSBhIGNlbGwuCisgICAgICAgIGlmICghKG1fdHlwZSAmIFNwZWNDZWxsKSkgewor
ICAgICAgICAgICAgbV90eXBlICY9IHR5cGU7CisgICAgICAgICAgICBGaWx0cmF0aW9uUmVzdWx0
IHJlc3VsdDsKKyAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gU3BlY05vbmUpIHsKKyAgICAgICAg
ICAgICAgICBjbGVhcigpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IENvbnRyYWRpY3Rpb247
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBGaWx0cmF0aW9u
T0s7CisgICAgICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmlsdGVyU2xvdyh0
eXBlKTsKKyAgICB9CisKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckJ5VmFsdWUoY29uc3Qg
RnJvemVuVmFsdWUmIHZhbHVlKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihjb25zdCBB
YnN0cmFjdFZhbHVlJik7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJDbGFzc0luZm8oR3Jh
cGgmLCBjb25zdCBDbGFzc0luZm8qKTsKQEAgLTQ3OCw2ICs0OTksOCBAQCBwcml2YXRlOgogICAg
IAogICAgIHZvaWQgZmFzdEZvcndhcmRUb1Nsb3coQWJzdHJhY3RWYWx1ZUNsb2JiZXJFcG9jaCk7
CiAgICAgCisgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJTbG93KFNwZWN1bGF0ZWRUeXBlKTsK
KyAgICAKICAgICB2b2lkIGZpbHRlclZhbHVlQnlUeXBlKCk7CiAgICAgdm9pZCBmaWx0ZXJBcnJh
eU1vZGVzQnlUeXBlKCk7CiAK
</data>
<flag name="review"
          id="358136"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339929</attachid>
            <date>2018-05-08 22:16:40 -0700</date>
            <delta_ts>2018-05-09 12:20:17 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19723</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMxNTIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDE4LTA1LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyIHNob3VsZCBoYXZlIGFuIGlubGluZSBmYXN0IHBhdGgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTQ1NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBhZGRzIGEgZmFzdCBwYXRoIGZvciB0aGUgbW9zdCBjb21tb24gY2FzZSBvZiBmaWx0ZXJpbmcu
CisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdyk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0ZXIpOgorCiAy
MDE4LTA1LTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZH
OjpGbG93TWFwOjpyZXNpemUoKSBzaG91bGRuJ3QgcmVzaXplIHRoZSBzaGFkb3cgbWFwIHVubGVz
cyB3ZSdyZSBpbiBTU0EKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
S2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
aXRLaW5kLmNwcAkocmV2aXNpb24gMjMxNTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4aXRLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDkgKzEwNCw2IEBAIGJv
b2wgZXhpdEtpbmRNYXlKZXR0aXNvbihFeGl0S2luZCBraW5kKQogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5o
CShyZXZpc2lvbiAyMzE1MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCwxMCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbHRlckVkZ2VCeVVzZShFZGdlJiBl
ZGdlKQogICAgIHsKLSAgICAgICAgZmlsdGVyQnlUeXBlKGVkZ2UsIHR5cGVGaWx0ZXJGb3IoZWRn
ZS51c2VLaW5kKCkpKTsKKyAgICAgICAgVXNlS2luZCB1c2VLaW5kID0gZWRnZS51c2VLaW5kKCk7
CisgICAgICAgIGlmICh1c2VLaW5kID09IFVudHlwZWRVc2UpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGZpbHRlckJ5VHlwZShlZGdlLCB0eXBlRmlsdGVyRm9yKHVzZUtpbmQpKTsKICAg
ICB9CiAgICAgCiAgICAgLy8gQWJzdHJhY3RseSBleGVjdXRlIHRoZSBlZmZlY3RzIG9mIHRoZSBn
aXZlbiBub2RlLiBUaGlzIGNoYW5nZXMgdGhlIGFic3RyYWN0CkBAIC0yNDIsMTIgKzI0NSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAg
fQogICAgIAotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoRWRnZSYgZWRnZSwg
U3BlY3VsYXRlZFR5cGUgdHlwZSkKLSAgICB7Ci0gICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVl
ID0gZm9yTm9kZShlZGdlKTsKLSAgICAgICAgbV9zdGF0ZS5zZXRQcm9vZlN0YXR1cyhlZGdlLCB2
YWx1ZS5pc1R5cGUodHlwZSkgPyBJc1Byb3ZlZCA6IE5lZWRzQ2hlY2spOwotICAgICAgICBmaWx0
ZXIodmFsdWUsIHR5cGUpOwotICAgIH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmlsdGVyQnlU
eXBlKEVkZ2UmIGVkZ2UsIFNwZWN1bGF0ZWRUeXBlIHR5cGUpOwogICAgIAogICAgIHZvaWQgdmVy
aWZ5RWRnZShOb2RlKiwgRWRnZSk7CiAgICAgdm9pZCB2ZXJpZnlFZGdlcyhOb2RlKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMzE1MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMiwxMyArMTAyLDI3IEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CitjbGFzcyBB
YnN0cmFjdEludGVycHJldGVyRXhlY3V0ZUVkZ2VzRnVuYyB7CitwdWJsaWM6CisgICAgQWJzdHJh
Y3RJbnRlcnByZXRlckV4ZWN1dGVFZGdlc0Z1bmMoQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT4mIGludGVycHJldGVyKQorICAgICAgICA6IG1faW50ZXJwcmV0ZXIoaW50ZXJw
cmV0ZXIpCisgICAgeworICAgIH0KKyAgICAKKyAgICAvLyBUaGlzIGZ1bmMgaXMgbWFudWFsbHkg
d3JpdHRlbiBvdXQgc28gdGhhdCB3ZSBjYW4gcHV0IEFMV0FZU19JTkxJTkUgb24gaXQuCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCkoRWRnZSYgZWRnZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyRWRnZUJ5VXNlKGVkZ2UpOworICAgIH0KKyAgICAK
K3ByaXZhdGU6CisgICAgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT4mIG1f
aW50ZXJwcmV0ZXI7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4K
IHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZGdl
cyhOb2RlKiBub2RlKQogewotICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVuKAotICAgICAgICBub2Rl
LAotICAgICAgICBbJl0gKEVkZ2UmIGVkZ2UpIHsKLSAgICAgICAgICAgIGZpbHRlckVkZ2VCeVVz
ZShlZGdlKTsKLSAgICAgICAgfSk7CisgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgQWJz
dHJhY3RJbnRlcnByZXRlckV4ZWN1dGVFZGdlc0Z1bmM8QWJzdHJhY3RTdGF0ZVR5cGU+KCp0aGlz
KSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgpAQCAtMTMwLDkg
KzE0NCwyMSBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgorQUxXQVlTX0lOTElORSB2b2lk
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJCeVR5cGUoRWRn
ZSYgZWRnZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKK3sKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1
ZSA9IG1fc3RhdGUuZm9yTm9kZVdpdGhvdXRGYXN0Rm9yd2FyZChlZGdlKTsKKyAgICBpZiAodmFs
dWUuaXNUeXBlKHR5cGUpKSB7CisgICAgICAgIG1fc3RhdGUuc2V0UHJvb2ZTdGF0dXMoZWRnZSwg
SXNQcm92ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc3RhdGUuc2V0UHJvb2ZT
dGF0dXMoZWRnZSwgTmVlZHNDaGVjayk7CisgICAgbV9zdGF0ZS5mYXN0Rm9yd2FyZEFuZEZpbHRl
clVucHJvdmVuKHZhbHVlLCB0eXBlKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RT
dGF0ZVR5cGU+CiB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojp2
ZXJpZnlFZGdlKE5vZGUqIG5vZGUsIEVkZ2UgZWRnZSkKIHsKLSAgICBpZiAoIShmb3JOb2RlKGVk
Z2UpLm1fdHlwZSAmIH50eXBlRmlsdGVyRm9yKGVkZ2UudXNlS2luZCgpKSkpCisgICAgaWYgKCEo
bV9zdGF0ZS5mb3JOb2RlV2l0aG91dEZhc3RGb3J3YXJkKGVkZ2UpLm1fdHlwZSAmIH50eXBlRmls
dGVyRm9yKGVkZ2UudXNlS2luZCgpKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBERkdf
Q1JBU0gobV9ncmFwaCwgbm9kZSwgdG9DU3RyaW5nKCJFZGdlIHZlcmlmaWNhdGlvbiBlcnJvcjog
Iiwgbm9kZSwgIi0+IiwgZWRnZSwgIiB3YXMgZXhwZWN0ZWQgdG8gaGF2ZSB0eXBlICIsIFNwZWN1
bGF0aW9uRHVtcCh0eXBlRmlsdGVyRm9yKGVkZ2UudXNlS2luZCgpKSksICIgYnV0IGhhcyB0eXBl
ICIsIFNwZWN1bGF0aW9uRHVtcChmb3JOb2RlKGVkZ2UpLm1fdHlwZSksICIgKCIsIGZvck5vZGUo
ZWRnZSkubV90eXBlLCAiKSIpLmRhdGEoKSwgQWJzdHJhY3RJbnRlcnByZXRlckludmFsaWRUeXBl
LCBub2RlLT5vcCgpLCBlZGdlLT5vcCgpLCBlZGdlLnVzZUtpbmQoKSwgZm9yTm9kZShlZGdlKS5t
X3R5cGUpOwpAQCAtOTk5LDcgKzEwMjUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG5vZGUsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkpOwogICAgICAgICAgICAgY2xvYmJlcldvcmxkKCk7Ci0gICAg
ICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0Z1bGxOdW1iZXIpOworICAg
ICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCeXRlY29kZU51bWJlcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTEwNzks
NyArMTEwNSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSk7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKLSAgICAgICAgICAgIHNldE5vbkNl
bGxUeXBlRm9yTm9kZShub2RlLCBTcGVjRnVsbE51bWJlcik7CisgICAgICAgICAgICBzZXROb25D
ZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0J5dGVjb2RlTnVtYmVyKTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0zNzEyLDExICszNzM4LDEzIEBAIHZvaWQgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwganNE
b3VibGVOdW1iZXIoZXF1aXZhbGVudEZ1bmN0aW9uKCpudW1iZXIpKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsTnVtYmVyOworICAg
IFNwZWN1bGF0ZWRUeXBlIHR5cGU7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBEb3VibGVSZXBVc2UpCiAgICAgICAgIHR5cGUgPSB0eXBlT2ZEb3VibGVVbmFyeU9wKGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSk7Ci0gICAgZWxzZQorICAgIGVsc2UgewogICAgICAg
ICBjbG9iYmVyV29ybGQoKTsKKyAgICAgICAgdHlwZSA9IFNwZWNCeXRlY29kZU51bWJlcjsKKyAg
ICB9CiAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIHR5cGUpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlz
aW9uIDIzMTUyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMiwyNCArMzMyLDggQEAgRmlsdHJhdGlvblJlc3Vs
dCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbAogICAgIHJldHVybiBub3JtYWxpemVDbGFyaXR5KGdy
YXBoKTsKIH0KIAotRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoU3BlY3Vs
YXRlZFR5cGUgdHlwZSkKK0ZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xv
dyhTcGVjdWxhdGVkVHlwZSB0eXBlKQogewotICAgIGlmICgobV90eXBlICYgdHlwZSkgPT0gbV90
eXBlKQotICAgICAgICByZXR1cm4gRmlsdHJhdGlvbk9LOwotICAgIAotICAgIC8vIEZhc3QgcGF0
aCBmb3IgdGhlIGNhc2UgdGhhdCB3ZSBkb24ndCBldmVuIGhhdmUgYSBjZWxsLgotICAgIGlmICgh
KG1fdHlwZSAmIFNwZWNDZWxsKSkgewotICAgICAgICBtX3R5cGUgJj0gdHlwZTsKLSAgICAgICAg
RmlsdHJhdGlvblJlc3VsdCByZXN1bHQ7Ci0gICAgICAgIGlmIChtX3R5cGUgPT0gU3BlY05vbmUp
IHsKLSAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBDb250cmFkaWN0
aW9uOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IEZpbHRyYXRpb25PSzsK
LSAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLSAgICAKICAgICBtX3R5cGUgJj0gdHlwZTsKICAgICAKICAgICAvLyBJdCdzIHBvc3NpYmxl
IHRoYXQgcHJpb3IgdG8gdGhpcyBmaWx0ZXIoKSBjYWxsIHdlIGhhZCwgc2F5LCAoRmluYWwsIFRP
UCksIGFuZApAQCAtMzYyLDYgKzM0NiwxNCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFs
dWU6OmZpbHRlcihTCiAgICAgcmV0dXJuIG5vcm1hbGl6ZUNsYXJpdHkoKTsKIH0KIAorRmlsdHJh
dGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmYXN0Rm9yd2FyZFRvQW5kRmlsdGVyU2xvdyhBYnN0
cmFjdFZhbHVlQ2xvYmJlckVwb2NoIG5ld0Vwb2NoLCBTcGVjdWxhdGVkVHlwZSB0eXBlKQorewor
ICAgIGlmIChuZXdFcG9jaCAhPSBtX2VmZmVjdEVwb2NoKQorICAgICAgICBmYXN0Rm9yd2FyZFRv
U2xvdyhuZXdFcG9jaCk7CisgICAgCisgICAgcmV0dXJuIGZpbHRlclNsb3codHlwZSk7Cit9CisK
IEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQnlWYWx1ZShjb25zdCBGcm96
ZW5WYWx1ZSYgdmFsdWUpCiB7CiAgICAgRmlsdHJhdGlvblJlc3VsdCByZXN1bHQgPSBmaWx0ZXIo
c3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUudmFsdWUoKSkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDIzMTUyMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTIsMTMgKzMxMiw1OSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgRmls
dHJhdGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0
JiwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKTsKICAgICAKICAgICBG
aWx0cmF0aW9uUmVzdWx0IGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2Rlcyk7Ci0gICAgRmlsdHJh
dGlvblJlc3VsdCBmaWx0ZXIoU3BlY3VsYXRlZFR5cGUpOworCisgICAgQUxXQVlTX0lOTElORSBG
aWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSB0eXBlKQorICAgIHsKKyAgICAg
ICAgaWYgKChtX3R5cGUgJiB0eXBlKSA9PSBtX3R5cGUpCisgICAgICAgICAgICByZXR1cm4gRmls
dHJhdGlvbk9LOworICAgIAorICAgICAgICAvLyBGYXN0IHBhdGggZm9yIHRoZSBjYXNlIHRoYXQg
d2UgZG9uJ3QgZXZlbiBoYXZlIGEgY2VsbC4KKyAgICAgICAgaWYgKCEobV90eXBlICYgU3BlY0Nl
bGwpKSB7CisgICAgICAgICAgICBtX3R5cGUgJj0gdHlwZTsKKyAgICAgICAgICAgIEZpbHRyYXRp
b25SZXN1bHQgcmVzdWx0OworICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBTcGVjTm9uZSkgewor
ICAgICAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQ29udHJh
ZGljdGlvbjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZp
bHRyYXRpb25PSzsKKyAgICAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmaWx0
ZXJTbG93KHR5cGUpOworICAgIH0KKyAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckJ5
VmFsdWUoY29uc3QgRnJvemVuVmFsdWUmIHZhbHVlKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZp
bHRlcihjb25zdCBBYnN0cmFjdFZhbHVlJik7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJD
bGFzc0luZm8oR3JhcGgmLCBjb25zdCBDbGFzc0luZm8qKTsKIAogICAgIEZpbHRyYXRpb25SZXN1
bHQgZmlsdGVyKEdyYXBoJiwgY29uc3QgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yJik7CiAgICAg
CisgICAgQUxXQVlTX0lOTElORSBGaWx0cmF0aW9uUmVzdWx0IGZhc3RGb3J3YXJkVG9BbmRGaWx0
ZXIoQWJzdHJhY3RWYWx1ZUNsb2JiZXJFcG9jaCBuZXdFcG9jaCwgU3BlY3VsYXRlZFR5cGUgdHlw
ZSkKKyAgICB7CisgICAgICAgIGlmIChpc1R5cGUodHlwZSkpCisgICAgICAgICAgICByZXR1cm4g
RmlsdHJhdGlvbk9LOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhc3RGb3J3YXJkVG9BbmRG
aWx0ZXJVbnByb3ZlbihuZXdFcG9jaCwgdHlwZSk7CisgICAgfQorICAgIAorICAgIEFMV0FZU19J
TkxJTkUgRmlsdHJhdGlvblJlc3VsdCBmYXN0Rm9yd2FyZFRvQW5kRmlsdGVyVW5wcm92ZW4oQWJz
dHJhY3RWYWx1ZUNsb2JiZXJFcG9jaCBuZXdFcG9jaCwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKKyAg
ICB7CisgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjQ2VsbCkKKyAgICAgICAgICAgIHJldHVybiBm
YXN0Rm9yd2FyZFRvQW5kRmlsdGVyU2xvdyhuZXdFcG9jaCwgdHlwZSk7CisgICAgICAgIAorICAg
ICAgICBtX2VmZmVjdEVwb2NoID0gbmV3RXBvY2g7CisgICAgICAgIG1fdHlwZSAmPSB0eXBlOwor
ICAgICAgICBGaWx0cmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgaWYgKG1fdHlwZSA9PSBT
cGVjTm9uZSkgeworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IENv
bnRyYWRpY3Rpb247CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gRmlsdHJh
dGlvbk9LOworICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCiAgICAgRmlsdHJhdGlvblJlc3VsdCBjaGFuZ2VTdHJ1Y3R1cmUoR3JhcGgm
LCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0Jik7CiAgICAgCiAgICAgYm9vbCBjb250YWlu
cyhSZWdpc3RlcmVkU3RydWN0dXJlKSBjb25zdDsKQEAgLTQ2OSw3ICs1MTUsNyBAQCBwcml2YXRl
OgogICAgIAogICAgIHZvaWQgbWFrZVRvcChTcGVjdWxhdGVkVHlwZSB0b3ApCiAgICAgewotICAg
ICAgICBtX3R5cGUgfD0gdG9wOworICAgICAgICBtX3R5cGUgPSB0b3A7CiAgICAgICAgIG1fYXJy
YXlNb2RlcyA9IEFMTF9BUlJBWV9NT0RFUzsKICAgICAgICAgbV9zdHJ1Y3R1cmUubWFrZVRvcCgp
OwogICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwpAQCAtNDc3LDYgKzUyMyw4IEBAIHByaXZh
dGU6CiAgICAgfQogICAgIAogICAgIHZvaWQgZmFzdEZvcndhcmRUb1Nsb3coQWJzdHJhY3RWYWx1
ZUNsb2JiZXJFcG9jaCk7CisgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJTbG93KFNwZWN1bGF0
ZWRUeXBlKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZhc3RGb3J3YXJkVG9BbmRGaWx0ZXJTbG93
KEFic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2gsIFNwZWN1bGF0ZWRUeXBlKTsKICAgICAKICAgICB2
b2lkIGZpbHRlclZhbHVlQnlUeXBlKCk7CiAgICAgdm9pZCBmaWx0ZXJBcnJheU1vZGVzQnlUeXBl
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3Rh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFi
c3RyYWN0U3RhdGUuaAkocmV2aXNpb24gMjMxNTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDkgKzUw
LDI3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdm9pZCBjcmVhdGVWYWx1ZUZvck5vZGUo
Tm9kZUZsb3dQcm9qZWN0aW9uKTsKKyAgICAKKyAgICBBYnN0cmFjdFZhbHVlJiBmYXN0Rm9yd2Fy
ZChBYnN0cmFjdFZhbHVlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KKyAgICAKICAgICBBYnN0
cmFjdFZhbHVlJiBmb3JOb2RlKE5vZGVGbG93UHJvamVjdGlvbik7CiAgICAgQWJzdHJhY3RWYWx1
ZSYgZm9yTm9kZShFZGdlIGVkZ2UpIHsgcmV0dXJuIGZvck5vZGUoZWRnZS5ub2RlKCkpOyB9CiAg
ICAgCisgICAgQUxXQVlTX0lOTElORSBBYnN0cmFjdFZhbHVlJiBmb3JOb2RlV2l0aG91dEZhc3RG
b3J3YXJkKE5vZGVGbG93UHJvamVjdGlvbiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZv
ck5vZGUobm9kZSk7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQWJzdHJhY3RWYWx1
ZSYgZm9yTm9kZVdpdGhvdXRGYXN0Rm9yd2FyZChFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBy
ZXR1cm4gZm9yTm9kZShlZGdlKTsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGZhc3RGb3J3YXJkQW5kRmlsdGVyVW5wcm92ZW4oQWJzdHJhY3RWYWx1ZSYgdmFsdWUsIFNwZWN1
bGF0ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICB2YWx1ZS5maWx0ZXIodHlwZSk7CisgICAg
fQorICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhckZvck5vZGUoTm9kZUZsb3dQcm9q
ZWN0aW9uIG5vZGUpCiAgICAgewogICAgICAgICBmb3JOb2RlKG5vZGUpLmNsZWFyKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMzE1MjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTcx
NiwxMSArNzE2LDI0IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGlsZEZ1bmN0
b3I+CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVG9DaGlsZHJlbihOb2RlKiBub2RlLCBjb25z
dCBDaGlsZEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBkb1RvQ2hpbGRyZW5XaXRo
Tm9kZSgKLSAgICAgICAgICAgIG5vZGUsCi0gICAgICAgICAgICBbJmZ1bmN0b3JdIChOb2RlKiwg
RWRnZSYgZWRnZSkgewotICAgICAgICAgICAgICAgIGZ1bmN0b3IoZWRnZSk7Ci0gICAgICAgICAg
ICB9KTsKKyAgICAgICAgY2xhc3MgRm9yd2FyZGluZ0Z1bmMgeworICAgICAgICBwdWJsaWM6Cisg
ICAgICAgICAgICBGb3J3YXJkaW5nRnVuYyhjb25zdCBDaGlsZEZ1bmN0b3ImIGZ1bmN0b3IpCisg
ICAgICAgICAgICAgICAgOiBtX2Z1bmN0b3IoZnVuY3RvcikKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG1hbnVhbGx5
IHdyaXR0ZW4gZnVuYyBiZWNhdXNlIHdlIHdhbnQgQUxXQVlTX0lOTElORS4KKyAgICAgICAgICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlJiBlZGdlKSBjb25zdAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fZnVuY3RvcihlZGdlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBjb25zdCBDaGls
ZEZ1bmN0b3ImIG1fZnVuY3RvcjsKKyAgICAgICAgfTsKKyAgICAKKyAgICAgICAgZG9Ub0NoaWxk
cmVuV2l0aE5vZGUobm9kZSwgRm9yd2FyZGluZ0Z1bmMoZnVuY3RvcikpOwogICAgIH0KICAgICAK
ICAgICBib29sIHVzZXMoTm9kZSogbm9kZSwgTm9kZSogY2hpbGQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oCShyZXZp
c2lvbiAyMzE1MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDI3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGNyZWF0ZVZhbHVlRm9yTm9kZShOb2RlRmxvd1Byb2plY3Rpb24pIHsgfQog
ICAgIAorICAgIEFMV0FZU19JTkxJTkUgQWJzdHJhY3RWYWx1ZSYgZmFzdEZvcndhcmQoQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUpCisgICAgeworICAgICAgICB2YWx1ZS5mYXN0Rm9yd2FyZFRvKG1fZWZm
ZWN0RXBvY2gpOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIAorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBmYXN0Rm9yd2FyZEFuZEZpbHRlclVucHJvdmVuKEFic3RyYWN0VmFsdWUm
IHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgdmFsdWUuZmFzdEZv
cndhcmRUb0FuZEZpbHRlclVucHJvdmVuKG1fZWZmZWN0RXBvY2gsIHR5cGUpOworICAgIH0KKyAg
ICAKKyAgICBBTFdBWVNfSU5MSU5FIEFic3RyYWN0VmFsdWUmIGZvck5vZGVXaXRob3V0RmFzdEZv
cndhcmQoTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbV9h
YnN0cmFjdFZhbHVlcy5hdChub2RlKTsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBB
YnN0cmFjdFZhbHVlJiBmb3JOb2RlV2l0aG91dEZhc3RGb3J3YXJkKEVkZ2UgZWRnZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmb3JOb2RlV2l0aG91dEZhc3RGb3J3YXJkKGVkZ2Uubm9kZSgpKTsK
KyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSBBYnN0cmFjdFZhbHVlJiBmb3JOb2RlKE5v
ZGVGbG93UHJvamVjdGlvbiBub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhc3RGb3J3YXJk
KG1fYWJzdHJhY3RWYWx1ZXMuYXQobm9kZSkpOwpAQCAtMjI2LDEyICsyNDcsNiBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotICAgIEFMV0FZU19JTkxJTkUgQWJzdHJhY3RWYWx1ZSYgZmFz
dEZvcndhcmQoQWJzdHJhY3RWYWx1ZSYgdmFsdWUpCi0gICAgewotICAgICAgICB2YWx1ZS5mYXN0
Rm9yd2FyZFRvKG1fZWZmZWN0RXBvY2gpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgfQot
ICAgIAogICAgIHZvaWQgbWVyZ2VTdGF0ZUF0VGFpbChBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlv
biwgQWJzdHJhY3RWYWx1ZSYgaW5WYXJpYWJsZSwgTm9kZSopOwogCiAgICAgc3RhdGljIGJvb2wg
bWVyZ2VWYXJpYWJsZUJldHdlZW5CbG9ja3MoQWJzdHJhY3RWYWx1ZSYgZGVzdGluYXRpb24sIEFi
c3RyYWN0VmFsdWUmIHNvdXJjZSwgTm9kZSogZGVzdGluYXRpb25Ob2RlLCBOb2RlKiBzb3VyY2VO
b2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2
aXNpb24gMjMxNTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzE2LDcgKzcxNiw3IEBAIHZvaWQgT1NSRXhpdDo6ZXhlY3V0
ZU9TUkV4aXQoQ29udGV4dCYgY28KICAgICAvLyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
V2FybVVwKCkuCiAKICAgICBpZiAoVU5MSUtFTFkoY29kZUJsb2NrLT51cGRhdGVPU1JFeGl0Q291
bnRlckFuZENoZWNrSWZOZWVkVG9SZW9wdGltaXplKGV4aXRTdGF0ZSkgPT0gQ29kZUJsb2NrOjpP
cHRpbWl6ZUFjdGlvbjo6UmVvcHRpbWl6ZU5vdykpCi0gICAgICAgIHRyaWdnZXJSZW9wdGltaXph
dGlvbk5vdyhiYXNlbGluZUNvZGVCbG9jaywgJmV4aXQpOworICAgICAgICB0cmlnZ2VyUmVvcHRp
bWl6YXRpb25Ob3coYmFzZWxpbmVDb2RlQmxvY2ssIGNvZGVCbG9jaywgJmV4aXQpOwogCiAgICAg
cmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9jaywgZXhpdCk7
CiAgICAgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KGNvbnRleHQsIHZtLCBjb2RlQmxvY2ssIGJhc2Vs
aW5lQ29kZUJsb2NrLCBleGl0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDIzMTUyMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDksMTMgKzQ5LDEzIEBAIHZvaWQgaGFuZGxlRXhpdENvdW50
cyhDQ2FsbEhlbHBlcnMmIGppdCwKIAogICAgIGppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW0zMigxKSwgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJmV4aXQubV9j
b3VudCkpOwogICAgIAotICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0
cihqaXQuY29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgaml0Lm1vdmUoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1Qz
KTsKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgdG9vRmV3RmFpbHM7CiAgICAgCi0g
ICAgaml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZPU1JFeGl0Q291bnRlcigpKSwgR1BSSW5mbzo6cmVnVDIpOworICAg
IGppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QzLCBDb2Rl
QmxvY2s6Om9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSksIEdQUkluZm86OnJlZ1QyKTsKICAgICBq
aXQuYWRkMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1Qy
KTsKLSAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMiwgQXNzZW1ibHlIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mT1NSRXhpdENvdW50ZXIoKSkp
OworICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QyLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6cmVnVDMsIENvZGVCbG9jazo6b2Zmc2V0T2ZPU1JFeGl0Q291bnRlcigpKSk7
CiAgICAgCiAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5i
YXNlbGluZUNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIEFzc2VtYmx5SGVscGVy
czo6SnVtcCByZW9wdGltaXplTm93ID0gaml0LmJyYW5jaDMyKApAQCAtMTAxLDE0ICsxMDEsNyBA
QCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiBqaXQsCiAgICAgCiAgICAgcmVv
cHRpbWl6ZU5vdy5saW5rKCZqaXQpOwogICAgIAotICAgIC8vIFJlb3B0aW1pemUgYXMgc29vbiBh
cyBwb3NzaWJsZS4KLSNpZiAhTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUwotICAgIGppdC5w
b2tlKEdQUkluZm86OnJlZ1QwKTsKLSAgICBqaXQucG9rZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoJmV4aXQpLCAxKTsKLSNlbHNlCi0gICAgaml0Lm1vdmUoR1BSSW5mbzo6cmVnVDAs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKCZleGl0KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKLSNlbmRpZgorICAg
IGppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZSh0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpPihH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDMsIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bVB0cigmZXhpdCkpOwogICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0
cih0YWdDRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPih0cmlnZ2VyUmVvcHRpbWl6YXRpb25O
b3cpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgaml0LmNhbGwoR1BSSW5mbzo6bm9uQXJn
R1BSMCwgT3BlcmF0aW9uUHRyVGFnKTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZG9uZUFk
anVzdGluZyA9IGppdC5qdW1wKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIzMTUyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MTUsNyArMjgx
NSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YXRpY0UKICAgICBzY29w
ZS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBzdGF0aWNfY2FzdDxFcnJv
clR5cGU+KGVycm9yVHlwZSksIGVycm9yTWVzc2FnZSkpOwogfQogCi1leHRlcm4gIkMiIHZvaWQg
SklUX09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIE9TUkV4aXRCYXNlKiBleGl0KQorZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gdHJp
Z2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIG9w
dGltaXplZENvZGVCbG9jaywgT1NSRXhpdEJhc2UqIGV4aXQpCiB7CiAgICAgLy8gSXQncyBzb3J0
IG9mIHByZWZlcmFibGUgdGhhdCB3ZSBkb24ndCBHQyB3aGlsZSBpbiBoZXJlLiBBbnl3YXlzLCBk
b2luZyBzbyB3b3VsZG4ndAogICAgIC8vIHJlYWxseSBiZSBwcm9maXRhYmxlLgpAQCAtMjgzMCw2
ICsyODMwLDkgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclJlbwogCiAg
ICAgLy8gSWYgSSBhbSBteSBvd24gcmVwbGFjZW1lbnQsIHRoZW4gcmVvcHRpbWl6YXRpb24gaGFz
IGFscmVhZHkgYmVlbiB0cmlnZ2VyZWQuCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGluIHJlY3Vy
c2l2ZSBmdW5jdGlvbnMuCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgZXZlbiBpZiBvcHRpbWl6
ZWRDb2RlQmxvY2sgaXMgYW4gRlRMRm9yT1NSRW50cnkgc3R5bGUgQ29kZUJsb2NrLCB0aGlzIGNv
bmRpdGlvbiBpcyBhCisgICAgLy8gc3VyZSBiZXQgdGhhdCB3ZSBkb24ndCBoYXZlIGFueXRoaW5n
IGVsc2UgbGVmdCB0byBkby4KICAgICBpZiAoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpID09IGNv
ZGVCbG9jaykgewogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQogICAgICAgICAg
ICAgZGF0YUxvZygqY29kZUJsb2NrLCAiOiBOb3QgcmVvcHRpbWl6aW5nIGJlY2F1c2Ugd2UndmUg
YWxyZWFkeSBiZWVuIGpldHRpc29uZWQuXG4iKTsKQEAgLTI4MzksNyArMjg0Miw2IEBAIGV4dGVy
biAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJSZW8KICAgICAvLyBPdGhlcndpc2UsIHRo
ZSByZXBsYWNlbWVudCBtdXN0IGJlIG9wdGltaXplZCBjb2RlLiBVc2UgdGhpcyBhcyBhbiBvcHBv
cnR1bml0eQogICAgIC8vIHRvIGNoZWNrIG91ciBsb2dpYy4KICAgICBBU1NFUlQoY29kZUJsb2Nr
LT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKTsKLSAgICBDb2RlQmxvY2sqIG9wdGltaXplZENv
ZGVCbG9jayA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsKICAgICBBU1NFUlQoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKG9wdGltaXplZENvZGVCbG9jay0+aml0VHlwZSgpKSk7CiAgICAgCiAg
ICAgYm9vbCBkaWRUcnlUb0VudGVySW50b0lubGluZWRMb29wcyA9IGZhbHNlOwpAQCAtMjg2NCw3
ICsyODY2LDcgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dlclJlbwogICAg
ICAgICBjb2RlQmxvY2stPm9wdGltaXplQWZ0ZXJMb25nV2FybVVwKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0KKyAgICAKICAgICBvcHRpbWl6ZWRDb2RlQmxvY2stPmpldHRpc29uKFByb2Zp
bGVyOjpKZXR0aXNvbkR1ZVRvT1NSRXhpdCwgQ291bnRSZW9wdGltaXphdGlvbik7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAy
MzE1MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjY2LDcgKzI2Niw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdPYmplY3QKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Nlc3NUeXBl
UHJvZmlsZXJMb2dERkcoRXhlY1N0YXRlKikgV1RGX0lOVEVSTkFMOwogCi12b2lkIEpJVF9PUEVS
QVRJT04gdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayosIE9TUkV4aXRCYXNlKikg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJSZW9wdGltaXphdGlvbk5v
dyhDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrLCBDb2RlQmxvY2sqIG9wdGlpbXplZENvZGVC
bG9jaywgT1NSRXhpdEJhc2UqKSBXVEZfSU5URVJOQUw7CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0
KQogZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmFuZG9tKEpTR2xvYmFsT2JqZWN0Kik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340001</attachid>
            <date>2018-05-09 12:20:17 -0700</date>
            <delta_ts>2018-05-09 13:39:44 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23739</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMxNTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDE4LTA1LTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3BlZWQgdXAgQWJzdHJhY3RJbnRlcnByZXRlcjo6ZXhlY3V0ZUVkZ2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU0NTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN0YXJ0ZWQgb3V0
IHdpdGggdGhlIGRlc2lyZSB0byBtYWtlIGV4ZWN1dGVFZGdlcygpIGZhc3RlciBieSBtYWtpbmcg
ZmlsdGVyaW5nIGZhc3Rlci4KKyAgICAgICAgSG93ZXZlciwgd2hlbiBJIHN0dWRpZWQgdGhlIGRp
c2Fzc2VtYmx5LCBJIGZvdW5kIHRoYXQgdGhlcmUgYXJlIG1hbnkgb3Bwb3J0dW5pdGllcyBmb3IK
KyAgICAgICAgaW1wcm92ZW1lbnQgYW5kIEkgaW1wbGVtZW50ZWQgYWxsIG9mIHRoZW06CisgICAg
ICAgIAorICAgICAgICAtIEZpbHRlcmluZyBpdHNlbGYgbm93IGhhcyBhbiBpbmxpbmUgZmFzdCBw
YXRoIGZvciB3aGVuIHRoZSBmaWx0ZXJpbmcgZGlkbid0IGNoYW5nZSB0aGUgdmFsdWUgb3IKKyAg
ICAgICAgICBmb3Igbm9uLWNlbGxzLgorICAgICAgICAKKyAgICAgICAgLSBFZGdlIGV4ZWN1dGlv
biBkb2Vzbid0IGZhc3QtZm9yd2FyZCBhbnl0aGluZyBpZiB0aGUgZmlsdGVyaW5nIGZhc3QgcGF0
aCB3b3VsZCBoYXZlIHN1Y2NlZWRlZCwKKyAgICAgICAgICBzaW5jZSBmYXN0LWZvcndhcmRpbmcg
aXMgb25seSBpbnRlcmVzdGluZyBmb3IgY2VsbHMgYW5kIG9ubHkgaWYgd2UgaGF2ZSBhIGNsb2Ji
ZXJlZCB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgIC0gU2ltaWxhcmx5LCBlZGdlIHZlcmlmaWNh
dGlvbiBkb2Vzbid0IG5lZWQgdG8gZmFzdC1mb3J3YXJkIGluIHRoZSBjb21tb24gY2FzZS4KKyAg
ICAgICAgCisgICAgICAgIC0gVGhlIGVkZ2UgZG9lc24ndCBldmVuIGhhdmUgdG8gYmUgY29uc2lk
ZXJlZCBmb3IgZXhlY3V0aW9uIGlmIGl0J3MgVW50eXBlZFVzZS4KKyAgICAgICAgCisgICAgICAg
IFRoYXQgbGFzdCBiaXQgd2FzIHRoZSB0cmlja2llc3QuIFdlIGhhZCBnb3R0ZW4gaW50byBhIGJh
ZCBoYWJpdCBvZiB1c2luZyBTcGVjRnVsbE51bWJlciBpbiB0aGUKKyAgICAgICAgYWJzdHJhY3Qg
aW50ZXJwcmV0ZXIuIEl0J3Mgbm90IGNvcnJlY3QgdG8gdXNlIFNwZWNGdWxsTnVtYmVyIGluIHRo
ZSBhYnN0cmFjdCBpbnRlcnByZXRlciwgYmVjYXVzZQorICAgICAgICBpdCBtZWFucyBwcm92aW5n
IHRoYXQgdGhlIHZhbHVlIGNvdWxkIGVpdGhlciBiZSBmb3JtYXR0ZWQgYXMgYSBkb3VibGUgKHdp
dGggaW1wdXJlIE5hTiB2YWx1ZXMpLAorICAgICAgICBvciBhcyBhbnkgSlNWYWx1ZSwgb3IgYXMg
YW4gSW50NTIuIFRoZXJlIGlzIG5vIHZhbHVlIHRoYXQgY291bGQgcG9zc2libHkgaG9sZCBhbGwg
b2YgdGhvc2UKKyAgICAgICAgc3RhdGVzLiBUaGlzICJ3b3JrZWQiIGJlZm9yZSBiZWNhdXNlIFVu
dHlwZWRVc2Ugd291bGQgZmlsdGVyIHRoaXMgZG93biB0byBTcGVjQnl0ZWNvZGVOdW1iZXIuIFRv
CisgICAgICAgIG1ha2UgaXQgd29yayBhZ2FpbiwgSSBuZWVkZWQgdG8gZml4IGFsbCBvZiB0aG9z
ZSB1c2VzIG9mIFNwZWNGdWxsTnVtYmVyLiBJbiB0aGUgZnV0dXJlLCB3ZSBuZWVkCisgICAgICAg
IHRvIGJlIGNhcmVmdWwgYWJvdXQgcGlja2luZyBlaXRoZXIgU3BlY0Z1bGxEb3VibGUgKGlmIHJl
dHVybmluZyBhIERvdWJsZVJlcCkgb3IKKyAgICAgICAgU3BlY0J5dGVjb2RlTnVtYmVyIChpZiBy
ZXR1cm5pbmcgYSBKU1ZhbHVlUmVwKS4KKyAgICAgICAgCisgICAgICAgIEJ1dCB0aGF0IGZpeCBy
ZXZlYWxlZCBhbiBhbWF6aW5nIHRpbWVvdXQgaW4KKyAgICAgICAgc3RyZXNzL2tlZXAtY2hlY2tz
LXdoZW4tY29udmVydGluZy10by1sYXp5LWpzLWNvbnN0YW50LWluLXN0cmVuZ3RoLXJlZHVjdGlv
bi5qcy4gV2Ugd2VyZSBnZXR0aW5nCisgICAgICAgIHN0dWNrIGluIGFuIE9TUiBsb29wIGxpa2Ug
dGhpcyBiYXNlbGluZS0+REZHLT5GVEwtPmJhc2VsaW5lLCBhbGwgaW52b2x2aW5nIHRoZSBzYW1l
IGJ5dGVjb2RlLAorICAgICAgICB3aXRob3V0IGV2ZXIgcmVhbGl6aW5nIHRoYXQgd2Ugc2hvdWxk
IGpldHRpc29uIHNvbWV0aGluZy4gVGhlIHByb2JsZW0gd2FzIHdpdGggaG93CisgICAgICAgIHRy
aWdnZXJSZW9wdGltaXphdGlvbk5vdyB3YXMgZ2V0dGluZyB0aGUgb3B0aW1pemVkQ29kZUJsb2Nr
LiBJdCB3YXMgdHJ5aW5nIHRvIGd1ZXNzIGl0IGJ5IHVzaW5nCisgICAgICAgIGJhc2VsaW5lQ29k
ZUJsb2NrLT5yZXBsYWNlbWVudCgpLCBidXQgdGhhdCdzIHdyb25nIGZvciBGVEwtZm9yLU9TUi1l
bnRyeSBjb2RlIGJsb2Nrcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSAxJSBpbXByb3Zl
bWVudCBpbiBWOFNwaWRlci1Db21waWxlVGltZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0V4aXRL
aW5kLmNwcDoKKyAgICAgICAgKEpTQzo6ZXhpdEtpbmRNYXlKZXR0aXNvbik6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFj
dEludGVycHJldGVyOjpmaWx0ZXJFZGdlQnlVc2UpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI6OmZpbHRlckJ5VHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlckV4ZWN1dGVFZGdlc0Z1bmM6OkFic3RyYWN0SW50ZXJwcmV0ZXJFeGVjdXRl
RWRnZXNGdW5jKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyRXhlY3V0
ZUVkZ2VzRnVuYzo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZGdlcyk6CisgICAgICAg
IChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRl
ckJ5VHlwZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OnZlcmlmeUVkZ2UpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVE
b3VibGVVbmFyeU9wRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmZpbHRlclNsb3cpOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmZhc3RGb3J3YXJkVG9BbmRGaWx0ZXJTbG93KToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6
ZmFzdEZvcndhcmRUb0FuZEZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1
ZTo6ZmFzdEZvcndhcmRUb0FuZEZpbHRlclVucHJvdmVuKToKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFZhbHVlOjptYWtlVG9wKToKKyAgICAgICAgKiBkZmcvREZHQXRUYWlsQWJzdHJhY3RT
dGF0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmZhc3RGb3J3
YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRlOjpmb3JOb2RlV2l0
aG91dEZhc3RGb3J3YXJkKToKKyAgICAgICAgKEpTQzo6REZHOjpBdFRhaWxBYnN0cmFjdFN0YXRl
OjpmYXN0Rm9yd2FyZEFuZEZpbHRlclVucHJvdmVuKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGgu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZG9Ub0NoaWxkcmVuKToKKyAgICAgICAgKiBk
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpJblBsYWNl
QWJzdHJhY3RTdGF0ZTo6ZmFzdEZvcndhcmQpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VB
YnN0cmFjdFN0YXRlOjpmYXN0Rm9yd2FyZEFuZEZpbHRlclVucHJvdmVuKToKKyAgICAgICAgKEpT
Qzo6REZHOjpJblBsYWNlQWJzdHJhY3RTdGF0ZTo6Zm9yTm9kZVdpdGhvdXRGYXN0Rm9yd2FyZCk6
CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4
aXQ6OmV4ZWN1dGVPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpoYW5kbGVFeGl0Q291bnRzKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoK
KwogMjAxOC0wNS0wOSAgTGVvIEJhbHRlciAgPGxlb25hcmRvLmJhbHRlckBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0pTQ10gRml4IEFycmF5U3BlY2llc0NyZWF0ZSB0byByZXR1cm4gYSBuZXcgQXJy
YXkgd2hlbiB0aGUgZ2l2ZW4gb2JqZWN0IGlzIG5vdCBhbiBhcnJheQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZpc2lvbiAyMzE1MjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDQsOSArMTA0LDYgQEAgYm9vbCBleGl0S2luZE1heUpldHRpc29uKEV4aXRLaW5k
IGtpbmQpCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCi0gICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDIzMTUyMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjAsNyArMTYwLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZmlsdGVyRWRnZUJ5VXNlKEVkZ2UmIGVkZ2UpCiAgICAgewotICAgICAgICBmaWx0ZXJCeVR5
cGUoZWRnZSwgdHlwZUZpbHRlckZvcihlZGdlLnVzZUtpbmQoKSkpOworICAgICAgICBVc2VLaW5k
IHVzZUtpbmQgPSBlZGdlLnVzZUtpbmQoKTsKKyAgICAgICAgaWYgKHVzZUtpbmQgPT0gVW50eXBl
ZFVzZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZmlsdGVyQnlUeXBlKGVkZ2UsIHR5
cGVGaWx0ZXJGb3IodXNlS2luZCkpOwogICAgIH0KICAgICAKICAgICAvLyBBYnN0cmFjdGx5IGV4
ZWN1dGUgdGhlIGVmZmVjdHMgb2YgdGhlIGdpdmVuIG5vZGUuIFRoaXMgY2hhbmdlcyB0aGUgYWJz
dHJhY3QKQEAgLTI0MiwxMiArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zdGF0ZS5zZXRG
b3VuZENvbnN0YW50cyh0cnVlKTsKICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lOTElORSB2b2lk
IGZpbHRlckJ5VHlwZShFZGdlJiBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlKQotICAgIHsKLSAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKGVkZ2UpOwotICAgICAgICBtX3N0
YXRlLnNldFByb29mU3RhdHVzKGVkZ2UsIHZhbHVlLmlzVHlwZSh0eXBlKSA/IElzUHJvdmVkIDog
TmVlZHNDaGVjayk7Ci0gICAgICAgIGZpbHRlcih2YWx1ZSwgdHlwZSk7Ci0gICAgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBmaWx0ZXJCeVR5cGUoRWRnZSYgZWRnZSwgU3BlY3VsYXRlZFR5cGUg
dHlwZSk7CiAgICAgCiAgICAgdm9pZCB2ZXJpZnlFZGdlKE5vZGUqLCBFZGdlKTsKICAgICB2b2lk
IHZlcmlmeUVkZ2VzKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIz
MTUyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDEzICsxMDIsMjcgQEAgdm9pZCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBB
YnN0cmFjdFN0YXRlVHlwZT4KK2NsYXNzIEFic3RyYWN0SW50ZXJwcmV0ZXJFeGVjdXRlRWRnZXNG
dW5jIHsKK3B1YmxpYzoKKyAgICBBYnN0cmFjdEludGVycHJldGVyRXhlY3V0ZUVkZ2VzRnVuYyhB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPiYgaW50ZXJwcmV0ZXIpCisgICAg
ICAgIDogbV9pbnRlcnByZXRlcihpbnRlcnByZXRlcikKKyAgICB7CisgICAgfQorICAgIAorICAg
IC8vIFRoaXMgZnVuYyBpcyBtYW51YWxseSB3cml0dGVuIG91dCBzbyB0aGF0IHdlIGNhbiBwdXQg
QUxXQVlTX0lOTElORSBvbiBpdC4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgb3BlcmF0b3IoKShF
ZGdlJiBlZGdlKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9pbnRlcnByZXRlci5maWx0ZXJFZGdl
QnlVc2UoZWRnZSk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPiYgbV9pbnRlcnByZXRlcjsKK307CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVkZ2VzKE5vZGUqIG5vZGUpCiB7Ci0gICAgbV9ncmFwaC5k
b1RvQ2hpbGRyZW4oCi0gICAgICAgIG5vZGUsCi0gICAgICAgIFsmXSAoRWRnZSYgZWRnZSkgewot
ICAgICAgICAgICAgZmlsdGVyRWRnZUJ5VXNlKGVkZ2UpOwotICAgICAgICB9KTsKKyAgICBtX2dy
YXBoLmRvVG9DaGlsZHJlbihub2RlLCBBYnN0cmFjdEludGVycHJldGVyRXhlY3V0ZUVkZ2VzRnVu
YzxBYnN0cmFjdFN0YXRlVHlwZT4oKnRoaXMpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWJz
dHJhY3RTdGF0ZVR5cGU+CkBAIC0xMzAsOSArMTQ0LDIxIEBAIHZvaWQgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0
ZVR5cGU+CitBTFdBWVNfSU5MSU5FIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmZpbHRlckJ5VHlwZShFZGdlJiBlZGdlLCBTcGVjdWxhdGVkVHlwZSB0eXBlKQor
eworICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlV2l0aG91dEZhc3RG
b3J3YXJkKGVkZ2UpOworICAgIGlmICh2YWx1ZS5pc1R5cGUodHlwZSkpIHsKKyAgICAgICAgbV9z
dGF0ZS5zZXRQcm9vZlN0YXR1cyhlZGdlLCBJc1Byb3ZlZCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbV9zdGF0ZS5zZXRQcm9vZlN0YXR1cyhlZGdlLCBOZWVkc0NoZWNrKTsKKyAgICBt
X3N0YXRlLmZhc3RGb3J3YXJkQW5kRmlsdGVyVW5wcm92ZW4odmFsdWUsIHR5cGUpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZvaWQgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OnZlcmlmeUVkZ2UoTm9kZSogbm9kZSwgRWRnZSBlZGdl
KQogewotICAgIGlmICghKGZvck5vZGUoZWRnZSkubV90eXBlICYgfnR5cGVGaWx0ZXJGb3IoZWRn
ZS51c2VLaW5kKCkpKSkKKyAgICBpZiAoIShtX3N0YXRlLmZvck5vZGVXaXRob3V0RmFzdEZvcndh
cmQoZWRnZSkubV90eXBlICYgfnR5cGVGaWx0ZXJGb3IoZWRnZS51c2VLaW5kKCkpKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCB0b0NTdHJpbmco
IkVkZ2UgdmVyaWZpY2F0aW9uIGVycm9yOiAiLCBub2RlLCAiLT4iLCBlZGdlLCAiIHdhcyBleHBl
Y3RlZCB0byBoYXZlIHR5cGUgIiwgU3BlY3VsYXRpb25EdW1wKHR5cGVGaWx0ZXJGb3IoZWRnZS51
c2VLaW5kKCkpKSwgIiBidXQgaGFzIHR5cGUgIiwgU3BlY3VsYXRpb25EdW1wKGZvck5vZGUoZWRn
ZSkubV90eXBlKSwgIiAoIiwgZm9yTm9kZShlZGdlKS5tX3R5cGUsICIpIikuZGF0YSgpLCBBYnN0
cmFjdEludGVycHJldGVySW52YWxpZFR5cGUsIG5vZGUtPm9wKCksIGVkZ2UtPm9wKCksIGVkZ2Uu
dXNlS2luZCgpLCBmb3JOb2RlKGVkZ2UpLm1fdHlwZSk7CkBAIC05OTksNyArMTAyNSw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbm9kZSwgbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFVudHlwZWRVc2UsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAgICAg
ICAgICBjbG9iYmVyV29ybGQoKTsKLSAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShu
b2RlLCBTcGVjRnVsbE51bWJlcik7CisgICAgICAgICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgU3BlY0J5dGVjb2RlTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwpAQCAtMTA3OSw3ICsxMTA1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBub2RlLCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBl
ZFVzZSwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKICAgICAgICAgICAgIGNsb2JiZXJXb3Js
ZCgpOwotICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNGdWxsTnVt
YmVyKTsKKyAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjQnl0ZWNv
ZGVOdW1iZXIpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM3MTIsMTEg
KzM3MzgsMTMgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICBzZXRDb25zdGFudChub2RlLCBqc0RvdWJsZU51bWJlcihlcXVpdmFsZW50RnVuY3Rpb24o
Km51bWJlcikpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gU3BlY0Z1bGxOdW1iZXI7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZTsKICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkKICAgICAgICAgdHlwZSA9
IHR5cGVPZkRvdWJsZVVuYXJ5T3AoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKTsKLSAg
ICBlbHNlCisgICAgZWxzZSB7CiAgICAgICAgIGNsb2JiZXJXb3JsZCgpOworICAgICAgICB0eXBl
ID0gU3BlY0J5dGVjb2RlTnVtYmVyOworICAgIH0KICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUo
bm9kZSwgdHlwZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMjMxNTIyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDI0
ICszMzIsOCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckNsCiAgICAg
cmV0dXJuIG5vcm1hbGl6ZUNsYXJpdHkoZ3JhcGgpOwogfQogCi1GaWx0cmF0aW9uUmVzdWx0IEFi
c3RyYWN0VmFsdWU6OmZpbHRlcihTcGVjdWxhdGVkVHlwZSB0eXBlKQorRmlsdHJhdGlvblJlc3Vs
dCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiB7Ci0gICAg
aWYgKChtX3R5cGUgJiB0eXBlKSA9PSBtX3R5cGUpCi0gICAgICAgIHJldHVybiBGaWx0cmF0aW9u
T0s7Ci0gICAgCi0gICAgLy8gRmFzdCBwYXRoIGZvciB0aGUgY2FzZSB0aGF0IHdlIGRvbid0IGV2
ZW4gaGF2ZSBhIGNlbGwuCi0gICAgaWYgKCEobV90eXBlICYgU3BlY0NlbGwpKSB7Ci0gICAgICAg
IG1fdHlwZSAmPSB0eXBlOwotICAgICAgICBGaWx0cmF0aW9uUmVzdWx0IHJlc3VsdDsKLSAgICAg
ICAgaWYgKG1fdHlwZSA9PSBTcGVjTm9uZSkgewotICAgICAgICAgICAgY2xlYXIoKTsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IENvbnRyYWRpY3Rpb247Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcmVzdWx0ID0gRmlsdHJhdGlvbk9LOwotICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIAogICAgIG1fdHlwZSAmPSB0eXBlOwog
ICAgIAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBwcmlvciB0byB0aGlzIGZpbHRlcigpIGNh
bGwgd2UgaGFkLCBzYXksIChGaW5hbCwgVE9QKSwgYW5kCkBAIC0zNjIsNiArMzQ2LDE0IEBAIEZp
bHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKFMKICAgICByZXR1cm4gbm9ybWFs
aXplQ2xhcml0eSgpOwogfQogCitGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZhc3RG
b3J3YXJkVG9BbmRGaWx0ZXJTbG93KEFic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2ggbmV3RXBvY2gs
IFNwZWN1bGF0ZWRUeXBlIHR5cGUpCit7CisgICAgaWYgKG5ld0Vwb2NoICE9IG1fZWZmZWN0RXBv
Y2gpCisgICAgICAgIGZhc3RGb3J3YXJkVG9TbG93KG5ld0Vwb2NoKTsKKyAgICAKKyAgICByZXR1
cm4gZmlsdGVyU2xvdyh0eXBlKTsKK30KKwogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVl
OjpmaWx0ZXJCeVZhbHVlKGNvbnN0IEZyb3plblZhbHVlJiB2YWx1ZSkKIHsKICAgICBGaWx0cmF0
aW9uUmVzdWx0IHJlc3VsdCA9IGZpbHRlcihzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZS52YWx1
ZSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFs
dWUuaAkocmV2aXNpb24gMjMxNTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMiwxMyArMzEyLDU5IEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVz
ID0gU3BlY05vbmUpOwogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2Rl
cyhBcnJheU1vZGVzKTsKLSAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlw
ZSk7CisKKyAgICBBTFdBWVNfSU5MSU5FIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKFNwZWN1bGF0
ZWRUeXBlIHR5cGUpCisgICAgeworICAgICAgICBpZiAoKG1fdHlwZSAmIHR5cGUpID09IG1fdHlw
ZSkKKyAgICAgICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7CisgICAgCisgICAgICAgIC8vIEZh
c3QgcGF0aCBmb3IgdGhlIGNhc2UgdGhhdCB3ZSBkb24ndCBldmVuIGhhdmUgYSBjZWxsLgorICAg
ICAgICBpZiAoIShtX3R5cGUgJiBTcGVjQ2VsbCkpIHsKKyAgICAgICAgICAgIG1fdHlwZSAmPSB0
eXBlOworICAgICAgICAgICAgRmlsdHJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBp
ZiAobV90eXBlID09IFNwZWNOb25lKSB7CisgICAgICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHQgPSBDb250cmFkaWN0aW9uOworICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gRmlsdHJhdGlvbk9LOworICAgICAgICAgICAgY2hlY2tD
b25zaXN0ZW5jeSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIGZpbHRlclNsb3codHlwZSk7CisgICAgfQorICAgIAogICAg
IEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQnlWYWx1ZShjb25zdCBGcm96ZW5WYWx1ZSYgdmFsdWUp
OwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKGNvbnN0IEFic3RyYWN0VmFsdWUmKTsKICAg
ICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckNsYXNzSW5mbyhHcmFwaCYsIGNvbnN0IENsYXNzSW5m
byopOwogCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBJbmZlcnJl
ZFR5cGU6OkRlc2NyaXB0b3ImKTsKICAgICAKKyAgICBBTFdBWVNfSU5MSU5FIEZpbHRyYXRpb25S
ZXN1bHQgZmFzdEZvcndhcmRUb0FuZEZpbHRlcihBYnN0cmFjdFZhbHVlQ2xvYmJlckVwb2NoIG5l
d0Vwb2NoLCBTcGVjdWxhdGVkVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgaWYgKGlzVHlwZSh0
eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gZmFzdEZvcndhcmRUb0FuZEZpbHRlclVucHJvdmVuKG5ld0Vwb2NoLCB0eXBlKTsK
KyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSBGaWx0cmF0aW9uUmVzdWx0IGZhc3RGb3J3
YXJkVG9BbmRGaWx0ZXJVbnByb3ZlbihBYnN0cmFjdFZhbHVlQ2xvYmJlckVwb2NoIG5ld0Vwb2No
LCBTcGVjdWxhdGVkVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgaWYgKG1fdHlwZSAmIFNwZWND
ZWxsKQorICAgICAgICAgICAgcmV0dXJuIGZhc3RGb3J3YXJkVG9BbmRGaWx0ZXJTbG93KG5ld0Vw
b2NoLCB0eXBlKTsKKyAgICAgICAgCisgICAgICAgIG1fZWZmZWN0RXBvY2ggPSBuZXdFcG9jaDsK
KyAgICAgICAgbV90eXBlICY9IHR5cGU7CisgICAgICAgIEZpbHRyYXRpb25SZXN1bHQgcmVzdWx0
OworICAgICAgICBpZiAobV90eXBlID09IFNwZWNOb25lKSB7CisgICAgICAgICAgICBjbGVhcigp
OworICAgICAgICAgICAgcmVzdWx0ID0gQ29udHJhZGljdGlvbjsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICByZXN1bHQgPSBGaWx0cmF0aW9uT0s7CisgICAgICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBGaWx0cmF0aW9uUmVz
dWx0IGNoYW5nZVN0cnVjdHVyZShHcmFwaCYsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQm
KTsKICAgICAKICAgICBib29sIGNvbnRhaW5zKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUpIGNvbnN0OwpA
QCAtNDY5LDcgKzUxNSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBtYWtlVG9wKFNwZWN1
bGF0ZWRUeXBlIHRvcCkKICAgICB7Ci0gICAgICAgIG1fdHlwZSB8PSB0b3A7CisgICAgICAgIG1f
dHlwZSA9IHRvcDsKICAgICAgICAgbV9hcnJheU1vZGVzID0gQUxMX0FSUkFZX01PREVTOwogICAg
ICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CiAgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7
CkBAIC00NzcsNiArNTIzLDggQEAgcHJpdmF0ZToKICAgICB9CiAgICAgCiAgICAgdm9pZCBmYXN0
Rm9yd2FyZFRvU2xvdyhBYnN0cmFjdFZhbHVlQ2xvYmJlckVwb2NoKTsKKyAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlclNsb3coU3BlY3VsYXRlZFR5cGUpOworICAgIEZpbHRyYXRpb25SZXN1bHQg
ZmFzdEZvcndhcmRUb0FuZEZpbHRlclNsb3coQWJzdHJhY3RWYWx1ZUNsb2JiZXJFcG9jaCwgU3Bl
Y3VsYXRlZFR5cGUpOwogICAgIAogICAgIHZvaWQgZmlsdGVyVmFsdWVCeVR5cGUoKTsKICAgICB2
b2lkIGZpbHRlckFycmF5TW9kZXNCeVR5cGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXRUYWlsQWJzdHJhY3RTdGF0ZS5oCShyZXZpc2lvbiAyMzE1MjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F0VGFpbEFic3RyYWN0U3RhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsOSArNTAsMjcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAg
ICB2b2lkIGNyZWF0ZVZhbHVlRm9yTm9kZShOb2RlRmxvd1Byb2plY3Rpb24pOworICAgIAorICAg
IEFic3RyYWN0VmFsdWUmIGZhc3RGb3J3YXJkKEFic3RyYWN0VmFsdWUmIHZhbHVlKSB7IHJldHVy
biB2YWx1ZTsgfQorICAgIAogICAgIEFic3RyYWN0VmFsdWUmIGZvck5vZGUoTm9kZUZsb3dQcm9q
ZWN0aW9uKTsKICAgICBBYnN0cmFjdFZhbHVlJiBmb3JOb2RlKEVkZ2UgZWRnZSkgeyByZXR1cm4g
Zm9yTm9kZShlZGdlLm5vZGUoKSk7IH0KICAgICAKKyAgICBBTFdBWVNfSU5MSU5FIEFic3RyYWN0
VmFsdWUmIGZvck5vZGVXaXRob3V0RmFzdEZvcndhcmQoTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gZm9yTm9kZShub2RlKTsKKyAgICB9CisgICAgCisgICAg
QUxXQVlTX0lOTElORSBBYnN0cmFjdFZhbHVlJiBmb3JOb2RlV2l0aG91dEZhc3RGb3J3YXJkKEVk
Z2UgZWRnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmb3JOb2RlKGVkZ2UpOworICAgIH0KKyAg
ICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZmFzdEZvcndhcmRBbmRGaWx0ZXJVbnByb3ZlbihB
YnN0cmFjdFZhbHVlJiB2YWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSkKKyAgICB7CisgICAgICAg
IHZhbHVlLmZpbHRlcih0eXBlKTsKKyAgICB9CisgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IGNsZWFyRm9yTm9kZShOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSkKICAgICB7CiAgICAgICAgIGZv
ck5vZGUobm9kZSkuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgJKHJldmlzaW9uIDIzMTUyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAkod29ya2luZyBjb3B5KQpAQCAtNzE2LDExICs3MTYsMjQgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoaWxkRnVuY3Rvcj4KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9U
b0NoaWxkcmVuKE5vZGUqIG5vZGUsIGNvbnN0IENoaWxkRnVuY3RvciYgZnVuY3RvcikKICAgICB7
Ci0gICAgICAgIGRvVG9DaGlsZHJlbldpdGhOb2RlKAotICAgICAgICAgICAgbm9kZSwKLSAgICAg
ICAgICAgIFsmZnVuY3Rvcl0gKE5vZGUqLCBFZGdlJiBlZGdlKSB7Ci0gICAgICAgICAgICAgICAg
ZnVuY3RvcihlZGdlKTsKLSAgICAgICAgICAgIH0pOworICAgICAgICBjbGFzcyBGb3J3YXJkaW5n
RnVuYyB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEZvcndhcmRpbmdGdW5jKGNvbnN0
IENoaWxkRnVuY3RvciYgZnVuY3RvcikKKyAgICAgICAgICAgICAgICA6IG1fZnVuY3RvcihmdW5j
dG9yKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAg
ICAgICAvLyBUaGlzIGlzIGEgbWFudWFsbHkgd3JpdHRlbiBmdW5jIGJlY2F1c2Ugd2Ugd2FudCBB
TFdBWVNfSU5MSU5FLgorICAgICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIG9wZXJhdG9yKCko
Tm9kZSosIEVkZ2UmIGVkZ2UpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
bV9mdW5jdG9yKGVkZ2UpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpdmF0
ZToKKyAgICAgICAgICAgIGNvbnN0IENoaWxkRnVuY3RvciYgbV9mdW5jdG9yOworICAgICAgICB9
OworICAgIAorICAgICAgICBkb1RvQ2hpbGRyZW5XaXRoTm9kZShub2RlLCBGb3J3YXJkaW5nRnVu
YyhmdW5jdG9yKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgdXNlcyhOb2RlKiBub2RlLCBOb2Rl
KiBjaGlsZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9uIDIzMTUyMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNiArNDcsMjcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY3JlYXRlVmFsdWVGb3JOb2Rl
KE5vZGVGbG93UHJvamVjdGlvbikgeyB9CiAgICAgCisgICAgQUxXQVlTX0lOTElORSBBYnN0cmFj
dFZhbHVlJiBmYXN0Rm9yd2FyZChBYnN0cmFjdFZhbHVlJiB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHZhbHVlLmZhc3RGb3J3YXJkVG8obV9lZmZlY3RFcG9jaCk7CisgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGZhc3RGb3J3YXJkQW5kRmls
dGVyVW5wcm92ZW4oQWJzdHJhY3RWYWx1ZSYgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUpCisg
ICAgeworICAgICAgICB2YWx1ZS5mYXN0Rm9yd2FyZFRvQW5kRmlsdGVyVW5wcm92ZW4obV9lZmZl
Y3RFcG9jaCwgdHlwZSk7CisgICAgfQorICAgIAorICAgIEFMV0FZU19JTkxJTkUgQWJzdHJhY3RW
YWx1ZSYgZm9yTm9kZVdpdGhvdXRGYXN0Rm9yd2FyZChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2Fic3RyYWN0VmFsdWVzLmF0KG5vZGUpOworICAgIH0K
KyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIEFic3RyYWN0VmFsdWUmIGZvck5vZGVXaXRob3V0RmFz
dEZvcndhcmQoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZvck5vZGVXaXRob3V0
RmFzdEZvcndhcmQoZWRnZS5ub2RlKCkpOworICAgIH0KKyAgICAKICAgICBBTFdBWVNfSU5MSU5F
IEFic3RyYWN0VmFsdWUmIGZvck5vZGUoTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUpCiAgICAgewog
ICAgICAgICByZXR1cm4gZmFzdEZvcndhcmQobV9hYnN0cmFjdFZhbHVlcy5hdChub2RlKSk7CkBA
IC0yMjYsMTIgKzI0Nyw2IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQUxXQVlT
X0lOTElORSBBYnN0cmFjdFZhbHVlJiBmYXN0Rm9yd2FyZChBYnN0cmFjdFZhbHVlJiB2YWx1ZSkK
LSAgICB7Ci0gICAgICAgIHZhbHVlLmZhc3RGb3J3YXJkVG8obV9lZmZlY3RFcG9jaCk7Ci0gICAg
ICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0gICAgCiAgICAgdm9pZCBtZXJnZVN0YXRlQXRUYWls
KEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uLCBBYnN0cmFjdFZhbHVlJiBpblZhcmlhYmxlLCBO
b2RlKik7CiAKICAgICBzdGF0aWMgYm9vbCBtZXJnZVZhcmlhYmxlQmV0d2VlbkJsb2NrcyhBYnN0
cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiwgQWJzdHJhY3RWYWx1ZSYgc291cmNlLCBOb2RlKiBkZXN0
aW5hdGlvbk5vZGUsIE5vZGUqIHNvdXJjZU5vZGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAyMzE1MjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTYsNyArNzE2
LDcgQEAgdm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250ZXh0JiBjbwogICAgIC8vIGNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAoKS4KIAogICAgIGlmIChVTkxJS0VMWShj
b2RlQmxvY2stPnVwZGF0ZU9TUkV4aXRDb3VudGVyQW5kQ2hlY2tJZk5lZWRUb1Jlb3B0aW1pemUo
ZXhpdFN0YXRlKSA9PSBDb2RlQmxvY2s6Ok9wdGltaXplQWN0aW9uOjpSZW9wdGltaXplTm93KSkK
LSAgICAgICAgdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KGJhc2VsaW5lQ29kZUJsb2NrLCAmZXhp
dCk7CisgICAgICAgIHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhiYXNlbGluZUNvZGVCbG9jaywg
Y29kZUJsb2NrLCAmZXhpdCk7CiAKICAgICByZWlmeUlubGluZWRDYWxsRnJhbWVzKGNvbnRleHQs
IGJhc2VsaW5lQ29kZUJsb2NrLCBleGl0KTsKICAgICBhZGp1c3RBbmRKdW1wVG9UYXJnZXQoY29u
dGV4dCwgdm0sIGNvZGVCbG9jaywgYmFzZWxpbmVDb2RlQmxvY2ssIGV4aXQpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcAkocmV2aXNpb24gMjMxNTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMyArNDks
MTMgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LAogCiAgICAgaml0
LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBBc3NlbWJseUhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcygmZXhpdC5tX2NvdW50KSk7CiAgICAgCi0gICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKSksIEdQUkluZm86OnJl
Z1QwKTsKKyAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmNv
ZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDMpOwogICAgIAogICAgIEFzc2VtYmx5SGVscGVyczo6
SnVtcCB0b29GZXdGYWlsczsKICAgICAKLSAgICBqaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZk9TUkV4aXRDb3VudGVy
KCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6cmVnVDMsIENvZGVCbG9jazo6b2Zmc2V0T2ZPU1JFeGl0Q291bnRlcigp
KSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIGppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJl
Z1QyLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6
b2Zmc2V0T2ZPU1JFeGl0Q291bnRlcigpKSk7CisgICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVn
VDIsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMywgQ29kZUJsb2NrOjpv
ZmZzZXRPZk9TUkV4aXRDb3VudGVyKCkpKTsKICAgICAKICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBHUFJJbmZvOjpy
ZWdUMCk7CiAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIHJlb3B0aW1pemVOb3cgPSBqaXQuYnJh
bmNoMzIoCkBAIC0xMDEsMTQgKzEwMSw3IEBAIHZvaWQgaGFuZGxlRXhpdENvdW50cyhDQ2FsbEhl
bHBlcnMmIGppdCwKICAgICAKICAgICByZW9wdGltaXplTm93LmxpbmsoJmppdCk7CiAgICAgCi0g
ICAgLy8gUmVvcHRpbWl6ZSBhcyBzb29uIGFzIHBvc3NpYmxlLgotI2lmICFOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTCi0gICAgaml0LnBva2UoR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC5w
b2tlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cigmZXhpdCksIDEpOwotI2Vsc2UKLSAg
ICBqaXQubW92ZShHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBq
aXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoJmV4aXQpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjEpOwotI2VuZGlmCisgICAgaml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKHRy
aWdnZXJSZW9wdGltaXphdGlvbk5vdyk+KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMywg
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKCZleGl0KSk7CiAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhZ0NGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJU
YWc+KHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdykpLCBHUFJJbmZvOjpub25BcmdHUFIwKTsKICAg
ICBqaXQuY2FsbChHUFJJbmZvOjpub25BcmdHUFIwLCBPcGVyYXRpb25QdHJUYWcpOwogICAgIEFz
c2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0aW5nID0gaml0Lmp1bXAoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjMx
NTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgxNSw3ICsyODE1LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRocm93U3RhdGljRQogICAgIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVy
cm9yKGV4ZWMsIHN0YXRpY19jYXN0PEVycm9yVHlwZT4oZXJyb3JUeXBlKSwgZXJyb3JNZXNzYWdl
KSk7CiB9CiAKLWV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJSZW9wdGltaXph
dGlvbk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgT1NSRXhpdEJhc2UqIGV4aXQpCitleHRlcm4g
IkMiIHZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJsb2NrLCBPU1JFeGl0QmFzZSog
ZXhpdCkKIHsKICAgICAvLyBJdCdzIHNvcnQgb2YgcHJlZmVyYWJsZSB0aGF0IHdlIGRvbid0IEdD
IHdoaWxlIGluIGhlcmUuIEFueXdheXMsIGRvaW5nIHNvIHdvdWxkbid0CiAgICAgLy8gcmVhbGx5
IGJlIHByb2ZpdGFibGUuCkBAIC0yODMwLDYgKzI4MzAsOSBAQCBleHRlcm4gIkMiIHZvaWQgSklU
X09QRVJBVElPTiB0cmlnZ2VyUmVvCiAKICAgICAvLyBJZiBJIGFtIG15IG93biByZXBsYWNlbWVu
dCwgdGhlbiByZW9wdGltaXphdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHRyaWdnZXJlZC4KICAgICAv
LyBUaGlzIGNhbiBoYXBwZW4gaW4gcmVjdXJzaXZlIGZ1bmN0aW9ucy4KKyAgICAvLworICAgIC8v
IE5vdGUgdGhhdCBldmVuIGlmIG9wdGltaXplZENvZGVCbG9jayBpcyBhbiBGVExGb3JPU1JFbnRy
eSBzdHlsZSBDb2RlQmxvY2ssIHRoaXMgY29uZGl0aW9uIGlzIGEKKyAgICAvLyBzdXJlIGJldCB0
aGF0IHdlIGRvbid0IGhhdmUgYW55dGhpbmcgZWxzZSBsZWZ0IHRvIGRvLgogICAgIGlmIChjb2Rl
QmxvY2stPnJlcGxhY2VtZW50KCkgPT0gY29kZUJsb2NrKSB7CiAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCpjb2RlQmxvY2ssICI6IE5vdCBy
ZW9wdGltaXppbmcgYmVjYXVzZSB3ZSd2ZSBhbHJlYWR5IGJlZW4gamV0dGlzb25lZC5cbiIpOwpA
QCAtMjgzOSw3ICsyODQyLDYgQEAgZXh0ZXJuICJDIiB2b2lkIEpJVF9PUEVSQVRJT04gdHJpZ2dl
clJlbwogICAgIC8vIE90aGVyd2lzZSwgdGhlIHJlcGxhY2VtZW50IG11c3QgYmUgb3B0aW1pemVk
IGNvZGUuIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8gY2hlY2sgb3VyIGxv
Z2ljLgogICAgIEFTU0VSVChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpOwot
ICAgIENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJsb2NrID0gY29kZUJsb2NrLT5yZXBsYWNlbWVu
dCgpOwogICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQob3B0aW1pemVkQ29kZUJs
b2NrLT5qaXRUeXBlKCkpKTsKICAgICAKICAgICBib29sIGRpZFRyeVRvRW50ZXJJbnRvSW5saW5l
ZExvb3BzID0gZmFsc2U7CkBAIC0yODY0LDcgKzI4NjYsNyBAQCBleHRlcm4gIkMiIHZvaWQgSklU
X09QRVJBVElPTiB0cmlnZ2VyUmVvCiAgICAgICAgIGNvZGVCbG9jay0+b3B0aW1pemVBZnRlckxv
bmdXYXJtVXAoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQorICAgIAogICAgIG9wdGltaXpl
ZENvZGVCbG9jay0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9PU1JFeGl0LCBDb3Vu
dFJlb3B0aW1pemF0aW9uKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIzMTUyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNyArMjY2LDcgQEAg
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdAogCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRyhFeGVjU3RhdGUqKSBXVEZf
SU5URVJOQUw7CiAKLXZvaWQgSklUX09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3co
Q29kZUJsb2NrKiwgT1NSRXhpdEJhc2UqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2ss
IENvZGVCbG9jayogb3B0aWltemVkQ29kZUJsb2NrLCBPU1JFeGl0QmFzZSopIFdURl9JTlRFUk5B
TDsKIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiBkb3VibGUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25SYW5kb20oSlNHbG9iYWxPYmplY3QqKTsK
</data>
<flag name="review"
          id="358234"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>