<?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>52229</bug_id>
          
          <creation_ts>2011-01-11 11:29:37 -0800</creation_ts>
          <short_desc>Enforce READ_ONLY transactions in IndexedDB</short_desc>
          <delta_ts>2011-01-12 02:40:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Jeremy Orlow">jorlow</assigned_to>
          <cc>andreip</cc>
    
    <cc>hans</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>332483</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-11 11:29:37 -0800</bug_when>
    <thetext>Enforce READ_ONLY transactions in IndexedDB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332488</commentid>
    <comment_count>1</comment_count>
      <attachid>78565</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-11 11:32:29 -0800</bug_when>
    <thetext>Created attachment 78565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332489</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-11 11:33:09 -0800</bug_when>
    <thetext>Andrei/hans, please take a look.

Nate, can you please do the official review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332600</commentid>
    <comment_count>3</comment_count>
      <attachid>78565</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-11 13:14:17 -0800</bug_when>
    <thetext>Comment on attachment 78565
Patch

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

The tests have huge diffs for no visible reason, so I&apos;m assuming the line endings changed.  Are they right before or after this patch?

&gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:169
&gt;  
&gt; -    // FIXME: Check that the transaction is READ_WRITE
&gt; -    // if (m_transaction-&gt;mode() == IDBTransaction::READ_ONLY) {
&gt; -        // FIXME: We must return READ_ONLY_ERR here. Fix this when we update IDBDatabaseException to match the spec.
&gt; -        // ec = IDBDatabaseException::NOT_ALLOWED_ERR;
&gt; -        // return;
&gt; -    // }
&gt; +

Looks like two lines of whitespace here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332971</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-01-12 02:06:07 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Andrei/hans, please take a look.
Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332982</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-12 02:40:57 -0800</bug_when>
    <thetext>Committed r75596: &lt;http://trac.webkit.org/changeset/75596&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78565</attachid>
            <date>2011-01-11 11:32:29 -0800</date>
            <delta_ts>2011-01-11 13:14:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52229-20110111193226.patch</filename>
            <type>text/plain</type>
            <size>35057</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NWQ4MGE2MGU0OTMxNTc1Mjc1NTNlYzcyMTBhZjg2MTZkYTBiOGEyLi5hZTg2M2Nj
NTQ5N2NhMGVlNzA1MmQwOTA0MWRiZmFiZmUzZTJkZGJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAK
IDIwMTEtMDEtMTEgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5mb3JjZSBSRUFEX09O
TFkgdHJhbnNhY3Rpb25zIGluIEluZGV4ZWREQgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIyMjkKKworICAgICAgICBGaXggZXhpc3RpbmcgZXJyb3Jz
IGluIHRlc3RzICsgYWRkIGEgbmV3IHRlc3QgZm9yCisgICAgICAgIHRoaXMgaXNzdWUuCisKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS5odG1sOgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJhc2ljcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWw6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9iamVj
dHN0b3JlLmh0bWw6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFz
aWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1iYXNpY3MuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
cmFzaC1vbi1hYm9ydC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1yZWFkLW9ubHkuaHRtbDogQWRkZWQuCisKKzIwMTEtMDEtMTEgIEpl
cmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW0Nocm9taXVtXSBG
aXggYmFkIGJhc2VsaW5lcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTIyMDcKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvY3Vyc29yLWRlbGV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9jdXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dAppbmRleCAxZmRmOWVkOTQ5YTE4OTJmMDgz
ZGNmMTcxYjQ5MjM1MTUyN2NkNTUzLi44ZDFiYmEyZmY2N2VkNDE5ZjFkZTU5MzMxNTNhZGVmZTIw
ZmI0MmFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3It
ZGVsZXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9j
dXJzb3ItZGVsZXRlLWV4cGVjdGVkLnR4dApAQCAtNDgsNyArNDgsNyBAQCBvYmplY3RTdG9yZS5h
ZGQoJ215VmFsdWUyJywgJ215S2V5MicpCiBvYmplY3RTdG9yZS5hZGQoJ215VmFsdWUzJywgJ215
S2V5MycpCiBvYmplY3RTdG9yZS5hZGQoJ215VmFsdWU0JywgJ215S2V5NCcpCiBvcGVuQ3Vyc29y
MQotdHJhbnMgPSBkYi50cmFuc2FjdGlvbigndGVzdCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKHtvYmplY3RTdG9yZU5hbWVzOiAndGVz
dCcsIG1vZGU6IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEV9KQogdHJhbnMub2JqZWN0
U3RvcmUoJ3Rlc3QnKS5vcGVuQ3Vyc29yKHtyYW5nZToga2V5UmFuZ2V9KQogUEFTUyAnb25zdWNj
ZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQogUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUK
QEAgLTg1LDkgKzg1LDggQEAgUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUK
IFBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCiBQQVNTIGV2ZW50LnRh
cmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiAKLVdBUk46IHNob3VsZEJlKCkg
ZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzCi1QQVNTIG51bGwgaXMgbnVsbAotdHJhbnMgPSBkYi50
cmFuc2FjdGlvbigndGVzdCcsIHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitQQVNT
IGV2ZW50LnJlc3VsdCBpcyBudWxsCit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKHtvYmplY3RTdG9y
ZU5hbWVzOiAndGVzdCcsIG1vZGU6IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEV9KQog
b2JqZWN0U3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpCiBvYmplY3RTdG9yZS5hZGQo
J215VmFsdWUxJywgJ215S2V5MScpCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItZGVsZXRlLmh0bWwK
aW5kZXggY2U2MmQ2YTA2NjFiMTVmYjMxNGI1ZWNkYTI2ZmRmZTQwNWFhOGM4YS4uOWUxZGRjM2I1
MjRlOWU2YTkwYmQxZTJiMTVmOWE5MGM5NWJlZGE2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWRlbGV0ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1kZWxldGUuaHRtbApAQCAtNTksNyArNTksNyBAQCBmdW5j
dGlvbiBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlKCkKIGZ1bmN0aW9uIG9wZW5DdXJzb3Io
KQogewogICAgIGRlYnVnKCJvcGVuQ3Vyc29yMSIpOwotICAgIGV2YWxBbmRMb2coInRyYW5zID0g
ZGIudHJhbnNhY3Rpb24oJ3Rlc3QnLCB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIp
OworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oe29iamVjdFN0b3JlTmFt
ZXM6ICd0ZXN0JywgbW9kZTogd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURX0pIik7CiAg
ICAga2V5UmFuZ2UgPSB3ZWJraXRJREJLZXlSYW5nZS5sb3dlckJvdW5kKCJteUtleTEiKTsKICAg
ICByZXN1bHQgPSBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgndGVzdCcpLm9wZW5DdXJz
b3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CkBAIC04
NiwxMyArODYsMTMgQEAgZnVuY3Rpb24gY3Vyc29yU3VjY2VzcygpCiBmdW5jdGlvbiBjdXJzb3JF
bXB0eSgpCiB7CiAgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKLSAgICBzaG91bGRCZU51
bGwoZXZlbnQucmVzdWx0KTsKKyAgICBzaG91bGRCZU51bGwoImV2ZW50LnJlc3VsdCIpOwogICAg
IHRyYW5zLm9uY29tcGxldGUgPSBhZGRPYmplY3Q7CiB9CiAKIGZ1bmN0aW9uIGFkZE9iamVjdCgp
CiB7Ci0gICAgZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbigndGVzdCcsIHdlYmtp
dElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygidHJhbnMgPSBk
Yi50cmFuc2FjdGlvbih7b2JqZWN0U3RvcmVOYW1lczogJ3Rlc3QnLCBtb2RlOiB3ZWJraXRJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkiKTsKICAgICBvYmplY3RTdG9yZSA9IGV2YWxBbmRMb2co
Im9iamVjdFN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ3Rlc3QnKSIpOwogICAgIHJlc3VsdCA9
IGV2YWxBbmRMb2coIm9iamVjdFN0b3JlLmFkZCgnbXlWYWx1ZTEnLCAnbXlLZXkxJykiKTsKICAg
ICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2N1cnNvci1pbmRleC1kZWxldGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS1leHBlY3RlZC50eHQKaW5kZXgg
NDU5ODU1NjY3ZGZlYjlmNTcxMzY0OTA5NGU4YjkzM2RiNGMzMTE2Mi4uMjdmMzExN2ZjMzhiNzIz
NzE0NjE0NmE4NzE5NzdkMDZhNDk3YTU0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS1leHBlY3RlZC50eHQK
QEAgLTQ5LDcgKzQ5LDcgQEAgb2JqZWN0U3RvcmUuYWRkKHt4OiAyfSwgJ215S2V5MicpCiBvYmpl
Y3RTdG9yZS5hZGQoe3g6IDN9LCAnbXlLZXkzJykKIG9iamVjdFN0b3JlLmFkZCh7eDogNH0sICdt
eUtleTQnKQogb3BlbkN1cnNvcjEKLXRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3Rlc3QnLCB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQordHJhbnMgPSBkYi50cmFuc2FjdGlvbih7b2Jq
ZWN0U3RvcmVOYW1lczogJ3Rlc3QnLCBtb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFfSkKIHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5D
dXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0
cnVlCiBQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQpAQCAtODcsNyArODcsNyBAQCBQ
QVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQogUEFTUyBldmVudC50YXJn
ZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQogCiBQQVNTIGV2ZW50LnJlc3VsdCBp
cyBudWxsCi10cmFucyA9IGRiLnRyYW5zYWN0aW9uKCd0ZXN0Jywgd2Via2l0SURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oe29iamVjdFN0b3JlTmFtZXM6
ICd0ZXN0JywgbW9kZTogd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURX0pCiBvYmplY3RT
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCd0ZXN0JykKIG9iamVjdFN0b3JlLmFkZCh7eDogMX0s
ICdteUtleTEnKQogUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3Vyc29yLWluZGV4LWRlbGV0ZS5odG1s
CmluZGV4IGVhMTBmMDJkYWJhYjFlYzQ0ZThjZjYxMjdmNzJhOTFmMGVlMzJlY2UuLjFiZGRmNjNi
YmQwMWI4NDkyYmI1MzE4N2ZmZGQxODlmYmIzYWNmNGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2N1cnNvci1pbmRleC1kZWxldGUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jdXJzb3ItaW5kZXgtZGVsZXRlLmh0bWwKQEAgLTYxLDcg
KzYxLDcgQEAgZnVuY3Rpb24gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZUFuZEluZGV4KCkK
IGZ1bmN0aW9uIG9wZW5DdXJzb3IoKQogewogICAgIGRlYnVnKCJvcGVuQ3Vyc29yMSIpOwotICAg
IGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oJ3Rlc3QnLCB3ZWJraXRJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInRyYW5zID0gZGIudHJhbnNh
Y3Rpb24oe29iamVjdFN0b3JlTmFtZXM6ICd0ZXN0JywgbW9kZTogd2Via2l0SURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURX0pIik7CiAgICAga2V5UmFuZ2UgPSB3ZWJraXRJREJLZXlSYW5nZS5sb3dl
ckJvdW5kKDEpOwogICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInRyYW5zLm9iamVjdFN0b3JlKCd0
ZXN0JykuaW5kZXgoJ3Rlc3RJbmRleCcpLm9wZW5DdXJzb3Ioe3JhbmdlOiBrZXlSYW5nZX0pIik7
CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CkBAIC05NSw3ICs5NSw3IEBAIGZ1bmN0aW9uIGN1
cnNvckVtcHR5KCkKIAogZnVuY3Rpb24gYWRkT2JqZWN0KCkKIHsKLSAgICBldmFsQW5kTG9nKCJ0
cmFucyA9IGRiLnRyYW5zYWN0aW9uKCd0ZXN0Jywgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKHtvYmplY3RT
dG9yZU5hbWVzOiAndGVzdCcsIG1vZGU6IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEV9
KSIpOwogICAgIG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygib2JqZWN0U3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgndGVzdCcpIik7CiAgICAgcmVzdWx0ID0gZXZhbEFuZExvZygib2JqZWN0U3Rv
cmUuYWRkKHt4OiAxfSwgJ215S2V5MScpIik7CiAgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90YS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhYmFzZS1xdW90
YS1leHBlY3RlZC50eHQKaW5kZXggM2VhMjRkOWI4Zjg4YjczNTFhYzY2MDY0ZDI3ZGQ3NGUxZGE4
NjRlMi4uMGYwNjE0NTdiYjAwNTc3ZGY5YzI1NGM0MTIzNWFiODhkMTBhOTJhNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLWV4
cGVjdGVkLnR4dApAQCAtNjQsNyArNjQsNyBAQCBQQVNTIGRiLm9iamVjdFN0b3JlTmFtZXMubGVu
Z3RoIGlzIDEKIFBBU1MgZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykgaXMgZmFsc2UK
IFBBU1MgZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygndGVzdDQ1NicpIGlzIGZhbHNlCiBQ
QVNTIGRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3QxMjMnKSBpcyB0cnVlCi10cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKCkKK3RyYW5zID0gZGIudHJhbnNhY3Rpb24oe21vZGU6IHdlYmtp
dElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEV9KQogQ3JlYXRpbmcgJ2RhdGEnIHdoaWNoIGNvbnRh
aW5zIDY0SyBvZiBkYXRhCiBQQVNTIGRhdGEubGVuZ3RoIGlzIDY1NTM2CiBzdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKCd0ZXN0MTIzJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RhdGFiYXNlLXF1b3RhLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9kYXRhYmFzZS1xdW90YS5odG1sCmluZGV4IGI0MjA3ZDQxYjI5ZTJkOWZmODhjYjdjYzUz
NTY3OTdhNTcxYjg0NGIuLmQyMWIwNTE0YTE4ZWUxMjUyYTNmOTA5YWQyODQ0NGY2YWNjNTUwMjYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGFiYXNlLXF1b3Rh
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YWJhc2UtcXVvdGEu
aHRtbApAQCAtNTMsOCArNTMsOCBAQCBmdW5jdGlvbiBjcmVhdGVOZXdPYmplY3RTdG9yZSgpCiAg
ICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKICAgICBzaG91
bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKIAotICAg
IG9iamVjdFN0b3JlID0gZXZhbEFuZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QxMjMi
KScpOw0KLSAgICBjaGVja09iamVjdFN0b3JlKCk7DQorICAgIG9iamVjdFN0b3JlID0gZXZhbEFu
ZExvZygnZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QxMjMiKScpOworICAgIGNoZWNrT2JqZWN0
U3RvcmUoKTsKICAgICBjb21taXRBbmRDb250aW51ZSgpOwogfQogCkBAIC02NCw1NCArNjQsNTQg
QEAgZnVuY3Rpb24gY2hlY2tPYmplY3RTdG9yZSgpCiAgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0
b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVOYW1l
cy5jb250YWlucygnJykiLCAiZmFsc2UiKTsKICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5jb250YWlucygndGVzdDQ1NicpIiwgImZhbHNlIik7Ci0gICAgc2hvdWxkQmUoImRiLm9i
amVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ3Rlc3QxMjMnKSIsICJ0cnVlIik7DQotfQ0KLQ0KLWZ1
bmN0aW9uIGNvbW1pdEFuZENvbnRpbnVlKCkNCi17DQorICAgIHNob3VsZEJlKCJkYi5vYmplY3RT
dG9yZU5hbWVzLmNvbnRhaW5zKCd0ZXN0MTIzJykiLCAidHJ1ZSIpOworfQorCitmdW5jdGlvbiBj
b21taXRBbmRDb250aW51ZSgpCit7CiAgICAgd2luZG93LnNldFRpbWVvdXQoY2hlY2tRdW90YUVu
Zm9yY2luZywgMCk7Ci19DQotDQotZnVuY3Rpb24gY2hlY2tRdW90YUVuZm9yY2luZygpDQotew0K
LSAgICB2YXIgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCkiKTsN
Ci0gICAgdHJhbnMub25hYm9ydCA9IHRlc3RDb21wbGV0ZTsNCi0gICAgdHJhbnMub25jb21wbGV0
ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOw0KLSAgICBkZWJ1ZygiQ3JlYXRpbmcgJ2Rh
dGEnIHdoaWNoIGNvbnRhaW5zIDY0SyBvZiBkYXRhIik7DQotICAgIHdpbmRvdy5kYXRhID0gIlgi
Ow0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspDQotICAgICAgICBkYXRhICs9IGRh
dGE7DQotICAgIHNob3VsZEJlKCJkYXRhLmxlbmd0aCIsICI2NTUzNiIpOw0KLSAgICB3aW5kb3cu
ZGF0YUFkZGVkID0gMDsNCi0gICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFucy5vYmplY3RTdG9yZSgndGVzdDEyMycpIik7DQotICAgIGFkZERhdGEoKTsNCi19DQotDQot
ZnVuY3Rpb24gYWRkRGF0YSgpDQotew0KLSAgICBpZiAoZGF0YUFkZGVkIDwgNSAqIDEwMjQgKiAx
MDI0KSB7DQorfQorCitmdW5jdGlvbiBjaGVja1F1b3RhRW5mb3JjaW5nKCkKK3sKKyAgICB2YXIg
dHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKHttb2RlOiB3ZWJraXRJ
REJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdGVzdENv
bXBsZXRlOworICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFj
azsKKyAgICBkZWJ1ZygiQ3JlYXRpbmcgJ2RhdGEnIHdoaWNoIGNvbnRhaW5zIDY0SyBvZiBkYXRh
Iik7CisgICAgd2luZG93LmRhdGEgPSAiWCI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsg
aSsrKQorICAgICAgICBkYXRhICs9IGRhdGE7CisgICAgc2hvdWxkQmUoImRhdGEubGVuZ3RoIiwg
IjY1NTM2Iik7CisgICAgd2luZG93LmRhdGFBZGRlZCA9IDA7CisgICAgd2luZG93LnN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgndGVzdDEyMycpIik7CisgICAg
YWRkRGF0YSgpOworfQorCitmdW5jdGlvbiBhZGREYXRhKCkKK3sKKyAgICBpZiAoZGF0YUFkZGVk
IDwgNSAqIDEwMjQgKiAxMDI0KSB7CiAgICAgICAgIGlmIChkYXRhQWRkZWQgPiAwKQogICAgICAg
ICAgICAgc3RvcmUgPSBldmVudC5zb3VyY2U7Ci0gICAgfSBlbHNlIHsNCi0gICAgICAgIHRlc3RG
YWlsZWQoImFkZGVkIG1vcmUgdGhhbiBxdW90YSIpOw0KLSAgICAgICAgZG9uZSgpOw0KLSAgICAg
ICAgcmV0dXJuOw0KLSAgICB9DQotICAgIGRhdGFBZGRlZCArPSA2NTUzNjsNCi0gICAgcmVzdWx0
ID0gc3RvcmUuYWRkKHt4OiBkYXRhfSwgZGF0YUFkZGVkKTsNCi0gICAgcmVzdWx0Lm9uc3VjY2Vz
cyA9IGFkZERhdGE7DQotICAgIHJlc3VsdC5vbmVycm9yID0gbG9nRXJyb3I7DQotfQ0KLQ0KLWZ1
bmN0aW9uIGxvZ0Vycm9yKCkNCi17DQotICAgIGRlYnVnKCJFcnJvciBmdW5jdGlvbiBjYWxsZWQ6
ICgiICsgZXZlbnQuY29kZSArICIpICIgKyBldmVudC5tZXNzYWdlKTsNCi0gICAgdmVyaWZ5RXJy
b3JFdmVudChldmVudCk7DQotfQ0KLQ0KLWZ1bmN0aW9uIHRlc3RDb21wbGV0ZSgpDQotew0KLSAg
ICB0ZXN0UGFzc2VkKCJBZGRpbmcgZGF0YSBmYWlsZWQgZHVlIHRvIHF1b3RhIGVycm9yLiBEYXRh
IGFkZGVkIHdhcyBhYm91dCAiICsgTWF0aC5yb3VuZChkYXRhQWRkZWQgLyAxMDI0IC8gMTAyNCkg
KyAiIE1CIik7DQorICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoImFkZGVkIG1vcmUg
dGhhbiBxdW90YSIpOworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgZGF0YUFkZGVkICs9IDY1NTM2OworICAgIHJlc3VsdCA9IHN0b3JlLmFkZCh7eDogZGF0YX0s
IGRhdGFBZGRlZCk7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGFkZERhdGE7CisgICAgcmVzdWx0
Lm9uZXJyb3IgPSBsb2dFcnJvcjsKK30KKworZnVuY3Rpb24gbG9nRXJyb3IoKQoreworICAgIGRl
YnVnKCJFcnJvciBmdW5jdGlvbiBjYWxsZWQ6ICgiICsgZXZlbnQuY29kZSArICIpICIgKyBldmVu
dC5tZXNzYWdlKTsKKyAgICB2ZXJpZnlFcnJvckV2ZW50KGV2ZW50KTsKK30KKworZnVuY3Rpb24g
dGVzdENvbXBsZXRlKCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJBZGRpbmcgZGF0YSBmYWlsZWQgZHVl
IHRvIHF1b3RhIGVycm9yLiBEYXRhIGFkZGVkIHdhcyBhYm91dCAiICsgTWF0aC5yb3VuZChkYXRh
QWRkZWQgLyAxMDI0IC8gMTAyNCkgKyAiIE1CIik7CiAgICAgZG9uZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFz
aWNzLWV4cGVjdGVkLnR4dAppbmRleCA2ZTc0MTY1ZDAyZDZkYTFlNTEyOWQ1MmI3NzQ5ZjdjZTRm
OGVlZTQzLi5iODQyZGNjYTlmMjBhNjJiZjA5ZDFiMzcyY2RjNTlmZWU0ODMxNTJhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3Jl
LWJhc2ljcy1leHBlY3RlZC50eHQKQEAgLTk1LDcgKzk1LDcgQEAgUEFTUyBzdG9yZS5pbmRleE5h
bWVzWzFdIGlzIG51bGwKIFBBU1Mgc3RvcmUuaW5kZXhOYW1lc1sxMDBdIGlzIG51bGwKIFBBU1Mg
c3RvcmUuaW5kZXhOYW1lcy5pdGVtKDEpIGlzIG51bGwKIFBBU1Mgc3RvcmUuaW5kZXhOYW1lcy5p
dGVtKDEwMCkgaXMgbnVsbAotdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigpCit0cmFuc2Fj
dGlvbiA9IGRiLnRyYW5zYWN0aW9uKHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dS
SVRFfSkKIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCiBUcnkg
dG8gaW5zZXJ0IGRhdGEgd2l0aCBhIERhdGUga2V5Ogogc3RvcmUuYWRkKHt4OiAnZm9vJ30sIHRl
c3REYXRlKQpAQCAtMTM3LDcgKzEzNyw3IEBAIFBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRh
cmdldCBpcyB0cnVlCiBQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdl
dC5ET05FCiAKIFBBU1MgZXZlbnQuY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5V
TktOT1dOX0VSUgotZGIudHJhbnNhY3Rpb24oKQorZGIudHJhbnNhY3Rpb24oe21vZGU6IHdlYmtp
dElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEV9KQogc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykKIHN0b3JlLmFkZCh7eDogJ290aGVydmFsdWUnfSwgbnVsbCkKIFBB
U1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKQEAgLTE1OCw3ICsxNTgsNyBAQCBQQVNT
ICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQogUEFTUyBldmVudC50YXJnZXQu
cmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQogCiBQQVNTIGV2ZW50LmNvZGUgaXMgd2Vi
a2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKLWRiLnRyYW5zYWN0aW9uKCkKK2RiLnRy
YW5zYWN0aW9uKHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkKIHN0b3Jl
ID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCiBzdG9yZS5hZGQoe3g6IG51
bGx9LCAndmFsaWRrZXknKQogUEFTUyAnb25zdWNjZXNzJyBpbiByZXN1bHQgaXMgdHJ1ZQpAQCAt
MTc5LDcgKzE3OSw3IEBAIFBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVl
CiBQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiAKIFBB
U1MgZXZlbnQuY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgotZGIu
dHJhbnNhY3Rpb24oKQorZGIudHJhbnNhY3Rpb24oe21vZGU6IHdlYmtpdElEQlRyYW5zYWN0aW9u
LlJFQURfV1JJVEV9KQogc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykKIHN0b3JlLmdldCgna2V5JykKIFBBU1MgJ29uc3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJh
c2ljcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFz
aWNzLmh0bWwKaW5kZXggMTQ0ZTI5NmIwMmE5NDkwNGU5ODhkYzQ3NzQ1ODBlMTQ3NzExZDJkNS4u
ZDM4OGFhMDMwYWY2YjNmYzcyNGY1ZDFiZWMxMGJlY2M1OTkzZjc0ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLmh0bWwKQEAg
LTE0MSw3ICsxNDEsNyBAQCB2YXIgdGVzdERhdGVCID0gbmV3IERhdGUoIldlZCBKYW4gMDUgMjAx
MSAxNTo1NDo0OSIpOwogCiBmdW5jdGlvbiBhZGREYXRhKCkKIHsKLSAgICB2YXIgdHJhbnNhY3Rp
b24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCkiKTsKKyAgICB2
YXIgdHJhbnNhY3Rpb24gPSBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9u
KHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkiKTsKICAgICB0cmFuc2Fj
dGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CiAgICAgd2luZG93LnN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykiKTsKIApAQCAtMTg5LDcgKzE4OSw3IEBAIGZ1bmN0aW9uIGFkZEFnYWluRmFpbHVyZSgpCiAg
ICAgLy8gRklYTUU6IFRoaXMgZXJyb3IgY29kZSBuZWVkcyB0byBiZSBzcGVjY2VkLgogICAgIHNo
b3VsZEJlKCJldmVudC5jb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlVOS05PV05f
RVJSIik7CiAKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCki
KTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKHttb2RlOiB3
ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkiKTsKICAgICB0cmFuc2FjdGlvbi5vbmFi
b3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAgICAgdmFyIHN0b3JlID0gZXZhbEFuZExv
Zygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKIApAQCAt
MjA1LDcgKzIwNSw3IEBAIGZ1bmN0aW9uIGFkZFdpdGhOdWxsS2V5RmFpbHVyZSgpCiAgICAgdmVy
aWZ5RXJyb3JFdmVudChldmVudCk7CiAgICAgc2hvdWxkQmUoImV2ZW50LmNvZGUiLCAid2Via2l0
SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIiKTsKIAotICAgIHRyYW5zYWN0aW9uID0gZXZh
bEFuZExvZygiZGIudHJhbnNhY3Rpb24oKSIpOworICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygiZGIudHJhbnNhY3Rpb24oe21vZGU6IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEV9
KSIpOwogICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
ICAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKSIpOwogCkBAIC0yMjEsNyArMjIxLDcgQEAgZnVuY3Rpb24gYWRkV2l0
aE51bGxJbmRleEZhaWx1cmUoKQogICAgIHZlcmlmeUVycm9yRXZlbnQoZXZlbnQpOwogICAgIHNo
b3VsZEJlKCJldmVudC5jb2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLkRBVEFfRVJS
Iik7CiAKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKCkiKTsK
KyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2coImRiLnRyYW5zYWN0aW9uKHttb2RlOiB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkiKTsKICAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygi
c3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2Jq
ZWN0c3RvcmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2Jq
ZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtZXhwZWN0ZWQudHh0CmluZGV4IGU0NWZmNzNlOGY5
YWI0ZTM4YmRmNTdhY2RiNGMwODA4N2NhN2FlMGQuLjM3NDkyZGI0ZjQ2MWUzZjdkMGEzMDM1MzE5
YjFmNDg0YWJmYzhkODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L29iamVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS1leHBl
Y3RlZC50eHQKQEAgLTYxLDcgKzYxLDcgQEAgUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0
IGlzIHRydWUKIFBBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCiBQQVNT
IGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCiAKLWRiLnRyYW5z
YWN0aW9uKCkKK2RiLnRyYW5zYWN0aW9uKHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFE
X1dSSVRFfSkKIHN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCiBz
dG9yZS5nZXQoJ2tleScpCiBQQVNTICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCkBAIC0x
MDIsNyArMTAyLDcgQEAgdHJhbnMgPSBldmVudC5yZXN1bHQKIFBBU1MgdHJhbnMgIT09IG51bGwg
aXMgdHJ1ZQogZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCiBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKLWRiLnRyYW5zYWN0aW9uKCkKK2RiLnRyYW5zYWN0
aW9uKHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkKIHN0b3JlID0gdHJh
bnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCiBzdG9yZS5nZXQoJ2tleScpCiBQQVNT
ICdvbnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUu
aHRtbAppbmRleCBjNTMxZGNmN2E0M2Q2NjM5NzZmMjBlYmIwZjQ3YTkwMTc4M2MyNmI3Li5hMDhm
MDcxZjY0MjJmNmFmN2E4ZGNhZTAyYjk1ZDk0YTkwY2IxNTBhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVvYmplY3RzdG9yZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLXJlbW92ZW9i
amVjdHN0b3JlLmh0bWwKQEAgLTU5LDcgKzU5LDcgQEAgZnVuY3Rpb24gZ2V0VmFsdWUoKQogewog
ICAgIHZlcmlmeVN1Y2Nlc3NFdmVudChldmVudCk7CiAKLSAgICB0cmFuc2FjdGlvbiA9IGV2YWxB
bmRMb2coImRiLnRyYW5zYWN0aW9uKCkiKTsKKyAgICB0cmFuc2FjdGlvbiA9IGV2YWxBbmRMb2co
ImRiLnRyYW5zYWN0aW9uKHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSki
KTsKICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CiAg
ICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9y
ZSgnc3RvcmVOYW1lJykiKTsKIApAQCAtOTksNyArOTksNyBAQCBmdW5jdGlvbiBjcmVhdGVPYmpl
Y3RTdG9yZUFnYWluKCkKIAogZnVuY3Rpb24gZ2V0VmFsdWVBZ2FpbigpCiB7Ci0gICAgdHJhbnNh
Y3Rpb24gPSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbigpIik7CisgICAgdHJhbnNhY3Rpb24g
PSBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbih7bW9kZTogd2Via2l0SURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURX0pIik7CiAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOwogICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rp
b24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0
CmluZGV4IGEzYmQ5MGE4NzU0MjE5OGU2YmE3OWRhM2ViMzRmNTY1YjVhOGQ0OTkuLmYwMjYxNTQw
MTc4MTY1ZTA3OWZlNjJiZTNmYmUyNmNlZDA4MTQ4NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVk
LnR4dApAQCAtMTcyLDcgKzE3Miw3IEBAIHRyYW5zID0gZXZlbnQucmVzdWx0CiBQQVNTIHRyYW5z
ICE9PSBudWxsIGlzIHRydWUKIERlbGV0ZWQgYWxsIG9iamVjdCBzdG9yZXMuCiBkYi5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmVOYW1lJywgbnVsbCkKLWRiLnRyYW5zYWN0aW9uKCkKK2RiLnRyYW5z
YWN0aW9uKHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkKIHN0b3JlID0g
dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCiBQQVNTIHN0b3JlLm5hbWUgaXMg
InN0b3JlTmFtZSIKIEFib3J0IGV2ZW50IGZpcmVkOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbAppbmRleCBjZDQyNDE5Mzk0
YjYxNzhhMDY2NDllNDdlZjlhNjliYmQ2OTc5NDZmLi44OTk1ZTZkMTNhODNhYmRmMjI5Nzg0YTlk
MTA2NDg1ZjczNDUxYTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MuaHRtbApAQCAtMSwyOCArMSwyOCBAQAotPGh0bWw+Ci08
aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4K
LQotZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIHRyYW5zYWN0aW9uIGJhc2ljcy4iKTsKLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBzaG91bGRCZVRydWUo
Iid3ZWJraXRJbmRleGVkREInIGluIHdpbmRvdyIpOwotICAgIHNob3VsZEJlRmFsc2UoIndlYmtp
dEluZGV4ZWREQiA9PSBudWxsIik7Ci0KLSAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJ3ZWJraXRJ
bmRleGVkREIub3BlbignbmFtZScpIik7Ci0gICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7Ci0gICAg
cmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwotICAgIHJlc3VsdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7Cis8aHRtbD4NCis8aGVhZD4NCis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4N
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4NCis8L2hlYWQ+DQorPGJvZHk+DQorPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+DQorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+DQorPHNjcmlwdD4NCisNCitkZXNjcmlwdGlv
bigiVGVzdCBJbmRleGVkREIgdHJhbnNhY3Rpb24gYmFzaWNzLiIpOw0KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpDQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsNCisNCitmdW5jdGlvbiB0ZXN0KCkNCit7DQorICAgIHNob3VsZEJlVHJ1ZSgiJ3dlYmtp
dEluZGV4ZWREQicgaW4gd2luZG93Iik7DQorICAgIHNob3VsZEJlRmFsc2UoIndlYmtpdEluZGV4
ZWREQiA9PSBudWxsIik7DQorDQorICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4
ZWREQi5vcGVuKCduYW1lJykiKTsNCisgICAgdmVyaWZ5UmVzdWx0KHJlc3VsdCk7DQorICAgIHJl
c3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsNCisgICAgcmVzdWx0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsNCiB9DQogDQogZnVuY3Rpb24gb3BlblN1Y2Nlc3MoKQ0KQEAg
LTE4NCw3ICsxODQsNyBAQCBmdW5jdGlvbiBjaGVja01ldGFkYXRhRW1wdHkoKQogew0KICAgICBz
aG91bGRCZSgid2luZG93LmRiLm9iamVjdFN0b3JlTmFtZXMiLCAiW10iKTsNCiAgICAgc2hvdWxk
QmUoIndpbmRvdy5kYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIwIik7DQotICAgIHNob3Vs
ZEJlKCJ3aW5kb3cuZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnc3RvcmVGYWlsJykiLCAi
ZmFsc2UiKTsKKyAgICBzaG91bGRCZSgid2luZG93LmRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFp
bnMoJ3N0b3JlRmFpbCcpIiwgImZhbHNlIik7DQogfQ0KIA0KIGZ1bmN0aW9uIGNoZWNrTWV0YWRh
dGFFeGlzdGluZ09iamVjdFN0b3JlKCkNCkBAIC0xOTIsNjMgKzE5Miw2MyBAQCBmdW5jdGlvbiBj
aGVja01ldGFkYXRhRXhpc3RpbmdPYmplY3RTdG9yZSgpCiAgICAgc2hvdWxkQmUoImRiLm9iamVj
dFN0b3JlTmFtZXMiLCAiWydzdG9yZUZhaWwnXSIpOw0KICAgICBzaG91bGRCZSgiZGIub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOw0KICAgICBzaG91bGRCZSgiZGIub2JqZWN0U3RvcmVO
YW1lcy5jb250YWlucygnc3RvcmVGYWlsJykiLCAidHJ1ZSIpOw0KLX0KLQotZnVuY3Rpb24gc2V0
TmV3VmVyc2lvbigpCi17Ci0gICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbign
bmV3IHZlcnNpb24nKSIpOwotICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOwotICAgIHJlc3VsdC5v
bnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXN1bHQub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCi17
Ci0gICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Ci0gICAgdmVyaWZ5U3VjY2Vzc0V2
ZW50KGV2ZW50KTsKLSAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50
LnJlc3VsdCIpOwotICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKLSAgICB0cmFu
cy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Ci0gICAgdHJhbnMub25jb21wbGV0
ZSA9IGNvbXBsZXRlQ2FsbGJhY2s7Ci0gICAgd2luZG93LmNvbXBsZXRlRXZlbnRGaXJlZCA9IGZh
bHNlOwotCi0gICAgZGVsZXRlQWxsT2JqZWN0U3RvcmVzKGRiLCBjcmVhdGVPYmplY3RTdG9yZUFu
ZFN0YXJ0VHJhbnNhY3Rpb24pOworfQ0KKw0KK2Z1bmN0aW9uIHNldE5ld1ZlcnNpb24oKQ0KK3sN
CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIp
Ow0KKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsNCisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHNl
dFZlcnNpb25TdWNjZXNzOw0KKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOw0KK30NCisNCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpDQorew0KKyAgICBk
ZWJ1Zygic2V0VmVyc2lvblN1Y2Nlc3MoKToiKTsNCisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2
ZW50KTsNCisgICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBldmVudC5yZXN1
bHQiKTsNCisgICAgc2hvdWxkQmVUcnVlKCJ0cmFucyAhPT0gbnVsbCIpOw0KKyAgICB0cmFucy5v
bmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7DQorICAgIHRyYW5zLm9uY29tcGxldGUg
PSBjb21wbGV0ZUNhbGxiYWNrOw0KKyAgICB3aW5kb3cuY29tcGxldGVFdmVudEZpcmVkID0gZmFs
c2U7DQorDQorICAgIGRlbGV0ZUFsbE9iamVjdFN0b3JlcyhkYiwgY3JlYXRlT2JqZWN0U3RvcmVB
bmRTdGFydFRyYW5zYWN0aW9uKTsNCiB9DQogDQogZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmVB
bmRTdGFydFRyYW5zYWN0aW9uKCkNCiB7DQotICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnLCBudWxsKSIpOwotICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExv
ZygiZGIudHJhbnNhY3Rpb24oKSIpOwotICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSBhYm9ydENh
bGxiYWNrOwotICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJz
dG9yZS5uYW1lIiwgInN0b3JlTmFtZSIpOwotfQotCi1mdW5jdGlvbiBjb21wbGV0ZUNhbGxiYWNr
KCkKLXsKLSAgICB2ZXJpZnlDb21wbGV0ZUV2ZW50KGV2ZW50KTsKLSAgICB3aW5kb3cuY29tcGxl
dGVFdmVudEZpcmVkID0gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gYWJvcnRDYWxsYmFjaygpCi17Ci0g
ICAgdmVyaWZ5QWJvcnRFdmVudChldmVudCk7Ci0gICAgY2hlY2tGb3JDb21wbGV0ZUV2ZW50KCk7
Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrRm9yQ29tcGxldGVFdmVudCgpCi17Ci0gICAgaWYgKGNvbXBs
ZXRlRXZlbnRGaXJlZCkgewotICAgICAgICB0ZXN0UGFzc2VkKCJvbmNvbXBsZXRlIGV2ZW50IGhh
ZCBmaXJlZCIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHNldFRpbWVv
dXQoY2hlY2tGb3JDb21wbGV0ZUV2ZW50LCAxKTsKLX0KLQotdmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Ci0KLXRlc3QoKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CisgICAg
ZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScsIG51bGwpIik7DQor
ICAgIHRyYW5zYWN0aW9uID0gZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oe21vZGU6IHdlYmtp
dElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEV9KSIpOw0KKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0
ID0gYWJvcnRDYWxsYmFjazsNCisgICAgdmFyIHN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsNCisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJzdG9yZS5uYW1lIiwgInN0b3JlTmFtZSIpOw0KK30NCisNCitmdW5jdGlvbiBj
b21wbGV0ZUNhbGxiYWNrKCkNCit7DQorICAgIHZlcmlmeUNvbXBsZXRlRXZlbnQoZXZlbnQpOw0K
KyAgICB3aW5kb3cuY29tcGxldGVFdmVudEZpcmVkID0gdHJ1ZTsNCit9DQorDQorZnVuY3Rpb24g
YWJvcnRDYWxsYmFjaygpDQorew0KKyAgICB2ZXJpZnlBYm9ydEV2ZW50KGV2ZW50KTsNCisgICAg
Y2hlY2tGb3JDb21wbGV0ZUV2ZW50KCk7DQorfQ0KKw0KK2Z1bmN0aW9uIGNoZWNrRm9yQ29tcGxl
dGVFdmVudCgpDQorew0KKyAgICBpZiAoY29tcGxldGVFdmVudEZpcmVkKSB7DQorICAgICAgICB0
ZXN0UGFzc2VkKCJvbmNvbXBsZXRlIGV2ZW50IGhhZCBmaXJlZCIpOw0KKyAgICAgICAgZG9uZSgp
Ow0KKyAgICB9IGVsc2UNCisgICAgICAgIHNldFRpbWVvdXQoY2hlY2tGb3JDb21wbGV0ZUV2ZW50
LCAxKTsNCit9DQorDQordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7DQorDQordGVzdCgp
Ow0KKw0KKzwvc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gt
b24tYWJvcnQtZXhwZWN0ZWQudHh0CmluZGV4IDQxMzY0M2M1OTk2YWIxMjE0ZWY1MDQyNTIyYTI5
MTM1YWU5Zjg2ZGQuLjEzOTE4OWVmZmVmNTc4ZDIzNDNkYWM3ZTc3NTdjY2NiOWZlN2JjZjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNo
LW9uLWFib3J0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC1leHBlY3RlZC50eHQKQEAgLTI0LDcgKzI0LDcg
QEAgUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKIFBBU1MgZXZlbnQu
dGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKIAogZGIgPSBldmVudC5yZXN1
bHQKLWRiLnRyYW5zYWN0aW9uKFtdKQorZGIudHJhbnNhY3Rpb24oKQogd2luZG93LmdjKCkKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNyYXNoLW9uLWFib3J0Lmh0bWwK
aW5kZXggMWIxM2M4NzUzZjJjOTY5ZjA2ODdkNDRhMGZlYzI5MzU2MjIwNDJiYi4uOTJhZWIzMWE2
NjJkNzRmZWU5ZjY0YWQwMWJkMGU0ZWRiZjA2OTZjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC5o
dG1sCkBAIC0yMywxNiArMjMsMTYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgdmVyaWZ5UmVzdWx0
KHJlc3VsdCk7CiAgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOwogICAgIHJlc3Vs
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19DQotDQotZnVuY3Rpb24gb3Bl
blN1Y2Nlc3MoKQ0KLXsNCi0gICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7DQotICAgIHZlcmlm
eVN1Y2Nlc3NFdmVudChldmVudCk7DQotICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC5y
ZXN1bHQiKTsNCi0gICAgZXZhbEFuZExvZygiZGIudHJhbnNhY3Rpb24oW10pIik7DQotICAgIGV2
YWxBbmRMb2coIndpbmRvdy5nYygpIik7DQotICAgIGRvbmUoKTsNCit9CisKK2Z1bmN0aW9uIG9w
ZW5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygib3BlblN1Y2Nlc3MoKToiKTsKKyAgICB2ZXJpZnlT
dWNjZXNzRXZlbnQoZXZlbnQpOworICAgIGRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC5yZXN1
bHQiKTsKKyAgICBldmFsQW5kTG9nKCJkYi50cmFuc2FjdGlvbigpIik7CisgICAgZXZhbEFuZExv
Zygid2luZG93LmdjKCkiKTsKKyAgICBkb25lKCk7CiB9CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1yZWFkLW9ubHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDEzMGQwMmE1MGQ2YmFhNWFl
YjZjYmU1YmQ5MmQ2OWU3ODM5YTdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcmVhZC1vbmx5Lmh0bWwKQEAgLTAsMCArMSw4MCBA
QAorPGh0bWw+DQorPGhlYWQ+DQorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+DQorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4NCis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3Nj
cmlwdD4NCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+DQorPC9o
ZWFkPg0KKzxib2R5Pg0KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPg0KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2Pg0KKzxzY3JpcHQ+DQorDQorZGVzY3JpcHRpb24oIlRlc3QgcmVhZC1vbmx5IHRy
YW5zYWN0aW9ucyBpbiBJbmRleGVkREIuIik7DQoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikNCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOw0KKw0KK2Z1
bmN0aW9uIHRlc3QoKQ0KK3sNCisgICAgc2hvdWxkQmVUcnVlKCInd2Via2l0SW5kZXhlZERCJyBp
biB3aW5kb3ciKTsNCisgICAgc2hvdWxkQmVGYWxzZSgid2Via2l0SW5kZXhlZERCID09IG51bGwi
KTsNCisNCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygid2Via2l0SW5kZXhlZERCLm9wZW4oJ25h
bWUnKSIpOw0KKyAgICB2ZXJpZnlSZXN1bHQocmVzdWx0KTsNCisgICAgcmVzdWx0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOw0KKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOw0KK30NCisNCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpDQorew0KKyAgICBkZWJ1Zygi
b3BlblN1Y2Nlc3MoKToiKTsNCisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsNCisgICAg
d2luZG93LmRiID0gZXZhbEFuZExvZygiZGIgPSBldmVudC5yZXN1bHQiKTsNCisgICAgcmVzdWx0
ID0gZXZhbEFuZExvZygicmVzdWx0ID0gZGIuc2V0VmVyc2lvbigndmVyc2lvbiAxJykiKTsNCisg
ICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGNsZWFuRGF0YWJhc2U7DQorICAgIHJlc3VsdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorfQ0KKw0KK2Z1bmN0aW9uIGNsZWFuRGF0YWJh
c2UoKQ0KK3sNCisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsNCisgICAgZGVsZXRlQWxs
T2JqZWN0U3RvcmVzKGRiLCBzZXRWZXJzaW9uU3R1ZmYpOw0KK30NCisNCitmdW5jdGlvbiBzZXRW
ZXJzaW9uU3R1ZmYoKQ0KK3sNCisgICAgZXZlbnQucmVzdWx0Lm9uY29tcGxldGUgPSBzZXRWZXJz
aW9uRG9uZTsNCisgICAgZXZlbnQucmVzdWx0Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxs
YmFjazsNCisgICAgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZScpIik7DQorICAgIGV2YWxBbmRMb2coInN0b3JlLnB1dCgneCcsICd5JykiKTsN
Cit9DQorDQorZnVuY3Rpb24gc2V0VmVyc2lvbkRvbmUoKQ0KK3sNCisgICAgdHJhbnMgPSBldmFs
QW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCkiKTsNCisgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykucHV0KCdhJywgJ2InKSIsICJ3ZWJr
aXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5SRUFEX09OTFlfRVJSIik7DQorDQorICAgIHRyYW5zID0g
ZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbigpIik7DQorICAgIGV2YWxBbmRFeHBl
Y3RFeGNlcHRpb24oInRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZScpLmRlbGV0ZSgneCcpIiwgIndl
YmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlJFQURfT05MWV9FUlIiKTsNCisNCisgICAgdHJhbnMg
PSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKCkiKTsNCisgICAgY3VyID0gZXZh
bEFuZExvZygiY3VyID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlJykub3BlbkN1cnNvcigpIik7
DQorICAgIGN1ci5vbnN1Y2Nlc3MgPSBnb3RDdXJzb3I7DQorICAgIGN1ci5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7DQorfQ0KKw0KK2Z1bmN0aW9uIGdvdEN1cnNvcigpDQorew0K
KyAgICBzaG91bGRCZUZhbHNlKCIhZXZlbnQucmVzdWx0Iik7DQorICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImV2ZW50LnJlc3VsdC5kZWxldGUoKSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5SRUFEX09OTFlfRVJSIik7DQorDQorICAgIGRvbmUoKTsNCit9DQorDQordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7DQorDQordGVzdCgpOw0KKw0KKzwvc2NyaXB0Pg0KKzwvYm9k
eT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA0NDFlYjg5NWFhOGI1MDA1NzM3YWRmYjNmNzNm
ZDYwNDg4MTlkMTQuLjIxMDZhYjE1YjQ1YzYzMDViMDgzNjE0MTljNTc2YWE5Y2QwNjg2MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0wMS0xMSAgSmVyZW15IE9ybG93ICA8am9y
bG93QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFbmZvcmNlIFJFQURfT05MWSB0cmFuc2FjdGlvbnMgaW4gSW5kZXhlZERCCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjIyOQorCisg
ICAgICAgIEFkZCBSRUFEX09OTFlfRVJSIGFuZCByZXR1cm4gaXQgd2hlbmV2ZXIgZGVsZXRlIG9y
IHB1dAorICAgICAgICBhcmUgY2FsbGVkLiAgTm90ZSB0aGF0IElEQkN1cnNvcidzIGRlbGV0ZSBh
bmQgdXBkYXRlCisgICAgICAgIGFyZSBzaW1wbHkgYWxpYXNlcyBmb3IgZGVsZXRlL3B1dCwgd2hp
Y2ggaXMgd2h5IG5vCisgICAgICAgIGV4dHJhIGNvZGUgaXMgcmVxdWlyZWQgdG8gaGFuZGxlIHRo
b3NlIGNhc2VzLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LXJlYWQtb25seS5odG1sCisKKyAgICAgICAgKiBkb20vRXhjZXB0aW9uQ29kZS5jcHA6CisgICAg
ICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCRGF0YWJhc2UuaWRsOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VFeGNlcHRp
b24uaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmlkbDoKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KToKKwogMjAxMS0w
MS0xMSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V4Y2VwdGlvbkNvZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUu
Y3BwCmluZGV4IDdlN2UwYzkwOGQ0MDkzZWEwNzJjMWI4NDk3MmYzYTBlNGMxYWRhNzYuLjExMThh
MWE5NDk4Y2EyNzM1YjI3OWE3ZTk3Nzc4NmEwMmZlODVlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXhj
ZXB0aW9uQ29kZS5jcHAKQEAgLTIyMiw3ICsyMjIsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgaWRiRGF0YWJhc2VFeGNlcHRpb25OYW1lc1tdID0gewogICAgICJSRUNPVkVSQUJMRV9FUlIi
LAogICAgICJUUkFOU0lFTlRfRVJSIiwKICAgICAiVElNRU9VVF9FUlIiLAotICAgICJERUFETE9D
S19FUlIiCisgICAgIkRFQURMT0NLX0VSUiIsCisgICAgIlJFQURfT05MWV9FUlIiCiB9OwogCiBz
dGF0aWMgY29uc3QgY2hhciogY29uc3QgaWRiRGF0YWJhc2VFeGNlcHRpb25EZXNjcmlwdGlvbnNb
XSA9IHsKQEAgLTIzNiw3ICsyMzcsOCBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgaWRiRGF0
YWJhc2VFeGNlcHRpb25EZXNjcmlwdGlvbnNbXSA9IHsKICAgICAiUkVDT1ZFUkFCTEVfRVJSIiwg
Ly8gRklYTUU6IFRoaXMgaXNuJ3QgZXZlbiB1c2VkLgogICAgICJUUkFOU0lFTlRfRVJSIiwgLy8g
RklYTUU6IFRoaXMgaXNuJ3QgZXZlbiB1c2VkLgogICAgICJUSU1FT1VUX0VSUiIsIC8vIFRoaXMg
Y2FuJ3QgYmUgdGhyb3duLgotICAgICJERUFETE9DS19FUlIiIC8vIFRoaXMgY2FuJ3QgYmUgdGhy
b3duLgorICAgICJERUFETE9DS19FUlIiLCAvLyBUaGlzIGNhbid0IGJlIHRocm93bi4KKyAgICAi
V3JpdGUgb3BlcmF0aW9ucyBjYW5ub3QgYmUgcHJlZm9ybWVkIG9uIGEgcmVhZC1vbmx5IHRyYW5z
YWN0aW9uLiIKIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCA5YjRlNGYxNjNhMmUyYThjMDE2NjIwMDk0ZTMzZGNl
MmRmODBkZGQxLi4xM2UxYTc0NWQzODFhOThhYjkyYTNkOTEwY2NlNzUxYzIxODc4YmU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAt
MTY2LDEyICsxNjYsNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlv
bihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gRklYTUU6IENoZWNrIHRoYXQgdGhlIHRyYW5zYWN0aW9uIGlzIFJF
QURfV1JJVEUKLSAgICAvLyBpZiAobV90cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uOjpSRUFEX09OTFkpIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIG11c3QgcmV0dXJuIFJFQURf
T05MWV9FUlIgaGVyZS4gRml4IHRoaXMgd2hlbiB3ZSB1cGRhdGUgSURCRGF0YWJhc2VFeGNlcHRp
b24gdG8gbWF0Y2ggdGhlIHNwZWMuCi0gICAgICAgIC8vIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246Ok5PVF9BTExPV0VEX0VSUjsKLSAgICAgICAgLy8gcmV0dXJuOwotICAgIC8vIH0KKwogICAg
IFJlZlB0cjxJREJLZXk+IGtleSA9IG1fY3VycmVudElEQktleVZhbHVlID8gbV9jdXJyZW50SURC
S2V5VmFsdWUgOiBtX2N1cnJlbnRLZXk7CiAgICAgbV9vYmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rp
b24oa2V5LnJlbGVhc2UoKSwgcHJwQ2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCmluZGV4IGM2ZWRkNDg5Yzg5
Y2YxNGNiNjk5YjE4YzRmNjEyMmM5NTUwNTVhMjMuLjdlYjQzZTlmYzQ1ZWI0NzBkYmMwODUxYjZk
NzZkMmM1YjhmYzY1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuaWRsCkBA
IC0zOCw3ICszOCw3IEBAIG1vZHVsZSBzdG9yYWdlIHsKICAgICAgICAgICAgIHJhaXNlcyAoSURC
RGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dF0gSURCUmVxdWVzdCBzZXRWZXJzaW9uKGluIERPTVN0cmluZyB2ZXJzaW9uKQogICAgICAg
ICAgICAgcmFpc2VzIChJREJEYXRhYmFzZUV4Y2VwdGlvbik7Ci0gICAgICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbiAoaW4gW09w
dGlvbmFsXSBPcHRpb25zT2JqZWN0IG9wdGlvbnNPYmplY3QpCisgICAgICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0XSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihpbiBbT3B0
aW9uYWxdIE9wdGlvbnNPYmplY3Qgb3B0aW9uc09iamVjdCkKICAgICAgICAgICAgIHJhaXNlcyAo
SURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogICAg
ICAgICAvL3ZvaWQgY2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2VFeGNlcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJh
c2VFeGNlcHRpb24uaAppbmRleCA5MzZiMDVhMDRiMzM0ZDQyMDgwZWJmZDQ0NWRiZmU4ZTgzOWZl
ZGExLi4xNzRmZTViYzVjYzJmYjQ3MTA4ZGJlNjRkMDcyMDFkNTAyNDc5M2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5oCkBAIC01Myw3ICs1Myw4
IEBAIHB1YmxpYzoKICAgICAgICAgUkVDT1ZFUkFCTEVfRVJSID0gSURCRGF0YWJhc2VFeGNlcHRp
b25PZmZzZXQgKyA4LAogICAgICAgICBUUkFOU0lFTlRfRVJSID0gSURCRGF0YWJhc2VFeGNlcHRp
b25PZmZzZXQgKyA5LAogICAgICAgICBUSU1FT1VUX0VSUiA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
T2Zmc2V0ICsgMTAsCi0gICAgICAgIERFQURMT0NLX0VSUiA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
T2Zmc2V0ICsgMTEKKyAgICAgICAgREVBRExPQ0tfRVJSID0gSURCRGF0YWJhc2VFeGNlcHRpb25P
ZmZzZXQgKyAxMSwKKyAgICAgICAgUkVBRF9PTkxZX0VSUiA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
T2Zmc2V0ICsgMTIKICAgICB9OwogCiAgICAgc3RhdGljIGludCBFcnJvckNvZGVUb0V4Y2VwdGlv
bkNvZGUoaW50IGVycm9yQ29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCRGF0YWJhc2VFeGNlcHRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRh
YmFzZUV4Y2VwdGlvbi5pZGwKaW5kZXggYTU2ZjRjN2YxN2FiNzA4NGY3ZGI4MDE2ZWRjZDMyZjgx
ZWQwMTE5MC4uOTAyN2UwNTcyYzRlZTYyM2ZkMjUzN2I0NjM2MWU4Mzg1NGEyYzkwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUV4Y2VwdGlvbi5pZGwKQEAgLTUw
LDYgKzUwLDcgQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBUUkFOU0lFTlRfRVJSID0gOTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVElNRU9V
VF9FUlIgPSAxMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgREVBRExPQ0tfRVJSID0g
MTE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFJFQURfT05MWV9FUlIgPSAxMjsKICAg
ICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcAppbmRleCAyMmQzYjhkNGRhZTdkMmZkMmYyMjdhYTE5OWI5NjU4ZTQx
YjYwMGJlLi4zOTZmNTQ0ZWI2NmQ1NWZmY2E4ZGY4NGY4ZmIzYzM4NDA1NjJiYmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5j
cHAKQEAgLTE3OSw2ICsxNzksMTEgQEAgc3RhdGljIGJvb2wgcHV0SW5kZXhEYXRhKFNRTGl0ZURh
dGFiYXNlJiBkYiwgSURCS2V5KiBrZXksIGludDY0X3QgaW5kZXhJZCwgaW50NjQKIAogdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBib29sIGFkZE9ubHks
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAg
IGlmICh0cmFuc2FjdGlvblB0ci0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkp
IHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CkBA
IC0yNzcsOSArMjgyLDE1IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBy
cEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisg
ICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkg
eworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7
CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOworCiAg
ICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwsIG9iamVjdFN0b3JlLCBrZXks
IGNhbGxiYWNrcykpKQogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxM
T1dFRF9FUlI7CiB9CkBAIC0zODYsNiArMzk3LDExIEBAIHN0YXRpYyB2b2lkIGRvRGVsZXRlKFNR
TGl0ZURhdGFiYXNlJiBkYiwgY29uc3QgY2hhciogc3FsLCBpbnQ2NF90IGlkKQogCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb246
OlZFUlNJT05fQ0hBTkdFKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
VF9BTExPV0VEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IG1faW5kZXhlcy5nZXQobmFtZSk7CiAgICAgaWYgKCFp
bmRleCkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJS
Owo=
</data>
<flag name="review"
          id="69902"
          type_id="1"
          status="+"
          setter="japhet"
    />
          </attachment>
      

    </bug>

</bugzilla>