<?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>49709</bug_id>
          
          <creation_ts>2010-11-17 19:50:20 -0800</creation_ts>
          <short_desc>Move fileapi test files under http/tests/local to a new subdirectory under it</short_desc>
          <delta_ts>2010-11-18 15:35:48 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>dimich</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>310681</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-11-17 19:50:20 -0800</bug_when>
    <thetext>Move fileapi test files under http/tests/local to a new subdirectory under it. This allows us to add new test files easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>310684</commentid>
    <comment_count>1</comment_count>
      <attachid>74199</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-11-17 19:54:01 -0800</bug_when>
    <thetext>Created attachment 74199
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311114</commentid>
    <comment_count>2</comment_count>
      <attachid>74298</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-11-18 15:15:19 -0800</bug_when>
    <thetext>Created attachment 74298
Proposed Patch

Fix entries in Skipped files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311131</commentid>
    <comment_count>3</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-11-18 15:35:48 -0800</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/72340.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74199</attachid>
            <date>2010-11-17 19:54:01 -0800</date>
            <delta_ts>2010-11-18 15:15:19 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>49709</filename>
            <type>text/plain</type>
            <size>29262</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNDYxYTgzLi42MGJlYmI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTEt
MTcgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZmlsZWFwaSB0ZXN0IGZpbGVzIHVuZGVy
IGh0dHAvdGVzdHMvbG9jYWwgdG8gYSBuZXcgc3ViZGlyZWN0b3J5IHVuZGVyIGl0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTcwOQorCisgICAgICAg
ICogaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3Jlc291cmNlcy9zZXR1cC1maWxlLWlucHV0LWVs
ZW1lbnQtZm9yLWRyYWcuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
Y2FsL3Jlc291cmNlcy9zZXR1cC1maWxlLWlucHV0LWVsZW1lbnQtZm9yLWRyYWcuanMuCisgICAg
ICAgICogaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2NyaXB0LXRlc3Rz
L3NlbmQtZHJhZ2dlZC1maWxlLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2NhbC9yZXNvdXJjZXMvc2VuZC1kcmFnZ2VkLWZpbGUuanMuCisgICAgICAgICogaHR0cC90
ZXN0cy9sb2NhbC9maWxlYXBpL3NjcmlwdC10ZXN0cy9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUu
anM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3Jlc291cmNlcy9z
ZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuanMuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9m
aWxlYXBpL3NlbmQtZHJhZ2dlZC1maWxlLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLWRyYWdnZWQtZmlsZS5odG1s
OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWRyYWdnZWQt
ZmlsZS5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNl
ZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0LgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUu
aHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1zbGlj
ZWQtZHJhZ2dlZC1maWxlLmh0bWwuCisKIDIwMTAtMTEtMTcgIERhdmlkIExldmluICA8bGV2aW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVwZGF0ZSBjaHJvbWl1bSByZXN1bHRzIGFmdGVyIHI3
MjEyNSBhbmQgcjcyMTczLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Nh
bC9maWxlYXBpL3Jlc291cmNlcy9zZXR1cC1maWxlLWlucHV0LWVsZW1lbnQtZm9yLWRyYWcuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvcmVzb3VyY2VzL3NldHVwLWZp
bGUtaW5wdXQtZWxlbWVudC1mb3ItZHJhZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5jNTFjNjgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2NhbC9maWxlYXBpL3Jlc291cmNlcy9zZXR1cC1maWxlLWlucHV0LWVsZW1lbnQtZm9yLWRy
YWcuanMKQEAgLTAsMCArMSw0NiBAQAordmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlucHV0Iik7CitmaWxlSW5wdXQudHlwZSA9ICJmaWxlIjsKK2ZpbGVJbnB1dC5zdHls
ZS53aWR0aCA9ICIxMDBweCI7CitmaWxlSW5wdXQuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKKy8v
IEltcG9ydGFudCB0aGF0IHdlIHB1dCB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGRvYyBzbyB0aGF0
IGxvZ2dpbmcgZG9lcyBub3QgY2F1c2UgaXQgdG8gZ28gb3V0IG9mIHZpZXcgKHdoZXJlIGl0IGNh
bid0IGJlIGRyYWdnZWQgdG8pCitkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShmaWxlSW5wdXQs
IGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2ZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVy
KCJkcmFnZW50ZXIiLCBmdW5jdGlvbigpIHsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwor
fSwgZmFsc2UpOworCitmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLCBmdW5j
dGlvbigpIHsKKyAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJjb3B5IjsKKyAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfSwgZmFsc2UpOworCit2YXIgZmlsZUlucHV0RHJv
cENhbGxiYWNrID0gbnVsbDsKK2ZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJkcm9wIiwgZnVu
Y3Rpb24oKSB7CisgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmRleE9mKCJGaWxl
cyIpICE9IC0xICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPT0gMSkKKyAgICAg
ICAgdGVzdFBhc3NlZCgiZXZlbnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qg
b24gZHJvcC4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQuZGF0YVRy
YW5zZmVyIGRvZXMgbm90IGNvbnRhaW4gYSBGaWxlIG9iamVjdCBvbiBkcm9wLiIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgZmlsZUlucHV0RHJvcENhbGxiYWNrKGV2ZW50LmRhdGFU
cmFuc2Zlci5maWxlc1swXSk7CisKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfSwgZmFs
c2UpOworCitmdW5jdGlvbiBzZXRGaWxlSW5wdXREcm9wQ2FsbGJhY2soZmlsZUlucHV0RHJvcENh
bGxiYWNrRnVuYykKK3sKKyAgICBmaWxlSW5wdXREcm9wQ2FsbGJhY2sgPSBmaWxlSW5wdXREcm9w
Q2FsbGJhY2tGdW5jOworfQorCitmdW5jdGlvbiBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChl
bGVtZW50KQoreworICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCAr
IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhj
ZW50ZXJYLCBjZW50ZXJZKTsKK30KKworZnVuY3Rpb24gcmVtb3ZlRmlsZUlucHV0RWxlbWVudCgp
Cit7CisgICAgZmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZmlsZUlucHV0KQorfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NjcmlwdC10
ZXN0cy9URU1QTEFURS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBp
L3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmE3YTUzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvY2FsL2ZpbGVhcGkvc2NyaXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKQEAgLTAsMCArMSwxNCBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2V0dXAtZmlsZS1pbnB1dC1lbGVtZW50LWZvci1kcmFn
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zY3JpcHQtdGVzdHMvc2VuZC1kcmFnZ2VkLWZpbGUu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2NyaXB0LXRlc3RzL3Nl
bmQtZHJhZ2dlZC1maWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRi
M2YwMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2Zp
bGVhcGkvc2NyaXB0LXRlc3RzL3NlbmQtZHJhZ2dlZC1maWxlLmpzCkBAIC0wLDAgKzEsMzIgQEAK
K2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBzZW5kaW5nIGEgZHJhZ2dlZCBmaWxlIHZpYSBYTUxIdHRw
UmVxdWVzdC4iKTsKKworZnVuY3Rpb24gb25GaWxlRHJvcChmaWxlKQoreworICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3BlbigiUE9TVCIsICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3Bvc3QtZWNoby5jZ2kiLCBmYWxz
ZSk7CisgICAgeGhyLnNlbmQoZmlsZSk7CisgICAgaWYgKHhoci5yZXNwb25zZVRleHQgPT0gIjEy
MzQ1Njc4OTAiKQorICAgICAgICB0ZXN0UGFzc2VkKCJFeHBlY3RlZCByZXNwb25zZSBkYXRhIHJl
Y2VpdmVkLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3RlZCByZXNw
b25zZSBkYXRhIHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dCk7CisKKyAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBzZXRGaWxl
SW5wdXREcm9wQ2FsbGJhY2sob25GaWxlRHJvcCk7CisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFn
V2l0aEZpbGVzKFsiLi4vcmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQiXSk7Cisg
ICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZmlsZUlucHV0KTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVVwKCk7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBydW5UZXN0
KCk7CisgICAgLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCisgICAgcmVtb3ZlRmlsZUlucHV0
RWxlbWVudCgpOworfSBlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKCJUaGlzIHRlc3QgaXMgbm90IGlu
dGVyYWN0aXZlLCBwbGVhc2UgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlIik7Cit9CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2NhbC9maWxlYXBpL3NjcmlwdC10ZXN0cy9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2NyaXB0LXRlc3RzL3Nl
bmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4xYzE0ZjYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2NhbC9maWxlYXBpL3NjcmlwdC10ZXN0cy9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuanMKQEAg
LTAsMCArMSwxNjggQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGZvciBzbGljaW5nIGEgZHJhZ2dlZCBm
aWxlIGFuZCBzZW5kaW5nIGl0IHZpYSBYTUxIdHRwUmVxdWVzdC4iKTsKKwordmFyIHRlbXBGaWxl
Q29udGVudCA9ICIxMjM0NTY3ODkwIjsKK3ZhciB0ZW1wRmlsZU5hbWUgPSAic2VuZC1zbGljZS1k
cmFnZ2VkLWZpbGUudG1wIjsKK3ZhciBzdWJmaWxlOworCitmdW5jdGlvbiB1cGxvYWRGaWxlKGZp
bGUsIGZpbGVQYXRoLCBzdGFydCwgbGVuZ3RoLCBleHBlY3RlZEV4Y2VwdGlvbikKK3sKKyAgICB2
YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oIlBPU1QiLCAiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9wb3N0LWFuZC12ZXJpZnkuY2dpP3BhdGg9IiAr
IGZpbGVQYXRoICsgIiZzdGFydD0iICsgc3RhcnQgKyAiJmxlbmd0aD0iICsgbGVuZ3RoLCBmYWxz
ZSk7CisKKyAgICB2YXIgcGFzc2VkOworICAgIHZhciBtZXNzYWdlOworICAgIHRyeSB7CisgICAg
ICAgIHhoci5zZW5kKGZpbGUpOworICAgICAgICBpZiAoZXhwZWN0ZWRFeGNlcHRpb24pIHsKKyAg
ICAgICAgICAgIHBhc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgbWVzc2FnZSA9ICJVbmV4cGVj
dGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2ZWQ6ICIgKyB4aHIucmVzcG9uc2VUZXh0ICsgIi4gRXhw
ZWN0aW5nIGV4Y2VwdGlvbiB0aHJvd24iOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKHhoci5yZXNwb25zZVRleHQgPT0gIk9LIikgeworICAgICAgICAgICAgICAgIHBhc3NlZCA9
IHRydWU7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJFeHBlY3RlZCByZXNwb25zZSBkYXRh
IHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dDsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2ZWQ6ICIgKyB4aHIucmVzcG9uc2VUZXh0
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAg
aWYgKGV4cGVjdGVkRXhjZXB0aW9uKSB7CisgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAg
ICAgICAgICAgbWVzc2FnZSA9ICJFeHBlY3RlZCBleGNlcHRpb24gdGhyb3duOiAiICsgZXg7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IG1lc3NhZ2UgPSAiVW5leHBlY3RlZCBleGNlcHRpb24gdGhyb3duOiAiICsgZXg7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAocGFzc2VkKQorICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2Up
OworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChtZXNzYWdlKTsKK30KKworZnVuY3Rpb24g
Y3JlYXRlVGVtcEZpbGUoZmlsZURhdGEpCit7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICAgIHhoci5vcGVuKCJQT1NUIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNv
dXJjZXMvd3JpdGUtdGVtcC1maWxlLnBocD9maWxlbmFtZT0iICsgdGVtcEZpbGVOYW1lICsgIiZk
YXRhPSIgKyBmaWxlRGF0YSwgZmFsc2UpOworICAgIHhoci5zZW5kKCk7CisgICAgaWYgKHhoci5z
dGF0dXMgIT0gMjAwKSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgcmVzcG9uc2Ug
c3RhdHVzIHJlY2VpdmVkOiAiICsgeGhyLnN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICB2YXIgdmFsdWVzID0geGhyLnJlc3BvbnNlVGV4dC5zcGxpdCgnXG4nKTsKKyAgICBp
ZiAoeGhyLnJlc3BvbnNlVGV4dC5pbmRleE9mKCJGQUlMIikgPT0gMCkgeworICAgICAgICB0ZXN0
RmFpbGVkKCJVbmV4cGVjdGVkIHJlc3BvbnNlIHRleHQgcmVjZWl2ZWQ6ICIgKyB4aHIucmVzcG9u
c2VUZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJldHVybiB4aHIucmVzcG9u
c2VUZXh0OworfQorCitmdW5jdGlvbiB0b3VjaFRlbXBGaWxlKCkKK3sKKyAgICB2YXIgeGhyID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oIlBPU1QiLCAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3Jlc291cmNlcy90b3VjaC10ZW1wLWZpbGUucGhwP2ZpbGVuYW1lPSIgKyB0ZW1w
RmlsZU5hbWUsIGZhbHNlKTsKKyAgICB4aHIuc2VuZCgpOworfQorCitmdW5jdGlvbiByZW1vdmVU
ZW1wRmlsZSgpCit7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHho
ci5vcGVuKCJQT1NUIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvcmVzZXQtdGVt
cC1maWxlLnBocD9maWxlbmFtZT0iICsgdGVtcEZpbGVOYW1lLCBmYWxzZSk7CisgICAgeGhyLnNl
bmQoKTsKK30KKworZnVuY3Rpb24gY29tcHV0ZUV4cGVjdGVkTGVuZ3RoKGZpbGVMZW5ndGgsIHN0
YXJ0LCBsZW5ndGgpCit7CisgICAgdmFyIGV4cGVjdGVkTGVuZ3RoID0gbGVuZ3RoOworICAgIGlm
IChzdGFydCArIGxlbmd0aCA+IGZpbGVMZW5ndGgpIHsKKyAgICAgICAgaWYgKHN0YXJ0ID49IGZp
bGVMZW5ndGgpCisgICAgICAgICAgICBleHBlY3RlZExlbmd0aCA9IDA7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGV4cGVjdGVkTGVuZ3RoID0gZmlsZUxlbmd0aCAtIHN0YXJ0OworICAgIH0K
KyAgICByZXR1cm4gZXhwZWN0ZWRMZW5ndGg7Cit9CisKK2Z1bmN0aW9uIG9uU3RhYmxlRmlsZURy
b3AoZmlsZSwgZmlsZVBhdGgsIGZpbGVMZW5ndGgsIHN0YXJ0LCBsZW5ndGgsIGNvbnRlbnRUeXBl
KQoreworICAgIC8vIFNsaWNlIHRoZSBmaWxlLgorICAgIHN1YmZpbGUgPSBmaWxlLnNsaWNlKHN0
YXJ0LCBsZW5ndGgsIGNvbnRlbnRUeXBlKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJzdWJmaWxl
LnNpemUiLCBjb21wdXRlRXhwZWN0ZWRMZW5ndGgoZmlsZUxlbmd0aCwgc3RhcnQsIGxlbmd0aCkp
OworICAgIHNob3VsZEJlKCJzdWJmaWxlLnR5cGUiLCAoY29udGVudFR5cGUgIT0gdW5kZWZpbmVk
ICYmIGNvbnRlbnRUeXBlICE9IG51bGwpID8gJyInICsgY29udGVudFR5cGUgKyAnIicgOiAnIiIn
KTsKKworICAgIC8vIFVwbG9hZCB0aGUgc2xpY2VkIGZpbGUuCisgICAgdXBsb2FkRmlsZShzdWJm
aWxlLCBmaWxlUGF0aCwgc3RhcnQsIGxlbmd0aCwgZmFsc2UpOworfQorCitmdW5jdGlvbiBkcmFn
QW5kU2xpY2VTdGFibGVGaWxlKGZpbGVQYXRoLCBmaWxlTGVuZ3RoLCBzdGFydCwgbGVuZ3RoLCBj
b250ZW50VHlwZSkKK3sKKyAgICBzZXRGaWxlSW5wdXREcm9wQ2FsbGJhY2soZnVuY3Rpb24oZmls
ZSkgeyBvblN0YWJsZUZpbGVEcm9wKGZpbGUsICIuLi9sb2NhbC9maWxlYXBpLyIgKyBmaWxlUGF0
aCwgZmlsZUxlbmd0aCwgc3RhcnQsIGxlbmd0aCwgY29udGVudFR5cGUpOyB9KTsKKyAgICBldmVu
dFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoW2ZpbGVQYXRoXSk7CisgICAgbW92ZU1vdXNlVG9D
ZW50ZXJPZkVsZW1lbnQoZmlsZUlucHV0KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9
CisKK2Z1bmN0aW9uIG9uVW5zdGFibGVGaWxlRHJvcChmaWxlLCBmaWxlUGF0aCwgZmlsZUxlbmd0
aCwgc3RhcnQsIGxlbmd0aCwgY29udGVudFR5cGUpCit7CisgICAgLy8gU2xpY2UgdGhlIGZpbGUu
CisgICAgc3ViZmlsZSA9IGZpbGUuc2xpY2Uoc3RhcnQsIGxlbmd0aCwgY29udGVudFR5cGUpOwor
ICAgIHNob3VsZEV2YWx1YXRlVG8oInN1YmZpbGUuc2l6ZSIsIGNvbXB1dGVFeHBlY3RlZExlbmd0
aChmaWxlTGVuZ3RoLCBzdGFydCwgbGVuZ3RoKSk7CisgICAgc2hvdWxkQmUoInN1YmZpbGUudHlw
ZSIsIChjb250ZW50VHlwZSAhPSB1bmRlZmluZWQgJiYgY29udGVudFR5cGUgIT0gbnVsbCkgPyAn
IicgKyBjb250ZW50VHlwZSArICciJyA6ICciIicpOworICAKKyAgICAvLyBVcGxvYWQgdGhlIHNs
aWNlZCBmaWxlLgorICAgIHVwbG9hZEZpbGUoc3ViZmlsZSwgZmlsZVBhdGgsIHN0YXJ0LCBsZW5n
dGgsIGZhbHNlKTsKKworICAgIC8vIFRvdWNoIHRoZSB1bmRlcmx5aW5nIHRlbXAgZmlsZS4KKyAg
ICB0b3VjaFRlbXBGaWxlKCk7CisgICAgCisgICAgLy8gVXBsb2FkIHRoZSBzbGljZWQgZmlsZS4g
V2Ugc2hvdWxkIHJlY2VpdmUgYW4gZXhjZXB0aW9uIHNpbmNlIHRoZSBmaWxlIGhhcyBiZWVuIGNo
YW5nZWQuCisgICAgdXBsb2FkRmlsZShzdWJmaWxlLCBmaWxlUGF0aCwgc3RhcnQsIGxlbmd0aCwg
dHJ1ZSk7CisKKyAgICAvLyBSZW1vdmUgdGhlIHRlbXAgZmlsZS4KKyAgICByZW1vdmVUZW1wRmls
ZSgpOworfQorCitmdW5jdGlvbiBkcmFnQW5kU2xpY2VVbnN0YWJsZUZpbGUoc3RhcnQsIGxlbmd0
aCwgY29udGVudFR5cGUpCit7CisgICAgdmFyIHRlbXBGaWxlUGF0aCA9IGNyZWF0ZVRlbXBGaWxl
KHRlbXBGaWxlQ29udGVudCk7CisgICAgaWYgKHRlbXBGaWxlUGF0aC5sZW5ndGggPT0gMCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgc2V0RmlsZUlucHV0RHJvcENhbGxiYWNrKGZ1bmN0aW9uKGZp
bGUpIHsgb25VbnN0YWJsZUZpbGVEcm9wKGZpbGUsIHRlbXBGaWxlUGF0aCwgdGVtcEZpbGVDb250
ZW50Lmxlbmd0aCwgc3RhcnQsIGxlbmd0aCwgY29udGVudFR5cGUpOyB9KTsKKyAgICBldmVudFNl
bmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoW3RlbXBGaWxlUGF0aF0pOworICAgIG1vdmVNb3VzZVRv
Q2VudGVyT2ZFbGVtZW50KGZpbGVJbnB1dCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwor
fQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBkZWJ1ZygiVGVzdCBzbGljaW5nIGFuZCBz
ZW5kaW5nIGFuIGVtcHR5IGZpbGUuIik7CisgICAgZHJhZ0FuZFNsaWNlU3RhYmxlRmlsZSgiLi4v
cmVzb3VyY2VzL2VtcHR5LnR4dCIsIDAsIDAsIDEwKTsKKworICAgIGRlYnVnKCJUZXN0IHNsaWNp
bmcgYW5kIHNlbmRpbmcgYSBzbWFsbCBmaWxlLiIpOworICAgIGRyYWdBbmRTbGljZVN0YWJsZUZp
bGUoIi4uL3Jlc291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0IiwgMTAsIDIsIDQsIG51
bGwpOworICAgIGRyYWdBbmRTbGljZVN0YWJsZUZpbGUoIi4uL3Jlc291cmNlcy9maWxlLWZvci1k
cmFnLXRvLXNlbmQudHh0IiwgMTAsIDIsIDIwLCAidHlwZS9mb28iKTsKKyAgICBkcmFnQW5kU2xp
Y2VTdGFibGVGaWxlKCIuLi9yZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCIsIDEw
LCAxNSwgMjAsICJ0eXBlL2JhciIpOworCisgICAgLy8gVGhpcyBpcyB0byB0ZXN0IGEgZmlsZSB0
aGF0IGV4Y2VlZHMgdGhlIHJlYWQgYnVmZmVyIGxpbWl0ICgySyBpbiBNYWMpLgorICAgIGRlYnVn
KCJUZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYSBiaWcgZmlsZS4iKTsKKyAgICBkcmFnQW5kU2xp
Y2VTdGFibGVGaWxlKCIuLi9yZXNvdXJjZXMvYWJlLnBuZyIsIDEyMjQyLCAxMCwgNDApOworICAg
IGRyYWdBbmRTbGljZVN0YWJsZUZpbGUoIi4uL3Jlc291cmNlcy9hYmUucG5nIiwgMTIyNDIsIDEw
LCAzMDAwKTsKKyAgICBkcmFnQW5kU2xpY2VTdGFibGVGaWxlKCIuLi9yZXNvdXJjZXMvYWJlLnBu
ZyIsIDEyMjQyLCAzMDAwLCAxNTAwMCk7CisKKyAgICBkZWJ1ZygiVGVzdCBzbGljaW5nIGFuZCBz
ZW5kaW5nIGEgZmlsZSB0aGF0IGhhcyBiZWVuIGNoYW5nZWQgcmlnaHQgYmVmb3JlIHNlbmRpbmcu
Iik7CisgICAgZHJhZ0FuZFNsaWNlVW5zdGFibGVGaWxlKDMsIDUpOworfQorCitpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgcnVuVGVzdCgpOworICAgIC8vIENsZWFuIHVwIGFmdGVyIG91
cnNlbHZlcworICAgIHJlbW92ZUZpbGVJbnB1dEVsZW1lbnQoKTsKK30gZWxzZSB7CisgICAgdGVz
dEZhaWxlZCgiVGhpcyB0ZXN0IGlzIG5vdCBpbnRlcmFjdGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBE
dW1wUmVuZGVyVHJlZSIpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLWRyYWdn
ZWQtZmlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVh
cGkvc2VuZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY4MGIxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2VuZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTEgQEAKK1Rlc3QgZm9yIHNlbmRpbmcgYSBkcmFnZ2VkIGZpbGUgdmlhIFhNTEh0dHBS
ZXF1ZXN0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBldmVudC5kYXRh
VHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9iamVjdCBvbiBkcm9wLgorUEFTUyBFeHBlY3RlZCBy
ZXNwb25zZSBkYXRhIHJlY2VpdmVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9j
YWwvZmlsZWFwaS9zZW5kLWRyYWdnZWQtZmlsZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2NhbC9maWxlYXBpL3NlbmQtZHJhZ2dlZC1maWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uM2ExNzVkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLWRyYWdnZWQtZmlsZS5odG1sCkBAIC0wLDAg
KzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldHVwLWZpbGUtaW5wdXQtZWxlbWVudC1m
b3ItZHJhZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NlbmQtZHJh
Z2dlZC1maWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xp
Y2VkLWRyYWdnZWQtZmlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
Y2FsL2ZpbGVhcGkvc2VuZC1zbGljZWQtZHJhZ2dlZC1maWxlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzgyN2JjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQt
ZmlsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NiBAQAorVGVzdCBmb3Igc2xpY2luZyBhIGRy
YWdnZWQgZmlsZSBhbmQgc2VuZGluZyBpdCB2aWEgWE1MSHR0cFJlcXVlc3QuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitUZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYW4gZW1wdHkg
ZmlsZS4KK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24g
ZHJvcC4KK1BBU1Mgc3ViZmlsZS5zaXplIGlzIDAKK1BBU1Mgc3ViZmlsZS50eXBlIGlzICIiCitQ
QVNTIEV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2ZWQ6IE9LCitUZXN0IHNsaWNpbmcgYW5k
IHNlbmRpbmcgYSBzbWFsbCBmaWxlLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29udGFpbnMg
YSBGaWxlIG9iamVjdCBvbiBkcm9wLgorUEFTUyBzdWJmaWxlLnNpemUgaXMgNAorUEFTUyBzdWJm
aWxlLnR5cGUgaXMgIiIKK1BBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sK
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24gZHJvcC4K
K1BBU1Mgc3ViZmlsZS5zaXplIGlzIDgKK1BBU1Mgc3ViZmlsZS50eXBlIGlzICJ0eXBlL2ZvbyIK
K1BBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sKK1BBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24gZHJvcC4KK1BBU1Mgc3ViZmlsZS5z
aXplIGlzIDAKK1BBU1Mgc3ViZmlsZS50eXBlIGlzICJ0eXBlL2JhciIKK1BBU1MgRXhwZWN0ZWQg
cmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sKK1Rlc3Qgc2xpY2luZyBhbmQgc2VuZGluZyBhIGJp
ZyBmaWxlLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9iamVjdCBv
biBkcm9wLgorUEFTUyBzdWJmaWxlLnNpemUgaXMgNDAKK1BBU1Mgc3ViZmlsZS50eXBlIGlzICIi
CitQQVNTIEV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2ZWQ6IE9LCitQQVNTIGV2ZW50LmRh
dGFUcmFuc2ZlciBjb250YWlucyBhIEZpbGUgb2JqZWN0IG9uIGRyb3AuCitQQVNTIHN1YmZpbGUu
c2l6ZSBpcyAzMDAwCitQQVNTIHN1YmZpbGUudHlwZSBpcyAiIgorUEFTUyBFeHBlY3RlZCByZXNw
b25zZSBkYXRhIHJlY2VpdmVkOiBPSworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29udGFpbnMg
YSBGaWxlIG9iamVjdCBvbiBkcm9wLgorUEFTUyBzdWJmaWxlLnNpemUgaXMgOTI0MgorUEFTUyBz
dWJmaWxlLnR5cGUgaXMgIiIKK1BBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDog
T0sKK1Rlc3Qgc2xpY2luZyBhbmQgc2VuZGluZyBhIGZpbGUgdGhhdCBoYXMgYmVlbiBjaGFuZ2Vk
IHJpZ2h0IGJlZm9yZSBzZW5kaW5nLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29udGFpbnMg
YSBGaWxlIG9iamVjdCBvbiBkcm9wLgorUEFTUyBzdWJmaWxlLnNpemUgaXMgNQorUEFTUyBzdWJm
aWxlLnR5cGUgaXMgIiIKK1BBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sK
K1BBU1MgRXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93bjogRXJyb3I6IE5FVFdPUktfRVJSOiBYTUxI
dHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNjQ2ODUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2VuZC1zbGljZWQtZHJh
Z2dlZC1maWxlLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2V0
dXAtZmlsZS1pbnB1dC1lbGVtZW50LWZvci1kcmFnLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvc2VuZC1zbGljZWQtZHJhZ2dlZC1maWxlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMvc2VuZC1kcmFnZ2VkLWZpbGUuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2xvY2FsL3Jlc291cmNlcy9zZW5kLWRyYWdnZWQtZmlsZS5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZjMTEyNC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2xvY2FsL3Jlc291cmNlcy9zZW5kLWRyYWdnZWQtZmlsZS5qcworKysgL2Rl
di9udWxsCkBAIC0xLDMyICswLDAgQEAKLWRlc2NyaXB0aW9uKCJUZXN0IGZvciBzZW5kaW5nIGEg
ZHJhZ2dlZCBmaWxlIHZpYSBYTUxIdHRwUmVxdWVzdC4iKTsKLQotZnVuY3Rpb24gb25GaWxlRHJv
cChmaWxlKQotewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIu
b3BlbigiUE9TVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL3Bvc3QtZWNoby5jZ2kiLCBmYWxzZSk7Ci0gICAgeGhyLnNlbmQoZmlsZSk7Ci0gICAgaWYg
KHhoci5yZXNwb25zZVRleHQgPT0gIjEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0UGFzc2VkKCJF
eHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkLiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVz
dEZhaWxlZCgiVW5leHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiAiICsgeGhyLnJlc3Bv
bnNlVGV4dCk7Ci0KLSAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotfQotCi1mdW5jdGlvbiBy
dW5UZXN0KCkKLXsKLSAgICBzZXRGaWxlSW5wdXREcm9wQ2FsbGJhY2sob25GaWxlRHJvcCk7Ci0g
ICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKFsicmVzb3VyY2VzL2ZpbGUtZm9yLWRy
YWctdG8tc2VuZC50eHQiXSk7Ci0gICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZmlsZUlu
cHV0KTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLWlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKLSAgICBydW5UZXN0KCk7Ci0gICAgLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVz
Ci0gICAgcmVtb3ZlRmlsZUlucHV0RWxlbWVudCgpOwotfSBlbHNlIHsKLSAgICB0ZXN0RmFpbGVk
KCJUaGlzIHRlc3QgaXMgbm90IGludGVyYWN0aXZlLCBwbGVhc2UgcnVuIHVzaW5nIER1bXBSZW5k
ZXJUcmVlIik7Ci19Ci0KLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMvc2VuZC1zbGljZWQtZHJh
Z2dlZC1maWxlLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMvc2Vu
ZC1zbGljZWQtZHJhZ2dlZC1maWxlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
YmJmYjJkLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvcmVzb3Vy
Y2VzL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE2OCAr
MCwwIEBACi1kZXNjcmlwdGlvbigiVGVzdCBmb3Igc2xpY2luZyBhIGRyYWdnZWQgZmlsZSBhbmQg
c2VuZGluZyBpdCB2aWEgWE1MSHR0cFJlcXVlc3QuIik7Ci0KLXZhciB0ZW1wRmlsZUNvbnRlbnQg
PSAiMTIzNDU2Nzg5MCI7Ci12YXIgdGVtcEZpbGVOYW1lID0gInNlbmQtc2xpY2UtZHJhZ2dlZC1m
aWxlLnRtcCI7Ci12YXIgc3ViZmlsZTsKLQotZnVuY3Rpb24gdXBsb2FkRmlsZShmaWxlLCBmaWxl
UGF0aCwgc3RhcnQsIGxlbmd0aCwgZXhwZWN0ZWRFeGNlcHRpb24pCi17Ci0gICAgdmFyIHhociA9
IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHhoci5vcGVuKCJQT1NUIiwgImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9yZXNvdXJjZXMvcG9zdC1hbmQtdmVyaWZ5LmNnaT9wYXRoPSIgKyBmaWxlUGF0
aCArICImc3RhcnQ9IiArIHN0YXJ0ICsgIiZsZW5ndGg9IiArIGxlbmd0aCwgZmFsc2UpOwotCi0g
ICAgdmFyIHBhc3NlZDsKLSAgICB2YXIgbWVzc2FnZTsKLSAgICB0cnkgewotICAgICAgICB4aHIu
c2VuZChmaWxlKTsKLSAgICAgICAgaWYgKGV4cGVjdGVkRXhjZXB0aW9uKSB7Ci0gICAgICAgICAg
ICBwYXNzZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCByZXNw
b25zZSBkYXRhIHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dCArICIuIEV4cGVjdGluZyBl
eGNlcHRpb24gdGhyb3duIjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh4aHIu
cmVzcG9uc2VUZXh0ID09ICJPSyIpIHsKLSAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZl
ZDogIiArIHhoci5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIHBhc3NlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiVW5leHBl
Y3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIGlmIChleHBl
Y3RlZEV4Y2VwdGlvbikgewotICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKLSAgICAgICAgICAg
IG1lc3NhZ2UgPSAiRXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93bjogIiArIGV4OwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7Ci0gICAgICAgICAgICBtZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93bjogIiArIGV4OwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKHBhc3NlZCkKLSAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKLSAgICBl
bHNlCi0gICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRl
bXBGaWxlKGZpbGVEYXRhKQotewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
LSAgICB4aHIub3BlbigiUE9TVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL3dy
aXRlLXRlbXAtZmlsZS5waHA/ZmlsZW5hbWU9IiArIHRlbXBGaWxlTmFtZSArICImZGF0YT0iICsg
ZmlsZURhdGEsIGZhbHNlKTsKLSAgICB4aHIuc2VuZCgpOwotICAgIGlmICh4aHIuc3RhdHVzICE9
IDIwMCkgewotICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIHJlc3BvbnNlIHN0YXR1cyBy
ZWNlaXZlZDogIiArIHhoci5zdGF0dXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
dmFyIHZhbHVlcyA9IHhoci5yZXNwb25zZVRleHQuc3BsaXQoJ1xuJyk7Ci0gICAgaWYgKHhoci5y
ZXNwb25zZVRleHQuaW5kZXhPZigiRkFJTCIpID09IDApIHsKLSAgICAgICAgdGVzdEZhaWxlZCgi
VW5leHBlY3RlZCByZXNwb25zZSB0ZXh0IHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsK
LX0KLQotZnVuY3Rpb24gdG91Y2hUZW1wRmlsZSgpCi17Ci0gICAgdmFyIHhociA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOwotICAgIHhoci5vcGVuKCJQT1NUIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9yZXNvdXJjZXMvdG91Y2gtdGVtcC1maWxlLnBocD9maWxlbmFtZT0iICsgdGVtcEZpbGVOYW1l
LCBmYWxzZSk7Ci0gICAgeGhyLnNlbmQoKTsKLX0KLQotZnVuY3Rpb24gcmVtb3ZlVGVtcEZpbGUo
KQotewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub3Blbigi
UE9TVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL3Jlc2V0LXRlbXAtZmlsZS5w
aHA/ZmlsZW5hbWU9IiArIHRlbXBGaWxlTmFtZSwgZmFsc2UpOwotICAgIHhoci5zZW5kKCk7Ci19
Ci0KLWZ1bmN0aW9uIGNvbXB1dGVFeHBlY3RlZExlbmd0aChmaWxlTGVuZ3RoLCBzdGFydCwgbGVu
Z3RoKQotewotICAgIHZhciBleHBlY3RlZExlbmd0aCA9IGxlbmd0aDsKLSAgICBpZiAoc3RhcnQg
KyBsZW5ndGggPiBmaWxlTGVuZ3RoKSB7Ci0gICAgICAgIGlmIChzdGFydCA+PSBmaWxlTGVuZ3Ro
KQotICAgICAgICAgICAgZXhwZWN0ZWRMZW5ndGggPSAwOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBleHBlY3RlZExlbmd0aCA9IGZpbGVMZW5ndGggLSBzdGFydDsKLSAgICB9Ci0gICAgcmV0
dXJuIGV4cGVjdGVkTGVuZ3RoOwotfQotCi1mdW5jdGlvbiBvblN0YWJsZUZpbGVEcm9wKGZpbGUs
IGZpbGVQYXRoLCBmaWxlTGVuZ3RoLCBzdGFydCwgbGVuZ3RoLCBjb250ZW50VHlwZSkKLXsKLSAg
ICAvLyBTbGljZSB0aGUgZmlsZS4KLSAgICBzdWJmaWxlID0gZmlsZS5zbGljZShzdGFydCwgbGVu
Z3RoLCBjb250ZW50VHlwZSk7Ci0gICAgc2hvdWxkRXZhbHVhdGVUbygic3ViZmlsZS5zaXplIiwg
Y29tcHV0ZUV4cGVjdGVkTGVuZ3RoKGZpbGVMZW5ndGgsIHN0YXJ0LCBsZW5ndGgpKTsKLSAgICBz
aG91bGRCZSgic3ViZmlsZS50eXBlIiwgKGNvbnRlbnRUeXBlICE9IHVuZGVmaW5lZCAmJiBjb250
ZW50VHlwZSAhPSBudWxsKSA/ICciJyArIGNvbnRlbnRUeXBlICsgJyInIDogJyIiJyk7Ci0KLSAg
ICAvLyBVcGxvYWQgdGhlIHNsaWNlZCBmaWxlLgotICAgIHVwbG9hZEZpbGUoc3ViZmlsZSwgZmls
ZVBhdGgsIHN0YXJ0LCBsZW5ndGgsIGZhbHNlKTsKLX0KLQotZnVuY3Rpb24gZHJhZ0FuZFNsaWNl
U3RhYmxlRmlsZShmaWxlUGF0aCwgZmlsZUxlbmd0aCwgc3RhcnQsIGxlbmd0aCwgY29udGVudFR5
cGUpCi17Ci0gICAgc2V0RmlsZUlucHV0RHJvcENhbGxiYWNrKGZ1bmN0aW9uKGZpbGUpIHsgb25T
dGFibGVGaWxlRHJvcChmaWxlLCAiLi4vbG9jYWwvIiArIGZpbGVQYXRoLCBmaWxlTGVuZ3RoLCBz
dGFydCwgbGVuZ3RoLCBjb250ZW50VHlwZSk7IH0pOwotICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJh
Z1dpdGhGaWxlcyhbZmlsZVBhdGhdKTsKLSAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChm
aWxlSW5wdXQpOwotICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQotZnVuY3Rpb24gb25V
bnN0YWJsZUZpbGVEcm9wKGZpbGUsIGZpbGVQYXRoLCBmaWxlTGVuZ3RoLCBzdGFydCwgbGVuZ3Ro
LCBjb250ZW50VHlwZSkKLXsKLSAgICAvLyBTbGljZSB0aGUgZmlsZS4KLSAgICBzdWJmaWxlID0g
ZmlsZS5zbGljZShzdGFydCwgbGVuZ3RoLCBjb250ZW50VHlwZSk7Ci0gICAgc2hvdWxkRXZhbHVh
dGVUbygic3ViZmlsZS5zaXplIiwgY29tcHV0ZUV4cGVjdGVkTGVuZ3RoKGZpbGVMZW5ndGgsIHN0
YXJ0LCBsZW5ndGgpKTsKLSAgICBzaG91bGRCZSgic3ViZmlsZS50eXBlIiwgKGNvbnRlbnRUeXBl
ICE9IHVuZGVmaW5lZCAmJiBjb250ZW50VHlwZSAhPSBudWxsKSA/ICciJyArIGNvbnRlbnRUeXBl
ICsgJyInIDogJyIiJyk7Ci0gIAotICAgIC8vIFVwbG9hZCB0aGUgc2xpY2VkIGZpbGUuCi0gICAg
dXBsb2FkRmlsZShzdWJmaWxlLCBmaWxlUGF0aCwgc3RhcnQsIGxlbmd0aCwgZmFsc2UpOwotCi0g
ICAgLy8gVG91Y2ggdGhlIHVuZGVybHlpbmcgdGVtcCBmaWxlLgotICAgIHRvdWNoVGVtcEZpbGUo
KTsKLSAgICAKLSAgICAvLyBVcGxvYWQgdGhlIHNsaWNlZCBmaWxlLiBXZSBzaG91bGQgcmVjZWl2
ZSBhbiBleGNlcHRpb24gc2luY2UgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZC4KLSAgICB1cGxv
YWRGaWxlKHN1YmZpbGUsIGZpbGVQYXRoLCBzdGFydCwgbGVuZ3RoLCB0cnVlKTsKLQotICAgIC8v
IFJlbW92ZSB0aGUgdGVtcCBmaWxlLgotICAgIHJlbW92ZVRlbXBGaWxlKCk7Ci19Ci0KLWZ1bmN0
aW9uIGRyYWdBbmRTbGljZVVuc3RhYmxlRmlsZShzdGFydCwgbGVuZ3RoLCBjb250ZW50VHlwZSkK
LXsKLSAgICB2YXIgdGVtcEZpbGVQYXRoID0gY3JlYXRlVGVtcEZpbGUodGVtcEZpbGVDb250ZW50
KTsKLSAgICBpZiAodGVtcEZpbGVQYXRoLmxlbmd0aCA9PSAwKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBzZXRGaWxlSW5wdXREcm9wQ2FsbGJhY2soZnVuY3Rpb24oZmlsZSkgeyBvblVuc3RhYmxl
RmlsZURyb3AoZmlsZSwgdGVtcEZpbGVQYXRoLCB0ZW1wRmlsZUNvbnRlbnQubGVuZ3RoLCBzdGFy
dCwgbGVuZ3RoLCBjb250ZW50VHlwZSk7IH0pOwotICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dp
dGhGaWxlcyhbdGVtcEZpbGVQYXRoXSk7Ci0gICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQo
ZmlsZUlucHV0KTsKLSAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1
blRlc3QoKQotewotICAgIGRlYnVnKCJUZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYW4gZW1wdHkg
ZmlsZS4iKTsKLSAgICBkcmFnQW5kU2xpY2VTdGFibGVGaWxlKCJyZXNvdXJjZXMvZW1wdHkudHh0
IiwgMCwgMCwgMTApOwotCi0gICAgZGVidWcoIlRlc3Qgc2xpY2luZyBhbmQgc2VuZGluZyBhIHNt
YWxsIGZpbGUuIik7Ci0gICAgZHJhZ0FuZFNsaWNlU3RhYmxlRmlsZSgicmVzb3VyY2VzL2ZpbGUt
Zm9yLWRyYWctdG8tc2VuZC50eHQiLCAxMCwgMiwgNCwgbnVsbCk7Ci0gICAgZHJhZ0FuZFNsaWNl
U3RhYmxlRmlsZSgicmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQiLCAxMCwgMiwg
MjAsICJ0eXBlL2ZvbyIpOwotICAgIGRyYWdBbmRTbGljZVN0YWJsZUZpbGUoInJlc291cmNlcy9m
aWxlLWZvci1kcmFnLXRvLXNlbmQudHh0IiwgMTAsIDE1LCAyMCwgInR5cGUvYmFyIik7Ci0KLSAg
ICAvLyBUaGlzIGlzIHRvIHRlc3QgYSBmaWxlIHRoYXQgZXhjZWVkcyB0aGUgcmVhZCBidWZmZXIg
bGltaXQgKDJLIGluIE1hYykuCi0gICAgZGVidWcoIlRlc3Qgc2xpY2luZyBhbmQgc2VuZGluZyBh
IGJpZyBmaWxlLiIpOwotICAgIGRyYWdBbmRTbGljZVN0YWJsZUZpbGUoInJlc291cmNlcy9hYmUu
cG5nIiwgMTIyNDIsIDEwLCA0MCk7Ci0gICAgZHJhZ0FuZFNsaWNlU3RhYmxlRmlsZSgicmVzb3Vy
Y2VzL2FiZS5wbmciLCAxMjI0MiwgMTAsIDMwMDApOwotICAgIGRyYWdBbmRTbGljZVN0YWJsZUZp
bGUoInJlc291cmNlcy9hYmUucG5nIiwgMTIyNDIsIDMwMDAsIDE1MDAwKTsKLQotICAgIGRlYnVn
KCJUZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYSBmaWxlIHRoYXQgaGFzIGJlZW4gY2hhbmdlZCBy
aWdodCBiZWZvcmUgc2VuZGluZy4iKTsKLSAgICBkcmFnQW5kU2xpY2VVbnN0YWJsZUZpbGUoMywg
NSk7Ci19Ci0KLWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBydW5UZXN0KCk7Ci0gICAg
Ly8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCi0gICAgcmVtb3ZlRmlsZUlucHV0RWxlbWVudCgp
OwotfSBlbHNlIHsKLSAgICB0ZXN0RmFpbGVkKCJUaGlzIHRlc3QgaXMgbm90IGludGVyYWN0aXZl
LCBwbGVhc2UgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlIik7Ci19Ci0KLXZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2Nh
bC9yZXNvdXJjZXMvc2V0dXAtZmlsZS1pbnB1dC1lbGVtZW50LWZvci1kcmFnLmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMvc2V0dXAtZmlsZS1pbnB1dC1lbGVtZW50
LWZvci1kcmFnLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTFjNjgwLi4wMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvcmVzb3VyY2VzL3NldHVwLWZp
bGUtaW5wdXQtZWxlbWVudC1mb3ItZHJhZy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAg
QEAKLXZhciBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotZmls
ZUlucHV0LnR5cGUgPSAiZmlsZSI7Ci1maWxlSW5wdXQuc3R5bGUud2lkdGggPSAiMTAwcHgiOwot
ZmlsZUlucHV0LnN0eWxlLmhlaWdodCA9ICIxMDBweCI7Ci0vLyBJbXBvcnRhbnQgdGhhdCB3ZSBw
dXQgdGhpcyBhdCB0aGUgdG9wIG9mIHRoZSBkb2Mgc28gdGhhdCBsb2dnaW5nIGRvZXMgbm90IGNh
dXNlIGl0IHRvIGdvIG91dCBvZiB2aWV3ICh3aGVyZSBpdCBjYW4ndCBiZSBkcmFnZ2VkIHRvKQot
ZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZmlsZUlucHV0LCBkb2N1bWVudC5ib2R5LmZpcnN0
Q2hpbGQpOwotCi1maWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VudGVyIiwgZnVuY3Rp
b24oKSB7Ci0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLX0sIGZhbHNlKTsKLQotZmlsZUlu
cHV0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVyIiwgZnVuY3Rpb24oKSB7Ci0gICAgZXZlbnQu
ZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7Ci0gICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKLX0sIGZhbHNlKTsKLQotdmFyIGZpbGVJbnB1dERyb3BDYWxsYmFjayA9IG51bGw7Ci1m
aWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsIGZ1bmN0aW9uKCkgewotICAgIGlmIChl
dmVudC5kYXRhVHJhbnNmZXIudHlwZXMuaW5kZXhPZigiRmlsZXMiKSAhPSAtMSAmJiBldmVudC5k
YXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoID09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoImV2ZW50
LmRhdGFUcmFuc2ZlciBjb250YWlucyBhIEZpbGUgb2JqZWN0IG9uIGRyb3AuIik7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoImV2ZW50LmRhdGFUcmFuc2ZlciBkb2VzIG5vdCBjb250
YWluIGEgRmlsZSBvYmplY3Qgb24gZHJvcC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGZpbGVJbnB1dERyb3BDYWxsYmFjayhldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0pOwot
Ci0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLX0sIGZhbHNlKTsKLQotZnVuY3Rpb24gc2V0
RmlsZUlucHV0RHJvcENhbGxiYWNrKGZpbGVJbnB1dERyb3BDYWxsYmFja0Z1bmMpCi17Ci0gICAg
ZmlsZUlucHV0RHJvcENhbGxiYWNrID0gZmlsZUlucHV0RHJvcENhbGxiYWNrRnVuYzsKLX0KLQot
ZnVuY3Rpb24gbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCkKLXsKLSAgICB2YXIg
Y2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwot
ICAgIHZhciBjZW50ZXJZID0gZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdo
dCAvIDI7Ci0gICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Ci19
Ci0KLWZ1bmN0aW9uIHJlbW92ZUZpbGVJbnB1dEVsZW1lbnQoKQotewotICAgIGZpbGVJbnB1dC5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKGZpbGVJbnB1dCkKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWRyYWdnZWQtZmlsZS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MGIxNmQuLjAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWRyYWdnZWQtZmlsZS1leHBlY3RlZC50eHQK
KysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1UZXN0IGZvciBzZW5kaW5nIGEgZHJhZ2dl
ZCBmaWxlIHZpYSBYTUxIdHRwUmVxdWVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24gZHJv
cC4KLVBBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZC4KLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3NlbmQtZHJhZ2dlZC1maWxlLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2xvY2FsL3NlbmQtZHJhZ2dlZC1maWxlLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY1MjgwZjQuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2NhbC9zZW5kLWRyYWdnZWQtZmlsZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQg
KzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgot
PGh0bWw+Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
LTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2V0dXAtZmlsZS1pbnB1dC1lbGVtZW50LWZvci1kcmFn
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2VuZC1kcmFnZ2VkLWZpbGUu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3NlbmQtc2xpY2VkLWRyYWdn
ZWQtZmlsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ODI3
YmMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNl
ZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBA
QAotVGVzdCBmb3Igc2xpY2luZyBhIGRyYWdnZWQgZmlsZSBhbmQgc2VuZGluZyBpdCB2aWEgWE1M
SHR0cFJlcXVlc3QuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1UZXN0IHNsaWNp
bmcgYW5kIHNlbmRpbmcgYW4gZW1wdHkgZmlsZS4KLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyIGNv
bnRhaW5zIGEgRmlsZSBvYmplY3Qgb24gZHJvcC4KLVBBU1Mgc3ViZmlsZS5zaXplIGlzIDAKLVBB
U1Mgc3ViZmlsZS50eXBlIGlzICIiCi1QQVNTIEV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2
ZWQ6IE9LCi1UZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYSBzbWFsbCBmaWxlLgotUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9iamVjdCBvbiBkcm9wLgotUEFTUyBzdWJm
aWxlLnNpemUgaXMgNAotUEFTUyBzdWJmaWxlLnR5cGUgaXMgIiIKLVBBU1MgRXhwZWN0ZWQgcmVz
cG9uc2UgZGF0YSByZWNlaXZlZDogT0sKLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5z
IGEgRmlsZSBvYmplY3Qgb24gZHJvcC4KLVBBU1Mgc3ViZmlsZS5zaXplIGlzIDgKLVBBU1Mgc3Vi
ZmlsZS50eXBlIGlzICJ0eXBlL2ZvbyIKLVBBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNl
aXZlZDogT0sKLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qg
b24gZHJvcC4KLVBBU1Mgc3ViZmlsZS5zaXplIGlzIDAKLVBBU1Mgc3ViZmlsZS50eXBlIGlzICJ0
eXBlL2JhciIKLVBBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sKLVRlc3Qg
c2xpY2luZyBhbmQgc2VuZGluZyBhIGJpZyBmaWxlLgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIg
Y29udGFpbnMgYSBGaWxlIG9iamVjdCBvbiBkcm9wLgotUEFTUyBzdWJmaWxlLnNpemUgaXMgNDAK
LVBBU1Mgc3ViZmlsZS50eXBlIGlzICIiCi1QQVNTIEV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVj
ZWl2ZWQ6IE9LCi1QQVNTIGV2ZW50LmRhdGFUcmFuc2ZlciBjb250YWlucyBhIEZpbGUgb2JqZWN0
IG9uIGRyb3AuCi1QQVNTIHN1YmZpbGUuc2l6ZSBpcyAzMDAwCi1QQVNTIHN1YmZpbGUudHlwZSBp
cyAiIgotUEFTUyBFeHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiBPSwotUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9iamVjdCBvbiBkcm9wLgotUEFTUyBzdWJm
aWxlLnNpemUgaXMgOTI0MgotUEFTUyBzdWJmaWxlLnR5cGUgaXMgIiIKLVBBU1MgRXhwZWN0ZWQg
cmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sKLVRlc3Qgc2xpY2luZyBhbmQgc2VuZGluZyBhIGZp
bGUgdGhhdCBoYXMgYmVlbiBjaGFuZ2VkIHJpZ2h0IGJlZm9yZSBzZW5kaW5nLgotUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9iamVjdCBvbiBkcm9wLgotUEFTUyBzdWJm
aWxlLnNpemUgaXMgNQotUEFTUyBzdWJmaWxlLnR5cGUgaXMgIiIKLVBBU1MgRXhwZWN0ZWQgcmVz
cG9uc2UgZGF0YSByZWNlaXZlZDogT0sKLVBBU1MgRXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93bjog
RXJyb3I6IE5FVFdPUktfRVJSOiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxCi1QQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1zbGljZWQtZHJhZ2dlZC1maWxl
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNDFiMWYuLjAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldHVw
LWZpbGUtaW5wdXQtZWxlbWVudC1mb3ItZHJhZy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KLTwvYm9keT4KLTwvaHRtbD4K
</data>
<flag name="review"
          id="64759"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="64760"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74298</attachid>
            <date>2010-11-18 15:15:19 -0800</date>
            <delta_ts>2010-11-18 15:20:36 -0800</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>49709_2</filename>
            <type>text/plain</type>
            <size>33150</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNDYxYTgzLi5hZGNmZjcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMTEt
MTcgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZmlsZWFwaSB0ZXN0IGZpbGVzIHVuZGVy
IGh0dHAvdGVzdHMvbG9jYWwgdG8gYSBuZXcgc3ViZGlyZWN0b3J5IHVuZGVyIGl0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTcwOQorCisgICAgICAg
ICogaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3Jlc291cmNlcy9zZXR1cC1maWxlLWlucHV0LWVs
ZW1lbnQtZm9yLWRyYWcuanM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
Y2FsL3Jlc291cmNlcy9zZXR1cC1maWxlLWlucHV0LWVsZW1lbnQtZm9yLWRyYWcuanMuCisgICAg
ICAgICogaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2NyaXB0LXRlc3Rz
L3NlbmQtZHJhZ2dlZC1maWxlLmpzOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2NhbC9yZXNvdXJjZXMvc2VuZC1kcmFnZ2VkLWZpbGUuanMuCisgICAgICAgICogaHR0cC90
ZXN0cy9sb2NhbC9maWxlYXBpL3NjcmlwdC10ZXN0cy9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUu
anM6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3Jlc291cmNlcy9z
ZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuanMuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2NhbC9m
aWxlYXBpL3NlbmQtZHJhZ2dlZC1maWxlLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLWRyYWdnZWQtZmlsZS5odG1s
OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWRyYWdnZWQt
ZmlsZS5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNl
ZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0LgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUu
aHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvc2VuZC1zbGlj
ZWQtZHJhZ2dlZC1maWxlLmh0bWwuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0v
bWFjLXdrMi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkOgorICAg
ICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBw
ZWQ6CisKIDIwMTAtMTEtMTcgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVwZGF0ZSBjaHJvbWl1bSByZXN1bHRzIGFmdGVyIHI3MjEyNSBhbmQgcjcyMTczLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3Jlc291cmNl
cy9zZXR1cC1maWxlLWlucHV0LWVsZW1lbnQtZm9yLWRyYWcuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2xvY2FsL2ZpbGVhcGkvcmVzb3VyY2VzL3NldHVwLWZpbGUtaW5wdXQtZWxlbWVudC1m
b3ItZHJhZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTFjNjgwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3Jl
c291cmNlcy9zZXR1cC1maWxlLWlucHV0LWVsZW1lbnQtZm9yLWRyYWcuanMKQEAgLTAsMCArMSw0
NiBAQAordmFyIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Citm
aWxlSW5wdXQudHlwZSA9ICJmaWxlIjsKK2ZpbGVJbnB1dC5zdHlsZS53aWR0aCA9ICIxMDBweCI7
CitmaWxlSW5wdXQuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKKy8vIEltcG9ydGFudCB0aGF0IHdl
IHB1dCB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcgZG9lcyBub3Qg
Y2F1c2UgaXQgdG8gZ28gb3V0IG9mIHZpZXcgKHdoZXJlIGl0IGNhbid0IGJlIGRyYWdnZWQgdG8p
Citkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShmaWxlSW5wdXQsIGRvY3VtZW50LmJvZHkuZmly
c3RDaGlsZCk7CisKK2ZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXIiLCBmdW5j
dGlvbigpIHsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfSwgZmFsc2UpOworCitmaWxl
SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLCBmdW5jdGlvbigpIHsKKyAgICBldmVu
dC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJjb3B5IjsKKyAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOworfSwgZmFsc2UpOworCit2YXIgZmlsZUlucHV0RHJvcENhbGxiYWNrID0gbnVsbDsK
K2ZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJkcm9wIiwgZnVuY3Rpb24oKSB7CisgICAgaWYg
KGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmRleE9mKCJGaWxlcyIpICE9IC0xICYmIGV2ZW50
LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPT0gMSkKKyAgICAgICAgdGVzdFBhc3NlZCgiZXZl
bnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24gZHJvcC4iKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQuZGF0YVRyYW5zZmVyIGRvZXMgbm90IGNv
bnRhaW4gYSBGaWxlIG9iamVjdCBvbiBkcm9wLiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZmlsZUlucHV0RHJvcENhbGxiYWNrKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlc1swXSk7
CisKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfSwgZmFsc2UpOworCitmdW5jdGlvbiBz
ZXRGaWxlSW5wdXREcm9wQ2FsbGJhY2soZmlsZUlucHV0RHJvcENhbGxiYWNrRnVuYykKK3sKKyAg
ICBmaWxlSW5wdXREcm9wQ2FsbGJhY2sgPSBmaWxlSW5wdXREcm9wQ2FsbGJhY2tGdW5jOworfQor
CitmdW5jdGlvbiBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChlbGVtZW50KQoreworICAgIHZh
ciBjZW50ZXJYID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7
CisgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVp
Z2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhjZW50ZXJYLCBjZW50ZXJZKTsK
K30KKworZnVuY3Rpb24gcmVtb3ZlRmlsZUlucHV0RWxlbWVudCgpCit7CisgICAgZmlsZUlucHV0
LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZmlsZUlucHV0KQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NjcmlwdC10ZXN0cy9URU1QTEFURS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NjcmlwdC10ZXN0cy9URU1Q
TEFURS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YTUzOGIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2Ny
aXB0LXRlc3RzL1RFTVBMQVRFLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2V0dXAtZmlsZS1pbnB1dC1lbGVtZW50LWZvci1kcmFnLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwv
ZmlsZWFwaS9zY3JpcHQtdGVzdHMvc2VuZC1kcmFnZ2VkLWZpbGUuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2NyaXB0LXRlc3RzL3NlbmQtZHJhZ2dlZC1maWxlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiM2YwMjgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2NyaXB0LXRlc3Rz
L3NlbmQtZHJhZ2dlZC1maWxlLmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0
IGZvciBzZW5kaW5nIGEgZHJhZ2dlZCBmaWxlIHZpYSBYTUxIdHRwUmVxdWVzdC4iKTsKKworZnVu
Y3Rpb24gb25GaWxlRHJvcChmaWxlKQoreworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKKyAgICB4aHIub3BlbigiUE9TVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL3Bvc3QtZWNoby5jZ2kiLCBmYWxzZSk7CisgICAgeGhyLnNlbmQo
ZmlsZSk7CisgICAgaWYgKHhoci5yZXNwb25zZVRleHQgPT0gIjEyMzQ1Njc4OTAiKQorICAgICAg
ICB0ZXN0UGFzc2VkKCJFeHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkLiIpOworICAgIGVs
c2UKKyAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVk
OiAiICsgeGhyLnJlc3BvbnNlVGV4dCk7CisKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwor
fQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBzZXRGaWxlSW5wdXREcm9wQ2FsbGJhY2so
b25GaWxlRHJvcCk7CisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKFsiLi4vcmVz
b3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQiXSk7CisgICAgbW92ZU1vdXNlVG9DZW50
ZXJPZkVsZW1lbnQoZmlsZUlucHV0KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisK
K2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBydW5UZXN0KCk7CisgICAgLy8gQ2xlYW4g
dXAgYWZ0ZXIgb3Vyc2VsdmVzCisgICAgcmVtb3ZlRmlsZUlucHV0RWxlbWVudCgpOworfSBlbHNl
IHsKKyAgICB0ZXN0RmFpbGVkKCJUaGlzIHRlc3QgaXMgbm90IGludGVyYWN0aXZlLCBwbGVhc2Ug
cnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlIik7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBp
L3NjcmlwdC10ZXN0cy9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2NyaXB0LXRlc3RzL3NlbmQtc2xpY2VkLWRyYWdnZWQt
ZmlsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzE0ZjYyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3Njcmlw
dC10ZXN0cy9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuanMKQEAgLTAsMCArMSwxNjggQEAKK2Rl
c2NyaXB0aW9uKCJUZXN0IGZvciBzbGljaW5nIGEgZHJhZ2dlZCBmaWxlIGFuZCBzZW5kaW5nIGl0
IHZpYSBYTUxIdHRwUmVxdWVzdC4iKTsKKwordmFyIHRlbXBGaWxlQ29udGVudCA9ICIxMjM0NTY3
ODkwIjsKK3ZhciB0ZW1wRmlsZU5hbWUgPSAic2VuZC1zbGljZS1kcmFnZ2VkLWZpbGUudG1wIjsK
K3ZhciBzdWJmaWxlOworCitmdW5jdGlvbiB1cGxvYWRGaWxlKGZpbGUsIGZpbGVQYXRoLCBzdGFy
dCwgbGVuZ3RoLCBleHBlY3RlZEV4Y2VwdGlvbikKK3sKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oIlBPU1QiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3Jlc291cmNlcy9wb3N0LWFuZC12ZXJpZnkuY2dpP3BhdGg9IiArIGZpbGVQYXRoICsgIiZzdGFy
dD0iICsgc3RhcnQgKyAiJmxlbmd0aD0iICsgbGVuZ3RoLCBmYWxzZSk7CisKKyAgICB2YXIgcGFz
c2VkOworICAgIHZhciBtZXNzYWdlOworICAgIHRyeSB7CisgICAgICAgIHhoci5zZW5kKGZpbGUp
OworICAgICAgICBpZiAoZXhwZWN0ZWRFeGNlcHRpb24pIHsKKyAgICAgICAgICAgIHBhc3NlZCA9
IGZhbHNlOworICAgICAgICAgICAgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIHJlc3BvbnNlIGRhdGEg
cmVjZWl2ZWQ6ICIgKyB4aHIucmVzcG9uc2VUZXh0ICsgIi4gRXhwZWN0aW5nIGV4Y2VwdGlvbiB0
aHJvd24iOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHhoci5yZXNwb25zZVRl
eHQgPT0gIk9LIikgeworICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgbWVzc2FnZSA9ICJFeHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiAiICsgeGhy
LnJlc3BvbnNlVGV4dDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGFz
c2VkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJVbmV4cGVjdGVkIHJlc3Bv
bnNlIGRhdGEgcmVjZWl2ZWQ6ICIgKyB4aHIucmVzcG9uc2VUZXh0OworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgaWYgKGV4cGVjdGVkRXhjZXB0
aW9uKSB7CisgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOworICAgICAgICAgICAgbWVzc2FnZSA9
ICJFeHBlY3RlZCBleGNlcHRpb24gdGhyb3duOiAiICsgZXg7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAiVW5leHBl
Y3RlZCBleGNlcHRpb24gdGhyb3duOiAiICsgZXg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAocGFzc2VkKQorICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2UpOworICAgIGVsc2UKKyAgICAg
ICAgdGVzdEZhaWxlZChtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlVGVtcEZpbGUoZmls
ZURhdGEpCit7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5v
cGVuKCJQT1NUIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvd3JpdGUtdGVtcC1m
aWxlLnBocD9maWxlbmFtZT0iICsgdGVtcEZpbGVOYW1lICsgIiZkYXRhPSIgKyBmaWxlRGF0YSwg
ZmFsc2UpOworICAgIHhoci5zZW5kKCk7CisgICAgaWYgKHhoci5zdGF0dXMgIT0gMjAwKSB7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkOiAi
ICsgeGhyLnN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgdmFsdWVz
ID0geGhyLnJlc3BvbnNlVGV4dC5zcGxpdCgnXG4nKTsKKyAgICBpZiAoeGhyLnJlc3BvbnNlVGV4
dC5pbmRleE9mKCJGQUlMIikgPT0gMCkgeworICAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVk
IHJlc3BvbnNlIHRleHQgcmVjZWl2ZWQ6ICIgKyB4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHJldHVybiB4aHIucmVzcG9uc2VUZXh0OworfQorCitmdW5j
dGlvbiB0b3VjaFRlbXBGaWxlKCkKK3sKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7CisgICAgeGhyLm9wZW4oIlBPU1QiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNl
cy90b3VjaC10ZW1wLWZpbGUucGhwP2ZpbGVuYW1lPSIgKyB0ZW1wRmlsZU5hbWUsIGZhbHNlKTsK
KyAgICB4aHIuc2VuZCgpOworfQorCitmdW5jdGlvbiByZW1vdmVUZW1wRmlsZSgpCit7CisgICAg
dmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vcGVuKCJQT1NUIiwgImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvcmVzZXQtdGVtcC1maWxlLnBocD9maWxlbmFt
ZT0iICsgdGVtcEZpbGVOYW1lLCBmYWxzZSk7CisgICAgeGhyLnNlbmQoKTsKK30KKworZnVuY3Rp
b24gY29tcHV0ZUV4cGVjdGVkTGVuZ3RoKGZpbGVMZW5ndGgsIHN0YXJ0LCBsZW5ndGgpCit7Cisg
ICAgdmFyIGV4cGVjdGVkTGVuZ3RoID0gbGVuZ3RoOworICAgIGlmIChzdGFydCArIGxlbmd0aCA+
IGZpbGVMZW5ndGgpIHsKKyAgICAgICAgaWYgKHN0YXJ0ID49IGZpbGVMZW5ndGgpCisgICAgICAg
ICAgICBleHBlY3RlZExlbmd0aCA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV4cGVj
dGVkTGVuZ3RoID0gZmlsZUxlbmd0aCAtIHN0YXJ0OworICAgIH0KKyAgICByZXR1cm4gZXhwZWN0
ZWRMZW5ndGg7Cit9CisKK2Z1bmN0aW9uIG9uU3RhYmxlRmlsZURyb3AoZmlsZSwgZmlsZVBhdGgs
IGZpbGVMZW5ndGgsIHN0YXJ0LCBsZW5ndGgsIGNvbnRlbnRUeXBlKQoreworICAgIC8vIFNsaWNl
IHRoZSBmaWxlLgorICAgIHN1YmZpbGUgPSBmaWxlLnNsaWNlKHN0YXJ0LCBsZW5ndGgsIGNvbnRl
bnRUeXBlKTsKKyAgICBzaG91bGRFdmFsdWF0ZVRvKCJzdWJmaWxlLnNpemUiLCBjb21wdXRlRXhw
ZWN0ZWRMZW5ndGgoZmlsZUxlbmd0aCwgc3RhcnQsIGxlbmd0aCkpOworICAgIHNob3VsZEJlKCJz
dWJmaWxlLnR5cGUiLCAoY29udGVudFR5cGUgIT0gdW5kZWZpbmVkICYmIGNvbnRlbnRUeXBlICE9
IG51bGwpID8gJyInICsgY29udGVudFR5cGUgKyAnIicgOiAnIiInKTsKKworICAgIC8vIFVwbG9h
ZCB0aGUgc2xpY2VkIGZpbGUuCisgICAgdXBsb2FkRmlsZShzdWJmaWxlLCBmaWxlUGF0aCwgc3Rh
cnQsIGxlbmd0aCwgZmFsc2UpOworfQorCitmdW5jdGlvbiBkcmFnQW5kU2xpY2VTdGFibGVGaWxl
KGZpbGVQYXRoLCBmaWxlTGVuZ3RoLCBzdGFydCwgbGVuZ3RoLCBjb250ZW50VHlwZSkKK3sKKyAg
ICBzZXRGaWxlSW5wdXREcm9wQ2FsbGJhY2soZnVuY3Rpb24oZmlsZSkgeyBvblN0YWJsZUZpbGVE
cm9wKGZpbGUsICIuLi9sb2NhbC9maWxlYXBpLyIgKyBmaWxlUGF0aCwgZmlsZUxlbmd0aCwgc3Rh
cnQsIGxlbmd0aCwgY29udGVudFR5cGUpOyB9KTsKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdX
aXRoRmlsZXMoW2ZpbGVQYXRoXSk7CisgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZmls
ZUlucHV0KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIG9uVW5z
dGFibGVGaWxlRHJvcChmaWxlLCBmaWxlUGF0aCwgZmlsZUxlbmd0aCwgc3RhcnQsIGxlbmd0aCwg
Y29udGVudFR5cGUpCit7CisgICAgLy8gU2xpY2UgdGhlIGZpbGUuCisgICAgc3ViZmlsZSA9IGZp
bGUuc2xpY2Uoc3RhcnQsIGxlbmd0aCwgY29udGVudFR5cGUpOworICAgIHNob3VsZEV2YWx1YXRl
VG8oInN1YmZpbGUuc2l6ZSIsIGNvbXB1dGVFeHBlY3RlZExlbmd0aChmaWxlTGVuZ3RoLCBzdGFy
dCwgbGVuZ3RoKSk7CisgICAgc2hvdWxkQmUoInN1YmZpbGUudHlwZSIsIChjb250ZW50VHlwZSAh
PSB1bmRlZmluZWQgJiYgY29udGVudFR5cGUgIT0gbnVsbCkgPyAnIicgKyBjb250ZW50VHlwZSAr
ICciJyA6ICciIicpOworICAKKyAgICAvLyBVcGxvYWQgdGhlIHNsaWNlZCBmaWxlLgorICAgIHVw
bG9hZEZpbGUoc3ViZmlsZSwgZmlsZVBhdGgsIHN0YXJ0LCBsZW5ndGgsIGZhbHNlKTsKKworICAg
IC8vIFRvdWNoIHRoZSB1bmRlcmx5aW5nIHRlbXAgZmlsZS4KKyAgICB0b3VjaFRlbXBGaWxlKCk7
CisgICAgCisgICAgLy8gVXBsb2FkIHRoZSBzbGljZWQgZmlsZS4gV2Ugc2hvdWxkIHJlY2VpdmUg
YW4gZXhjZXB0aW9uIHNpbmNlIHRoZSBmaWxlIGhhcyBiZWVuIGNoYW5nZWQuCisgICAgdXBsb2Fk
RmlsZShzdWJmaWxlLCBmaWxlUGF0aCwgc3RhcnQsIGxlbmd0aCwgdHJ1ZSk7CisKKyAgICAvLyBS
ZW1vdmUgdGhlIHRlbXAgZmlsZS4KKyAgICByZW1vdmVUZW1wRmlsZSgpOworfQorCitmdW5jdGlv
biBkcmFnQW5kU2xpY2VVbnN0YWJsZUZpbGUoc3RhcnQsIGxlbmd0aCwgY29udGVudFR5cGUpCit7
CisgICAgdmFyIHRlbXBGaWxlUGF0aCA9IGNyZWF0ZVRlbXBGaWxlKHRlbXBGaWxlQ29udGVudCk7
CisgICAgaWYgKHRlbXBGaWxlUGF0aC5sZW5ndGggPT0gMCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc2V0RmlsZUlucHV0RHJvcENhbGxiYWNrKGZ1bmN0aW9uKGZpbGUpIHsgb25VbnN0YWJsZUZp
bGVEcm9wKGZpbGUsIHRlbXBGaWxlUGF0aCwgdGVtcEZpbGVDb250ZW50Lmxlbmd0aCwgc3RhcnQs
IGxlbmd0aCwgY29udGVudFR5cGUpOyB9KTsKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRo
RmlsZXMoW3RlbXBGaWxlUGF0aF0pOworICAgIG1vdmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGZp
bGVJbnB1dCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiBydW5U
ZXN0KCkKK3sKKyAgICBkZWJ1ZygiVGVzdCBzbGljaW5nIGFuZCBzZW5kaW5nIGFuIGVtcHR5IGZp
bGUuIik7CisgICAgZHJhZ0FuZFNsaWNlU3RhYmxlRmlsZSgiLi4vcmVzb3VyY2VzL2VtcHR5LnR4
dCIsIDAsIDAsIDEwKTsKKworICAgIGRlYnVnKCJUZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYSBz
bWFsbCBmaWxlLiIpOworICAgIGRyYWdBbmRTbGljZVN0YWJsZUZpbGUoIi4uL3Jlc291cmNlcy9m
aWxlLWZvci1kcmFnLXRvLXNlbmQudHh0IiwgMTAsIDIsIDQsIG51bGwpOworICAgIGRyYWdBbmRT
bGljZVN0YWJsZUZpbGUoIi4uL3Jlc291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNlbmQudHh0Iiwg
MTAsIDIsIDIwLCAidHlwZS9mb28iKTsKKyAgICBkcmFnQW5kU2xpY2VTdGFibGVGaWxlKCIuLi9y
ZXNvdXJjZXMvZmlsZS1mb3ItZHJhZy10by1zZW5kLnR4dCIsIDEwLCAxNSwgMjAsICJ0eXBlL2Jh
ciIpOworCisgICAgLy8gVGhpcyBpcyB0byB0ZXN0IGEgZmlsZSB0aGF0IGV4Y2VlZHMgdGhlIHJl
YWQgYnVmZmVyIGxpbWl0ICgySyBpbiBNYWMpLgorICAgIGRlYnVnKCJUZXN0IHNsaWNpbmcgYW5k
IHNlbmRpbmcgYSBiaWcgZmlsZS4iKTsKKyAgICBkcmFnQW5kU2xpY2VTdGFibGVGaWxlKCIuLi9y
ZXNvdXJjZXMvYWJlLnBuZyIsIDEyMjQyLCAxMCwgNDApOworICAgIGRyYWdBbmRTbGljZVN0YWJs
ZUZpbGUoIi4uL3Jlc291cmNlcy9hYmUucG5nIiwgMTIyNDIsIDEwLCAzMDAwKTsKKyAgICBkcmFn
QW5kU2xpY2VTdGFibGVGaWxlKCIuLi9yZXNvdXJjZXMvYWJlLnBuZyIsIDEyMjQyLCAzMDAwLCAx
NTAwMCk7CisKKyAgICBkZWJ1ZygiVGVzdCBzbGljaW5nIGFuZCBzZW5kaW5nIGEgZmlsZSB0aGF0
IGhhcyBiZWVuIGNoYW5nZWQgcmlnaHQgYmVmb3JlIHNlbmRpbmcuIik7CisgICAgZHJhZ0FuZFNs
aWNlVW5zdGFibGVGaWxlKDMsIDUpOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgcnVuVGVzdCgpOworICAgIC8vIENsZWFuIHVwIGFmdGVyIG91cnNlbHZlcworICAgIHJlbW92
ZUZpbGVJbnB1dEVsZW1lbnQoKTsKK30gZWxzZSB7CisgICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0
IGlzIG5vdCBpbnRlcmFjdGl2ZSwgcGxlYXNlIHJ1biB1c2luZyBEdW1wUmVuZGVyVHJlZSIpOwor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLWRyYWdnZWQtZmlsZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2VuZC1kcmFnZ2VkLWZp
bGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MGIx
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVh
cGkvc2VuZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3Qg
Zm9yIHNlbmRpbmcgYSBkcmFnZ2VkIGZpbGUgdmlhIFhNTEh0dHBSZXF1ZXN0LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29udGFpbnMg
YSBGaWxlIG9iamVjdCBvbiBkcm9wLgorUEFTUyBFeHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2Vp
dmVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLWRy
YWdnZWQtZmlsZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3Nl
bmQtZHJhZ2dlZC1maWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
M2ExNzVkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwv
ZmlsZWFwaS9zZW5kLWRyYWdnZWQtZmlsZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3NldHVwLWZpbGUtaW5wdXQtZWxlbWVudC1mb3ItZHJhZy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3NlbmQtZHJhZ2dlZC1maWxlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2VuZC1z
bGljZWQtZHJhZ2dlZC1maWxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5lNzgyN2JjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0NiBAQAorVGVzdCBmb3Igc2xpY2luZyBhIGRyYWdnZWQgZmlsZSBhbmQgc2Vu
ZGluZyBpdCB2aWEgWE1MSHR0cFJlcXVlc3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitUZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYW4gZW1wdHkgZmlsZS4KK1BBU1MgZXZlbnQu
ZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24gZHJvcC4KK1BBU1Mgc3ViZmls
ZS5zaXplIGlzIDAKK1BBU1Mgc3ViZmlsZS50eXBlIGlzICIiCitQQVNTIEV4cGVjdGVkIHJlc3Bv
bnNlIGRhdGEgcmVjZWl2ZWQ6IE9LCitUZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYSBzbWFsbCBm
aWxlLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9iamVjdCBvbiBk
cm9wLgorUEFTUyBzdWJmaWxlLnNpemUgaXMgNAorUEFTUyBzdWJmaWxlLnR5cGUgaXMgIiIKK1BB
U1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sKK1BBU1MgZXZlbnQuZGF0YVRy
YW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24gZHJvcC4KK1BBU1Mgc3ViZmlsZS5zaXpl
IGlzIDgKK1BBU1Mgc3ViZmlsZS50eXBlIGlzICJ0eXBlL2ZvbyIKK1BBU1MgRXhwZWN0ZWQgcmVz
cG9uc2UgZGF0YSByZWNlaXZlZDogT0sKK1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5z
IGEgRmlsZSBvYmplY3Qgb24gZHJvcC4KK1BBU1Mgc3ViZmlsZS5zaXplIGlzIDAKK1BBU1Mgc3Vi
ZmlsZS50eXBlIGlzICJ0eXBlL2JhciIKK1BBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNl
aXZlZDogT0sKK1Rlc3Qgc2xpY2luZyBhbmQgc2VuZGluZyBhIGJpZyBmaWxlLgorUEFTUyBldmVu
dC5kYXRhVHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9iamVjdCBvbiBkcm9wLgorUEFTUyBzdWJm
aWxlLnNpemUgaXMgNDAKK1BBU1Mgc3ViZmlsZS50eXBlIGlzICIiCitQQVNTIEV4cGVjdGVkIHJl
c3BvbnNlIGRhdGEgcmVjZWl2ZWQ6IE9LCitQQVNTIGV2ZW50LmRhdGFUcmFuc2ZlciBjb250YWlu
cyBhIEZpbGUgb2JqZWN0IG9uIGRyb3AuCitQQVNTIHN1YmZpbGUuc2l6ZSBpcyAzMDAwCitQQVNT
IHN1YmZpbGUudHlwZSBpcyAiIgorUEFTUyBFeHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVk
OiBPSworUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9iamVjdCBvbiBk
cm9wLgorUEFTUyBzdWJmaWxlLnNpemUgaXMgOTI0MgorUEFTUyBzdWJmaWxlLnR5cGUgaXMgIiIK
K1BBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sKK1Rlc3Qgc2xpY2luZyBh
bmQgc2VuZGluZyBhIGZpbGUgdGhhdCBoYXMgYmVlbiBjaGFuZ2VkIHJpZ2h0IGJlZm9yZSBzZW5k
aW5nLgorUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9iamVjdCBvbiBk
cm9wLgorUEFTUyBzdWJmaWxlLnNpemUgaXMgNQorUEFTUyBzdWJmaWxlLnR5cGUgaXMgIiIKK1BB
U1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sKK1BBU1MgRXhwZWN0ZWQgZXhj
ZXB0aW9uIHRocm93bjogRXJyb3I6IE5FVFdPUktfRVJSOiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRp
b24gMTAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpL3NlbmQt
c2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9m
aWxlYXBpL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjBiNjQ2ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2xvY2FsL2ZpbGVhcGkvc2VuZC1zbGljZWQtZHJhZ2dlZC1maWxlLmh0bWwKQEAg
LTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2V0dXAtZmlsZS1pbnB1dC1lbGVt
ZW50LWZvci1kcmFnLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc2Vu
ZC1zbGljZWQtZHJhZ2dlZC1maWxlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9yZXNv
dXJjZXMvc2VuZC1kcmFnZ2VkLWZpbGUuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2Fs
L3Jlc291cmNlcy9zZW5kLWRyYWdnZWQtZmlsZS5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWZjMTEyNC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2Fs
L3Jlc291cmNlcy9zZW5kLWRyYWdnZWQtZmlsZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDMyICsw
LDAgQEAKLWRlc2NyaXB0aW9uKCJUZXN0IGZvciBzZW5kaW5nIGEgZHJhZ2dlZCBmaWxlIHZpYSBY
TUxIdHRwUmVxdWVzdC4iKTsKLQotZnVuY3Rpb24gb25GaWxlRHJvcChmaWxlKQotewotICAgIHZh
ciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub3BlbigiUE9TVCIsICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3Bvc3QtZWNoby5jZ2ki
LCBmYWxzZSk7Ci0gICAgeGhyLnNlbmQoZmlsZSk7Ci0gICAgaWYgKHhoci5yZXNwb25zZVRleHQg
PT0gIjEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0UGFzc2VkKCJFeHBlY3RlZCByZXNwb25zZSBk
YXRhIHJlY2VpdmVkLiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3Rl
ZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dCk7Ci0KLSAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOwotfQotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICBz
ZXRGaWxlSW5wdXREcm9wQ2FsbGJhY2sob25GaWxlRHJvcCk7Ci0gICAgZXZlbnRTZW5kZXIuYmVn
aW5EcmFnV2l0aEZpbGVzKFsicmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQiXSk7
Ci0gICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZmlsZUlucHV0KTsKLSAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7Ci19Ci0KLWlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKLSAgICBydW5U
ZXN0KCk7Ci0gICAgLy8gQ2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzCi0gICAgcmVtb3ZlRmlsZUlu
cHV0RWxlbWVudCgpOwotfSBlbHNlIHsKLSAgICB0ZXN0RmFpbGVkKCJUaGlzIHRlc3QgaXMgbm90
IGludGVyYWN0aXZlLCBwbGVhc2UgcnVuIHVzaW5nIER1bXBSZW5kZXJUcmVlIik7Ci19Ci0KLXZh
ciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMvc2VuZC1zbGljZWQtZHJhZ2dlZC1maWxlLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMvc2VuZC1zbGljZWQtZHJhZ2dlZC1m
aWxlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmJmYjJkLi4wMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9jYWwvcmVzb3VyY2VzL3NlbmQtc2xpY2VkLWRy
YWdnZWQtZmlsZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi1kZXNjcmlwdGlv
bigiVGVzdCBmb3Igc2xpY2luZyBhIGRyYWdnZWQgZmlsZSBhbmQgc2VuZGluZyBpdCB2aWEgWE1M
SHR0cFJlcXVlc3QuIik7Ci0KLXZhciB0ZW1wRmlsZUNvbnRlbnQgPSAiMTIzNDU2Nzg5MCI7Ci12
YXIgdGVtcEZpbGVOYW1lID0gInNlbmQtc2xpY2UtZHJhZ2dlZC1maWxlLnRtcCI7Ci12YXIgc3Vi
ZmlsZTsKLQotZnVuY3Rpb24gdXBsb2FkRmlsZShmaWxlLCBmaWxlUGF0aCwgc3RhcnQsIGxlbmd0
aCwgZXhwZWN0ZWRFeGNlcHRpb24pCi17Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVz
dCgpOwotICAgIHhoci5vcGVuKCJQT1NUIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJj
ZXMvcG9zdC1hbmQtdmVyaWZ5LmNnaT9wYXRoPSIgKyBmaWxlUGF0aCArICImc3RhcnQ9IiArIHN0
YXJ0ICsgIiZsZW5ndGg9IiArIGxlbmd0aCwgZmFsc2UpOwotCi0gICAgdmFyIHBhc3NlZDsKLSAg
ICB2YXIgbWVzc2FnZTsKLSAgICB0cnkgewotICAgICAgICB4aHIuc2VuZChmaWxlKTsKLSAgICAg
ICAgaWYgKGV4cGVjdGVkRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTsK
LSAgICAgICAgICAgIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCByZXNwb25zZSBkYXRhIHJlY2VpdmVk
OiAiICsgeGhyLnJlc3BvbnNlVGV4dCArICIuIEV4cGVjdGluZyBleGNlcHRpb24gdGhyb3duIjsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh4aHIucmVzcG9uc2VUZXh0ID09ICJP
SyIpIHsKLSAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIG1l
c3NhZ2UgPSAiRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogIiArIHhoci5yZXNwb25z
ZVRleHQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiVW5leHBlY3RlZCByZXNwb25zZSBkYXRh
IHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIGlmIChleHBlY3RlZEV4Y2VwdGlvbikgewot
ICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiRXhwZWN0
ZWQgZXhjZXB0aW9uIHRocm93bjogIiArIGV4OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgcGFzc2VkID0gZmFsc2U7Ci0gICAgICAgICAgICBtZXNzYWdlID0gIlVuZXhwZWN0ZWQgZXhj
ZXB0aW9uIHRocm93bjogIiArIGV4OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHBhc3Nl
ZCkKLSAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RG
YWlsZWQobWVzc2FnZSk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlbXBGaWxlKGZpbGVEYXRhKQot
ewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub3BlbigiUE9T
VCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL3dyaXRlLXRlbXAtZmlsZS5waHA/
ZmlsZW5hbWU9IiArIHRlbXBGaWxlTmFtZSArICImZGF0YT0iICsgZmlsZURhdGEsIGZhbHNlKTsK
LSAgICB4aHIuc2VuZCgpOwotICAgIGlmICh4aHIuc3RhdHVzICE9IDIwMCkgewotICAgICAgICB0
ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZDogIiArIHhoci5z
dGF0dXMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIHZhbHVlcyA9IHhoci5y
ZXNwb25zZVRleHQuc3BsaXQoJ1xuJyk7Ci0gICAgaWYgKHhoci5yZXNwb25zZVRleHQuaW5kZXhP
ZigiRkFJTCIpID09IDApIHsKLSAgICAgICAgdGVzdEZhaWxlZCgiVW5leHBlY3RlZCByZXNwb25z
ZSB0ZXh0IHJlY2VpdmVkOiAiICsgeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDsKLX0KLQotZnVuY3Rpb24gdG91
Y2hUZW1wRmlsZSgpCi17Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAg
IHhoci5vcGVuKCJQT1NUIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvdG91Y2gt
dGVtcC1maWxlLnBocD9maWxlbmFtZT0iICsgdGVtcEZpbGVOYW1lLCBmYWxzZSk7Ci0gICAgeGhy
LnNlbmQoKTsKLX0KLQotZnVuY3Rpb24gcmVtb3ZlVGVtcEZpbGUoKQotewotICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB4aHIub3BlbigiUE9TVCIsICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvcmVzb3VyY2VzL3Jlc2V0LXRlbXAtZmlsZS5waHA/ZmlsZW5hbWU9IiArIHRl
bXBGaWxlTmFtZSwgZmFsc2UpOwotICAgIHhoci5zZW5kKCk7Ci19Ci0KLWZ1bmN0aW9uIGNvbXB1
dGVFeHBlY3RlZExlbmd0aChmaWxlTGVuZ3RoLCBzdGFydCwgbGVuZ3RoKQotewotICAgIHZhciBl
eHBlY3RlZExlbmd0aCA9IGxlbmd0aDsKLSAgICBpZiAoc3RhcnQgKyBsZW5ndGggPiBmaWxlTGVu
Z3RoKSB7Ci0gICAgICAgIGlmIChzdGFydCA+PSBmaWxlTGVuZ3RoKQotICAgICAgICAgICAgZXhw
ZWN0ZWRMZW5ndGggPSAwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBleHBlY3RlZExlbmd0
aCA9IGZpbGVMZW5ndGggLSBzdGFydDsKLSAgICB9Ci0gICAgcmV0dXJuIGV4cGVjdGVkTGVuZ3Ro
OwotfQotCi1mdW5jdGlvbiBvblN0YWJsZUZpbGVEcm9wKGZpbGUsIGZpbGVQYXRoLCBmaWxlTGVu
Z3RoLCBzdGFydCwgbGVuZ3RoLCBjb250ZW50VHlwZSkKLXsKLSAgICAvLyBTbGljZSB0aGUgZmls
ZS4KLSAgICBzdWJmaWxlID0gZmlsZS5zbGljZShzdGFydCwgbGVuZ3RoLCBjb250ZW50VHlwZSk7
Ci0gICAgc2hvdWxkRXZhbHVhdGVUbygic3ViZmlsZS5zaXplIiwgY29tcHV0ZUV4cGVjdGVkTGVu
Z3RoKGZpbGVMZW5ndGgsIHN0YXJ0LCBsZW5ndGgpKTsKLSAgICBzaG91bGRCZSgic3ViZmlsZS50
eXBlIiwgKGNvbnRlbnRUeXBlICE9IHVuZGVmaW5lZCAmJiBjb250ZW50VHlwZSAhPSBudWxsKSA/
ICciJyArIGNvbnRlbnRUeXBlICsgJyInIDogJyIiJyk7Ci0KLSAgICAvLyBVcGxvYWQgdGhlIHNs
aWNlZCBmaWxlLgotICAgIHVwbG9hZEZpbGUoc3ViZmlsZSwgZmlsZVBhdGgsIHN0YXJ0LCBsZW5n
dGgsIGZhbHNlKTsKLX0KLQotZnVuY3Rpb24gZHJhZ0FuZFNsaWNlU3RhYmxlRmlsZShmaWxlUGF0
aCwgZmlsZUxlbmd0aCwgc3RhcnQsIGxlbmd0aCwgY29udGVudFR5cGUpCi17Ci0gICAgc2V0Rmls
ZUlucHV0RHJvcENhbGxiYWNrKGZ1bmN0aW9uKGZpbGUpIHsgb25TdGFibGVGaWxlRHJvcChmaWxl
LCAiLi4vbG9jYWwvIiArIGZpbGVQYXRoLCBmaWxlTGVuZ3RoLCBzdGFydCwgbGVuZ3RoLCBjb250
ZW50VHlwZSk7IH0pOwotICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbZmlsZVBh
dGhdKTsKLSAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChmaWxlSW5wdXQpOwotICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKLX0KLQotZnVuY3Rpb24gb25VbnN0YWJsZUZpbGVEcm9wKGZp
bGUsIGZpbGVQYXRoLCBmaWxlTGVuZ3RoLCBzdGFydCwgbGVuZ3RoLCBjb250ZW50VHlwZSkKLXsK
LSAgICAvLyBTbGljZSB0aGUgZmlsZS4KLSAgICBzdWJmaWxlID0gZmlsZS5zbGljZShzdGFydCwg
bGVuZ3RoLCBjb250ZW50VHlwZSk7Ci0gICAgc2hvdWxkRXZhbHVhdGVUbygic3ViZmlsZS5zaXpl
IiwgY29tcHV0ZUV4cGVjdGVkTGVuZ3RoKGZpbGVMZW5ndGgsIHN0YXJ0LCBsZW5ndGgpKTsKLSAg
ICBzaG91bGRCZSgic3ViZmlsZS50eXBlIiwgKGNvbnRlbnRUeXBlICE9IHVuZGVmaW5lZCAmJiBj
b250ZW50VHlwZSAhPSBudWxsKSA/ICciJyArIGNvbnRlbnRUeXBlICsgJyInIDogJyIiJyk7Ci0g
IAotICAgIC8vIFVwbG9hZCB0aGUgc2xpY2VkIGZpbGUuCi0gICAgdXBsb2FkRmlsZShzdWJmaWxl
LCBmaWxlUGF0aCwgc3RhcnQsIGxlbmd0aCwgZmFsc2UpOwotCi0gICAgLy8gVG91Y2ggdGhlIHVu
ZGVybHlpbmcgdGVtcCBmaWxlLgotICAgIHRvdWNoVGVtcEZpbGUoKTsKLSAgICAKLSAgICAvLyBV
cGxvYWQgdGhlIHNsaWNlZCBmaWxlLiBXZSBzaG91bGQgcmVjZWl2ZSBhbiBleGNlcHRpb24gc2lu
Y2UgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZC4KLSAgICB1cGxvYWRGaWxlKHN1YmZpbGUsIGZp
bGVQYXRoLCBzdGFydCwgbGVuZ3RoLCB0cnVlKTsKLQotICAgIC8vIFJlbW92ZSB0aGUgdGVtcCBm
aWxlLgotICAgIHJlbW92ZVRlbXBGaWxlKCk7Ci19Ci0KLWZ1bmN0aW9uIGRyYWdBbmRTbGljZVVu
c3RhYmxlRmlsZShzdGFydCwgbGVuZ3RoLCBjb250ZW50VHlwZSkKLXsKLSAgICB2YXIgdGVtcEZp
bGVQYXRoID0gY3JlYXRlVGVtcEZpbGUodGVtcEZpbGVDb250ZW50KTsKLSAgICBpZiAodGVtcEZp
bGVQYXRoLmxlbmd0aCA9PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzZXRGaWxlSW5wdXRE
cm9wQ2FsbGJhY2soZnVuY3Rpb24oZmlsZSkgeyBvblVuc3RhYmxlRmlsZURyb3AoZmlsZSwgdGVt
cEZpbGVQYXRoLCB0ZW1wRmlsZUNvbnRlbnQubGVuZ3RoLCBzdGFydCwgbGVuZ3RoLCBjb250ZW50
VHlwZSk7IH0pOwotICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxlcyhbdGVtcEZpbGVQ
YXRoXSk7Ci0gICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQoZmlsZUlucHV0KTsKLSAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIGRl
YnVnKCJUZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYW4gZW1wdHkgZmlsZS4iKTsKLSAgICBkcmFn
QW5kU2xpY2VTdGFibGVGaWxlKCJyZXNvdXJjZXMvZW1wdHkudHh0IiwgMCwgMCwgMTApOwotCi0g
ICAgZGVidWcoIlRlc3Qgc2xpY2luZyBhbmQgc2VuZGluZyBhIHNtYWxsIGZpbGUuIik7Ci0gICAg
ZHJhZ0FuZFNsaWNlU3RhYmxlRmlsZSgicmVzb3VyY2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50
eHQiLCAxMCwgMiwgNCwgbnVsbCk7Ci0gICAgZHJhZ0FuZFNsaWNlU3RhYmxlRmlsZSgicmVzb3Vy
Y2VzL2ZpbGUtZm9yLWRyYWctdG8tc2VuZC50eHQiLCAxMCwgMiwgMjAsICJ0eXBlL2ZvbyIpOwot
ICAgIGRyYWdBbmRTbGljZVN0YWJsZUZpbGUoInJlc291cmNlcy9maWxlLWZvci1kcmFnLXRvLXNl
bmQudHh0IiwgMTAsIDE1LCAyMCwgInR5cGUvYmFyIik7Ci0KLSAgICAvLyBUaGlzIGlzIHRvIHRl
c3QgYSBmaWxlIHRoYXQgZXhjZWVkcyB0aGUgcmVhZCBidWZmZXIgbGltaXQgKDJLIGluIE1hYyku
Ci0gICAgZGVidWcoIlRlc3Qgc2xpY2luZyBhbmQgc2VuZGluZyBhIGJpZyBmaWxlLiIpOwotICAg
IGRyYWdBbmRTbGljZVN0YWJsZUZpbGUoInJlc291cmNlcy9hYmUucG5nIiwgMTIyNDIsIDEwLCA0
MCk7Ci0gICAgZHJhZ0FuZFNsaWNlU3RhYmxlRmlsZSgicmVzb3VyY2VzL2FiZS5wbmciLCAxMjI0
MiwgMTAsIDMwMDApOwotICAgIGRyYWdBbmRTbGljZVN0YWJsZUZpbGUoInJlc291cmNlcy9hYmUu
cG5nIiwgMTIyNDIsIDMwMDAsIDE1MDAwKTsKLQotICAgIGRlYnVnKCJUZXN0IHNsaWNpbmcgYW5k
IHNlbmRpbmcgYSBmaWxlIHRoYXQgaGFzIGJlZW4gY2hhbmdlZCByaWdodCBiZWZvcmUgc2VuZGlu
Zy4iKTsKLSAgICBkcmFnQW5kU2xpY2VVbnN0YWJsZUZpbGUoMywgNSk7Ci19Ci0KLWlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKLSAgICBydW5UZXN0KCk7Ci0gICAgLy8gQ2xlYW4gdXAgYWZ0ZXIg
b3Vyc2VsdmVzCi0gICAgcmVtb3ZlRmlsZUlucHV0RWxlbWVudCgpOwotfSBlbHNlIHsKLSAgICB0
ZXN0RmFpbGVkKCJUaGlzIHRlc3QgaXMgbm90IGludGVyYWN0aXZlLCBwbGVhc2UgcnVuIHVzaW5n
IER1bXBSZW5kZXJUcmVlIik7Ci19Ci0KLXZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9yZXNvdXJjZXMvc2V0dXAt
ZmlsZS1pbnB1dC1lbGVtZW50LWZvci1kcmFnLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9s
b2NhbC9yZXNvdXJjZXMvc2V0dXAtZmlsZS1pbnB1dC1lbGVtZW50LWZvci1kcmFnLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTFjNjgwLi4wMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbG9jYWwvcmVzb3VyY2VzL3NldHVwLWZpbGUtaW5wdXQtZWxlbWVudC1m
b3ItZHJhZy5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLXZhciBmaWxlSW5wdXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotZmlsZUlucHV0LnR5cGUgPSAiZmls
ZSI7Ci1maWxlSW5wdXQuc3R5bGUud2lkdGggPSAiMTAwcHgiOwotZmlsZUlucHV0LnN0eWxlLmhl
aWdodCA9ICIxMDBweCI7Ci0vLyBJbXBvcnRhbnQgdGhhdCB3ZSBwdXQgdGhpcyBhdCB0aGUgdG9w
IG9mIHRoZSBkb2Mgc28gdGhhdCBsb2dnaW5nIGRvZXMgbm90IGNhdXNlIGl0IHRvIGdvIG91dCBv
ZiB2aWV3ICh3aGVyZSBpdCBjYW4ndCBiZSBkcmFnZ2VkIHRvKQotZG9jdW1lbnQuYm9keS5pbnNl
cnRCZWZvcmUoZmlsZUlucHV0LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOwotCi1maWxlSW5w
dXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VudGVyIiwgZnVuY3Rpb24oKSB7Ci0gICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKLX0sIGZhbHNlKTsKLQotZmlsZUlucHV0LmFkZEV2ZW50TGlzdGVu
ZXIoImRyYWdvdmVyIiwgZnVuY3Rpb24oKSB7Ci0gICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgPSAiY29weSI7Ci0gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLX0sIGZhbHNlKTsK
LQotdmFyIGZpbGVJbnB1dERyb3BDYWxsYmFjayA9IG51bGw7Ci1maWxlSW5wdXQuYWRkRXZlbnRM
aXN0ZW5lcigiZHJvcCIsIGZ1bmN0aW9uKCkgewotICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIu
dHlwZXMuaW5kZXhPZigiRmlsZXMiKSAhPSAtMSAmJiBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMu
bGVuZ3RoID09IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LmRhdGFUcmFuc2ZlciBjb250
YWlucyBhIEZpbGUgb2JqZWN0IG9uIGRyb3AuIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRlc3RG
YWlsZWQoImV2ZW50LmRhdGFUcmFuc2ZlciBkb2VzIG5vdCBjb250YWluIGEgRmlsZSBvYmplY3Qg
b24gZHJvcC4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZpbGVJbnB1dERyb3BD
YWxsYmFjayhldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0pOwotCi0gICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKLX0sIGZhbHNlKTsKLQotZnVuY3Rpb24gc2V0RmlsZUlucHV0RHJvcENhbGxi
YWNrKGZpbGVJbnB1dERyb3BDYWxsYmFja0Z1bmMpCi17Ci0gICAgZmlsZUlucHV0RHJvcENhbGxi
YWNrID0gZmlsZUlucHV0RHJvcENhbGxiYWNrRnVuYzsKLX0KLQotZnVuY3Rpb24gbW92ZU1vdXNl
VG9DZW50ZXJPZkVsZW1lbnQoZWxlbWVudCkKLXsKLSAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOwotICAgIHZhciBjZW50ZXJZID0g
ZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7Ci0gICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oY2VudGVyWCwgY2VudGVyWSk7Ci19Ci0KLWZ1bmN0aW9uIHJlbW92
ZUZpbGVJbnB1dEVsZW1lbnQoKQotewotICAgIGZpbGVJbnB1dC5wYXJlbnROb2RlLnJlbW92ZUNo
aWxkKGZpbGVJbnB1dCkKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9j
YWwvc2VuZC1kcmFnZ2VkLWZpbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2NhbC9zZW5kLWRyYWdnZWQtZmlsZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDY4MGIxNmQuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9sb2NhbC9zZW5kLWRyYWdnZWQtZmlsZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxMSArMCwwIEBACi1UZXN0IGZvciBzZW5kaW5nIGEgZHJhZ2dlZCBmaWxlIHZpYSBYTUxIdHRw
UmVxdWVzdC4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgZXZlbnQuZGF0
YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24gZHJvcC4KLVBBU1MgRXhwZWN0ZWQg
cmVzcG9uc2UgZGF0YSByZWNlaXZlZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xv
Y2FsL3NlbmQtZHJhZ2dlZC1maWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvY2Fs
L3NlbmQtZHJhZ2dlZC1maWxlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1
MjgwZjQuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWRy
YWdnZWQtZmlsZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2V0dXAtZmlsZS1pbnB1dC1lbGVtZW50LWZvci1kcmFnLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc2VuZC1kcmFnZ2VkLWZpbGUuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvY2FsL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2xvY2FsL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ODI3YmMuLjAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUtZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotVGVzdCBmb3Igc2xpY2lu
ZyBhIGRyYWdnZWQgZmlsZSBhbmQgc2VuZGluZyBpdCB2aWEgWE1MSHR0cFJlcXVlc3QuCi0KLU9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1UZXN0IHNsaWNpbmcgYW5kIHNlbmRpbmcgYW4g
ZW1wdHkgZmlsZS4KLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmpl
Y3Qgb24gZHJvcC4KLVBBU1Mgc3ViZmlsZS5zaXplIGlzIDAKLVBBU1Mgc3ViZmlsZS50eXBlIGlz
ICIiCi1QQVNTIEV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2ZWQ6IE9LCi1UZXN0IHNsaWNp
bmcgYW5kIHNlbmRpbmcgYSBzbWFsbCBmaWxlLgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29u
dGFpbnMgYSBGaWxlIG9iamVjdCBvbiBkcm9wLgotUEFTUyBzdWJmaWxlLnNpemUgaXMgNAotUEFT
UyBzdWJmaWxlLnR5cGUgaXMgIiIKLVBBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZl
ZDogT0sKLVBBU1MgZXZlbnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24g
ZHJvcC4KLVBBU1Mgc3ViZmlsZS5zaXplIGlzIDgKLVBBU1Mgc3ViZmlsZS50eXBlIGlzICJ0eXBl
L2ZvbyIKLVBBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sKLVBBU1MgZXZl
bnQuZGF0YVRyYW5zZmVyIGNvbnRhaW5zIGEgRmlsZSBvYmplY3Qgb24gZHJvcC4KLVBBU1Mgc3Vi
ZmlsZS5zaXplIGlzIDAKLVBBU1Mgc3ViZmlsZS50eXBlIGlzICJ0eXBlL2JhciIKLVBBU1MgRXhw
ZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZlZDogT0sKLVRlc3Qgc2xpY2luZyBhbmQgc2VuZGlu
ZyBhIGJpZyBmaWxlLgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29udGFpbnMgYSBGaWxlIG9i
amVjdCBvbiBkcm9wLgotUEFTUyBzdWJmaWxlLnNpemUgaXMgNDAKLVBBU1Mgc3ViZmlsZS50eXBl
IGlzICIiCi1QQVNTIEV4cGVjdGVkIHJlc3BvbnNlIGRhdGEgcmVjZWl2ZWQ6IE9LCi1QQVNTIGV2
ZW50LmRhdGFUcmFuc2ZlciBjb250YWlucyBhIEZpbGUgb2JqZWN0IG9uIGRyb3AuCi1QQVNTIHN1
YmZpbGUuc2l6ZSBpcyAzMDAwCi1QQVNTIHN1YmZpbGUudHlwZSBpcyAiIgotUEFTUyBFeHBlY3Rl
ZCByZXNwb25zZSBkYXRhIHJlY2VpdmVkOiBPSwotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29u
dGFpbnMgYSBGaWxlIG9iamVjdCBvbiBkcm9wLgotUEFTUyBzdWJmaWxlLnNpemUgaXMgOTI0Mgot
UEFTUyBzdWJmaWxlLnR5cGUgaXMgIiIKLVBBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNl
aXZlZDogT0sKLVRlc3Qgc2xpY2luZyBhbmQgc2VuZGluZyBhIGZpbGUgdGhhdCBoYXMgYmVlbiBj
aGFuZ2VkIHJpZ2h0IGJlZm9yZSBzZW5kaW5nLgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIgY29u
dGFpbnMgYSBGaWxlIG9iamVjdCBvbiBkcm9wLgotUEFTUyBzdWJmaWxlLnNpemUgaXMgNQotUEFT
UyBzdWJmaWxlLnR5cGUgaXMgIiIKLVBBU1MgRXhwZWN0ZWQgcmVzcG9uc2UgZGF0YSByZWNlaXZl
ZDogT0sKLVBBU1MgRXhwZWN0ZWQgZXhjZXB0aW9uIHRocm93bjogRXJyb3I6IE5FVFdPUktfRVJS
OiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbG9jYWwvc2VuZC1zbGljZWQtZHJhZ2dlZC1maWxlLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGMwNDFiMWYuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDE0ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NldHVwLWZpbGUtaW5wdXQtZWxlbWVu
dC1mb3ItZHJhZy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NlbmQtc2xp
Y2VkLWRyYWdnZWQtZmlsZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggYjZkYjQ3Yy4uYzcwYTZmNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTU0NjgsOCArNTQ2OCw3IEBAIGZhc3QvZXZlbnRzL2Ry
YWctdG8tbmF2aWdhdGUuaHRtbAogZmFzdC9ldmVudHMvcHJldmVudC1kcmFnLXRvLW5hdmlnYXRl
Lmh0bWwKIGZhc3QvZm9ybXMvaW5wdXQtZmlsZS1yZS1yZW5kZXIuaHRtbAogaHR0cC90ZXN0cy9s
b2NhbC9mb3JtZGF0YQotaHR0cC90ZXN0cy9sb2NhbC9zZW5kLWRyYWdnZWQtZmlsZS5odG1sCi1o
dHRwL3Rlc3RzL2xvY2FsL3NlbmQtc2xpY2VkLWRyYWdnZWQtZmlsZS5odG1sCitodHRwL3Rlc3Rz
L2xvY2FsL2ZpbGVhcGkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1m
aWxlLWFjY2Vzcy5odG1sCiAKICMgU3RpbGwgZmFpbGluZywgbG9va3MgbGlrZSBhIGJ1ZyBpbiB0
aGUgRXZlbnRTZW5kZXIgZHJhZy1hbmQtZHJvcApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXRpZ2VyL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtdGlnZXIv
U2tpcHBlZAppbmRleCBiM2YyYzQ4Li45YTc0MmY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtdGlnZXIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
dGlnZXIvU2tpcHBlZApAQCAtMTI5LDcgKzEyOSw3IEBAIGZhc3QvZXZlbnRzL2NvbnRpbnVvdXMt
cGxhdGZvcm0td2hlZWxldmVudC1pbi1zY3JvbGxpbmctZGl2Lmh0bWwKIAogIyBJbnRlcm1pdHRl
bnRseSB0aW1lcyBvdXQgb24gVGlnZXIgYm90LgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzYwMzkKLWh0dHAvdGVzdHMvbG9jYWwvc2VuZC1zbGljZWQtZHJhZ2dl
ZC1maWxlLmh0bWwKK2h0dHAvdGVzdHMvbG9jYWwvZmlsZWFwaS9zZW5kLXNsaWNlZC1kcmFnZ2Vk
LWZpbGUuaHRtbAogCiAjIFRpbWVzIG91dCBvbiBUaWdlciBib3QuCiAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjM4MgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9T
a2lwcGVkCmluZGV4IGU5ZmM1Y2UuLjEwZmFhZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1NraXBwZWQKQEAgLTQ2MSw4ICs0NjEsNyBAQCBodHRwL3Rlc3RzL2xvY2FsL2Jsb2Ivc2VuZC1o
eWJyaWQtYmxvYi5odG1sCiBodHRwL3Rlc3RzL2xvY2FsL2Jsb2Ivc2VuZC1zbGljZWQtZGF0YS1i
bG9iLmh0bWwKIGh0dHAvdGVzdHMvbG9jYWwvZHJhZy1vdmVyLXJlbW90ZS1jb250ZW50Lmh0bWwK
IGh0dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEKLWh0dHAvdGVzdHMvbG9jYWwvc2VuZC1kcmFnZ2Vk
LWZpbGUuaHRtbAotaHR0cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRt
bAoraHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpCiBodHRwL3Rlc3RzL21pc2MvYnViYmxlLWRyYWct
ZXZlbnRzLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFsaWQtc291
cmNlLWNyYXNoLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9pc2luZGV4LXdpdGgtbm8tZm9ybS5odG1s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13azIvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkCmluZGV4IDAzMDU5YTMuLmM2MDg2MTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkCkBAIC01MDcsOCArNTA3LDcgQEAgaHR0cC90
ZXN0cy9sb2NhbC9kcmFnLW92ZXItcmVtb3RlLWNvbnRlbnQuaHRtbAogaHR0cC90ZXN0cy9sb2Nh
bC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS13aXRoLXNsaWNlZC1maWxlLmh0bWwKIGh0dHAvdGVz
dHMvbG9jYWwvZm9ybWRhdGEvc2VuZC1mb3JtLWRhdGEuaHRtbAogaHR0cC90ZXN0cy9sb2NhbC9m
b3JtZGF0YS91cGxvYWQtZXZlbnRzLmh0bWwKLWh0dHAvdGVzdHMvbG9jYWwvc2VuZC1kcmFnZ2Vk
LWZpbGUuaHRtbAotaHR0cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRt
bAoraHR0cC90ZXN0cy9sb2NhbC9maWxlYXBpCiBodHRwL3Rlc3RzL21pc2MvYnViYmxlLWRyYWct
ZXZlbnRzLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9kcmFnLW92ZXItaWZyYW1lLWludmFsaWQtc291
cmNlLWNyYXNoLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9pc2luZGV4LXdpdGgtbm8tZm9ybS5odG1s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCA0YTQwMjYzLi44YjFkZGZmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQKQEAgLTE4OCw4ICsxODgsNyBAQCBodHRwL3Rlc3RzL2xvYWRpbmcvdGV4
dC1jb250ZW50LXR5cGUtd2l0aC1iaW5hcnktZXh0ZW5zaW9uLmh0bWwKIAogIyBkcmFnIG4gZHJv
cCBzdXBwb3J0IGFnYWluCiBodHRwL3Rlc3RzL2xvY2FsL2RyYWctb3Zlci1yZW1vdGUtY29udGVu
dC5odG1sCi1odHRwL3Rlc3RzL2xvY2FsL3NlbmQtZHJhZ2dlZC1maWxlLmh0bWwKLWh0dHAvdGVz
dHMvbG9jYWwvc2VuZC1zbGljZWQtZHJhZ2dlZC1maWxlLmh0bWwKK2h0dHAvdGVzdHMvbG9jYWwv
ZmlsZWFwaQogCiAjIENPTlNPTEUgTUVTU0FHRTogbGluZSA3MjogVHlwZUVycm9yOiBSZXN1bHQg
b2YgZXhwcmVzc2lvbiAnZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzJyBbdW5kZWZpbmVk
XSBpcyBub3QgYSBmdW5jdGlvbi4KIGh0dHAvdGVzdHMvbG9jYWwvYmxvYi9zZW5kLWh5YnJpZC1i
bG9iLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggMzk3M2YzMy4uZGIyNjlkNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTc2NSw4ICs3NjUsNyBAQCBlZGl0aW5nL3Bh
c3RlYm9hcmQvZmlsZXMtZHVyaW5nLXBhZ2UtZHJhZ3MuaHRtbAogZmFzdC9mb3Jtcy9pbnB1dC1z
ZWxlY3RlZG9wdGlvbi5odG1sCiAKICMgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yOTI4Nz4KLWh0dHAvdGVzdHMvbG9jYWwvc2VuZC1kcmFnZ2VkLWZpbGUuaHRtbAot
aHR0cC90ZXN0cy9sb2NhbC9zZW5kLXNsaWNlZC1kcmFnZ2VkLWZpbGUuaHRtbAoraHR0cC90ZXN0
cy9sb2NhbC9maWxlYXBpCiBodHRwL3Rlc3RzL2xvY2FsL2Jsb2Ivc2VuZC1oeWJyaWQtYmxvYi5o
dG1sCiBodHRwL3Rlc3RzL2xvY2FsL2Zvcm1kYXRhCiAK
</data>
<flag name="review"
          id="64868"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="64869"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>