<?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>151550</bug_id>
          
          <creation_ts>2015-11-22 10:49:32 -0800</creation_ts>
          <short_desc>Modern IDB: When a transaction is aborted, call onerror handlers for all in-progress requests</short_desc>
          <delta_ts>2015-11-24 16:49:28 -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>WebCore Misc.</component>
          <version>Other</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>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1144054</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-22 10:49:32 -0800</bug_when>
    <thetext>Modern IDB: When a transaction is aborted, call onerror handlers for all in-progress requests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144070</commentid>
    <comment_count>1</comment_count>
      <attachid>266061</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-22 11:44:46 -0800</bug_when>
    <thetext>Created attachment 266061
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144194</commentid>
    <comment_count>2</comment_count>
      <attachid>266061</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-11-23 10:49:06 -0800</bug_when>
    <thetext>Comment on attachment 266061
Patch v1

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

r=me except one comment.

&gt; Source/WebCore/Modules/indexeddb/shared/IDBError.cpp:117
&gt; +        static NeverDestroyed&lt;String&gt; entry = ASCIILiteral(&quot;Real description for abort&quot;);

This looks like you meant to get to this before uploading the patch.  This tells me the error descriptions aren&apos;t checked in the tests.  Will this be covered in https://bugs.webkit.org/show_bug.cgi?id=150402</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144195</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-23 10:55:11 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 266061 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266061&amp;action=review
&gt; 
&gt; r=me except one comment.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/shared/IDBError.cpp:117
&gt; &gt; +        static NeverDestroyed&lt;String&gt; entry = ASCIILiteral(&quot;Real description for abort&quot;);
&gt; 
&gt; This looks like you meant to get to this before uploading the patch.  

Indeed! Yikes, and LOL.

&gt; This tells me the error descriptions aren&apos;t checked in the tests.  Will this be
&gt; covered in https://bugs.webkit.org/show_bug.cgi?id=150402

Yup! 150402 will basically be a task that greps through the entire set of -expectations.txt to make sure each error desc shows up at least once, but 150882 is a pre-requisite for that.

Coincidentally, 150882 is what I&apos;m trying to work on over the next couple of days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144196</commentid>
    <comment_count>4</comment_count>
      <attachid>266091</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-23 11:04:15 -0800</bug_when>
    <thetext>Created attachment 266091
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144205</commentid>
    <comment_count>5</comment_count>
      <attachid>266091</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-23 11:48:57 -0800</bug_when>
    <thetext>Comment on attachment 266091
Patch for landing

Clearing flags on attachment: 266091

Committed r192749: &lt;http://trac.webkit.org/changeset/192749&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266061</attachid>
            <date>2015-11-22 11:44:46 -0800</date>
            <delta_ts>2015-11-23 10:49:06 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29008</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YWQzZjUyLi43ZThkNGE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMTEt
MjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFdoZW4gYSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLCBjYWxsIG9uZXJyb3IgaGFuZGxlcnMg
Zm9yIGFsbCBpbi1wcm9ncmVzcyByZXF1ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0LXJl
cXVlc3RzLWNhbmNlbGxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9hYm9ydC1yZXF1ZXN0cy1jYW5jZWxsZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYnRyYW5zYWN0aW9uLW9iamVjdHN0
b3JlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMuaHRtbDoKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTUuaHRtbDoKKwogMjAxNS0xMS0xOSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTW9kZXJuIElEQjog
SURCRmFjdG9yeS5kZWxldGVEYXRhYmFzZSgpIHN1cHBvcnQuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9ydC1y
ZXF1ZXN0cy1jYW5jZWxsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjg5YzBjNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDI0IEBACitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHVuLWhhbmRsZWQgcmVx
dWVzdHMgaW4gYSB0cmFuc2FjdGlvbiByZWNlaXZlIG9uZXJyb3IgY2FsbGJhY2tzIHdoZW4gdGhl
IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQuCitJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVy
c2lvbiAtIDAgTmV3IHZlcnNpb24gLSAxCitFcnJvciBoYW5kbGluZzogIm9iamVjdFN0b3JlLnB1
dCh7IGJhcjogJ0EnIH0sIDEpOyIgKGVycm9yKQorRXJyb3IgaGFuZGxpbmc6ICJvYmplY3RTdG9y
ZS5wdXQoeyBiYXI6ICdCJyB9LCAyKTsiIChlcnJvcikKK0Vycm9yIGhhbmRsaW5nOiAib2JqZWN0
U3RvcmUucHV0KHsgYmFyOiAnQycgfSwgMyk7IiAoZXJyb3IpCitJbml0aWFsIHVwZ3JhZGUgdmVy
c2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkCitTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9s
ZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEKK1N1Y2Nlc3MgaGFuZGxpbmc6ICJvYmplY3RT
dG9yZS5wdXQoeyBiYXI6ICdBJyB9LCAxKTsiCitTdWNjZXNzIGhhbmRsaW5nOiAib2JqZWN0U3Rv
cmUucHV0KHsgYmFyOiAnQicgfSwgMik7IgorU3VjY2VzcyBoYW5kbGluZzogIm9iamVjdFN0b3Jl
LnB1dCh7IGJhcjogJ0MnIH0sIDMpOyIKK1NlY29uZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJh
bnNhY3Rpb24gY29tcGxldGVkCitFcnJvciBoYW5kbGluZzogIm9iamVjdFN0b3JlLmdldCgxKTsi
IChlcnJvcikKK0Vycm9yIGhhbmRsaW5nOiAib2JqZWN0U3RvcmUuZ2V0KDIpOyIgKGVycm9yKQor
RXJyb3IgaGFuZGxpbmc6ICJvYmplY3RTdG9yZS5nZXQoMyk7IiAoZXJyb3IpCitFcnJvciBoYW5k
bGluZzogIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0QnIH0sIDQpOyIgKGVycm9yKQorRXJyb3Ig
aGFuZGxpbmc6ICJvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICdFJyB9LCA1KTsiIChlcnJvcikKK0Vy
cm9yIGhhbmRsaW5nOiAib2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnRicgfSwgNik7IiAoZXJyb3Ip
CityZWFkd3JpdGUgdHJhbnNhY3Rpb24gYWJvcnRlZAorRXJyb3IgaGFuZGxpbmc6ICJvYmplY3RT
dG9yZS5nZXQoMSk7IiAoZXJyb3IpCitFcnJvciBoYW5kbGluZzogIm9iamVjdFN0b3JlLmdldCgy
KTsiIChlcnJvcikKK0Vycm9yIGhhbmRsaW5nOiAib2JqZWN0U3RvcmUuZ2V0KDMpOyIgKGVycm9y
KQorcmVhZG9ubHkgdHJhbnNhY3Rpb24gYWJvcnRlZAorRG9uZQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVz
dHMtY2FuY2VsbGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE1
M2I2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9hYm9ydC1yZXF1ZXN0cy1jYW5jZWxsZWQuaHRtbApAQCAtMCwwICsxLDE1NyBAQAorVGhp
cyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCB1bi1oYW5kbGVkIHJlcXVlc3RzIGluIGEgdHJhbnNhY3Rp
b24gcmVjZWl2ZSBvbmVycm9yIGNhbGxiYWNrcyB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBhYm9y
dGVkLjxicj4KKzxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Cis8c2NyaXB0PgorCitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgbG9nKCJE
b25lIik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwor
fQorCit2YXIgZGF0YWJhc2U7Cit2YXIgb2JqZWN0U3RvcmU7CisKK2Z1bmN0aW9uIHNldHVwUmVx
dWVzdChjb2RlKQoreworICAgIHZhciByZXF1ZXN0ID0gZXZhbChjb2RlKTsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGxvZyAoIlN1Y2Nlc3MgaGFu
ZGxpbmc6IFwiIiArIGNvZGUgKyAiXCIiKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0g
ZnVuY3Rpb24oZSkKKyAgICB7CisgICAgICAgIGxvZyAoIkVycm9yIGhhbmRsaW5nOiBcIiIgKyBj
b2RlICsgIlwiICgiICsgZS50eXBlICsgIikiKTsKKyAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24o
KTsKKyAgICB9ICAgCit9CisKK3N0YXJ0VGVzdCgpOworCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7
CisgICAgdmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkFib3J0UmVx
dWVzdHNDYW5jZWxsZWREYXRhYmFzZSIsIDEpOworICAgIGNyZWF0ZVJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUg
bmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lv
biAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgICAgICB2YXIgdmVyc2lvblRyYW5zYWN0
aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVh
dGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIHNldHVwUmVxdWVzdCgi
b2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnQScgfSwgMSk7Iik7CisgICAgICAgIHNldHVwUmVxdWVz
dCgib2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnQicgfSwgMik7Iik7CisgICAgICAgIHNldHVwUmVx
dWVzdCgib2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnQycgfSwgMyk7Iik7CisKKyAgICAgICAgdmVy
c2lvblRyYW5zYWN0aW9uLmFib3J0KCk7CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9u
YWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3Jh
ZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7CisgICAgICAgICAgICBkYXRh
YmFzZS5jbG9zZSgpOworICAgICAgICAgICAgY29udGludWVUZXN0MSgpOworICAgICAgICB9CisK
KyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2Fj
dGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAg
IH0KKworICAgICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5z
YWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICAgICAgZG9uZSgpOwor
ICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkgeworICAgIHZh
ciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJBYm9ydFJlcXVlc3RzQ2Fu
Y2VsbGVkRGF0YWJhc2UiLCAxKTsKKyAgICBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZygiU2Vjb25kIHVwZ3JhZGUgbmVlZGVkOiBP
bGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBl
dmVudC5uZXdWZXJzaW9uKTsKKworICAgICAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3Jl
YXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICAgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgICAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3Jl
KCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAKKyAgICAgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RT
dG9yZS5wdXQoeyBiYXI6ICdBJyB9LCAxKTsiKTsKKyAgICAgICAgc2V0dXBSZXF1ZXN0KCJvYmpl
Y3RTdG9yZS5wdXQoeyBiYXI6ICdCJyB9LCAyKTsiKTsKKyAgICAgICAgc2V0dXBSZXF1ZXN0KCJv
YmplY3RTdG9yZS5wdXQoeyBiYXI6ICdDJyB9LCAzKTsiKTsKKyAgICAKKyAgICAgICAgdmVyc2lv
blRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbG9n
KCJTZWNvbmQgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJv
cnQiKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnNpb25U
cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxv
ZygiU2Vjb25kIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlVGVzdDIoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnNp
b25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxv
ZygiU2Vjb25kIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVy
cm9yIiArIGV2ZW50KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgIH0KK30K
KworZnVuY3Rpb24gY29udGludWVUZXN0MigpIHsKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRh
YmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0ZSIpOworICAgIG9i
amVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOwor
CisgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQoMSk7Iik7CisgICAgc2V0dXBSZXF1
ZXN0KCJvYmplY3RTdG9yZS5nZXQoMik7Iik7CisgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9y
ZS5nZXQoMyk7Iik7CisgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICdE
JyB9LCA0KTsiKTsKKyAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0Un
IH0sIDUpOyIpOworICAgIHNldHVwUmVxdWVzdCgib2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnRicg
fSwgNik7Iik7CisKKyAgICB0cmFuc2FjdGlvbi5hYm9ydCgpOworCisgICAgdHJhbnNhY3Rpb24u
b25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5z
YWN0aW9uIGFib3J0ZWQiKTsKKyAgICAgICAgY29udGludWVUZXN0MygpOworICAgIH0KKworICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBsb2co
InJlYWR3cml0ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7CisgICAgICAgIGRv
bmUoKTsKKyAgICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgbG9nKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIg
KyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVl
VGVzdDMoKSB7CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRl
c3RPYmplY3RTdG9yZSIsICJyZWFkb25seSIpOworICAgIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgc2V0dXBSZXF1ZXN0KCJv
YmplY3RTdG9yZS5nZXQoMSk7Iik7CisgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQo
Mik7Iik7CisgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQoMyk7Iik7CisKKyAgICB0
cmFuc2FjdGlvbi5hYm9ydCgpOworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGxvZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gYWJvcnRlZCIpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhw
ZWN0ZWQgY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0
aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBsb2coInJlYWR3cml0ZSB0
cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOwor
ICAgIH0KK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYnRyYW5zYWN0aW9uLW9iamVjdHN0b3JlLWZhaWx1cmVzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlv
bi1vYmplY3RzdG9yZS1mYWlsdXJlcy1leHBlY3RlZC50eHQKaW5kZXggOTM5YjM4YS4uN2MzZTAz
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYnRy
YW5zYWN0aW9uLW9iamVjdHN0b3JlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUt
ZmFpbHVyZXMtZXhwZWN0ZWQudHh0CkBAIC01LDcgKzUsOCBAQCBBTEVSVDogQ2F1Z2h0IGF0dGVt
cHQgdG8gYWNjZXNzIGVtcHR5LW5hbWVkIG9iamVjdCBzdG9yZSBvbiB0aGUgdHJhbnNhY3Rpb24K
IEFMRVJUOiBDYXVnaHQgYXR0ZW1wdCB0byBhY2Nlc3MgbnVsbC1uYW1lZCBvYmplY3Qgc3RvcmUg
b24gdGhlIHRyYW5zYWN0aW9uCiBBTEVSVDogQ2F1Z2h0IGF0dGVtcHQgdG8gYWNjZXNzIG5vbi1l
eGlzdGFudCBvYmplY3Qgc3RvcmUgb24gdGhlIHRyYW5zYWN0aW9uCiBBTEVSVDogQ2F1Z2h0IGF0
dGVtcHQgdG8gYWNjZXNzIHZhbGlkIG9iamVjdCBzdG9yZSBvbiBhIHRyYW5zYWN0aW9uIHRoYXQg
aXMgYWxyZWFkeSBmaW5pc2hpbmcKLUFMRVJUOiBGaXJzdCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2Fj
dGlvbiBhYm9ydAorQUxFUlQ6IHB1dCBmYWlsZWQgKGJlY2F1c2UgdHJhbnNhY3Rpb24gd2FzIGFi
b3J0ZWQpCitBTEVSVDogRmlyc3QgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3Rl
ZCBlcnJvciAtIFtvYmplY3QgRXZlbnRdCiBBTEVSVDogRG9uZQogVGhpcyB0ZXN0cyBzb21lIG9i
dmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9y
ZS1mYWlsdXJlcy5odG1sCmluZGV4IDkyZWFmNWEuLmMyMmNkZTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9y
ZS1mYWlsdXJlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy5odG1sCkBAIC0zMCw5ICszMCw4
IEBAIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpCiAKICAgICB2YXIg
cHV0UmVxdWVzdCA9IG9zMS5wdXQoImJhciIsICJmb28iKTsKICAgICAKLSAgICBwdXRSZXF1ZXN0
Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgicHV0IHVuZXhwZWN0
ZWRseSBmYWlsZWQgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7CisgICAgcHV0UmVxdWVz
dC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFsZXJ0KCJwdXQgZmFpbGVkIChiZWNh
dXNlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkKSIpOwogICAgIH0KICAgICAKICAgICB0cnkgewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4
LTUtZXhwZWN0ZWQudHh0CmluZGV4IDk0NDg4YzMuLjNiM2EwOGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC01LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS1leHBlY3RlZC50
eHQKQEAgLTEsNiArMSw4IEBACiBUaGlzIHRlc3RzIGNyZWF0aW5nIGFuIGluZGV4IG9uIGFuIG9i
amVjdCBzdG9yZSB0aGF0IGFscmVhZHkgaGFzIHJlY29yZHMsIGFuZCB0aG9zZSByZWNvcmRzIHdv
dWxkIHZpb2xhdGUgdGhlIHVuaXF1ZSBjb25zdHJhaW50IG9mIHRoZSBpbmRleC4KIChUaGUgaW5k
ZXggY3JlYXRpb24gc2hvdWxkIGZhaWwpLgogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZl
cnNpb24gLSAwIE5ldyB2ZXJzaW9uIC0gMQorRXJyb3IgZ2V0dGluZyBjdXJzb3IgY291bnQKK0Vy
cm9yIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25j
aGFuZ2UgdHJhbnNhY3Rpb24gYWJvcnRlZCAoZXhwZWN0ZWQgYmVjYXVzZSBpbmRleCBjcmVhdGlv
biBmYWlsZWQsIGFuZCB0aGF0IHNob3VsZCd2ZSBjYXVzZWQgdHJhbnNhY3Rpb24gYWJvcnQpCiBE
b25lCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9p
bmRleC01Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgt
NS5odG1sCmluZGV4IGRlZTk4OGZmLi5mZDY4M2ZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC01Lmh0bWwKQEAgLTI5LDYgKzI5LDEwIEBAIGZ1
bmN0aW9uIGNoZWNrSW5kZXhWYWx1ZXMoKQogICAgIGNvdW50UmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKICAgICAgICAgbG9nKCJDb3VudCBpczogIiArIGNvdW50UmVxdWVzdC5yZXN1
bHQpOwogICAgIH0KKyAgICBjb3VudFJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAg
ICAgICAgbG9nKCJFcnJvciBnZXR0aW5nIGN1cnNvciBjb3VudCIpOworICAgICAgICBlLnN0b3BQ
cm9wYWdhdGlvbigpOworICAgIH0KIAogICAgIHZhciBjdXJzb3JSZXF1ZXN0ID0gaW5kZXgub3Bl
bkN1cnNvcigpOwogICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CkBA
IC00MSw5ICs0NSw4IEBAIGZ1bmN0aW9uIGNoZWNrSW5kZXhWYWx1ZXMoKQogICAgICAgICAgICAg
ZG9uZSgpOwogICAgIH0KICAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7
Ci0gICAgICAgIGxvZygiVW5leHBlY3RlZCBlcnJvciBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJz
b3IiKTsKLSAgICAgICAgbG9nQ3Vyc29yKGN1cnNvclJlcXVlc3QucmVzdWx0KTsKLSAgICAgICAg
ZG9uZSgpOworICAgICAgICBsb2coIkVycm9yIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIp
OworICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgIH0gCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAyNzE1YjgwLi4xOWVkMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTUtMTEt
MjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFdoZW4gYSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLCBjYWxsIG9uZXJyb3IgaGFuZGxlcnMg
Zm9yIGFsbCBpbi1wcm9ncmVzcyByZXF1ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9y
dC1yZXF1ZXN0cy1jYW5jZWxsZWQuaHRtbAorICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMuaHRtbCAod2l0aCBj
aGFuZ2VzKQorICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS5o
dG1sICh3aXRoIGNoYW5nZXMpCisgICAgICAgICAgICAgIFZhcmlvdXMgKGN1cnJlbnRseSBza2lw
cGVkKSBsZWdhY3kgSURCIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QkRhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OndpbGxDb21taXRUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjpkaWRDb21taXRU
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjp3
aWxsQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkRh
dGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCRGF0YWJhc2U6OmRpZENvbW1pdE9yQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIAor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6YWJvcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZl
ckFuZENhbmNlbFJlcXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJh
bnNhY3Rpb246OmRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpkaWRHZXRSZWNvcmRP
blNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpk
aWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6aW1tZWRpYXRlQWJvcnQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNl
cnZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRy
YW5zYWN0aW9uSW1wbC5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpjb21taXRUcmFuc2Fj
dGlvbik6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJF
cnJvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppZGJFcnJvck5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6aWRiRXJyb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzb3VyY2VJZGVudGlmaWVyOjpsb2dnaW5nU3RyaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmg6CisKIDIwMTUtMTEtMTkgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGVybiBJREI6IElE
QkZhY3RvcnkuZGVsZXRlRGF0YWJhc2UoKSBzdXBwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmNwcApp
bmRleCAwMmM0ODUzLi4zZWE1NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMTcxLDYg
KzE3MSw4IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRy
YW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgYXV0byBpbmZvID0gSURCVHJh
bnNhY3Rpb25JbmZvOjpjbGllbnRUcmFuc2FjdGlvbihtX3NlcnZlckNvbm5lY3Rpb24uZ2V0KCks
IG9iamVjdFN0b3JlcywgbW9kZSk7CiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0
aW9uOjpjcmVhdGUoKnRoaXMsIGluZm8pOwogCisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFi
YXNlOjp0cmFuc2FjdGlvbiAtIEFkZGVkIGFjdGl2ZSB0cmFuc2FjdGlvbiAlcyIsIGluZm8uaWRl
bnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIG1fYWN0aXZl
VHJhbnNhY3Rpb25zLnNldChpbmZvLmlkZW50aWZpZXIoKSwgJnRyYW5zYWN0aW9uLmdldCgpKTsK
IAogICAgIHJldHVybiBhZG9wdFJlZigmdHJhbnNhY3Rpb24ubGVha1JlZigpKTsKQEAgLTI0MSw3
ICsyNDMsNyBAQCBib29sIElEQkRhdGFiYXNlOjpjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29u
c3QKIAogUmVmPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvLCBJREJPcGVuREJSZXF1
ZXN0JiByZXF1ZXN0KQogewotICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6c3RhcnRW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24iKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJh
c2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uICVzIiwgaW5mby5pZGVudGlmaWVyKCku
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgQVNTRVJUKCFtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbik7CiAgICAgQVNTRVJUKGluZm8ubW9kZSgpID09IEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uQ2hhbmdlKTsKQEAgLTI1NiwxNSArMjU4LDE5IEBAIFJl
ZjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKGNvbnN0IElEQlRyYW5zYWN0CiAKIHZvaWQgSURCRGF0YWJhc2U6OmRpZFN0YXJ0VHJhbnNh
Y3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIExPRyhJbmRleGVkREIs
ICJJREJEYXRhYmFzZTo6ZGlkU3RhcnRUcmFuc2FjdGlvbiIpOworICAgIExPRyhJbmRleGVkREIs
ICJJREJEYXRhYmFzZTo6ZGlkU3RhcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8o
KS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VS
VCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogCisgICAgLy8gSXQgaXMgcG9zc2libGUg
Zm9yIHRoZSBjbGllbnQgdG8gaGF2ZSBhYm9ydGVkIGEgdHJhbnNhY3Rpb24gYmVmb3JlIHRoZSBz
ZXJ2ZXIgcmVwbGllcyBiYWNrIHRoYXQgaXQgaGFzIHN0YXJ0ZWQuCisgICAgaWYgKG1fYWJvcnRp
bmdUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSkp
CisgICAgICAgIHJldHVybjsKKwogICAgIG1fYWN0aXZlVHJhbnNhY3Rpb25zLnNldCh0cmFuc2Fj
dGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCAmdHJhbnNhY3Rpb24pOwogfQogCiB2b2lkIElEQkRh
dGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
KQogewotICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0
aW9uIik7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNh
Y3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGF1dG8gcmVmVHJhbnNhY3Rpb24gPSBtX2FjdGl2ZVRy
YW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogICAgIEFT
U0VSVChyZWZUcmFuc2FjdGlvbik7CkBAIC0yNzMsNyArMjc5LDcgQEAgdm9pZCBJREJEYXRhYmFz
ZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIAog
dm9pZCBJREJEYXRhYmFzZTo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uKQogewotICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlkQ29tbWl0
VHJhbnNhY3Rpb24iKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZENvbW1p
dFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAobV92ZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24gPT0gJnRyYW5zYWN0aW9uKQogICAgICAgICBtX2luZm8uc2V0VmVyc2lvbih0cmFuc2Fj
dGlvbi5pbmZvKCkubmV3VmVyc2lvbigpKTsKQEAgLTI4Myw3ICsyODksNyBAQCB2b2lkIElEQkRh
dGFiYXNlOjpkaWRDb21taXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24p
CiAKIHZvaWQgSURCRGF0YWJhc2U6OndpbGxBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbikKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OndpbGxB
Ym9ydFRyYW5zYWN0aW9uIik7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjp3aWxs
QWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgYXV0byByZWZUcmFuc2FjdGlvbiA9
IG1fYWN0aXZlVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIo
KSk7CiAgICAgQVNTRVJUKHJlZlRyYW5zYWN0aW9uKTsKQEAgLTI5Miw3ICsyOTgsNyBAQCB2b2lk
IElEQkRhdGFiYXNlOjp3aWxsQWJvcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24pCiAKIHZvaWQgSURCRGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6
ZGlkQWJvcnRUcmFuc2FjdGlvbiIpOworICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6
ZGlkQWJvcnRUcmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCku
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKHRyYW5zYWN0aW9uLmlz
VmVyc2lvbkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5vcmlnaW5hbERh
dGFiYXNlSW5mbygpKTsKQEAgLTMwNCw3ICszMTAsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRB
Ym9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIAogdm9pZCBJREJE
YXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbikKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpZENvbW1pdE9y
QWJvcnRUcmFuc2FjdGlvbiIpOworICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlk
Q29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAobV92ZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24gPT0gJnRyYW5zYWN0aW9uKQogICAgICAgICBtX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbiA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCmluZGV4
IGUxN2JhY2EuLmIyZTlmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCkBAIC0xNjUs
MjAgKzE2NSw2IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rp
b246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWN0CiAgICAgcmV0dXJuIGFkb3B0UmVm
KCZvYmplY3RTdG9yZS5sZWFrUmVmKCkpOwogfQogCi12b2lkIElEQlRyYW5zYWN0aW9uOjppbW1l
ZGlhdGVBYm9ydCgpCi17Ci0gICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjppbW1l
ZGlhdGVBYm9ydCIpOwotCi0gICAgaWYgKGlzRmluaXNoZWRPckZpbmlzaGluZygpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX3N0YXRlID0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblN0YXRlOjpB
Ym9ydGluZzsKLSAgICBtX2RhdGFiYXNlLT53aWxsQWJvcnRUcmFuc2FjdGlvbigqdGhpcyk7Ci0K
LSAgICBhdXRvIG9wZXJhdGlvbiA9IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCBu
dWxscHRyLCAmSURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXIpOwotICAgIGFib3J0T25TZXJ2
ZXIoKm9wZXJhdGlvbik7Ci19Ci0KIHZvaWQgSURCVHJhbnNhY3Rpb246OmFib3J0KEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6YWJvcnQi
KTsKQEAgLTE5MSwxNCArMTc3LDI4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmFib3J0KEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIG1fc3RhdGUgPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6
OkFib3J0aW5nOwogICAgIG1fZGF0YWJhc2UtPndpbGxBYm9ydFRyYW5zYWN0aW9uKCp0aGlzKTsK
IAotICAgIGF1dG8gb3BlcmF0aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMs
IG51bGxwdHIsICZJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlcik7CisgICAgbV9hYm9ydFF1
ZXVlLnN3YXAobV90cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlKTsKKworICAgIGF1dG8gb3BlcmF0
aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIG51bGxwdHIsICZJREJUcmFu
c2FjdGlvbjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzKTsKICAgICBzY2hlZHVsZU9w
ZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246
OmFib3J0T25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mKQordm9pZCBJREJUcmFuc2FjdGlv
bjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikK
IHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXIiKTsK
KyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmFib3J0T25TZXJ2ZXJBbmRDYW5j
ZWxSZXF1ZXN0cyIpOworCisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1ZS5p
c0VtcHR5KCkpOworCiAgICAgc2VydmVyQ29ubmVjdGlvbigpLmFib3J0VHJhbnNhY3Rpb24oKnRo
aXMpOworCisgICAgSURCRXJyb3IgZXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6QWJvcnRFcnJvcik7
CisgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBtX2Fib3J0UXVldWUpCisgICAgICAgIG9wZXJh
dGlvbi0+Y29tcGxldGVkKElEQlJlc3VsdERhdGE6OmVycm9yKG9wZXJhdGlvbi0+aWRlbnRpZmll
cigpLCBlcnJvcikpOworCisgICAgLy8gU2luY2Ugd2UncmUgYWJvcnRpbmcsIHRoaXMgYWJvcnRP
blNlcnZlckFuZENhbmNlbFJlcXVlc3RzKCkgb3BlcmF0aW9uIHNob3VsZCBiZSB0aGUgb25seQor
ICAgIC8vIGluLXByb2dyZXNzIG9wZXJhdGlvbiwgYW5kIGl0IHNob3VsZCBiZSBpbXBvc3NpYmxl
IHRvIGhhdmUgcXVldWVkIGFueSBmdXJ0aGVyIG9wZXJhdGlvbnMuCisgICAgQVNTRVJUKG1fdHJh
bnNhY3Rpb25PcGVyYXRpb25NYXAuc2l6ZSgpID09IDEpOworICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uT3BlcmF0aW9uUXVldWUuaXNFbXB0eSgpKTsKIH0KIAogY29uc3QgY2hhciogSURCVHJhbnNh
Y3Rpb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAtNDI2LDcgKzQyNiw3IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjpkaWRDcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyIik7CiAKLSAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdERhdGEsIHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkNyZWF0ZU9i
amVjdFN0b3JlU3VjY2Vzcyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHRE
YXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpDcmVhdGVPYmplY3RTdG9yZVN1Y2Nlc3MgfHwg
cmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwogfQogCiBSZWY8SURC
SW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYgb2JqZWN0
U3RvcmUsIGNvbnN0IElEQkluZGV4SW5mbyYgaW5mbykKQEAgLTQ1OCw4ICs0NTgsMTUgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcihjb25zdCBJREJSZXN1bHRE
YXRhJiByZXN1bHREYXRhKQogICAgIGlmIChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRU
eXBlOjpDcmVhdGVJbmRleFN1Y2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIElmIGlu
ZGV4IGNyZWF0aW9uIGZhaWxlZCwgdGhlIHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQuCi0gICAgaW1t
ZWRpYXRlQWJvcnQoKTsKKyAgICBBU1NFUlQocmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0
VHlwZTo6RXJyb3IpOworCisgICAgLy8gVGhpcyBvcGVyYXRpb24gbWlnaHQgaGF2ZSBmYWlsZWQg
YmVjYXVzZSB0aGUgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBhYm9ydGluZy4KKyAgICBpZiAobV9z
dGF0ZSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFib3J0aW5nKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBPdGhlcndpc2UsIGZhaWx1cmUgdG8gY3JlYXRlIGFuIGluZGV4IGZv
cmNlZCBhYm9ydGlvbiBvZiB0aGUgdHJhbnNhY3Rpb24uCisgICAgRXhjZXB0aW9uQ29kZSBlYzsK
KyAgICBhYm9ydChlYyk7CiB9CiAKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdE9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0
U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQpAQCAtNTg1LDYg
KzU5MiwxMyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlcihJREJS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIiKTsKIAorICAgIGlmIChyZXN1
bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcikgeworICAgICAgICByZXF1ZXN0
LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQocmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6R2V0UmVjb3Jk
U3VjY2Vzcyk7CisKICAgICBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCA9IHJlc3VsdERhdGEu
Z2V0UmVzdWx0KCk7CiAKICAgICBpZiAocmVxdWVzdC5zb3VyY2VJbmRleElkZW50aWZpZXIoKSAm
JiByZXF1ZXN0LnJlcXVlc3RlZEluZGV4UmVjb3JkVHlwZSgpID09IEluZGV4ZWREQjo6SW5kZXhS
ZWNvcmRUeXBlOjpLZXkpIHsKQEAgLTc2MCw3ICs3NzQsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjpkZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRp
b24sCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKGNv
bnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyIik7Ci0gICAgQVNTRVJU
X1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpE
ZWxldGVPYmplY3RTdG9yZVN1Y2Nlc3MpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwg
cmVzdWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlT2JqZWN0U3RvcmVTdWNj
ZXNzIHx8IHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXgodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSkKQEAgLTc4NCw3ICs3OTgsNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkZWxldGVJbmRleE9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9u
JiBvcGVyYXRpb24sIGNvbnN0CiB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVJbmRleE9u
U2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7CiAgICAgTE9HKEluZGV4
ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVJbmRleE9uU2VydmVyIik7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBl
OjpEZWxldGVJbmRleFN1Y2Nlc3MpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVz
dWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RGVsZXRlSW5kZXhTdWNjZXNzIHx8IHJl
c3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkVycm9yKTsKIH0KIAogdm9pZCBJREJU
cmFuc2FjdGlvbjo6b3BlcmF0aW9uRGlkQ29tcGxldGUoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9w
ZXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJUcmFuc2FjdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaAppbmRleCBkMzcwNDgwLi5mY2IxOWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJh
bnNhY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdEluZGV4UmVjb3JkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBJREJJbmRleCYsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmKTsKIAogICAgIHZvaWQgY29tbWl0T25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRp
b24mKTsKLSAgICB2b2lkIGFib3J0T25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mKTsKKyAg
ICB2b2lkIGFib3J0T25TZXJ2ZXJBbmRDYW5jZWxSZXF1ZXN0cyhUcmFuc2FjdGlvbk9wZXJhdGlv
biYpOwogCiAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyKFRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAgICAgdm9pZCBkaWRDcmVhdGVP
YmplY3RTdG9yZU9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKQEAgLTE4Miw4ICsxODIs
NiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZU9wZXJhdGlvblRpbWVyKCk7CiAKLSAg
ICB2b2lkIGltbWVkaWF0ZUFib3J0KCk7Ci0KICAgICBSZWY8SURCRGF0YWJhc2U+IG1fZGF0YWJh
c2U7CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIG1faW5mbzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SURCRGF0YWJhc2VJbmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvOwpAQCAtMTk5LDYgKzE5Nyw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG1fb3BlbkRCUmVxdWVz
dDsKIAogICAgIERlcXVlPFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fdHJhbnNhY3Rp
b25PcGVyYXRpb25RdWV1ZTsKKyAgICBEZXF1ZTxSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+
PiBtX2Fib3J0UXVldWU7CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0
cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fdHJhbnNhY3Rpb25PcGVyYXRpb25NYXA7CiAKICAg
ICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQk9iamVjdFN0b3JlPj4gbV9yZWZlcmVuY2VkT2Jq
ZWN0U3RvcmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBkODYzMmIx
Li5iNWMzM2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtOTUsNyAr
OTUsNyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24o
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNr
aW5nU3RvcmU6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJh
Y2tpbmdTdG9yZTo6YWJvcnRUcmFuc2FjdGlvbiIpOworICAgIExPRyhJbmRleGVkREIsICJNZW1v
cnlJREJCYWNraW5nU3RvcmU6OmFib3J0VHJhbnNhY3Rpb24gLSAlcyIsIHRyYW5zYWN0aW9uSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBhdXRvIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAg
IGlmICghdHJhbnNhY3Rpb24pCkBAIC0xMDgsNyArMTA4LDcgQEAgSURCRXJyb3IgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHIKIAogSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjb21taXRUcmFuc2FjdGlv
bihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsK
LSAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjb21taXRUcmFuc2Fj
dGlvbiIpOworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNvbW1p
dFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFuc2FjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LnRha2UodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5j
cHAKaW5kZXggNDUyYTQ3MC4uZmIyMTkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCkBAIC02Nyw2ICs2NywxMCBAQCBz
dGF0aWMgY29uc3QgU3RyaW5nJiBpZGJFcnJvck5hbWUoSURCRXhjZXB0aW9uQ29kZSBjb2RlKQog
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRyeSA9IEFTQ0lJTGl0ZXJh
bCgiRGF0YUNsb25lRXJyb3IiKTsKICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgIH0KKyAgICBj
YXNlIElEQkV4Y2VwdGlvbkNvZGU6OkFib3J0RXJyb3I6IHsKKyAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIkFib3J0RXJyb3IiKTsKKyAg
ICAgICAgcmV0dXJuIGVudHJ5OworICAgIH0KICAgICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6Ok5v
bmU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMTA5
LDYgKzExMywxMCBAQCBzdGF0aWMgY29uc3QgU3RyaW5nJiBpZGJFcnJvckRlc2NyaXB0aW9uKElE
QkV4Y2VwdGlvbkNvZGUgY29kZSkKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIkRhdGEgYmVpbmcgc3RvcmVkIGNvdWxkIG5vdCBiZSBj
bG9uZWQgYnkgdGhlIHN0cnVjdHVyZWQgY2xvbmluZyBhbGdvcml0aG0uIik7CiAgICAgICAgIHJl
dHVybiBlbnRyeTsKICAgICB9CisgICAgY2FzZSBJREJFeGNlcHRpb25Db2RlOjpBYm9ydEVycm9y
OiB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGVudHJ5ID0gQVNDSUlM
aXRlcmFsKCJSZWFsIGRlc2NyaXB0aW9uIGZvciBhYm9ydCIpOworICAgICAgICByZXR1cm4gZW50
cnk7CisgICAgfQogICAgIGNhc2UgSURCRXhjZXB0aW9uQ29kZTo6Tm9uZToKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCmluZGV4IDJlNzRmNGUuLjZmNjEw
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJFcnJvci5oCkBAIC00NCw2ICs0NCw3IEBAIGVudW0gY2xhc3MgSURCRXhjZXB0aW9uQ29kZSB7
CiAgICAgLy8gSW5kZXhlZCBEQiBleGlzdGluZyBleGNlcHRpb24gY29kZXMgd2l0aCBJREItc3Bl
Y2lmaWMgZXJyb3IgbWVzc2FnZXM6CiAgICAgSW52YWxpZFN0YXRlRXJyb3IsCiAgICAgRGF0YUNs
b25lRXJyb3IsCisgICAgQWJvcnRFcnJvciwKIH07CiAKIGNsYXNzIElEQkVycm9yIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJj
ZUlkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc291cmNlSWRlbnRpZmllci5jcHAKaW5kZXggMTdlMDMwMi4uMGIxYjQ2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNl
SWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5jcHAKQEAgLTk0LDYgKzk0LDEyIEBAIGJvb2wgSURC
UmVzb3VyY2VJZGVudGlmaWVyOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CiAgICAg
ICAgICYmIG1fcmVzb3VyY2VOdW1iZXIgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46
Om1heCgpOwogfQogCisjaWZuZGVmIE5ERUJVRworU3RyaW5nIElEQlJlc291cmNlSWRlbnRpZmll
cjo6bG9nZ2luZ1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCI8
JSIgUFJJdTY0IiwgJSIgUFJJdTY0Ij4iLCBtX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3Jl
c291cmNlTnVtYmVyKTsKK30KKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVy
LmgKaW5kZXggOTM1NDYyNC4uN2E2Mjk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIu
aApAQCAtNzIsNiArNzIsMTAgQEAgcHVibGljOgogCiAgICAgSURCUmVzb3VyY2VJZGVudGlmaWVy
IGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCisjaWZuZGVmIE5ERUJVRworICAgIFN0cmluZyBsb2dn
aW5nU3RyaW5nKCkgY29uc3Q7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBJREJSZXNvdXJjZUlk
ZW50aWZpZXIoKSA9IGRlbGV0ZTsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIodWludDY0X3Qg
Y29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7Cg==
</data>
<flag name="review"
          id="291092"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="291093"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266091</attachid>
            <date>2015-11-23 11:04:15 -0800</date>
            <delta_ts>2015-11-23 11:48:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29046</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNmI3MTc4Li4wNmQ5OWVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMTEt
MjMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFdoZW4gYSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLCBjYWxsIG9uZXJyb3IgaGFuZGxlcnMg
Zm9yIGFsbCBpbi1wcm9ncmVzcyByZXF1ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXgg
Q2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQt
cmVxdWVzdHMtY2FuY2VsbGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRidHJhbnNhY3Rpb24tb2JqZWN0
c3RvcmUtZmFpbHVyZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC01LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS5odG1sOgorCiAyMDE1LTExLTE3
ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFT
U0VSVElPTiBGQUlMRUQ6IGZyZWVTcGFjZSA+PSAwIGluIFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNv
bXB1dGVUcmFja1NpemVzRm9yRGlyZWN0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9ydC1yZXF1ZXN0cy1j
YW5jZWxsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
Ljg5YzBjNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI0IEBACitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHVuLWhhbmRsZWQgcmVxdWVzdHMgaW4g
YSB0cmFuc2FjdGlvbiByZWNlaXZlIG9uZXJyb3IgY2FsbGJhY2tzIHdoZW4gdGhlIHRyYW5zYWN0
aW9uIGlzIGFib3J0ZWQuCitJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAg
TmV3IHZlcnNpb24gLSAxCitFcnJvciBoYW5kbGluZzogIm9iamVjdFN0b3JlLnB1dCh7IGJhcjog
J0EnIH0sIDEpOyIgKGVycm9yKQorRXJyb3IgaGFuZGxpbmc6ICJvYmplY3RTdG9yZS5wdXQoeyBi
YXI6ICdCJyB9LCAyKTsiIChlcnJvcikKK0Vycm9yIGhhbmRsaW5nOiAib2JqZWN0U3RvcmUucHV0
KHsgYmFyOiAnQycgfSwgMyk7IiAoZXJyb3IpCitJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5n
ZSB0cmFuc2FjdGlvbiBhYm9ydGVkCitTZWNvbmQgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9u
IC0gMCBOZXcgdmVyc2lvbiAtIDEKK1N1Y2Nlc3MgaGFuZGxpbmc6ICJvYmplY3RTdG9yZS5wdXQo
eyBiYXI6ICdBJyB9LCAxKTsiCitTdWNjZXNzIGhhbmRsaW5nOiAib2JqZWN0U3RvcmUucHV0KHsg
YmFyOiAnQicgfSwgMik7IgorU3VjY2VzcyBoYW5kbGluZzogIm9iamVjdFN0b3JlLnB1dCh7IGJh
cjogJ0MnIH0sIDMpOyIKK1NlY29uZCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24g
Y29tcGxldGVkCitFcnJvciBoYW5kbGluZzogIm9iamVjdFN0b3JlLmdldCgxKTsiIChlcnJvcikK
K0Vycm9yIGhhbmRsaW5nOiAib2JqZWN0U3RvcmUuZ2V0KDIpOyIgKGVycm9yKQorRXJyb3IgaGFu
ZGxpbmc6ICJvYmplY3RTdG9yZS5nZXQoMyk7IiAoZXJyb3IpCitFcnJvciBoYW5kbGluZzogIm9i
amVjdFN0b3JlLnB1dCh7IGJhcjogJ0QnIH0sIDQpOyIgKGVycm9yKQorRXJyb3IgaGFuZGxpbmc6
ICJvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICdFJyB9LCA1KTsiIChlcnJvcikKK0Vycm9yIGhhbmRs
aW5nOiAib2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnRicgfSwgNik7IiAoZXJyb3IpCityZWFkd3Jp
dGUgdHJhbnNhY3Rpb24gYWJvcnRlZAorRXJyb3IgaGFuZGxpbmc6ICJvYmplY3RTdG9yZS5nZXQo
MSk7IiAoZXJyb3IpCitFcnJvciBoYW5kbGluZzogIm9iamVjdFN0b3JlLmdldCgyKTsiIChlcnJv
cikKK0Vycm9yIGhhbmRsaW5nOiAib2JqZWN0U3RvcmUuZ2V0KDMpOyIgKGVycm9yKQorcmVhZG9u
bHkgdHJhbnNhY3Rpb24gYWJvcnRlZAorRG9uZQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2VsbGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYWJvcnQtcmVxdWVzdHMtY2FuY2Vs
bGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE1M2I2OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9y
dC1yZXF1ZXN0cy1jYW5jZWxsZWQuaHRtbApAQCAtMCwwICsxLDE1NyBAQAorVGhpcyB0ZXN0IG1h
a2VzIHN1cmUgdGhhdCB1bi1oYW5kbGVkIHJlcXVlc3RzIGluIGEgdHJhbnNhY3Rpb24gcmVjZWl2
ZSBvbmVycm9yIGNhbGxiYWNrcyB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLjxicj4K
KzxkaXYgaWQ9ImxvZ2dlciI+PC9kaXY+Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgbG9nKCJEb25lIik7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxvZ2dlciIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCit2YXIg
ZGF0YWJhc2U7Cit2YXIgb2JqZWN0U3RvcmU7CisKK2Z1bmN0aW9uIHNldHVwUmVxdWVzdChjb2Rl
KQoreworICAgIHZhciByZXF1ZXN0ID0gZXZhbChjb2RlKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGxvZyAoIlN1Y2Nlc3MgaGFuZGxpbmc6IFwi
IiArIGNvZGUgKyAiXCIiKTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24o
ZSkKKyAgICB7CisgICAgICAgIGxvZyAoIkVycm9yIGhhbmRsaW5nOiBcIiIgKyBjb2RlICsgIlwi
ICgiICsgZS50eXBlICsgIikiKTsKKyAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICB9
ICAgCit9CisKK3N0YXJ0VGVzdCgpOworCitmdW5jdGlvbiBzdGFydFRlc3QoKSB7CisgICAgdmFy
IGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkFib3J0UmVxdWVzdHNDYW5j
ZWxsZWREYXRhYmFzZSIsIDEpOworICAgIGNyZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBP
bGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBl
dmVudC5uZXdWZXJzaW9uKTsKKworICAgICAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3Jl
YXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICAgICAgdmFyIGRhdGFiYXNlID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RT
dG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIHNldHVwUmVxdWVzdCgib2JqZWN0U3Rv
cmUucHV0KHsgYmFyOiAnQScgfSwgMSk7Iik7CisgICAgICAgIHNldHVwUmVxdWVzdCgib2JqZWN0
U3RvcmUucHV0KHsgYmFyOiAnQicgfSwgMik7Iik7CisgICAgICAgIHNldHVwUmVxdWVzdCgib2Jq
ZWN0U3RvcmUucHV0KHsgYmFyOiAnQycgfSwgMyk7Iik7CisKKyAgICAgICAgdmVyc2lvblRyYW5z
YWN0aW9uLmFib3J0KCk7CisKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBm
dW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lv
bmNoYW5nZSB0cmFuc2FjdGlvbiBhYm9ydGVkIik7CisgICAgICAgICAgICBkYXRhYmFzZS5jbG9z
ZSgpOworICAgICAgICAgICAgY29udGludWVUZXN0MSgpOworICAgICAgICB9CisKKyAgICAgICAg
dmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICAgICAgbG9nKCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGNvbXBsZXRlIik7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKworICAg
ICAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgICAgICBsb2coIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVu
ZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICB9
CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkgeworICAgIHZhciBjcmVhdGVS
ZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJBYm9ydFJlcXVlc3RzQ2FuY2VsbGVkRGF0
YWJhc2UiLCAxKTsKKyAgICBjcmVhdGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgICAgIGxvZygiU2Vjb25kIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lv
biAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcgdmVyc2lvbiAtICIgKyBldmVudC5uZXdW
ZXJzaW9uKTsKKworICAgICAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVz
dC50cmFuc2FjdGlvbjsKKyAgICAgICAgZGF0YWJhc2UgPSBldmVudC50YXJnZXQucmVzdWx0Owor
ICAgICAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2Jq
ZWN0U3RvcmUiKTsKKyAgICAKKyAgICAgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5wdXQo
eyBiYXI6ICdBJyB9LCAxKTsiKTsKKyAgICAgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5w
dXQoeyBiYXI6ICdCJyB9LCAyKTsiKTsKKyAgICAgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9y
ZS5wdXQoeyBiYXI6ICdDJyB9LCAzKTsiKTsKKyAgICAKKyAgICAgICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbG9nKCJTZWNvbmQg
dXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAg
ICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnNpb25UcmFuc2FjdGlv
bi5vbmNvbXBsZXRlID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxvZygiU2Vjb25k
IHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZWQiKTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlVGVzdDIoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZlcnNpb25UcmFuc2Fj
dGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxvZygiU2Vjb25k
IHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGVycm9yIiArIGV2
ZW50KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rp
b24gY29udGludWVUZXN0MigpIHsKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFu
c2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0ZSIpOworICAgIG9iamVjdFN0b3Jl
ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgc2V0
dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQoMSk7Iik7CisgICAgc2V0dXBSZXF1ZXN0KCJvYmpl
Y3RTdG9yZS5nZXQoMik7Iik7CisgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQoMyk7
Iik7CisgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5wdXQoeyBiYXI6ICdEJyB9LCA0KTsi
KTsKKyAgICBzZXR1cFJlcXVlc3QoIm9iamVjdFN0b3JlLnB1dCh7IGJhcjogJ0UnIH0sIDUpOyIp
OworICAgIHNldHVwUmVxdWVzdCgib2JqZWN0U3RvcmUucHV0KHsgYmFyOiAnRicgfSwgNik7Iik7
CisKKyAgICB0cmFuc2FjdGlvbi5hYm9ydCgpOworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIGFi
b3J0ZWQiKTsKKyAgICAgICAgY29udGludWVUZXN0MygpOworICAgIH0KKworICAgIHRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBsb2coInJlYWR3cml0
ZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAg
ICB9CisKKyAgICB0cmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgbG9nKCJyZWFkd3JpdGUgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7
CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDMoKSB7
CisgICAgdmFyIHRyYW5zYWN0aW9uID0gZGF0YWJhc2UudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RT
dG9yZSIsICJyZWFkb25seSIpOworICAgIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9y
ZS5nZXQoMSk7Iik7CisgICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQoMik7Iik7Cisg
ICAgc2V0dXBSZXF1ZXN0KCJvYmplY3RTdG9yZS5nZXQoMyk7Iik7CisKKyAgICB0cmFuc2FjdGlv
bi5hYm9ydCgpOworCisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgICAgIGxvZygicmVhZG9ubHkgdHJhbnNhY3Rpb24gYWJvcnRlZCIpOworICAgICAgICBk
b25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIGxvZygicmVhZHdyaXRlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgY29t
cGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBsb2coInJlYWR3cml0ZSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30K
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2lkYnRyYW5zYWN0aW9uLW9iamVjdHN0b3JlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3Rz
dG9yZS1mYWlsdXJlcy1leHBlY3RlZC50eHQKaW5kZXggOTM5YjM4YS4uN2MzZTAzZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYnRyYW5zYWN0aW9u
LW9iamVjdHN0b3JlLWZhaWx1cmVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMt
ZXhwZWN0ZWQudHh0CkBAIC01LDcgKzUsOCBAQCBBTEVSVDogQ2F1Z2h0IGF0dGVtcHQgdG8gYWNj
ZXNzIGVtcHR5LW5hbWVkIG9iamVjdCBzdG9yZSBvbiB0aGUgdHJhbnNhY3Rpb24KIEFMRVJUOiBD
YXVnaHQgYXR0ZW1wdCB0byBhY2Nlc3MgbnVsbC1uYW1lZCBvYmplY3Qgc3RvcmUgb24gdGhlIHRy
YW5zYWN0aW9uCiBBTEVSVDogQ2F1Z2h0IGF0dGVtcHQgdG8gYWNjZXNzIG5vbi1leGlzdGFudCBv
YmplY3Qgc3RvcmUgb24gdGhlIHRyYW5zYWN0aW9uCiBBTEVSVDogQ2F1Z2h0IGF0dGVtcHQgdG8g
YWNjZXNzIHZhbGlkIG9iamVjdCBzdG9yZSBvbiBhIHRyYW5zYWN0aW9uIHRoYXQgaXMgYWxyZWFk
eSBmaW5pc2hpbmcKLUFMRVJUOiBGaXJzdCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbiBhYm9y
dAorQUxFUlQ6IHB1dCBmYWlsZWQgKGJlY2F1c2UgdHJhbnNhY3Rpb24gd2FzIGFib3J0ZWQpCitB
TEVSVDogRmlyc3QgdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciAt
IFtvYmplY3QgRXZlbnRdCiBBTEVSVDogRG9uZQogVGhpcyB0ZXN0cyBzb21lIG9idmlvdXMgZmFp
bHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgdHJhbnNhY3Rpb24ub2JqZWN0U3Rv
cmUoKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJl
cy5odG1sCmluZGV4IDkyZWFmNWEuLmMyMmNkZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJl
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ0cmFu
c2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy5odG1sCkBAIC0zMCw5ICszMCw4IEBAIHJlcXVl
c3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpCiAKICAgICB2YXIgcHV0UmVxdWVz
dCA9IG9zMS5wdXQoImJhciIsICJmb28iKTsKICAgICAKLSAgICBwdXRSZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBhbGVydCgicHV0IHVuZXhwZWN0ZWRseSBmYWls
ZWQgLSAiICsgZXZlbnQpOwotICAgICAgICBkb25lKCk7CisgICAgcHV0UmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFsZXJ0KCJwdXQgZmFpbGVkIChiZWNhdXNlIHRyYW5z
YWN0aW9uIHdhcyBhYm9ydGVkKSIpOwogICAgIH0KICAgICAKICAgICB0cnkgewpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTUtZXhwZWN0
ZWQudHh0CmluZGV4IDk0NDg4YzMuLjNiM2EwOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC01LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS1leHBlY3RlZC50eHQKQEAgLTEs
NiArMSw4IEBACiBUaGlzIHRlc3RzIGNyZWF0aW5nIGFuIGluZGV4IG9uIGFuIG9iamVjdCBzdG9y
ZSB0aGF0IGFscmVhZHkgaGFzIHJlY29yZHMsIGFuZCB0aG9zZSByZWNvcmRzIHdvdWxkIHZpb2xh
dGUgdGhlIHVuaXF1ZSBjb25zdHJhaW50IG9mIHRoZSBpbmRleC4KIChUaGUgaW5kZXggY3JlYXRp
b24gc2hvdWxkIGZhaWwpLgogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAw
IE5ldyB2ZXJzaW9uIC0gMQorRXJyb3IgZ2V0dGluZyBjdXJzb3IgY291bnQKK0Vycm9yIG9wZW5p
bmcgb3IgaXRlcmF0aW5nIGN1cnNvcgogSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJh
bnNhY3Rpb24gYWJvcnRlZCAoZXhwZWN0ZWQgYmVjYXVzZSBpbmRleCBjcmVhdGlvbiBmYWlsZWQs
IGFuZCB0aGF0IHNob3VsZCd2ZSBjYXVzZWQgdHJhbnNhY3Rpb24gYWJvcnQpCiBEb25lCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC01Lmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS5odG1sCmlu
ZGV4IGRlZTk4OGZmLi5mZDY4M2ZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtNS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pbmRleC01Lmh0bWwKQEAgLTI5LDYgKzI5LDEwIEBAIGZ1bmN0aW9uIGNo
ZWNrSW5kZXhWYWx1ZXMoKQogICAgIGNvdW50UmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKICAgICAgICAgbG9nKCJDb3VudCBpczogIiArIGNvdW50UmVxdWVzdC5yZXN1bHQpOwogICAg
IH0KKyAgICBjb3VudFJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgbG9n
KCJFcnJvciBnZXR0aW5nIGN1cnNvciBjb3VudCIpOworICAgICAgICBlLnN0b3BQcm9wYWdhdGlv
bigpOworICAgIH0KIAogICAgIHZhciBjdXJzb3JSZXF1ZXN0ID0gaW5kZXgub3BlbkN1cnNvcigp
OwogICAgIGN1cnNvclJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CkBAIC00MSw5ICs0
NSw4IEBAIGZ1bmN0aW9uIGNoZWNrSW5kZXhWYWx1ZXMoKQogICAgICAgICAgICAgZG9uZSgpOwog
ICAgIH0KICAgICBjdXJzb3JSZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKSB7Ci0gICAgICAg
IGxvZygiVW5leHBlY3RlZCBlcnJvciBvcGVuaW5nIG9yIGl0ZXJhdGluZyBjdXJzb3IiKTsKLSAg
ICAgICAgbG9nQ3Vyc29yKGN1cnNvclJlcXVlc3QucmVzdWx0KTsKLSAgICAgICAgZG9uZSgpOwor
ICAgICAgICBsb2coIkVycm9yIG9wZW5pbmcgb3IgaXRlcmF0aW5nIGN1cnNvciIpOworICAgICAg
ICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgIH0gCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNWY2YThh
Li5iNDkyMjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTUtMTEtMjMgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJREI6IFdoZW4g
YSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLCBjYWxsIG9uZXJyb3IgaGFuZGxlcnMgZm9yIGFsbCBp
bi1wcm9ncmVzcyByZXF1ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MTU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5z
ZW4uCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0LXJlcXVl
c3RzLWNhbmNlbGxlZC5odG1sCisgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZS1mYWlsdXJlcy5odG1sICh3aXRoIGNoYW5nZXMp
CisgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC01Lmh0bWwgKHdp
dGggY2hhbmdlcykKKyAgICAgICAgICAgICAgVmFyaW91cyAoY3VycmVudGx5IHNraXBwZWQpIGxl
Z2FjeSBJREIgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
RGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJh
c2U6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJh
c2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCRGF0YWJhc2U6OmRpZFN0YXJ0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ2xpZW50OjpJREJEYXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OmRpZENvbW1pdFRyYW5zYWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OndpbGxBYm9y
dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6
OmRpZEFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJE
YXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjphYm9ydCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyQW5kQ2Fu
Y2VsUmVxdWVzdHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlv
bjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQlRyYW5zYWN0aW9uOjpkaWRDcmVhdGVJbmRleE9uU2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmRpZERlbGV0
ZU9iamVjdFN0b3JlT25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJU
cmFuc2FjdGlvbjo6ZGlkRGVsZXRlSW5kZXhPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjppbW1lZGlhdGVBYm9ydCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rp
b25JbXBsLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKToK
KyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmlkYkVycm9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpp
ZGJFcnJvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc291cmNlSWRlbnRpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXNvdXJj
ZUlkZW50aWZpZXI6OmxvZ2dpbmdTdHJpbmcpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaDoKKwogMjAxNS0xMS0yMyAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFJlbW92ZSBET01Q
cm9taXNlV2l0aENhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDAyYzQ4NTMuLjNl
YTU3NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJEYXRhYmFzZUltcGwuY3BwCkBAIC0xNzEsNiArMTcxLDggQEAgUmVmUHRy
PFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCoKICAgICBhdXRvIGluZm8gPSBJREJUcmFuc2FjdGlvbkluZm86OmNs
aWVudFRyYW5zYWN0aW9uKG1fc2VydmVyQ29ubmVjdGlvbi5nZXQoKSwgb2JqZWN0U3RvcmVzLCBt
b2RlKTsKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZSgqdGhp
cywgaW5mbyk7CiAKKyAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9u
IC0gQWRkZWQgYWN0aXZlIHRyYW5zYWN0aW9uICVzIiwgaW5mby5pZGVudGlmaWVyKCkubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgbV9hY3RpdmVUcmFuc2FjdGlvbnMuc2V0
KGluZm8uaWRlbnRpZmllcigpLCAmdHJhbnNhY3Rpb24uZ2V0KCkpOwogCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCZ0cmFuc2FjdGlvbi5sZWFrUmVmKCkpOwpAQCAtMjQxLDcgKzI0Myw3IEBAIGJvb2wg
SURCRGF0YWJhc2U6OmNhblN1c3BlbmRGb3JQYWdlQ2FjaGUoKSBjb25zdAogCiBSZWY8SURCVHJh
bnNhY3Rpb24+IElEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjb25z
dCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8sIElEQk9wZW5EQlJlcXVlc3QmIHJlcXVlc3QpCiB7
Ci0gICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbiIpOworICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24gJXMiLCBpbmZvLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KTsKICAgICBBU1NFUlQoaW5mby5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6
OlZlcnNpb25DaGFuZ2UpOwpAQCAtMjU2LDE1ICsyNTgsMTkgQEAgUmVmPElEQlRyYW5zYWN0aW9u
PiBJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJh
bnNhY3QKIAogdm9pZCBJREJEYXRhYmFzZTo6ZGlkU3RhcnRUcmFuc2FjdGlvbihJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpk
aWRTdGFydFRyYW5zYWN0aW9uIik7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpk
aWRTdGFydFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbik7CiAKKyAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGNsaWVudCB0
byBoYXZlIGFib3J0ZWQgYSB0cmFuc2FjdGlvbiBiZWZvcmUgdGhlIHNlcnZlciByZXBsaWVzIGJh
Y2sgdGhhdCBpdCBoYXMgc3RhcnRlZC4KKyAgICBpZiAobV9hYm9ydGluZ1RyYW5zYWN0aW9ucy5j
b250YWlucyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgbV9hY3RpdmVUcmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCksICZ0cmFuc2FjdGlvbik7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2U6OndpbGxDb21t
aXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0gICAgTE9HKElu
ZGV4ZWREQiwgIklEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJhbnNhY3Rpb24iKTsKKyAgICBMT0co
SW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OndpbGxDb21taXRUcmFuc2FjdGlvbiAlcyIsIHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCiAgICAgYXV0byByZWZUcmFuc2FjdGlvbiA9IG1fYWN0aXZlVHJhbnNhY3Rpb25zLnRha2Uo
dHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUKHJlZlRyYW5zYWN0
aW9uKTsKQEAgLTI3Myw3ICsyNzksNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp3aWxsQ29tbWl0VHJh
bnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogCiB2b2lkIElEQkRhdGFiYXNl
OjpkaWRDb21taXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7Ci0g
ICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaWRDb21taXRUcmFuc2FjdGlvbiIpOwor
ICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24gJXMi
LCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIAogICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9PSAmdHJhbnNh
Y3Rpb24pCiAgICAgICAgIG1faW5mby5zZXRWZXJzaW9uKHRyYW5zYWN0aW9uLmluZm8oKS5uZXdW
ZXJzaW9uKCkpOwpAQCAtMjgzLDcgKzI4OSw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpZENvbW1p
dFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIAogdm9pZCBJREJEYXRh
YmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQog
ewotICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24i
KTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OndpbGxBYm9ydFRyYW5zYWN0aW9u
ICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKICAgICBhdXRvIHJlZlRyYW5zYWN0aW9uID0gbV9hY3RpdmVUcmFuc2Fj
dGlvbnMudGFrZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQo
cmVmVHJhbnNhY3Rpb24pOwpAQCAtMjkyLDcgKzI5OCw3IEBAIHZvaWQgSURCRGF0YWJhc2U6Ondp
bGxBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIAogdm9pZCBJ
REJEYXRhYmFzZTo6ZGlkQWJvcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24pCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0
aW9uIik7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0
aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAodHJhbnNhY3Rpb24uaXNWZXJzaW9uQ2hhbmdlKCkp
IHsKICAgICAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwpA
QCAtMzA0LDcgKzMxMCw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmRpZEFib3J0VHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogCiB2b2lkIElEQkRhdGFiYXNlOjpkaWRDb21t
aXRPckFib3J0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewotICAg
IExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRyYW5zYWN0aW9u
Iik7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaWRDb21taXRPckFib3J0VHJh
bnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
biA9PSAmdHJhbnNhY3Rpb24pCiAgICAgICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKaW5kZXggZTE3YmFjYS4uYjJlOWY1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QlRyYW5zYWN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAgLTE2NSwyMCArMTY1LDYgQEAgUmVm
UHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBvYmplY3QKICAgICByZXR1cm4gYWRvcHRSZWYoJm9iamVjdFN0b3JlLmxl
YWtSZWYoKSk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246OmltbWVkaWF0ZUFib3J0KCkKLXsK
LSAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmltbWVkaWF0ZUFib3J0Iik7Ci0K
LSAgICBpZiAoaXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fc3RhdGUgPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uU3RhdGU6OkFib3J0aW5nOwotICAgIG1f
ZGF0YWJhc2UtPndpbGxBYm9ydFRyYW5zYWN0aW9uKCp0aGlzKTsKLQotICAgIGF1dG8gb3BlcmF0
aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIG51bGxwdHIsICZJREJUcmFu
c2FjdGlvbjo6YWJvcnRPblNlcnZlcik7Ci0gICAgYWJvcnRPblNlcnZlcigqb3BlcmF0aW9uKTsK
LX0KLQogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnQoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjphYm9ydCIpOwpAQCAtMTkxLDE0ICsx
NzcsMjggQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnQoRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgbV9zdGF0ZSA9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25TdGF0ZTo6QWJvcnRpbmc7CiAgICAg
bV9kYXRhYmFzZS0+d2lsbEFib3J0VHJhbnNhY3Rpb24oKnRoaXMpOwogCi0gICAgYXV0byBvcGVy
YXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgbnVsbHB0ciwgJklEQlRy
YW5zYWN0aW9uOjphYm9ydE9uU2VydmVyKTsKKyAgICBtX2Fib3J0UXVldWUuc3dhcChtX3RyYW5z
YWN0aW9uT3BlcmF0aW9uUXVldWUpOworCisgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFu
c2FjdGlvbk9wZXJhdGlvbigqdGhpcywgbnVsbHB0ciwgJklEQlRyYW5zYWN0aW9uOjphYm9ydE9u
U2VydmVyQW5kQ2FuY2VsUmVxdWVzdHMpOwogICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURjo6bW92
ZShvcGVyYXRpb24pKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlcihU
cmFuc2FjdGlvbk9wZXJhdGlvbiYpCit2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydE9uU2VydmVy
QW5kQ2FuY2VsUmVxdWVzdHMoVHJhbnNhY3Rpb25PcGVyYXRpb24mKQogewotICAgIExPRyhJbmRl
eGVkREIsICJJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlciIpOworICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzIik7CisK
KyAgICBBU1NFUlQobV90cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlLmlzRW1wdHkoKSk7CisKICAg
ICBzZXJ2ZXJDb25uZWN0aW9uKCkuYWJvcnRUcmFuc2FjdGlvbigqdGhpcyk7CisKKyAgICBJREJF
cnJvciBlcnJvcihJREJFeGNlcHRpb25Db2RlOjpBYm9ydEVycm9yKTsKKyAgICBmb3IgKGF1dG8m
IG9wZXJhdGlvbiA6IG1fYWJvcnRRdWV1ZSkKKyAgICAgICAgb3BlcmF0aW9uLT5jb21wbGV0ZWQo
SURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIGVycm9yKSk7CisK
KyAgICAvLyBTaW5jZSB3ZSdyZSBhYm9ydGluZywgdGhpcyBhYm9ydE9uU2VydmVyQW5kQ2FuY2Vs
UmVxdWVzdHMoKSBvcGVyYXRpb24gc2hvdWxkIGJlIHRoZSBvbmx5CisgICAgLy8gaW4tcHJvZ3Jl
c3Mgb3BlcmF0aW9uLCBhbmQgaXQgc2hvdWxkIGJlIGltcG9zc2libGUgdG8gaGF2ZSBxdWV1ZWQg
YW55IGZ1cnRoZXIgb3BlcmF0aW9ucy4KKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbk9wZXJhdGlv
bk1hcC5zaXplKCkgPT0gMSk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25PcGVyYXRpb25RdWV1
ZS5pc0VtcHR5KCkpOwogfQogCiBjb25zdCBjaGFyKiBJREJUcmFuc2FjdGlvbjo6YWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXQKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZENyZWF0ZU9i
amVjdFN0b3JlT25TZXJ2ZXIiKTsKIAotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0RGF0YSwgcmVz
dWx0RGF0YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6Q3JlYXRlT2JqZWN0U3RvcmVTdWNjZXNz
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERhdGEsIHJlc3VsdERhdGEudHlwZSgpID09IElE
QlJlc3VsdFR5cGU6OkNyZWF0ZU9iamVjdFN0b3JlU3VjY2VzcyB8fCByZXN1bHREYXRhLnR5cGUo
KSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CiB9CiAKIFJlZjxJREJJbmRleD4gSURCVHJhbnNh
Y3Rpb246OmNyZWF0ZUluZGV4KElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgSURC
SW5kZXhJbmZvJiBpbmZvKQpAQCAtNDU4LDggKzQ1OCwxNSBAQCB2b2lkIElEQlRyYW5zYWN0aW9u
OjpkaWRDcmVhdGVJbmRleE9uU2VydmVyKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
CiAgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkNyZWF0ZUluZGV4
U3VjY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSWYgaW5kZXggY3JlYXRpb24gZmFp
bGVkLCB0aGUgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZC4KLSAgICBpbW1lZGlhdGVBYm9ydCgpOwor
ICAgIEFTU0VSVChyZXN1bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpFcnJvcik7CisK
KyAgICAvLyBUaGlzIG9wZXJhdGlvbiBtaWdodCBoYXZlIGZhaWxlZCBiZWNhdXNlIHRoZSB0cmFu
c2FjdGlvbiBpcyBhbHJlYWR5IGFib3J0aW5nLgorICAgIGlmIChtX3N0YXRlID09IEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25TdGF0ZTo6QWJvcnRpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IE90aGVyd2lzZSwgZmFpbHVyZSB0byBjcmVhdGUgYW4gaW5kZXggZm9yY2VkIGFib3J0aW9uIG9m
IHRoZSB0cmFuc2FjdGlvbi4KKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIGFib3J0KGVjKTsK
IH0KIAogUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3Rv
cmUsIGNvbnN0IElEQkN1cnNvckluZm8mIGluZm8pCkBAIC01ODUsNiArNTkyLDEzIEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IElEQlJlc3VsdERhCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9u
OjpkaWRHZXRSZWNvcmRPblNlcnZlciIpOwogCisgICAgaWYgKHJlc3VsdERhdGEudHlwZSgpID09
IElEQlJlc3VsdFR5cGU6OkVycm9yKSB7CisgICAgICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRl
ZChyZXN1bHREYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChyZXN1
bHREYXRhLnR5cGUoKSA9PSBJREJSZXN1bHRUeXBlOjpHZXRSZWNvcmRTdWNjZXNzKTsKKwogICAg
IGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0ID0gcmVzdWx0RGF0YS5nZXRSZXN1bHQoKTsKIAog
ICAgIGlmIChyZXF1ZXN0LnNvdXJjZUluZGV4SWRlbnRpZmllcigpICYmIHJlcXVlc3QucmVxdWVz
dGVkSW5kZXhSZWNvcmRUeXBlKCkgPT0gSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGU6OktleSkg
ewpAQCAtNzYwLDcgKzc3NCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0
b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwKIHZvaWQgSURCVHJh
bnNhY3Rpb246OmRpZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRp
ZERlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIiKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdERh
dGEsIHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkRlbGV0ZU9iamVjdFN0b3Jl
U3VjY2Vzcyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRhLnR5cGUo
KSA9PSBJREJSZXN1bHRUeXBlOjpEZWxldGVPYmplY3RTdG9yZVN1Y2Nlc3MgfHwgcmVzdWx0RGF0
YS50eXBlKCkgPT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0
aW9uOjpkZWxldGVJbmRleCh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgaW5kZXhOYW1lKQpAQCAtNzg0LDcgKzc5OCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
OmRlbGV0ZUluZGV4T25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29u
c3QKIHZvaWQgSURCVHJhbnNhY3Rpb246OmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIoY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNh
Y3Rpb246OmRpZERlbGV0ZUluZGV4T25TZXJ2ZXIiKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dERhdGEsIHJlc3VsdERhdGEudHlwZSgpID09IElEQlJlc3VsdFR5cGU6OkRlbGV0ZUluZGV4U3Vj
Y2Vzcyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHREYXRhLCByZXN1bHREYXRhLnR5cGUoKSA9
PSBJREJSZXN1bHRUeXBlOjpEZWxldGVJbmRleFN1Y2Nlc3MgfHwgcmVzdWx0RGF0YS50eXBlKCkg
PT0gSURCUmVzdWx0VHlwZTo6RXJyb3IpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvcGVy
YXRpb25EaWRDb21wbGV0ZShUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0
aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRy
YW5zYWN0aW9uSW1wbC5oCmluZGV4IGQzNzA0ODAuLmZjYjE5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rp
b25JbXBsLmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIFJlZjxJREJSZXF1ZXN0
PiByZXF1ZXN0SW5kZXhSZWNvcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkluZGV4Jiwg
SW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogCiAg
ICAgdm9pZCBjb21taXRPblNlcnZlcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYpOwotICAgIHZvaWQg
YWJvcnRPblNlcnZlcihUcmFuc2FjdGlvbk9wZXJhdGlvbiYpOworICAgIHZvaWQgYWJvcnRPblNl
cnZlckFuZENhbmNlbFJlcXVlc3RzKFRyYW5zYWN0aW9uT3BlcmF0aW9uJik7CiAKICAgICB2b2lk
IGNyZWF0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mKTsKICAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlT25TZXJ2
ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYpOwpAQCAtMTgyLDggKzE4Miw2IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNjaGVkdWxlT3BlcmF0aW9uVGltZXIoKTsKIAotICAgIHZvaWQgaW1tZWRpYXRl
QWJvcnQoKTsKLQogICAgIFJlZjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsKICAgICBJREJUcmFu
c2FjdGlvbkluZm8gbV9pbmZvOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+
IG1fb3JpZ2luYWxEYXRhYmFzZUluZm87CkBAIC0xOTksNiArMTk3LDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gbV9vcGVuREJSZXF1ZXN0OwogCiAgICAgRGVxdWU8
UmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVl
OworICAgIERlcXVlPFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4+IG1fYWJvcnRRdWV1ZTsK
ICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgUmVmUHRyPFRyYW5zYWN0aW9uT3Bl
cmF0aW9uPj4gbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcDsKIAogICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+PiBtX3JlZmVyZW5jZWRPYmplY3RTdG9yZXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURC
QmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGQ4NjMyYjEuLmI1YzMzZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC05NSw3ICs5NSw3IEBAIElEQkVycm9y
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2Fj
dGlvbkluZm8mIGluZm8pCiAKIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YWJvcnRU
cmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5SURCQmFja2luZ1N0b3JlOjphYm9y
dFRyYW5zYWN0aW9uIik7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9y
ZTo6YWJvcnRUcmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5z
YWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKCF0cmFuc2FjdGlv
bikKQEAgLTEwOCw3ICsxMDgsNyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmFi
b3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cgogCiBJREJFcnJv
ciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIExPRyhJbmRleGVk
REIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uIik7CisgICAgTE9H
KEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y29tbWl0VHJhbnNhY3Rpb24gLSAl
cyIsIHRyYW5zYWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlv
bklkZW50aWZpZXIpOwogICAgIGlmICghdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAppbmRleCA0NTJhNDcw
Li43NWVjMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJFcnJvci5jcHAKQEAgLTY3LDYgKzY3LDEwIEBAIHN0YXRpYyBjb25zdCBTdHJp
bmcmIGlkYkVycm9yTmFtZShJREJFeGNlcHRpb25Db2RlIGNvZGUpCiAgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJEYXRhQ2xvbmVFcnJv
ciIpOwogICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgfQorICAgIGNhc2UgSURCRXhjZXB0aW9u
Q29kZTo6QWJvcnRFcnJvcjogeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5n
PiBlbnRyeSA9IEFTQ0lJTGl0ZXJhbCgiQWJvcnRFcnJvciIpOworICAgICAgICByZXR1cm4gZW50
cnk7CisgICAgfQogICAgIGNhc2UgSURCRXhjZXB0aW9uQ29kZTo6Tm9uZToKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CkBAIC0xMDksNiArMTEzLDEwIEBAIHN0
YXRpYyBjb25zdCBTdHJpbmcmIGlkYkVycm9yRGVzY3JpcHRpb24oSURCRXhjZXB0aW9uQ29kZSBj
b2RlKQogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRyeSA9IEFTQ0lJ
TGl0ZXJhbCgiRGF0YSBiZWluZyBzdG9yZWQgY291bGQgbm90IGJlIGNsb25lZCBieSB0aGUgc3Ry
dWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobS4iKTsKICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAg
IH0KKyAgICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OkFib3J0RXJyb3I6IHsKKyAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIlRyYW5zYWN0
aW9uIHdhcyBhYm9ydGVkIik7CisgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICB9CiAgICAgY2Fz
ZSBJREJFeGNlcHRpb25Db2RlOjpOb25lOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JREJFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQkVycm9yLmgKaW5kZXggMmU3NGY0ZS4uNmY2MTAxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgZW51bSBjbGFzcyBJREJFeGNlcHRpb25Db2RlIHsKICAgICAvLyBJbmRleGVkIERC
IGV4aXN0aW5nIGV4Y2VwdGlvbiBjb2RlcyB3aXRoIElEQi1zcGVjaWZpYyBlcnJvciBtZXNzYWdl
czoKICAgICBJbnZhbGlkU3RhdGVFcnJvciwKICAgICBEYXRhQ2xvbmVFcnJvciwKKyAgICBBYm9y
dEVycm9yLAogfTsKIAogY2xhc3MgSURCRXJyb3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlm
aWVyLmNwcAppbmRleCAxN2UwMzAyLi4wYjFiNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVu
dGlmaWVyLmNwcApAQCAtOTQsNiArOTQsMTIgQEAgYm9vbCBJREJSZXNvdXJjZUlkZW50aWZpZXI6
OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICAgICAgJiYgbV9yZXNvdXJjZU51
bWJlciA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7CiB9CiAKKyNpZm5k
ZWYgTkRFQlVHCitTdHJpbmcgSURCUmVzb3VyY2VJZGVudGlmaWVyOjpsb2dnaW5nU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIjwlIiBQUkl1NjQiLCAlIiBQUkl1
NjQiPiIsIG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fcmVzb3VyY2VOdW1iZXIpOworfQor
I2VuZGlmCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAppbmRleCA5MzU0NjI0Li43
YTYyOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCkBAIC03Miw2ICs3MiwxMCBA
QCBwdWJsaWM6CiAKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgaXNvbGF0ZWRDb3B5KCkgY29u
c3Q7CiAKKyNpZm5kZWYgTkRFQlVHCisgICAgU3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsK
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIElEQlJlc291cmNlSWRlbnRpZmllcigpID0gZGVsZXRl
OwogICAgIElEQlJlc291cmNlSWRlbnRpZmllcih1aW50NjRfdCBjb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>