<?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>146828</bug_id>
          
          <creation_ts>2015-07-10 01:53:59 -0700</creation_ts>
          <short_desc>Integrate automatic microtask draining into JSC framework and re-enable Promise</short_desc>
          <delta_ts>2015-07-17 16:20:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1108557</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-10 01:53:59 -0700</bug_when>
    <thetext>https://lists.webkit.org/pipermail/webkit-dev/2015-July/027531.html

Add default microtask system to JSC framework and draining the tasks when apilock depth becomes 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109081</commentid>
    <comment_count>1</comment_count>
      <attachid>256694</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-13 05:44:22 -0700</bug_when>
    <thetext>Created attachment 256694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109082</commentid>
    <comment_count>2</comment_count>
      <attachid>256694</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-13 07:10:39 -0700</bug_when>
    <thetext>Comment on attachment 256694
Patch

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

Looks good to me.

&gt; Source/JavaScriptCore/API/tests/testapi.c:1862
&gt; +            JSStringRef undefined = JSStringCreateWithUTF8CString(&quot;function&quot;);

This should be renamed to &quot;function&quot; or something like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109084</commentid>
    <comment_count>3</comment_count>
      <attachid>256694</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-13 07:24:02 -0700</bug_when>
    <thetext>Comment on attachment 256694
Patch

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

&gt; Source/JavaScriptCore/jsc.cpp:1404
&gt; +        globalObject-&gt;vm().drainMicrotasks();

Will this handle the nested queuing of microtasks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109085</commentid>
    <comment_count>4</comment_count>
      <attachid>256694</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-13 07:47:18 -0700</bug_when>
    <thetext>Comment on attachment 256694
Patch

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

I&apos;ll update the patch to pass the build in OSX (adding export macro to the specific method).

&gt;&gt; Source/JavaScriptCore/jsc.cpp:1404
&gt;&gt; +        globalObject-&gt;vm().drainMicrotasks();
&gt; 
&gt; Will this handle the nested queuing of microtasks?

Yes. In drainMicrotasks, we consumes the microtasks like the following,

    while (!m_microtaskQueue.isEmpty())
        m_microtaskQueue.takeFirst()-&gt;run();

During the microtask execution, the new microtask may be enqueued.
In that case, the queue becomes non empty and we&apos;ll drain it in the next loop iteration.
I added the test for this case in js/promise-nested-microtasks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109089</commentid>
    <comment_count>5</comment_count>
      <attachid>256697</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-13 07:53:23 -0700</bug_when>
    <thetext>Created attachment 256697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109094</commentid>
    <comment_count>6</comment_count>
      <attachid>256699</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-13 08:01:05 -0700</bug_when>
    <thetext>Created attachment 256699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109095</commentid>
    <comment_count>7</comment_count>
      <attachid>256700</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-13 08:11:37 -0700</bug_when>
    <thetext>Created attachment 256700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109096</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-13 08:13:09 -0700</bug_when>
    <thetext>Currently I&apos;m checking GTK port environment.
I&apos;ll check it in OSX to pass the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109345</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-14 02:46:37 -0700</bug_when>
    <thetext>OK, could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109375</commentid>
    <comment_count>10</comment_count>
      <attachid>256700</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-14 09:23:54 -0700</bug_when>
    <thetext>Comment on attachment 256700
Patch

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

Looks good to me. I&apos;d r+ if I could.

&gt; Source/JavaScriptCore/API/tests/testapi.c:1862
&gt; +            JSStringRef undefined = JSStringCreateWithUTF8CString(&quot;function&quot;);

Name this variable &quot;function&quot; or something similar

&gt; LayoutTests/js/script-tests/promise-nested-microtasks.js:26
&gt; +debug(&apos;The promise is not fulfilled now.&apos;);

Maybe call this:
&quot;The promise is not fulfilled until after this function call executes&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109383</commentid>
    <comment_count>11</comment_count>
      <attachid>256700</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-14 10:13:35 -0700</bug_when>
    <thetext>Comment on attachment 256700
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/API/tests/testapi.c:1862
&gt;&gt; +            JSStringRef undefined = JSStringCreateWithUTF8CString(&quot;function&quot;);
&gt; 
&gt; Name this variable &quot;function&quot; or something similar

Oops! Thanks, nice catch.
I&apos;ll fix it :D

&gt;&gt; LayoutTests/js/script-tests/promise-nested-microtasks.js:26
&gt;&gt; +debug(&apos;The promise is not fulfilled now.&apos;);
&gt; 
&gt; Maybe call this:
&gt; &quot;The promise is not fulfilled until after this function call executes&quot;

Looks nice. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109385</commentid>
    <comment_count>12</comment_count>
      <attachid>256775</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-14 10:17:55 -0700</bug_when>
    <thetext>Created attachment 256775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109391</commentid>
    <comment_count>13</comment_count>
      <attachid>256777</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-14 10:31:32 -0700</bug_when>
    <thetext>Created attachment 256777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109870</commentid>
    <comment_count>14</comment_count>
      <attachid>256902</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-16 09:06:19 -0700</bug_when>
    <thetext>Created attachment 256902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109871</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-16 09:07:19 -0700</bug_when>
    <thetext>Hi, could anyone take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110241</commentid>
    <comment_count>16</comment_count>
      <attachid>256902</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-07-17 15:33:02 -0700</bug_when>
    <thetext>Comment on attachment 256902
Patch

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

&gt; Source/JavaScriptCore/runtime/VM.h:615
&gt; +    WTF::Deque&lt;std::unique_ptr&lt;QueuedTask&gt;&gt; m_microtaskQueue;

I don&apos;t think the WTF is needed here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110242</commentid>
    <comment_count>17</comment_count>
      <attachid>256902</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-17 15:41:14 -0700</bug_when>
    <thetext>Comment on attachment 256902
Patch

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

Thank you for your review!

&gt;&gt; Source/JavaScriptCore/runtime/VM.h:615
&gt;&gt; +    WTF::Deque&lt;std::unique_ptr&lt;QueuedTask&gt;&gt; m_microtaskQueue;
&gt; 
&gt; I don&apos;t think the WTF is needed here.

Dropped `WTF::`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110243</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-17 15:41:58 -0700</bug_when>
    <thetext>Committed r186966: &lt;http://trac.webkit.org/changeset/186966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110247</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-17 15:58:16 -0700</bug_when>
    <thetext>I&apos;m now creating the follow up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110254</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-17 16:20:06 -0700</bug_when>
    <thetext>Committed r186970: &lt;http://trac.webkit.org/changeset/186970&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256694</attachid>
            <date>2015-07-13 05:44:22 -0700</date>
            <delta_ts>2015-07-13 07:53:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146828-20150713124317.patch</filename>
            <type>text/plain</type>
            <size>18671</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YWRhMjk4YTFjMDc4NWFjOTQ2MjM5YzZmZWE0MDI0MzYzZGQ0ZjYwLi4wMTliMzFjMWMxODk0NmVi
NmIxN2EwNGE0NmJkYmQzN2ZkNzIwYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNS0wNy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFpbmluZyBp
bnRvIEpTQyBmcmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXV0b21hdGljIG1pY3JvdGFzayBk
cmFpbmluZyBzeXN0ZW0gaW50byBKU0MgZnJhbWV3b3JrLgorICAgICAgICBXaGVuIHRoZSBkZXB0
aCBvZiBWTSBsb2NrIGJlY29tZXMgMCwgYmVmb3JlIHRoaXMsIHdlIGRyYWluIHRoZSBxdWV1ZWQg
bWljcm90YXNrcy4KKyAgICAgICAgRW5xdWV1aW5nIGJlaGF2aW9yIGNhbiBiZSBpbmplY3RlZCBi
eSB0aGUgSlNHbG9iYWxPYmplY3QncyBtZXRob2QgdGFibGUuCisgICAgICAgIEl0IGlzIHV0aWxp
emVkIGluIFdlYkNvcmUgdG8gcG9zdCB0aGUgbWljcm90YXNrIHRvIFdlYkNvcmUncyBldmVudCBs
b29wLgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIEpTQyBpbnRlcmFjdGl2ZSBzaGVsbCwgVk0g
ZGVwdGggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiAwLgorICAgICAgICBTbyB3ZSBtYW51YWxseSBk
cmFpbnMgdGhlIHF1ZXVlZCBtaWNyb3Rhc2tzIGFmdGVyIGV2YWx1YXRpbmcgdGhlIHdyaXR0ZW4g
bGluZS4KKworICAgICAgICBTaW5jZSBub3cgSlNDIGZyYW1ld29yayBoYXMgdGhlIG1pY3JvdGFz
ayBxdWV1ZSwgd2UgY2FuIGRyYWluIHRoZSBxdWV1ZWQgbWljcm90YXNrcy4KKyAgICAgICAgU28g
cmUtZW5hYmxlIHRoZSBQcm9taXNlIGluIHRoZSBKU0MgZnJhbWV3b3JrIGNvbnRleHQuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRSdW50aW1l
RmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToKKyAgICAgICAgKHRlc3RP
YmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHJ1bkludGVy
YWN0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnF1ZXVlTWljcm90YXNr
KToKKyAgICAgICAgKEpTQzo6Vk06OmRyYWluTWljcm90YXNrcyk6CisgICAgICAgIChKU0M6OlF1
ZXVlZFRhc2s6OnJ1bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpR
dWV1ZWRUYXNrOjpRdWV1ZWRUYXNrKToKKwogMjAxNS0wNy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRzo6RGVzaXJlZFdhdGNocG9pbnRzIHNob3VsZCBh
Y2NlcHQgV2F0Y2hwb2ludFNldFR5cGUncyB0aGF0IGFyZW4ndCBuZWNlc3NhcmlseSBwb2ludGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDQ5NzZj
MjlhZWVlZjkxMzkzYmIwYTg3MjllNTAwNjQ3MjY0YzFmNzkuLmY0ZDkyMzY2YWIzMDViNTE5YmQ0
OGQ2ZTFjNDVlYTE2YjVhMDZmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKQEAgLTU5LDE0ICs1OSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LXN0YXRpYyBSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mg
PSBKU0dsb2JhbE9iamVjdDo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhnbG9iYWxPYmplY3QpOwot
ICAgIHJ1bnRpbWVGbGFncy5zZXRQcm9taXNlRGlzYWJsZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIHJ1
bnRpbWVGbGFnczsKLX0KLQotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNDOjpqYXZh
U2NyaXB0Q29yZUFQSUdsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmSlNHbG9iYWxPYmplY3Q6
OmFsbG93c0FjY2Vzc0Zyb20sICZKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNQcm9maWxpbmcsICZK
U0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJkpTR2xvYmFsT2JqZWN0Ojpz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAm
SlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2Nv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQzo6amF2YVNjcmlwdENvcmVBUElHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsgJkpTR2xvYmFsT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9tLCAm
SlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRzUHJvZmlsaW5nLCAmSlNHbG9iYWxPYmplY3Q6OnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
LCAmSlNHbG9iYWxPYmplY3Q6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZKU0ds
b2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OwogCiAvLyBG
cm9tIHRoZSBBUEkncyBwZXJzcGVjdGl2ZSwgYSBjb250ZXh0IGdyb3VwIHJlbWFpbnMgYWxpdmUg
aWZmCiAvLyAgICAgKGEpIGl0IGhhcyBiZWVuIEpTQ29udGV4dEdyb3VwUmV0YWluZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZmM0OTE0YjdhYjY5NTI3
MDk1ZWYwZTY1OGE0YjM0MmY1OTA0OTVkMS4uODA2N2UyNTI0ZDYxNjllMmE4MDM3MzY5MDZjNmNj
NzhiZjllYjhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMK
QEAgLTE4NTQsMTIgKzE4NTQsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkK
ICAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KGNvbnRleHQpOwogICAgICAgICB7CiAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9taXNl
UHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJvbWlzZSIpOwotICAg
ICAgICAgICAgQVNTRVJUKCFKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVj
dCwgcHJvbWlzZVByb3BlcnR5KSk7CisgICAgICAgICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9w
ZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHByb21pc2VQcm9wZXJ0eSkpOwogICAgICAgICAg
ICAgSlNTdHJpbmdSZWxlYXNlKHByb21pc2VQcm9wZXJ0eSk7CiAgICAgICAgIH0KICAgICAgICAg
ewogICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoInR5cGVvZiBQcm9taXNlIik7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlZiB1bmRl
ZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidW5kZWZpbmVkIik7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiB1bmRlZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZnVuY3Rpb24iKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU0V2YWx1
YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgTlVMTCwgTlVMTCwgMSwgTlVMTCk7CiAgICAgICAg
ICAgICBBU1NFUlQoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHZhbHVlKSk7CiAgICAgICAgICAg
ICBKU1N0cmluZ1JlZiB2YWx1ZUFzU3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCB2YWx1ZSwgTlVMTCk7CkBAIC0xODY4LDcgKzE4NjgsMjkgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZSh1bmRlZmluZWQpOwog
ICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdCk7CiAgICAgICAgIH0KLSAgICAgICAg
cHJpbnRmKCJQQVNTOiBQcm9taXNlIGlzIG5vdCBleHBvc2VkIHVuZGVyIEpTQ29udGV4dCBBUEku
XG4iKTsKKyAgICAgICAgcHJpbnRmKCJQQVNTOiBQcm9taXNlIGlzIGV4cG9zZWQgdW5kZXIgSlND
b250ZXh0IEFQSS5cbiIpOworICAgIH0KKworICAgIC8vIENoZWNrIG1pY3JvdGFza3MuCisgICAg
eworICAgICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUlu
R3JvdXAoTlVMTCwgTlVMTCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIEpTT2JqZWN0UmVmIGds
b2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KTsKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uOworICAgICAgICAgICAgSlNTdHJpbmdSZWYgY29kZSA9
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJyZXN1bHQgPSAwOyBQcm9taXNlLnJlc29s
dmUoNDIpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7IHJlc3VsdCA9IHZhbHVlOyB9KTsiKTsKKyAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIGZpbGUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiIik7CisgICAgICAgICAgICByZXN1bHQgJj0gYXNzZXJ0VHJ1ZSghSlNFdmFsdWF0ZVNjcmlw
dChjb250ZXh0LCBjb2RlLCBnbG9iYWxPYmplY3QsIGZpbGUsIDEsICZleGNlcHRpb24pLCAiQW4g
ZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24iKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFz
ZShjb2RlKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmaWxlKTsKKworICAgICAgICAg
ICAgSlNTdHJpbmdSZWYgcmVzdWx0UHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygicmVzdWx0Iik7CisgICAgICAgICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9wZXJ0eShj
b250ZXh0LCBnbG9iYWxPYmplY3QsIHJlc3VsdFByb3BlcnR5KSk7CisKKyAgICAgICAgICAgIEpT
VmFsdWVSZWYgcmVzdWx0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGdsb2Jh
bE9iamVjdCwgcmVzdWx0UHJvcGVydHksICZleGNlcHRpb24pOworICAgICAgICAgICAgcmVzdWx0
ICY9IGFzc2VydEVxdWFsc0FzTnVtYmVyKHJlc3VsdFZhbHVlLCA0Mik7CisgICAgICAgICAgICBK
U1N0cmluZ1JlbGVhc2UocmVzdWx0UHJvcGVydHkpOworICAgICAgICB9CisgICAgICAgIEpTR2xv
YmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CiAgICAgfQogCiAjaWYgT1MoREFSV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IDAxYmI3ZDc2YjMz
ZmM2NGZkNjU4NWFhMTIxOTM2ZDc5YjgyZmQ5ZDUuLmYwZjVjYmMzYWVlNTk2NzRiNjE2NTAwYWVm
Yjk2NWRhMjE5NmRmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkubW0KQEAgLTU0MCw5ICs1NDAsMTYgQEAgc3RhdGljIHZvaWQgdGVzdE9iamVjdGl2ZUNBUElN
YWluKCkKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbnRleHQgKmNvbnRl
eHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiUHJv
bWlzZSBpcyBub3QgZXhwb3NlZCIsIFtjb250ZXh0W0AiUHJvbWlzZSJdIGlzVW5kZWZpbmVkXSk7
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiUHJvbWlzZSBpcyBleHBvc2VkIiwgIVtjb250ZXh0W0Ai
UHJvbWlzZSJdIGlzVW5kZWZpbmVkXSk7CiAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250
ZXh0IGV2YWx1YXRlU2NyaXB0OkAidHlwZW9mIFByb21pc2UiXTsKLSAgICAgICAgY2hlY2tSZXN1
bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAndW5kZWZpbmVkJyIsIHJlc3VsdC5pc1N0cmluZyAmJiBb
cmVzdWx0IGlzRXF1YWxUb09iamVjdDpAInVuZGVmaW5lZCJdKTsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAnZnVuY3Rpb24nIiwgcmVzdWx0LmlzU3RyaW5nICYmIFty
ZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiZnVuY3Rpb24iXSk7CisgICAgfQorCisgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CisgICAgICAgIEpTVmlydHVhbE1hY2hpbmUqIHZtID0gW1tKU1ZpcnR1YWxN
YWNoaW5lIGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0Nv
bnRleHQgYWxsb2NdIGluaXRXaXRoVmlydHVhbE1hY2hpbmU6dm1dOworICAgICAgICBbY29udGV4
dCBldmFsdWF0ZVNjcmlwdDpAInJlc3VsdCA9IDA7IFByb21pc2UucmVzb2x2ZSg0MikudGhlbihm
dW5jdGlvbiAodmFsdWUpIHsgcmVzdWx0ID0gdmFsdWU7IH0pOyJdOworICAgICAgICBjaGVja1Jl
c3VsdChAIk1pY3JvdGFzayBpcyBkcmFpbmVkIiwgIVtjb250ZXh0W0AicmVzdWx0Il0gIGlzRXF1
YWxUb09iamVjdDpANDJdKTsKICAgICB9CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKaW5kZXggNTEzMTE2YTQ0NWFjNDMzOGQ1NmQxY2ZmYTVlMmMyMzA2Nzg4MmQ4
Ni4uNTdhZjZhZTkzYTdmMDZkN2QzZDIxMzA3YTI5OGMwZTkxOTFmMTNkOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKQEAgLTE0MDEsNiArMTQwMSw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZl
KEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwg
cmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIGdsb2Jh
bE9iamVjdC0+dm0oKS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDEwYmYxNzc4MjAyMmM0Nzk0ZDMwZTcwZWZiMmJlZjVkZjI0MmNlMTguLmQ3NjQw
NWM2YTMwMmNjYmMzN2Y5YzIwZTZjYjUzNGM3ODE1OGFjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBA
QAogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9i
amVjdCIsICZCYXNlOjpzX2luZm8sICZnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0dsb2JhbE9iamVjdCkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
SlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nl
c3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hv
dWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgMCwgJnNob3VsZElu
dGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dz
QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywg
JnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIs
ICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07CiAKIC8qIFNvdXJjZSBmb3Ig
SlNHbG9iYWxPYmplY3QubHV0LmgKIEBiZWdpbiBnbG9iYWxPYmplY3RUYWJsZQpAQCAtOTkwLDEw
ICs5OTAsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5h
bWUpCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKFBhc3NSZWZQdHI8TWlj
cm90YXNrPiB0YXNrKQogewotICAgIGlmIChnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5xdWV1
ZVRhc2tUb0V2ZW50TG9vcCkKKyAgICBpZiAoZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVl
dWVUYXNrVG9FdmVudExvb3ApIHsKICAgICAgICAgZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
cXVldWVUYXNrVG9FdmVudExvb3AodGhpcywgdGFzayk7Ci0gICAgZWxzZQotICAgICAgICBXVEZM
b2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5vdCBzdXBwb3J0ZWQuIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB2bSgpLnF1ZXVlTWljcm90YXNrKHRoaXMsIHRhc2spOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
Y3BwCmluZGV4IGMyZWUwYTU1MzJjMGI1MTkzNjg3MTA5ZDlhMzJlYzRhMTQ0NWQ4YmQuLjE1MjZk
MDk5M2NlYWVlOTQzYzlmMjVjMThkM2ExMjZjYzUyYTFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAtMTc2LDYgKzE3Niw4IEBAIHZvaWQgSlNMb2NrOjp1
bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQpCiB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VMb2Nr
KCkKIHsKICAgICBpZiAobV92bSkgeworICAgICAgICBtX3ZtLT5kcmFpbk1pY3JvdGFza3MoKTsK
KwogICAgICAgICBtX3ZtLT5oZWFwLnJlbGVhc2VEZWxheWVkUmVsZWFzZWRPYmplY3RzKCk7CiAg
ICAgICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShudWxscHRyKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNzY3NDFkZDhhZWEzN2ZmNTdjY2E0
Y2Y2MzZiZmMzMmJiNDI5Y2M0MS4uNGNjOWI3ZDZkMmI5MTkyMDcyNzBhMzgxNTM1M2ZlMmNiNWJm
YmQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODI0LDYgKzgyNCwy
MiBAQCB2b2lkIFZNOjpkdW1wVHlwZVByb2ZpbGVyRGF0YSgpCiAgICAgdHlwZVByb2ZpbGVyKCkt
PmR1bXBUeXBlUHJvZmlsZXJEYXRhKCp0aGlzKTsKIH0KIAordm9pZCBWTTo6cXVldWVNaWNyb3Rh
c2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxNaWNyb3Rhc2s+IHRh
c2spCit7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxRdWV1
ZWRUYXNrPigqdGhpcywgZ2xvYmFsT2JqZWN0LCB0YXNrKSk7Cit9CisKK3ZvaWQgVk06OmRyYWlu
TWljcm90YXNrcygpCit7CisgICAgd2hpbGUgKCFtX21pY3JvdGFza1F1ZXVlLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9taWNyb3Rhc2tRdWV1ZS50YWtlRmlyc3QoKS0+cnVuKCk7Cit9CisKK3ZvaWQg
UXVldWVkVGFzazo6cnVuKCkKK3sKKyAgICBtX21pY3JvdGFzay0+cnVuKG1fZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCkpOworfQorCiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSogdm0pCiB7
CiAgICAgbG9nU2FuaXRpemVTdGFjayh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCBmNzhmOWViOTY0NjBhZTlmZGJmZjkxNjljMjg0YTg1ODQ4MTZjNzM5Li5lZjdjYmU4ODgz
ZTIwN2YxY2U1Yjc0Y2RmNjhjN2JhZDkyMWQ2Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJM
TEludERhdGEuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRl
ICJNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlBy
aXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCkBAIC01NSw2ICs1Niw3IEBA
CiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRv
ci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTUzLDYgKzE1NSwyMyBAQCBzdHJ1Y3QgTG9jYWxUaW1l
T2Zmc2V0Q2FjaGUgewogICAgIFdURjo6VGltZVR5cGUgdGltZVR5cGU7CiB9OwogCitjbGFzcyBR
dWV1ZWRUYXNrIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWV1ZWRUYXNrKTsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2b2lkIHJ1bigpOworCisgICAg
UXVldWVkVGFzayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQ
dHI8TWljcm90YXNrPiBtaWNyb3Rhc2spCisgICAgICAgIDogbV9nbG9iYWxPYmplY3Qodm0sIGds
b2JhbE9iamVjdCkKKyAgICAgICAgLCBtX21pY3JvdGFzayhtaWNyb3Rhc2spCisgICAgeworICAg
IH0KKworcHJpdmF0ZToKKyAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0
OworICAgIFJlZlB0cjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOworfTsKKwogY2xhc3MgQ29uc2Vy
dmF0aXZlUm9vdHM7CiAKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtNTM2LDYgKzU1NSw5IEBAIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgYm9vbCBlbmFi
bGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAgICAgYm9vbCBkaXNhYmxlQ29udHJvbEZsb3dQcm9m
aWxlcigpOwogCisgICAgdm9pZCBxdWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCosIFBhc3NS
ZWZQdHI8TWljcm90YXNrPik7CisgICAgdm9pZCBkcmFpbk1pY3JvdGFza3MoKTsKKwogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBj
bGFzcyBDbGVhckV4Y2VwdGlvblNjb3BlOwpAQCAtNTkwLDYgKzYxMiw3IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgRnVuY3Rpb25IYXNFeGVjdXRl
ZENhY2hlIG1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250cm9sRmxvd1Byb2ZpbGVyPiBtX2NvbnRyb2xGbG93UHJvZmlsZXI7CiAgICAgdW5zaWduZWQg
bV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50OworICAgIFdURjo6RGVxdWU8c3RkOjp1
bmlxdWVfcHRyPFF1ZXVlZFRhc2s+PiBtX21pY3JvdGFza1F1ZXVlOwogfTsKIAogI2lmIEVOQUJM
RShHQ19WQUxJREFUSU9OKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ4Mzk1ZTNjZWY2ZmYwNTNjYzA5OWY3N2M1OWNhOWYw
NmUxMmIzZjYuLmMxZTA4ZjQ3ZWUwYzFjYTI3YjI5YWQxNmU4NTRiN2E0YWRiZjk5YmMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAxNS0wNy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFp
bmluZyBpbnRvIEpTQyBmcmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgUHJvbWlzZSB0ZXN0cyBt
YWlubHkgZm9jdXNpbmcgb24gbWljcm90YXNrcy4KKyAgICAgICAgVGhleSBjYW4gYmUgZXhlY3V0
ZWQgaW4gSlNDIHNoZWxsLiBTbyB0aGV5IGFyZSBsb2NhdGUgaW4ganMvIGRpcmVjdG9yeSAobm90
IGpzL2RvbSkuCisKKyAgICAgICAgKiBqcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9t
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9wcm9taXNlLW5lc3RlZC1t
aWNyb3Rhc2tzLmpzOiBBZGRlZC4KKyAgICAgICAgKFByb21pc2UucmVzb2x2ZS50aGVuKToKKyAg
ICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1kb20uanM6IEFkZGVk
LgorICAgICAgICAodmFsdWUudGhlbik6CisgICAgICAgICogcmVzb3VyY2VzL3N0YW5kYWxvbmUt
cG9zdC5qczoKKwogMjAxNS0wNy0xMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkLCBFRkwgZ2FyZGVuaW5nIG9uIDEy
dGggSnVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1uZXN0ZWQtbWljcm90
YXNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rh
c2tzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzBjYzVmYmI4NGViNmE4OGNjYmI4MTNjMTI4
Yzk1ZjI5ZTJjN2U4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1u
ZXN0ZWQtbWljcm90YXNrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdCBQcm9t
aXNlIG5lc3RlZCBtaWNyb3Rhc2tzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
VGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCBub3cuCitQQVNTIHZhbHVlMSBpcyA0MgorUEFT
UyB2YWx1ZTIgaXMgdW5kZWZpbmVkLgorUEFTUyByZXN1bHQgaXMgdW5kZWZpbmVkLgorUEFTUyB2
YWx1ZTIgaXMgODQKK1BBU1MgcmVzdWx0IGlzIHVuZGVmaW5lZC4KK1BBU1MgcmVzdWx0IGlzIDM1
MjgKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTU3NTI4MDI3OGI0ODgyMGNjZDg4NTE4NDc2Y2I3NjFlNTMyOGQ2OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuaHRtbApAQCAt
MCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVz
dHMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI0MTEyOTJhYjUwYjUwNzI5NzBiYzBlMmNlMzZjNmQ5
ZmM3Y2JhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2UtcmVzb2x2
ZS1pbi1ub24tZG9tLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IFByb21pc2Uu
cmVzb2x2ZSBpbiBub24gZG9tIGRpcmVjdG9yeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1RoZSBwcm9taXNlIGlzIG5vdCBmdWxmaWxsZWQgbm93LgorUEFTUyB2YWx1ZS50aGVu
IGlzIGNhbGxlZC4KK1BBU1MgdGhpc1ZhbHVlIGlzIHZhbHVlCitQQVNTIGZ1bGZpbGxlZAorUEFT
UyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2UtcmVzb2x2
ZS1pbi1ub24tZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9u
LWRvbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0OGQ2MDY0NmQzYWM3NDZhZTE0ZDNlZTY4MjY0ODBhZGJm
OGMxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUt
aW4tbm9uLWRvbS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVz
dHMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MTdlMDEwNDlh
MGQ5Y2IyOTY4YmJhZDBkYTU4NTNlYmYxZDJkOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5qcwpAQCAtMCww
ICsxLDI2IEBACitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlIG5lc3RlZCBtaWNyb3Rhc2tzLicp
OworCit2YXIgZ2xvYmFsT2JqZWN0ID0gdGhpczsKK2dsb2JhbE9iamVjdC5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKwordmFyIHZhbHVlMTsKK3ZhciB2YWx1ZTI7Cit2YXIgcmVzdWx0OworUHJvbWlz
ZS5yZXNvbHZlKDQyKS50aGVuKGZ1bmN0aW9uICh2MSkgeworICAgIHZhbHVlMSA9IHYxOworICAg
IHNob3VsZEJlKCd2YWx1ZTEnLCAnNDInKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgndmFsdWUy
Jyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ3Jlc3VsdCcpOworICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoODQpLnRoZW4oZnVuY3Rpb24gKHYyKSB7CisgICAgICAgIHZhbHVlMiA9IHYyOwor
ICAgICAgICBzaG91bGRCZSgndmFsdWUyJywgJzg0Jyk7CisgICAgICAgIHNob3VsZEJlVW5kZWZp
bmVkKCdyZXN1bHQnKTsKKyAgICAgICAgcmV0dXJuIHYyICogdjE7CisgICAgfSk7Cit9KS50aGVu
KGZ1bmN0aW9uIChyKSB7CisgICAgcmVzdWx0ID0gcjsKKyAgICBzaG91bGRCZSgncmVzdWx0Jywg
JzM1MjgnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitkZWJ1ZygnVGhlIHByb21pc2Ug
aXMgbm90IGZ1bGZpbGxlZCBub3cuJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1kb20uanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1kb20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY2MDE2NzAw
OWEyNjc3NTYyYWQ2MWE5OTc0NTZmMDc5ZmYyNmQwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qcwpAQCAtMCww
ICsxLDI1IEBACitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLnJlc29sdmUgaW4gbm9uIGRvbSBk
aXJlY3RvcnkuJyk7CisKK3ZhciBnbG9iYWxPYmplY3QgPSB0aGlzOworZ2xvYmFsT2JqZWN0Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwordmFyIHZhbHVlID0geworICB0aGVuOiBmdW5jdGlvbihmdWxm
aWxsQ2FsbGJhY2ssIHJlamVjdENhbGxiYWNrKSB7CisgICAgdGVzdFBhc3NlZCgndmFsdWUudGhl
biBpcyBjYWxsZWQuJyk7CisgICAgZ2xvYmFsT2JqZWN0LnRoaXNWYWx1ZSA9IHRoaXM7CisgICAg
c2hvdWxkQmUoJ3RoaXNWYWx1ZScsICd2YWx1ZScpOworICAgIGZ1bGZpbGxDYWxsYmFjaygnaGVs
bG8nKTsKKyAgfQorfTsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2
ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQp
IHsKKyAgdGVzdFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIGdsb2JhbE9iamVjdC5yZXN1bHQgPSBy
ZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7
CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK2RlYnVnKCdUaGUgcHJvbWlzZSBpcyBub3QgZnVs
ZmlsbGVkIG5vdy4nKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFs
b25lLXBvc3QuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzCmlu
ZGV4IDcxZTIyMzU3ODNjMDZlYzdlNDAzZjFhZGMwMmFlZDUxYTYwOWZhODQuLjkzYzc3OWE3ZjAz
MWZiNGJmZDI3NzVkMGY4NmI3MTYxZmUzMmJhZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jl
c291cmNlcy9zdGFuZGFsb25lLXBvc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3N0
YW5kYWxvbmUtcG9zdC5qcwpAQCAtMSwzICsxLDcgQEAKIHdhc1Bvc3RUZXN0U2NyaXB0UGFyc2Vk
ID0gdHJ1ZTsKIAotZmluaXNoSlNUZXN0KCk7CitpZiAodGhpcy5qc1Rlc3RJc0FzeW5jKSB7Cisg
ICAgaWYgKHRoaXMud2FzRmluaXNoSlNUZXN0Q2FsbGVkKQorICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30gZWxzZQorICAgIGZpbmlzaEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256697</attachid>
            <date>2015-07-13 07:53:23 -0700</date>
            <delta_ts>2015-07-13 08:01:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146828-20150713145218.patch</filename>
            <type>text/plain</type>
            <size>18707</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YWRhMjk4YTFjMDc4NWFjOTQ2MjM5YzZmZWE0MDI0MzYzZGQ0ZjYwLi4wMTliMzFjMWMxODk0NmVi
NmIxN2EwNGE0NmJkYmQzN2ZkNzIwYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNS0wNy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFpbmluZyBp
bnRvIEpTQyBmcmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXV0b21hdGljIG1pY3JvdGFzayBk
cmFpbmluZyBzeXN0ZW0gaW50byBKU0MgZnJhbWV3b3JrLgorICAgICAgICBXaGVuIHRoZSBkZXB0
aCBvZiBWTSBsb2NrIGJlY29tZXMgMCwgYmVmb3JlIHRoaXMsIHdlIGRyYWluIHRoZSBxdWV1ZWQg
bWljcm90YXNrcy4KKyAgICAgICAgRW5xdWV1aW5nIGJlaGF2aW9yIGNhbiBiZSBpbmplY3RlZCBi
eSB0aGUgSlNHbG9iYWxPYmplY3QncyBtZXRob2QgdGFibGUuCisgICAgICAgIEl0IGlzIHV0aWxp
emVkIGluIFdlYkNvcmUgdG8gcG9zdCB0aGUgbWljcm90YXNrIHRvIFdlYkNvcmUncyBldmVudCBs
b29wLgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIEpTQyBpbnRlcmFjdGl2ZSBzaGVsbCwgVk0g
ZGVwdGggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiAwLgorICAgICAgICBTbyB3ZSBtYW51YWxseSBk
cmFpbnMgdGhlIHF1ZXVlZCBtaWNyb3Rhc2tzIGFmdGVyIGV2YWx1YXRpbmcgdGhlIHdyaXR0ZW4g
bGluZS4KKworICAgICAgICBTaW5jZSBub3cgSlNDIGZyYW1ld29yayBoYXMgdGhlIG1pY3JvdGFz
ayBxdWV1ZSwgd2UgY2FuIGRyYWluIHRoZSBxdWV1ZWQgbWljcm90YXNrcy4KKyAgICAgICAgU28g
cmUtZW5hYmxlIHRoZSBQcm9taXNlIGluIHRoZSBKU0MgZnJhbWV3b3JrIGNvbnRleHQuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRSdW50aW1l
RmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToKKyAgICAgICAgKHRlc3RP
YmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHJ1bkludGVy
YWN0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnF1ZXVlTWljcm90YXNr
KToKKyAgICAgICAgKEpTQzo6Vk06OmRyYWluTWljcm90YXNrcyk6CisgICAgICAgIChKU0M6OlF1
ZXVlZFRhc2s6OnJ1bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpR
dWV1ZWRUYXNrOjpRdWV1ZWRUYXNrKToKKwogMjAxNS0wNy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRzo6RGVzaXJlZFdhdGNocG9pbnRzIHNob3VsZCBh
Y2NlcHQgV2F0Y2hwb2ludFNldFR5cGUncyB0aGF0IGFyZW4ndCBuZWNlc3NhcmlseSBwb2ludGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDQ5NzZj
MjlhZWVlZjkxMzkzYmIwYTg3MjllNTAwNjQ3MjY0YzFmNzkuLmY0ZDkyMzY2YWIzMDViNTE5YmQ0
OGQ2ZTFjNDVlYTE2YjVhMDZmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKQEAgLTU5LDE0ICs1OSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LXN0YXRpYyBSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mg
PSBKU0dsb2JhbE9iamVjdDo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhnbG9iYWxPYmplY3QpOwot
ICAgIHJ1bnRpbWVGbGFncy5zZXRQcm9taXNlRGlzYWJsZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIHJ1
bnRpbWVGbGFnczsKLX0KLQotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNDOjpqYXZh
U2NyaXB0Q29yZUFQSUdsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmSlNHbG9iYWxPYmplY3Q6
OmFsbG93c0FjY2Vzc0Zyb20sICZKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNQcm9maWxpbmcsICZK
U0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJkpTR2xvYmFsT2JqZWN0Ojpz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAm
SlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2Nv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQzo6amF2YVNjcmlwdENvcmVBUElHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsgJkpTR2xvYmFsT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9tLCAm
SlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRzUHJvZmlsaW5nLCAmSlNHbG9iYWxPYmplY3Q6OnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
LCAmSlNHbG9iYWxPYmplY3Q6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZKU0ds
b2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OwogCiAvLyBG
cm9tIHRoZSBBUEkncyBwZXJzcGVjdGl2ZSwgYSBjb250ZXh0IGdyb3VwIHJlbWFpbnMgYWxpdmUg
aWZmCiAvLyAgICAgKGEpIGl0IGhhcyBiZWVuIEpTQ29udGV4dEdyb3VwUmV0YWluZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZmM0OTE0YjdhYjY5NTI3
MDk1ZWYwZTY1OGE0YjM0MmY1OTA0OTVkMS4uODA2N2UyNTI0ZDYxNjllMmE4MDM3MzY5MDZjNmNj
NzhiZjllYjhlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMK
QEAgLTE4NTQsMTIgKzE4NTQsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkK
ICAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KGNvbnRleHQpOwogICAgICAgICB7CiAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9taXNl
UHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJvbWlzZSIpOwotICAg
ICAgICAgICAgQVNTRVJUKCFKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVj
dCwgcHJvbWlzZVByb3BlcnR5KSk7CisgICAgICAgICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9w
ZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHByb21pc2VQcm9wZXJ0eSkpOwogICAgICAgICAg
ICAgSlNTdHJpbmdSZWxlYXNlKHByb21pc2VQcm9wZXJ0eSk7CiAgICAgICAgIH0KICAgICAgICAg
ewogICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoInR5cGVvZiBQcm9taXNlIik7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlZiB1bmRl
ZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidW5kZWZpbmVkIik7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiB1bmRlZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZnVuY3Rpb24iKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU0V2YWx1
YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgTlVMTCwgTlVMTCwgMSwgTlVMTCk7CiAgICAgICAg
ICAgICBBU1NFUlQoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHZhbHVlKSk7CiAgICAgICAgICAg
ICBKU1N0cmluZ1JlZiB2YWx1ZUFzU3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCB2YWx1ZSwgTlVMTCk7CkBAIC0xODY4LDcgKzE4NjgsMjkgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZSh1bmRlZmluZWQpOwog
ICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdCk7CiAgICAgICAgIH0KLSAgICAgICAg
cHJpbnRmKCJQQVNTOiBQcm9taXNlIGlzIG5vdCBleHBvc2VkIHVuZGVyIEpTQ29udGV4dCBBUEku
XG4iKTsKKyAgICAgICAgcHJpbnRmKCJQQVNTOiBQcm9taXNlIGlzIGV4cG9zZWQgdW5kZXIgSlND
b250ZXh0IEFQSS5cbiIpOworICAgIH0KKworICAgIC8vIENoZWNrIG1pY3JvdGFza3MuCisgICAg
eworICAgICAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUlu
R3JvdXAoTlVMTCwgTlVMTCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIEpTT2JqZWN0UmVmIGds
b2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KTsKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uOworICAgICAgICAgICAgSlNTdHJpbmdSZWYgY29kZSA9
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJyZXN1bHQgPSAwOyBQcm9taXNlLnJlc29s
dmUoNDIpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7IHJlc3VsdCA9IHZhbHVlOyB9KTsiKTsKKyAg
ICAgICAgICAgIEpTU3RyaW5nUmVmIGZpbGUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiIik7CisgICAgICAgICAgICByZXN1bHQgJj0gYXNzZXJ0VHJ1ZSghSlNFdmFsdWF0ZVNjcmlw
dChjb250ZXh0LCBjb2RlLCBnbG9iYWxPYmplY3QsIGZpbGUsIDEsICZleGNlcHRpb24pLCAiQW4g
ZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24iKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFz
ZShjb2RlKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmaWxlKTsKKworICAgICAgICAg
ICAgSlNTdHJpbmdSZWYgcmVzdWx0UHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygicmVzdWx0Iik7CisgICAgICAgICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9wZXJ0eShj
b250ZXh0LCBnbG9iYWxPYmplY3QsIHJlc3VsdFByb3BlcnR5KSk7CisKKyAgICAgICAgICAgIEpT
VmFsdWVSZWYgcmVzdWx0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGdsb2Jh
bE9iamVjdCwgcmVzdWx0UHJvcGVydHksICZleGNlcHRpb24pOworICAgICAgICAgICAgcmVzdWx0
ICY9IGFzc2VydEVxdWFsc0FzTnVtYmVyKHJlc3VsdFZhbHVlLCA0Mik7CisgICAgICAgICAgICBK
U1N0cmluZ1JlbGVhc2UocmVzdWx0UHJvcGVydHkpOworICAgICAgICB9CisgICAgICAgIEpTR2xv
YmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CiAgICAgfQogCiAjaWYgT1MoREFSV0lOKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IDAxYmI3ZDc2YjMz
ZmM2NGZkNjU4NWFhMTIxOTM2ZDc5YjgyZmQ5ZDUuLmYwZjVjYmMzYWVlNTk2NzRiNjE2NTAwYWVm
Yjk2NWRhMjE5NmRmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkubW0KQEAgLTU0MCw5ICs1NDAsMTYgQEAgc3RhdGljIHZvaWQgdGVzdE9iamVjdGl2ZUNBUElN
YWluKCkKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbnRleHQgKmNvbnRl
eHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiUHJv
bWlzZSBpcyBub3QgZXhwb3NlZCIsIFtjb250ZXh0W0AiUHJvbWlzZSJdIGlzVW5kZWZpbmVkXSk7
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiUHJvbWlzZSBpcyBleHBvc2VkIiwgIVtjb250ZXh0W0Ai
UHJvbWlzZSJdIGlzVW5kZWZpbmVkXSk7CiAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250
ZXh0IGV2YWx1YXRlU2NyaXB0OkAidHlwZW9mIFByb21pc2UiXTsKLSAgICAgICAgY2hlY2tSZXN1
bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAndW5kZWZpbmVkJyIsIHJlc3VsdC5pc1N0cmluZyAmJiBb
cmVzdWx0IGlzRXF1YWxUb09iamVjdDpAInVuZGVmaW5lZCJdKTsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAnZnVuY3Rpb24nIiwgcmVzdWx0LmlzU3RyaW5nICYmIFty
ZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiZnVuY3Rpb24iXSk7CisgICAgfQorCisgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CisgICAgICAgIEpTVmlydHVhbE1hY2hpbmUqIHZtID0gW1tKU1ZpcnR1YWxN
YWNoaW5lIGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0Nv
bnRleHQgYWxsb2NdIGluaXRXaXRoVmlydHVhbE1hY2hpbmU6dm1dOworICAgICAgICBbY29udGV4
dCBldmFsdWF0ZVNjcmlwdDpAInJlc3VsdCA9IDA7IFByb21pc2UucmVzb2x2ZSg0MikudGhlbihm
dW5jdGlvbiAodmFsdWUpIHsgcmVzdWx0ID0gdmFsdWU7IH0pOyJdOworICAgICAgICBjaGVja1Jl
c3VsdChAIk1pY3JvdGFzayBpcyBkcmFpbmVkIiwgIVtjb250ZXh0W0AicmVzdWx0Il0gIGlzRXF1
YWxUb09iamVjdDpANDJdKTsKICAgICB9CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKaW5kZXggNTEzMTE2YTQ0NWFjNDMzOGQ1NmQxY2ZmYTVlMmMyMzA2Nzg4MmQ4
Ni4uNTdhZjZhZTkzYTdmMDZkN2QzZDIxMzA3YTI5OGMwZTkxOTFmMTNkOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKQEAgLTE0MDEsNiArMTQwMSw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZl
KEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwg
cmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIGdsb2Jh
bE9iamVjdC0+dm0oKS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDEwYmYxNzc4MjAyMmM0Nzk0ZDMwZTcwZWZiMmJlZjVkZjI0MmNlMTguLmQ3NjQw
NWM2YTMwMmNjYmMzN2Y5YzIwZTZjYjUzNGM3ODE1OGFjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBA
QAogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9i
amVjdCIsICZCYXNlOjpzX2luZm8sICZnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0dsb2JhbE9iamVjdCkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUg
SlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nl
c3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hv
dWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgMCwgJnNob3VsZElu
dGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dz
QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywg
JnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIs
ICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07CiAKIC8qIFNvdXJjZSBmb3Ig
SlNHbG9iYWxPYmplY3QubHV0LmgKIEBiZWdpbiBnbG9iYWxPYmplY3RUYWJsZQpAQCAtOTkwLDEw
ICs5OTAsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5h
bWUpCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKFBhc3NSZWZQdHI8TWlj
cm90YXNrPiB0YXNrKQogewotICAgIGlmIChnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5xdWV1
ZVRhc2tUb0V2ZW50TG9vcCkKKyAgICBpZiAoZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVl
dWVUYXNrVG9FdmVudExvb3ApIHsKICAgICAgICAgZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+
cXVldWVUYXNrVG9FdmVudExvb3AodGhpcywgdGFzayk7Ci0gICAgZWxzZQotICAgICAgICBXVEZM
b2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5vdCBzdXBwb3J0ZWQuIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICB2bSgpLnF1ZXVlTWljcm90YXNrKHRoaXMsIHRhc2spOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
Y3BwCmluZGV4IGMyZWUwYTU1MzJjMGI1MTkzNjg3MTA5ZDlhMzJlYzRhMTQ0NWQ4YmQuLjE1MjZk
MDk5M2NlYWVlOTQzYzlmMjVjMThkM2ExMjZjYzUyYTFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAtMTc2LDYgKzE3Niw4IEBAIHZvaWQgSlNMb2NrOjp1
bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQpCiB2b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VMb2Nr
KCkKIHsKICAgICBpZiAobV92bSkgeworICAgICAgICBtX3ZtLT5kcmFpbk1pY3JvdGFza3MoKTsK
KwogICAgICAgICBtX3ZtLT5oZWFwLnJlbGVhc2VEZWxheWVkUmVsZWFzZWRPYmplY3RzKCk7CiAg
ICAgICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShudWxscHRyKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNzY3NDFkZDhhZWEzN2ZmNTdjY2E0
Y2Y2MzZiZmMzMmJiNDI5Y2M0MS4uNGNjOWI3ZDZkMmI5MTkyMDcyNzBhMzgxNTM1M2ZlMmNiNWJm
YmQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODI0LDYgKzgyNCwy
MiBAQCB2b2lkIFZNOjpkdW1wVHlwZVByb2ZpbGVyRGF0YSgpCiAgICAgdHlwZVByb2ZpbGVyKCkt
PmR1bXBUeXBlUHJvZmlsZXJEYXRhKCp0aGlzKTsKIH0KIAordm9pZCBWTTo6cXVldWVNaWNyb3Rh
c2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxNaWNyb3Rhc2s+IHRh
c2spCit7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxRdWV1
ZWRUYXNrPigqdGhpcywgZ2xvYmFsT2JqZWN0LCB0YXNrKSk7Cit9CisKK3ZvaWQgVk06OmRyYWlu
TWljcm90YXNrcygpCit7CisgICAgd2hpbGUgKCFtX21pY3JvdGFza1F1ZXVlLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9taWNyb3Rhc2tRdWV1ZS50YWtlRmlyc3QoKS0+cnVuKCk7Cit9CisKK3ZvaWQg
UXVldWVkVGFzazo6cnVuKCkKK3sKKyAgICBtX21pY3JvdGFzay0+cnVuKG1fZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCkpOworfQorCiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSogdm0pCiB7
CiAgICAgbG9nU2FuaXRpemVTdGFjayh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCBmNzhmOWViOTY0NjBhZTlmZGJmZjkxNjljMjg0YTg1ODQ4MTZjNzM5Li43NGY0NjBhNDgy
MGJiNTE4MGY1NGNiMGMzODdmYmEwMzRhYjUwYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJM
TEludERhdGEuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRl
ICJNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlBy
aXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCkBAIC01NSw2ICs1Niw3IEBA
CiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRv
ci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTUzLDYgKzE1NSwyMyBAQCBzdHJ1Y3QgTG9jYWxUaW1l
T2Zmc2V0Q2FjaGUgewogICAgIFdURjo6VGltZVR5cGUgdGltZVR5cGU7CiB9OwogCitjbGFzcyBR
dWV1ZWRUYXNrIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWV1ZWRUYXNrKTsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2b2lkIHJ1bigpOworCisgICAg
UXVldWVkVGFzayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQ
dHI8TWljcm90YXNrPiBtaWNyb3Rhc2spCisgICAgICAgIDogbV9nbG9iYWxPYmplY3Qodm0sIGds
b2JhbE9iamVjdCkKKyAgICAgICAgLCBtX21pY3JvdGFzayhtaWNyb3Rhc2spCisgICAgeworICAg
IH0KKworcHJpdmF0ZToKKyAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0
OworICAgIFJlZlB0cjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOworfTsKKwogY2xhc3MgQ29uc2Vy
dmF0aXZlUm9vdHM7CiAKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtNTM2LDYgKzU1NSw5IEBAIGNs
YXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgYm9vbCBlbmFi
bGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAgICAgYm9vbCBkaXNhYmxlQ29udHJvbEZsb3dQcm9m
aWxlcigpOwogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBxdWV1ZU1pY3JvdGFzayhKU0ds
b2JhbE9iamVjdCosIFBhc3NSZWZQdHI8TWljcm90YXNrPik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBkcmFpbk1pY3JvdGFza3MoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlvblNj
b3BlOwpAQCAtNTkwLDYgKzYxMiw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFZNPiB7CiAgICAgRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlIG1fZnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRmxvd1Byb2ZpbGVyPiBt
X2NvbnRyb2xGbG93UHJvZmlsZXI7CiAgICAgdW5zaWduZWQgbV9jb250cm9sRmxvd1Byb2ZpbGVy
RW5hYmxlZENvdW50OworICAgIFdURjo6RGVxdWU8c3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+
PiBtX21pY3JvdGFza1F1ZXVlOwogfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGQ4Mzk1ZTNjZWY2ZmYwNTNjYzA5OWY3N2M1OWNhOWYwNmUxMmIzZjYuLmMxZTA4ZjQ3ZWUw
YzFjYTI3YjI5YWQxNmU4NTRiN2E0YWRiZjk5YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAx
NS0wNy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFpbmluZyBpbnRvIEpTQyBmcmFtZXdv
cmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgUHJvbWlzZSB0ZXN0cyBtYWlubHkgZm9jdXNpbmcgb24gbWlj
cm90YXNrcy4KKyAgICAgICAgVGhleSBjYW4gYmUgZXhlY3V0ZWQgaW4gSlNDIHNoZWxsLiBTbyB0
aGV5IGFyZSBsb2NhdGUgaW4ganMvIGRpcmVjdG9yeSAobm90IGpzL2RvbSkuCisKKyAgICAgICAg
KiBqcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICoganMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBqcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGpzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGpzL3NjcmlwdC10ZXN0cy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmpzOiBBZGRlZC4K
KyAgICAgICAgKFByb21pc2UucmVzb2x2ZS50aGVuKToKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVz
dHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1kb20uanM6IEFkZGVkLgorICAgICAgICAodmFsdWUudGhl
bik6CisgICAgICAgICogcmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5qczoKKwogMjAxNS0wNy0x
MSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
RUZMXSBVbnJldmlld2VkLCBFRkwgZ2FyZGVuaW5nIG9uIDEydGggSnVsLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NzBjYzVmYmI4NGViNmE4OGNjYmI4MTNjMTI4Yzk1ZjI5ZTJjN2U4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdCBQcm9taXNlIG5lc3RlZCBtaWNyb3Rhc2tz
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGhlIHByb21pc2UgaXMgbm90IGZ1
bGZpbGxlZCBub3cuCitQQVNTIHZhbHVlMSBpcyA0MgorUEFTUyB2YWx1ZTIgaXMgdW5kZWZpbmVk
LgorUEFTUyByZXN1bHQgaXMgdW5kZWZpbmVkLgorUEFTUyB2YWx1ZTIgaXMgODQKK1BBU1MgcmVz
dWx0IGlzIHVuZGVmaW5lZC4KK1BBU1MgcmVzdWx0IGlzIDM1MjgKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9qcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9wcm9t
aXNlLW5lc3RlZC1taWNyb3Rhc2tzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU3NTI4MDI3OGI0ODgyMGNj
ZDg4NTE4NDc2Y2I3NjFlNTMyOGQ2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pz
L3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0ZWQtbWlj
cm90YXNrcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjI0MTEyOTJhYjUwYjUwNzI5NzBiYzBlMmNlMzZjNmQ5ZmM3Y2JhZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IFByb21pc2UucmVzb2x2ZSBpbiBub24gZG9tIGRp
cmVjdG9yeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1RoZSBwcm9taXNlIGlz
IG5vdCBmdWxmaWxsZWQgbm93LgorUEFTUyB2YWx1ZS50aGVuIGlzIGNhbGxlZC4KK1BBU1MgdGhp
c1ZhbHVlIGlzIHZhbHVlCitQQVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLmh0bWwgYi9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU0OGQ2MDY0NmQzYWM3NDZhZTE0ZDNlZTY4MjY0ODBhZGJmOGMxMzQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS5odG1sCkBAIC0w
LDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0ZWQtbWlj
cm90YXNrcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm9taXNlLW5lc3RlZC1t
aWNyb3Rhc2tzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MTdlMDEwNDlhMGQ5Y2IyOTY4YmJhZDBkYTU4NTNl
YmYxZDJkOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
cHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNjcmlwdGlv
bignVGVzdCBQcm9taXNlIG5lc3RlZCBtaWNyb3Rhc2tzLicpOworCit2YXIgZ2xvYmFsT2JqZWN0
ID0gdGhpczsKK2dsb2JhbE9iamVjdC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHZhbHVl
MTsKK3ZhciB2YWx1ZTI7Cit2YXIgcmVzdWx0OworUHJvbWlzZS5yZXNvbHZlKDQyKS50aGVuKGZ1
bmN0aW9uICh2MSkgeworICAgIHZhbHVlMSA9IHYxOworICAgIHNob3VsZEJlKCd2YWx1ZTEnLCAn
NDInKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgndmFsdWUyJyk7CisgICAgc2hvdWxkQmVVbmRl
ZmluZWQoJ3Jlc3VsdCcpOworICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoODQpLnRoZW4oZnVu
Y3Rpb24gKHYyKSB7CisgICAgICAgIHZhbHVlMiA9IHYyOworICAgICAgICBzaG91bGRCZSgndmFs
dWUyJywgJzg0Jyk7CisgICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCdyZXN1bHQnKTsKKyAgICAg
ICAgcmV0dXJuIHYyICogdjE7CisgICAgfSk7Cit9KS50aGVuKGZ1bmN0aW9uIChyKSB7CisgICAg
cmVzdWx0ID0gcjsKKyAgICBzaG91bGRCZSgncmVzdWx0JywgJzM1MjgnKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30pOworCitkZWJ1ZygnVGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCBub3cu
Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1yZXNv
bHZlLW5vbi1kb20uanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1yZXNv
bHZlLW5vbi1kb20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY2MDE2NzAwOWEyNjc3NTYyYWQ2MWE5OTc0NTZm
MDc5ZmYyNmQwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qcwpAQCAtMCwwICsxLDI1IEBACitkZXNjcmlwdGlv
bignVGVzdCBQcm9taXNlLnJlc29sdmUgaW4gbm9uIGRvbSBkaXJlY3RvcnkuJyk7CisKK3ZhciBn
bG9iYWxPYmplY3QgPSB0aGlzOworZ2xvYmFsT2JqZWN0LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
dmFyIHZhbHVlID0geworICB0aGVuOiBmdW5jdGlvbihmdWxmaWxsQ2FsbGJhY2ssIHJlamVjdENh
bGxiYWNrKSB7CisgICAgdGVzdFBhc3NlZCgndmFsdWUudGhlbiBpcyBjYWxsZWQuJyk7CisgICAg
Z2xvYmFsT2JqZWN0LnRoaXNWYWx1ZSA9IHRoaXM7CisgICAgc2hvdWxkQmUoJ3RoaXNWYWx1ZScs
ICd2YWx1ZScpOworICAgIGZ1bGZpbGxDYWxsYmFjaygnaGVsbG8nKTsKKyAgfQorfTsKK3ZhciBw
cm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsg
fSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdFBhc3NlZCgnZnVs
ZmlsbGVkJyk7CisgIGdsb2JhbE9iamVjdC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOworfSwgZnVu
Y3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVzdCgpOwor
fSk7CisKK2RlYnVnKCdUaGUgcHJvbWlzZSBpcyBub3QgZnVsZmlsbGVkIG5vdy4nKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFsb25lLXBvc3QuanMgYi9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzCmluZGV4IDcxZTIyMzU3ODNjMDZlYzdl
NDAzZjFhZGMwMmFlZDUxYTYwOWZhODQuLjkzYzc3OWE3ZjAzMWZiNGJmZDI3NzVkMGY4NmI3MTYx
ZmUzMmJhZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFsb25lLXBv
c3QuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5qcwpAQCAt
MSwzICsxLDcgQEAKIHdhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkID0gdHJ1ZTsKIAotZmluaXNoSlNU
ZXN0KCk7CitpZiAodGhpcy5qc1Rlc3RJc0FzeW5jKSB7CisgICAgaWYgKHRoaXMud2FzRmluaXNo
SlNUZXN0Q2FsbGVkKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30gZWxzZQorICAgIGZpbmlz
aEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256699</attachid>
            <date>2015-07-13 08:01:05 -0700</date>
            <delta_ts>2015-07-13 08:11:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146828-20150713235959.patch</filename>
            <type>text/plain</type>
            <size>18713</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YWRhMjk4YTFjMDc4NWFjOTQ2MjM5YzZmZWE0MDI0MzYzZGQ0ZjYwLi4wMTliMzFjMWMxODk0NmVi
NmIxN2EwNGE0NmJkYmQzN2ZkNzIwYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNS0wNy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFpbmluZyBp
bnRvIEpTQyBmcmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXV0b21hdGljIG1pY3JvdGFzayBk
cmFpbmluZyBzeXN0ZW0gaW50byBKU0MgZnJhbWV3b3JrLgorICAgICAgICBXaGVuIHRoZSBkZXB0
aCBvZiBWTSBsb2NrIGJlY29tZXMgMCwgYmVmb3JlIHRoaXMsIHdlIGRyYWluIHRoZSBxdWV1ZWQg
bWljcm90YXNrcy4KKyAgICAgICAgRW5xdWV1aW5nIGJlaGF2aW9yIGNhbiBiZSBpbmplY3RlZCBi
eSB0aGUgSlNHbG9iYWxPYmplY3QncyBtZXRob2QgdGFibGUuCisgICAgICAgIEl0IGlzIHV0aWxp
emVkIGluIFdlYkNvcmUgdG8gcG9zdCB0aGUgbWljcm90YXNrIHRvIFdlYkNvcmUncyBldmVudCBs
b29wLgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIEpTQyBpbnRlcmFjdGl2ZSBzaGVsbCwgVk0g
ZGVwdGggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiAwLgorICAgICAgICBTbyB3ZSBtYW51YWxseSBk
cmFpbnMgdGhlIHF1ZXVlZCBtaWNyb3Rhc2tzIGFmdGVyIGV2YWx1YXRpbmcgdGhlIHdyaXR0ZW4g
bGluZS4KKworICAgICAgICBTaW5jZSBub3cgSlNDIGZyYW1ld29yayBoYXMgdGhlIG1pY3JvdGFz
ayBxdWV1ZSwgd2UgY2FuIGRyYWluIHRoZSBxdWV1ZWQgbWljcm90YXNrcy4KKyAgICAgICAgU28g
cmUtZW5hYmxlIHRoZSBQcm9taXNlIGluIHRoZSBKU0MgZnJhbWV3b3JrIGNvbnRleHQuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRSdW50aW1l
RmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToKKyAgICAgICAgKHRlc3RP
YmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHJ1bkludGVy
YWN0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnF1ZXVlTWljcm90YXNr
KToKKyAgICAgICAgKEpTQzo6Vk06OmRyYWluTWljcm90YXNrcyk6CisgICAgICAgIChKU0M6OlF1
ZXVlZFRhc2s6OnJ1bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpR
dWV1ZWRUYXNrOjpRdWV1ZWRUYXNrKToKKwogMjAxNS0wNy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRzo6RGVzaXJlZFdhdGNocG9pbnRzIHNob3VsZCBh
Y2NlcHQgV2F0Y2hwb2ludFNldFR5cGUncyB0aGF0IGFyZW4ndCBuZWNlc3NhcmlseSBwb2ludGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDQ5NzZj
MjlhZWVlZjkxMzkzYmIwYTg3MjllNTAwNjQ3MjY0YzFmNzkuLmY0ZDkyMzY2YWIzMDViNTE5YmQ0
OGQ2ZTFjNDVlYTE2YjVhMDZmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKQEAgLTU5LDE0ICs1OSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LXN0YXRpYyBSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mg
PSBKU0dsb2JhbE9iamVjdDo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhnbG9iYWxPYmplY3QpOwot
ICAgIHJ1bnRpbWVGbGFncy5zZXRQcm9taXNlRGlzYWJsZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIHJ1
bnRpbWVGbGFnczsKLX0KLQotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNDOjpqYXZh
U2NyaXB0Q29yZUFQSUdsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmSlNHbG9iYWxPYmplY3Q6
OmFsbG93c0FjY2Vzc0Zyb20sICZKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNQcm9maWxpbmcsICZK
U0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJkpTR2xvYmFsT2JqZWN0Ojpz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAm
SlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2Nv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQzo6amF2YVNjcmlwdENvcmVBUElHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsgJkpTR2xvYmFsT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9tLCAm
SlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRzUHJvZmlsaW5nLCAmSlNHbG9iYWxPYmplY3Q6OnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
LCAmSlNHbG9iYWxPYmplY3Q6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZKU0ds
b2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OwogCiAvLyBG
cm9tIHRoZSBBUEkncyBwZXJzcGVjdGl2ZSwgYSBjb250ZXh0IGdyb3VwIHJlbWFpbnMgYWxpdmUg
aWZmCiAvLyAgICAgKGEpIGl0IGhhcyBiZWVuIEpTQ29udGV4dEdyb3VwUmV0YWluZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZmM0OTE0YjdhYjY5NTI3
MDk1ZWYwZTY1OGE0YjM0MmY1OTA0OTVkMS4uZDBlMGE5NzMxMjdhMmRjZjQyMDBiODAxYTRkN2Fj
YjI5MDU1ODJkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMK
QEAgLTE4NTQsMTIgKzE4NTQsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkK
ICAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KGNvbnRleHQpOwogICAgICAgICB7CiAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9taXNl
UHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJvbWlzZSIpOwotICAg
ICAgICAgICAgQVNTRVJUKCFKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVj
dCwgcHJvbWlzZVByb3BlcnR5KSk7CisgICAgICAgICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9w
ZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHByb21pc2VQcm9wZXJ0eSkpOwogICAgICAgICAg
ICAgSlNTdHJpbmdSZWxlYXNlKHByb21pc2VQcm9wZXJ0eSk7CiAgICAgICAgIH0KICAgICAgICAg
ewogICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoInR5cGVvZiBQcm9taXNlIik7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlZiB1bmRl
ZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidW5kZWZpbmVkIik7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiB1bmRlZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZnVuY3Rpb24iKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU0V2YWx1
YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgTlVMTCwgTlVMTCwgMSwgTlVMTCk7CiAgICAgICAg
ICAgICBBU1NFUlQoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHZhbHVlKSk7CiAgICAgICAgICAg
ICBKU1N0cmluZ1JlZiB2YWx1ZUFzU3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCB2YWx1ZSwgTlVMTCk7CkBAIC0xODY4LDcgKzE4NjgsMjkgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZSh1bmRlZmluZWQpOwog
ICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdCk7CiAgICAgICAgIH0KLSAgICAgICAg
cHJpbnRmKCJQQVNTOiBQcm9taXNlIGlzIG5vdCBleHBvc2VkIHVuZGVyIEpTQ29udGV4dCBBUEku
XG4iKTsKKyAgICAgICAgcHJpbnRmKCJQQVNTOiBQcm9taXNlIGlzIGV4cG9zZWQgdW5kZXIgSlND
b250ZXh0IEFQSS5cbiIpOworICAgIH0KKworICAgIC8vIENoZWNrIG1pY3JvdGFza3MuCisgICAg
eworICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENy
ZWF0ZUluR3JvdXAoTlVMTCwgTlVMTCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIEpTT2JqZWN0
UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KTsKKyAg
ICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uOworICAgICAgICAgICAgSlNTdHJpbmdSZWYg
Y29kZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJyZXN1bHQgPSAwOyBQcm9taXNl
LnJlc29sdmUoNDIpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7IHJlc3VsdCA9IHZhbHVlOyB9KTsi
KTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIGZpbGUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiIik7CisgICAgICAgICAgICByZXN1bHQgJj0gYXNzZXJ0VHJ1ZSghSlNFdmFsdWF0
ZVNjcmlwdChjb250ZXh0LCBjb2RlLCBnbG9iYWxPYmplY3QsIGZpbGUsIDEsICZleGNlcHRpb24p
LCAiQW4gZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24iKTsKKyAgICAgICAgICAgIEpTU3RyaW5n
UmVsZWFzZShjb2RlKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmaWxlKTsKKworICAg
ICAgICAgICAgSlNTdHJpbmdSZWYgcmVzdWx0UHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygicmVzdWx0Iik7CisgICAgICAgICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9w
ZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHJlc3VsdFByb3BlcnR5KSk7CisKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWYgcmVzdWx0VmFsdWUgPSBKU09iamVjdEdldFByb3BlcnR5KGNvbnRleHQs
IGdsb2JhbE9iamVjdCwgcmVzdWx0UHJvcGVydHksICZleGNlcHRpb24pOworICAgICAgICAgICAg
cmVzdWx0ICY9IGFzc2VydEVxdWFsc0FzTnVtYmVyKHJlc3VsdFZhbHVlLCA0Mik7CisgICAgICAg
ICAgICBKU1N0cmluZ1JlbGVhc2UocmVzdWx0UHJvcGVydHkpOworICAgICAgICB9CisgICAgICAg
IEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CiAgICAgfQogCiAjaWYgT1MoREFSV0lO
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IDAxYmI3
ZDc2YjMzZmM2NGZkNjU4NWFhMTIxOTM2ZDc5YjgyZmQ5ZDUuLmYwZjVjYmMzYWVlNTk2NzRiNjE2
NTAwYWVmYjk2NWRhMjE5NmRmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3Rz
L3Rlc3RhcGkubW0KQEAgLTU0MCw5ICs1NDAsMTYgQEAgc3RhdGljIHZvaWQgdGVzdE9iamVjdGl2
ZUNBUElNYWluKCkKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbnRleHQg
KmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNoZWNrUmVzdWx0
KEAiUHJvbWlzZSBpcyBub3QgZXhwb3NlZCIsIFtjb250ZXh0W0AiUHJvbWlzZSJdIGlzVW5kZWZp
bmVkXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiUHJvbWlzZSBpcyBleHBvc2VkIiwgIVtjb250
ZXh0W0AiUHJvbWlzZSJdIGlzVW5kZWZpbmVkXSk7CiAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9
IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidHlwZW9mIFByb21pc2UiXTsKLSAgICAgICAgY2hl
Y2tSZXN1bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAndW5kZWZpbmVkJyIsIHJlc3VsdC5pc1N0cmlu
ZyAmJiBbcmVzdWx0IGlzRXF1YWxUb09iamVjdDpAInVuZGVmaW5lZCJdKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAnZnVuY3Rpb24nIiwgcmVzdWx0LmlzU3RyaW5n
ICYmIFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiZnVuY3Rpb24iXSk7CisgICAgfQorCisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTVmlydHVhbE1hY2hpbmUqIHZtID0gW1tKU1Zp
cnR1YWxNYWNoaW5lIGFsbG9jXSBpbml0XTsKKyAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0g
W1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoVmlydHVhbE1hY2hpbmU6dm1dOworICAgICAgICBb
Y29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInJlc3VsdCA9IDA7IFByb21pc2UucmVzb2x2ZSg0Miku
dGhlbihmdW5jdGlvbiAodmFsdWUpIHsgcmVzdWx0ID0gdmFsdWU7IH0pOyJdOworICAgICAgICBj
aGVja1Jlc3VsdChAIk1pY3JvdGFzayBpcyBkcmFpbmVkIiwgIVtjb250ZXh0W0AicmVzdWx0Il0g
IGlzRXF1YWxUb09iamVjdDpANDJdKTsKICAgICB9CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNTEzMTE2YTQ0NWFjNDMzOGQ1NmQxY2ZmYTVlMmMyMzA2
Nzg4MmQ4Ni4uNTdhZjZhZTkzYTdmMDZkN2QzZDIxMzA3YTI5OGMwZTkxOTFmMTNkOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTE0MDEsNiArMTQwMSw3IEBAIHN0YXRpYyB2b2lkIHJ1bkludGVy
YWN0aXZlKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgcHJpbnRmKCIl
c1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLT52
YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAg
IGdsb2JhbE9iamVjdC0+dm0oKS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICB9CiAgICAgcHJpbnRm
KCJcbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCmluZGV4IDEwYmYxNzc4MjAyMmM0Nzk0ZDMwZTcwZWZiMmJlZjVkZjI0MmNlMTgu
LmQ3NjQwNWM2YTMwMmNjYmMzN2Y5YzIwZTZjYjUzNGM3ODE1OGFjZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE1Nyw3ICsx
NTcsNyBAQAogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkds
b2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8sICZnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU0dsb2JhbE9iamVjdCkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxv
d3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZv
LCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgMCwgJnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAm
YWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNl
SW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51
bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07CiAKIC8qIFNvdXJj
ZSBmb3IgSlNHbG9iYWxPYmplY3QubHV0LmgKIEBiZWdpbiBnbG9iYWxPYmplY3RUYWJsZQpAQCAt
OTkwLDEwICs5OTAsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0TmFtZShjb25zdCBTdHJp
bmcmIG5hbWUpCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKFBhc3NSZWZQ
dHI8TWljcm90YXNrPiB0YXNrKQogewotICAgIGlmIChnbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5xdWV1ZVRhc2tUb0V2ZW50TG9vcCkKKyAgICBpZiAoZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUo
KS0+cXVldWVUYXNrVG9FdmVudExvb3ApIHsKICAgICAgICAgZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3AodGhpcywgdGFzayk7Ci0gICAgZWxzZQotICAgICAg
ICBXVEZMb2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5vdCBzdXBwb3J0ZWQuIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2bSgpLnF1ZXVlTWljcm90YXNrKHRoaXMsIHRhc2sp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0xvY2suY3BwCmluZGV4IGMyZWUwYTU1MzJjMGI1MTkzNjg3MTA5ZDlhMzJlYzRhMTQ0NWQ4YmQu
LjE1MjZkMDk5M2NlYWVlOTQzYzlmMjVjMThkM2ExMjZjYzUyYTFjYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAtMTc2LDYgKzE3Niw4IEBAIHZvaWQgSlNM
b2NrOjp1bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQpCiB2b2lkIEpTTG9jazo6d2lsbFJlbGVh
c2VMb2NrKCkKIHsKICAgICBpZiAobV92bSkgeworICAgICAgICBtX3ZtLT5kcmFpbk1pY3JvdGFz
a3MoKTsKKwogICAgICAgICBtX3ZtLT5oZWFwLnJlbGVhc2VEZWxheWVkUmVsZWFzZWRPYmplY3Rz
KCk7CiAgICAgICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0Vk1FbnRyeShudWxscHRyKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNzY3NDFkZDhhZWEzN2Zm
NTdjY2E0Y2Y2MzZiZmMzMmJiNDI5Y2M0MS4uNGNjOWI3ZDZkMmI5MTkyMDcyNzBhMzgxNTM1M2Zl
MmNiNWJmYmQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtODI0LDYg
KzgyNCwyMiBAQCB2b2lkIFZNOjpkdW1wVHlwZVByb2ZpbGVyRGF0YSgpCiAgICAgdHlwZVByb2Zp
bGVyKCktPmR1bXBUeXBlUHJvZmlsZXJEYXRhKCp0aGlzKTsKIH0KIAordm9pZCBWTTo6cXVldWVN
aWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxNaWNyb3Rh
c2s+IHRhc2spCit7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1
ZTxRdWV1ZWRUYXNrPigqdGhpcywgZ2xvYmFsT2JqZWN0LCB0YXNrKSk7Cit9CisKK3ZvaWQgVk06
OmRyYWluTWljcm90YXNrcygpCit7CisgICAgd2hpbGUgKCFtX21pY3JvdGFza1F1ZXVlLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9taWNyb3Rhc2tRdWV1ZS50YWtlRmlyc3QoKS0+cnVuKCk7Cit9CisK
K3ZvaWQgUXVldWVkVGFzazo6cnVuKCkKK3sKKyAgICBtX21pY3JvdGFzay0+cnVuKG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCkpOworfQorCiB2b2lkIHNhbml0aXplU3RhY2tGb3JWTShWTSog
dm0pCiB7CiAgICAgbG9nU2FuaXRpemVTdGFjayh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCBmNzhmOWViOTY0NjBhZTlmZGJmZjkxNjljMjg0YTg1ODQ4MTZjNzM5Li43NGY0
NjBhNDgyMGJiNTE4MGY1NGNiMGMzODdmYmEwMzRhYjUwYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNs
dWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNp
bmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1
ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90eXBlTWFwLmgiCkBAIC01NSw2ICs1
Niw3IEBACiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFs
bG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTUzLDYgKzE1NSwyMyBAQCBzdHJ1Y3QgTG9j
YWxUaW1lT2Zmc2V0Q2FjaGUgewogICAgIFdURjo6VGltZVR5cGUgdGltZVR5cGU7CiB9OwogCitj
bGFzcyBRdWV1ZWRUYXNrIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShRdWV1ZWRUYXNrKTsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2b2lkIHJ1bigpOwor
CisgICAgUXVldWVkVGFzayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBh
c3NSZWZQdHI8TWljcm90YXNrPiBtaWNyb3Rhc2spCisgICAgICAgIDogbV9nbG9iYWxPYmplY3Qo
dm0sIGdsb2JhbE9iamVjdCkKKyAgICAgICAgLCBtX21pY3JvdGFzayhtaWNyb3Rhc2spCisgICAg
eworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJvbmc8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFs
T2JqZWN0OworICAgIFJlZlB0cjxNaWNyb3Rhc2s+IG1fbWljcm90YXNrOworfTsKKwogY2xhc3Mg
Q29uc2VydmF0aXZlUm9vdHM7CiAKICNpZiBDT01QSUxFUihNU1ZDKQpAQCAtNTM2LDYgKzU1NSw5
IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgYm9v
bCBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAgICAgYm9vbCBkaXNhYmxlQ29udHJvbEZs
b3dQcm9maWxlcigpOwogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBxdWV1ZU1pY3JvdGFz
ayhKU0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8TWljcm90YXNrPik7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBkcmFpbk1pY3JvdGFza3MoKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2Vw
dGlvblNjb3BlOwpAQCAtNTkwLDYgKzYxMiw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlIG1fZnVuY3Rp
b25IYXNFeGVjdXRlZENhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRmxvd1Byb2Zp
bGVyPiBtX2NvbnRyb2xGbG93UHJvZmlsZXI7CiAgICAgdW5zaWduZWQgbV9jb250cm9sRmxvd1By
b2ZpbGVyRW5hYmxlZENvdW50OworICAgIFdURjo6RGVxdWU8c3RkOjp1bmlxdWVfcHRyPFF1ZXVl
ZFRhc2s+PiBtX21pY3JvdGFza1F1ZXVlOwogfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9O
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGQ4Mzk1ZTNjZWY2ZmYwNTNjYzA5OWY3N2M1OWNhOWYwNmUxMmIzZjYuLmMxZTA4
ZjQ3ZWUwYzFjYTI3YjI5YWQxNmU4NTRiN2E0YWRiZjk5YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAxNS0wNy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFpbmluZyBpbnRvIEpTQyBm
cmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgUHJvbWlzZSB0ZXN0cyBtYWlubHkgZm9jdXNpbmcg
b24gbWljcm90YXNrcy4KKyAgICAgICAgVGhleSBjYW4gYmUgZXhlY3V0ZWQgaW4gSlNDIHNoZWxs
LiBTbyB0aGV5IGFyZSBsb2NhdGUgaW4ganMvIGRpcmVjdG9yeSAobm90IGpzL2RvbSkuCisKKyAg
ICAgICAgKiBqcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICoganMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBqcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGpzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKFByb21pc2UucmVzb2x2ZS50aGVuKToKKyAgICAgICAgKiBqcy9zY3Jp
cHQtdGVzdHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1kb20uanM6IEFkZGVkLgorICAgICAgICAodmFs
dWUudGhlbik6CisgICAgICAgICogcmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5qczoKKwogMjAx
NS0wNy0xMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbRUZMXSBVbnJldmlld2VkLCBFRkwgZ2FyZGVuaW5nIG9uIDEydGggSnVsLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NzBjYzVmYmI4NGViNmE4OGNjYmI4MTNjMTI4Yzk1ZjI5ZTJjN2U4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNr
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVzdCBQcm9taXNlIG5lc3RlZCBtaWNy
b3Rhc2tzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGhlIHByb21pc2UgaXMg
bm90IGZ1bGZpbGxlZCBub3cuCitQQVNTIHZhbHVlMSBpcyA0MgorUEFTUyB2YWx1ZTIgaXMgdW5k
ZWZpbmVkLgorUEFTUyByZXN1bHQgaXMgdW5kZWZpbmVkLgorUEFTUyB2YWx1ZTIgaXMgODQKK1BB
U1MgcmVzdWx0IGlzIHVuZGVmaW5lZC4KK1BBU1MgcmVzdWx0IGlzIDM1MjgKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU3NTI4MDI3OGI0
ODgyMGNjZDg4NTE4NDc2Y2I3NjFlNTMyOGQ2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0
ZWQtbWljcm90YXNrcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjI0MTEyOTJhYjUwYjUwNzI5NzBiYzBlMmNlMzZjNmQ5ZmM3Y2JhZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IFByb21pc2UucmVzb2x2ZSBpbiBub24g
ZG9tIGRpcmVjdG9yeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1RoZSBwcm9t
aXNlIGlzIG5vdCBmdWxmaWxsZWQgbm93LgorUEFTUyB2YWx1ZS50aGVuIGlzIGNhbGxlZC4KK1BB
U1MgdGhpc1ZhbHVlIGlzIHZhbHVlCitQQVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMgImhl
bGxvIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLmh0
bWwgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU0OGQ2MDY0NmQzYWM3NDZhZTE0ZDNlZTY4MjY0ODBhZGJmOGMxMzQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0
ZWQtbWljcm90YXNrcy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm9taXNlLW5l
c3RlZC1taWNyb3Rhc2tzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3MTdlMDEwNDlhMGQ5Y2IyOTY4YmJhZDBk
YTU4NTNlYmYxZDJkOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNj
cmlwdGlvbignVGVzdCBQcm9taXNlIG5lc3RlZCBtaWNyb3Rhc2tzLicpOworCit2YXIgZ2xvYmFs
T2JqZWN0ID0gdGhpczsKK2dsb2JhbE9iamVjdC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFy
IHZhbHVlMTsKK3ZhciB2YWx1ZTI7Cit2YXIgcmVzdWx0OworUHJvbWlzZS5yZXNvbHZlKDQyKS50
aGVuKGZ1bmN0aW9uICh2MSkgeworICAgIHZhbHVlMSA9IHYxOworICAgIHNob3VsZEJlKCd2YWx1
ZTEnLCAnNDInKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgndmFsdWUyJyk7CisgICAgc2hvdWxk
QmVVbmRlZmluZWQoJ3Jlc3VsdCcpOworICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoODQpLnRo
ZW4oZnVuY3Rpb24gKHYyKSB7CisgICAgICAgIHZhbHVlMiA9IHYyOworICAgICAgICBzaG91bGRC
ZSgndmFsdWUyJywgJzg0Jyk7CisgICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCdyZXN1bHQnKTsK
KyAgICAgICAgcmV0dXJuIHYyICogdjE7CisgICAgfSk7Cit9KS50aGVuKGZ1bmN0aW9uIChyKSB7
CisgICAgcmVzdWx0ID0gcjsKKyAgICBzaG91bGRCZSgncmVzdWx0JywgJzM1MjgnKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30pOworCitkZWJ1ZygnVGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxl
ZCBub3cuJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlz
ZS1yZXNvbHZlLW5vbi1kb20uanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlz
ZS1yZXNvbHZlLW5vbi1kb20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY2MDE2NzAwOWEyNjc3NTYyYWQ2MWE5
OTc0NTZmMDc5ZmYyNmQwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qcwpAQCAtMCwwICsxLDI1IEBACitkZXNj
cmlwdGlvbignVGVzdCBQcm9taXNlLnJlc29sdmUgaW4gbm9uIGRvbSBkaXJlY3RvcnkuJyk7CisK
K3ZhciBnbG9iYWxPYmplY3QgPSB0aGlzOworZ2xvYmFsT2JqZWN0LmpzVGVzdElzQXN5bmMgPSB0
cnVlOwordmFyIHZhbHVlID0geworICB0aGVuOiBmdW5jdGlvbihmdWxmaWxsQ2FsbGJhY2ssIHJl
amVjdENhbGxiYWNrKSB7CisgICAgdGVzdFBhc3NlZCgndmFsdWUudGhlbiBpcyBjYWxsZWQuJyk7
CisgICAgZ2xvYmFsT2JqZWN0LnRoaXNWYWx1ZSA9IHRoaXM7CisgICAgc2hvdWxkQmUoJ3RoaXNW
YWx1ZScsICd2YWx1ZScpOworICAgIGZ1bGZpbGxDYWxsYmFjaygnaGVsbG8nKTsKKyAgfQorfTsK
K3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkgeyByZXNvbHZlKHZh
bHVlKTsgfSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQpIHsKKyAgdGVzdFBhc3Nl
ZCgnZnVsZmlsbGVkJyk7CisgIGdsb2JhbE9iamVjdC5yZXN1bHQgPSByZXN1bHQ7CisgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZpbmlzaEpTVGVzdCgpOwor
fSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7CisgIGZpbmlzaEpTVGVz
dCgpOworfSk7CisKK2RlYnVnKCdUaGUgcHJvbWlzZSBpcyBub3QgZnVsZmlsbGVkIG5vdy4nKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFsb25lLXBvc3QuanMgYi9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzCmluZGV4IDcxZTIyMzU3ODNj
MDZlYzdlNDAzZjFhZGMwMmFlZDUxYTYwOWZhODQuLjkzYzc3OWE3ZjAzMWZiNGJmZDI3NzVkMGY4
NmI3MTYxZmUzMmJhZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFs
b25lLXBvc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5q
cwpAQCAtMSwzICsxLDcgQEAKIHdhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkID0gdHJ1ZTsKIAotZmlu
aXNoSlNUZXN0KCk7CitpZiAodGhpcy5qc1Rlc3RJc0FzeW5jKSB7CisgICAgaWYgKHRoaXMud2Fz
RmluaXNoSlNUZXN0Q2FsbGVkKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30gZWxzZQorICAg
IGZpbmlzaEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256700</attachid>
            <date>2015-07-13 08:11:37 -0700</date>
            <delta_ts>2015-07-14 10:17:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146828-20150714001031.patch</filename>
            <type>text/plain</type>
            <size>18693</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YWRhMjk4YTFjMDc4NWFjOTQ2MjM5YzZmZWE0MDI0MzYzZGQ0ZjYwLi4wMTliMzFjMWMxODk0NmVi
NmIxN2EwNGE0NmJkYmQzN2ZkNzIwYTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNS0wNy0xMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFpbmluZyBp
bnRvIEpTQyBmcmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXV0b21hdGljIG1pY3JvdGFzayBk
cmFpbmluZyBzeXN0ZW0gaW50byBKU0MgZnJhbWV3b3JrLgorICAgICAgICBXaGVuIHRoZSBkZXB0
aCBvZiBWTSBsb2NrIGJlY29tZXMgMCwgYmVmb3JlIHRoaXMsIHdlIGRyYWluIHRoZSBxdWV1ZWQg
bWljcm90YXNrcy4KKyAgICAgICAgRW5xdWV1aW5nIGJlaGF2aW9yIGNhbiBiZSBpbmplY3RlZCBi
eSB0aGUgSlNHbG9iYWxPYmplY3QncyBtZXRob2QgdGFibGUuCisgICAgICAgIEl0IGlzIHV0aWxp
emVkIGluIFdlYkNvcmUgdG8gcG9zdCB0aGUgbWljcm90YXNrIHRvIFdlYkNvcmUncyBldmVudCBs
b29wLgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIEpTQyBpbnRlcmFjdGl2ZSBzaGVsbCwgVk0g
ZGVwdGggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiAwLgorICAgICAgICBTbyB3ZSBtYW51YWxseSBk
cmFpbnMgdGhlIHF1ZXVlZCBtaWNyb3Rhc2tzIGFmdGVyIGV2YWx1YXRpbmcgdGhlIHdyaXR0ZW4g
bGluZS4KKworICAgICAgICBTaW5jZSBub3cgSlNDIGZyYW1ld29yayBoYXMgdGhlIG1pY3JvdGFz
ayBxdWV1ZSwgd2UgY2FuIGRyYWluIHRoZSBxdWV1ZWQgbWljcm90YXNrcy4KKyAgICAgICAgU28g
cmUtZW5hYmxlIHRoZSBQcm9taXNlIGluIHRoZSBKU0MgZnJhbWV3b3JrIGNvbnRleHQuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRSdW50aW1l
RmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToKKyAgICAgICAgKHRlc3RP
YmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHJ1bkludGVy
YWN0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnF1ZXVlTWljcm90YXNr
KToKKyAgICAgICAgKEpTQzo6Vk06OmRyYWluTWljcm90YXNrcyk6CisgICAgICAgIChKU0M6OlF1
ZXVlZFRhc2s6OnJ1bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpR
dWV1ZWRUYXNrOjpRdWV1ZWRUYXNrKToKKwogMjAxNS0wNy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRzo6RGVzaXJlZFdhdGNocG9pbnRzIHNob3VsZCBh
Y2NlcHQgV2F0Y2hwb2ludFNldFR5cGUncyB0aGF0IGFyZW4ndCBuZWNlc3NhcmlseSBwb2ludGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDQ5NzZj
MjlhZWVlZjkxMzkzYmIwYTg3MjllNTAwNjQ3MjY0YzFmNzkuLmY0ZDkyMzY2YWIzMDViNTE5YmQ0
OGQ2ZTFjNDVlYTE2YjVhMDZmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKQEAgLTU5LDE0ICs1OSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LXN0YXRpYyBSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mg
PSBKU0dsb2JhbE9iamVjdDo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhnbG9iYWxPYmplY3QpOwot
ICAgIHJ1bnRpbWVGbGFncy5zZXRQcm9taXNlRGlzYWJsZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIHJ1
bnRpbWVGbGFnczsKLX0KLQotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNDOjpqYXZh
U2NyaXB0Q29yZUFQSUdsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmSlNHbG9iYWxPYmplY3Q6
OmFsbG93c0FjY2Vzc0Zyb20sICZKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNQcm9maWxpbmcsICZK
U0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJkpTR2xvYmFsT2JqZWN0Ojpz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAm
SlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2Nv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQzo6amF2YVNjcmlwdENvcmVBUElHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsgJkpTR2xvYmFsT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9tLCAm
SlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRzUHJvZmlsaW5nLCAmSlNHbG9iYWxPYmplY3Q6OnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
LCAmSlNHbG9iYWxPYmplY3Q6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZKU0ds
b2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OwogCiAvLyBG
cm9tIHRoZSBBUEkncyBwZXJzcGVjdGl2ZSwgYSBjb250ZXh0IGdyb3VwIHJlbWFpbnMgYWxpdmUg
aWZmCiAvLyAgICAgKGEpIGl0IGhhcyBiZWVuIEpTQ29udGV4dEdyb3VwUmV0YWluZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZmM0OTE0YjdhYjY5NTI3
MDk1ZWYwZTY1OGE0YjM0MmY1OTA0OTVkMS4uODcxM2E2YjdiNmFjMzllM2M5MmZlMmQ0YzdmMzA3
MDJkYTMwZWYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMK
QEAgLTE4NTQsMTIgKzE4NTQsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkK
ICAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KGNvbnRleHQpOwogICAgICAgICB7CiAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9taXNl
UHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJvbWlzZSIpOwotICAg
ICAgICAgICAgQVNTRVJUKCFKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVj
dCwgcHJvbWlzZVByb3BlcnR5KSk7CisgICAgICAgICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9w
ZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHByb21pc2VQcm9wZXJ0eSkpOwogICAgICAgICAg
ICAgSlNTdHJpbmdSZWxlYXNlKHByb21pc2VQcm9wZXJ0eSk7CiAgICAgICAgIH0KICAgICAgICAg
ewogICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoInR5cGVvZiBQcm9taXNlIik7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlZiB1bmRl
ZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidW5kZWZpbmVkIik7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiB1bmRlZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZnVuY3Rpb24iKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU0V2YWx1
YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgTlVMTCwgTlVMTCwgMSwgTlVMTCk7CiAgICAgICAg
ICAgICBBU1NFUlQoSlNWYWx1ZUlzU3RyaW5nKGNvbnRleHQsIHZhbHVlKSk7CiAgICAgICAgICAg
ICBKU1N0cmluZ1JlZiB2YWx1ZUFzU3RyaW5nID0gSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0
LCB2YWx1ZSwgTlVMTCk7CkBAIC0xODY4LDcgKzE4NjgsMjkgQEAgaW50IG1haW4oaW50IGFyZ2Ms
IGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZSh1bmRlZmluZWQpOwog
ICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlwdCk7CiAgICAgICAgIH0KLSAgICAgICAg
cHJpbnRmKCJQQVNTOiBQcm9taXNlIGlzIG5vdCBleHBvc2VkIHVuZGVyIEpTQ29udGV4dCBBUEku
XG4iKTsKKyAgICAgICAgcHJpbnRmKCJQQVNTOiBQcm9taXNlIGlzIGV4cG9zZWQgdW5kZXIgSlND
b250ZXh0IEFQSS5cbiIpOworICAgIH0KKworICAgIC8vIENoZWNrIG1pY3JvdGFza3MuCisgICAg
eworICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dCA9IEpTR2xvYmFsQ29udGV4dENy
ZWF0ZUluR3JvdXAoTlVMTCwgTlVMTCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIEpTT2JqZWN0
UmVmIGdsb2JhbE9iamVjdCA9IEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChjb250ZXh0KTsKKyAg
ICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uOworICAgICAgICAgICAgSlNTdHJpbmdSZWYg
Y29kZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJyZXN1bHQgPSAwOyBQcm9taXNl
LnJlc29sdmUoNDIpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7IHJlc3VsdCA9IHZhbHVlOyB9KTsi
KTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIGZpbGUgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiIik7CisgICAgICAgICAgICBhc3NlcnRUcnVlKCFKU0V2YWx1YXRlU2NyaXB0KGNv
bnRleHQsIGNvZGUsIGdsb2JhbE9iamVjdCwgZmlsZSwgMSwgJmV4Y2VwdGlvbiksICJBbiBleGNl
cHRpb24gc2hvdWxkIGJlIHRocm93biIpOworICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKGNv
ZGUpOworICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNlKGZpbGUpOworCisgICAgICAgICAgICBK
U1N0cmluZ1JlZiByZXN1bHRQcm9wZXJ0eSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJyZXN1bHQiKTsKKyAgICAgICAgICAgIEFTU0VSVChKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRl
eHQsIGdsb2JhbE9iamVjdCwgcmVzdWx0UHJvcGVydHkpKTsKKworICAgICAgICAgICAgSlNWYWx1
ZVJlZiByZXN1bHRWYWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2Jq
ZWN0LCByZXN1bHRQcm9wZXJ0eSwgJmV4Y2VwdGlvbik7CisgICAgICAgICAgICBhc3NlcnRFcXVh
bHNBc051bWJlcihyZXN1bHRWYWx1ZSwgNDIpOworICAgICAgICAgICAgSlNTdHJpbmdSZWxlYXNl
KHJlc3VsdFByb3BlcnR5KTsKKyAgICAgICAgfQorICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxl
YXNlKGNvbnRleHQpOwogICAgIH0KIAogI2lmIE9TKERBUldJTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQppbmRleCAwMWJiN2Q3NmIzM2ZjNjRmZDY1ODVhYTEy
MTkzNmQ3OWI4MmZkOWQ1Li5mMGY1Y2JjM2FlZTU5Njc0YjYxNjUwMGFlZmI5NjVkYTIxOTZkZjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC01NDAs
OSArNTQwLDE2IEBAIHN0YXRpYyB2b2lkIHRlc3RPYmplY3RpdmVDQVBJTWFpbigpCiAKICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRl
eHQgYWxsb2NdIGluaXRdOwotICAgICAgICBjaGVja1Jlc3VsdChAIlByb21pc2UgaXMgbm90IGV4
cG9zZWQiLCBbY29udGV4dFtAIlByb21pc2UiXSBpc1VuZGVmaW5lZF0pOworICAgICAgICBjaGVj
a1Jlc3VsdChAIlByb21pc2UgaXMgZXhwb3NlZCIsICFbY29udGV4dFtAIlByb21pc2UiXSBpc1Vu
ZGVmaW5lZF0pOwogICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAInR5cGVvZiBQcm9taXNlIl07Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAidHlwZW9mIFBy
b21pc2UgaXMgJ3VuZGVmaW5lZCciLCByZXN1bHQuaXNTdHJpbmcgJiYgW3Jlc3VsdCBpc0VxdWFs
VG9PYmplY3Q6QCJ1bmRlZmluZWQiXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAidHlwZW9mIFBy
b21pc2UgaXMgJ2Z1bmN0aW9uJyIsIHJlc3VsdC5pc1N0cmluZyAmJiBbcmVzdWx0IGlzRXF1YWxU
b09iamVjdDpAImZ1bmN0aW9uIl0pOworICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBKU1ZpcnR1YWxNYWNoaW5lKiB2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10g
aW5pdF07CisgICAgICAgIEpTQ29udGV4dCogY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0V2l0aFZpcnR1YWxNYWNoaW5lOnZtXTsKKyAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3Jp
cHQ6QCJyZXN1bHQgPSAwOyBQcm9taXNlLnJlc29sdmUoNDIpLnRoZW4oZnVuY3Rpb24gKHZhbHVl
KSB7IHJlc3VsdCA9IHZhbHVlOyB9KTsiXTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJNaWNyb3Rh
c2sgaXMgZHJhaW5lZCIsICFbY29udGV4dFtAInJlc3VsdCJdICBpc0VxdWFsVG9PYmplY3Q6QDQy
XSk7CiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IDUxMzExNmE0NDVhYzQzMzhkNTZkMWNmZmE1ZTJjMjMwNjc4ODJkODYuLjU3YWY2YWU5M2E3
ZjA2ZDdkM2QyMTMwN2EyOThjMGU5MTkxZjEzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0x
NDAxLDYgKzE0MDEsNyBAQCBzdGF0aWMgdm9pZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHJldHVyblZhbHVlLnRv
U3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICBnbG9iYWxPYmplY3QtPnZtKCku
ZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAgfQogICAgIHByaW50ZigiXG4iKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxMGJm
MTc3ODIwMjJjNDc5NGQzMGU3MGVmYjJiZWY1ZGYyNDJjZTE4Li5kNzY0MDVjNmEzMDJjY2JjMzdm
OWMyMGU2Y2I1MzRjNzgxNThhY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAKIAogY29uc3QgQ2xh
c3NJbmZvIEpTR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJHbG9iYWxPYmplY3QiLCAmQmFzZTo6
c19pbmZvLCAmZ2xvYmFsT2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxP
YmplY3QpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0
OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBv
cnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNj
cmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIDAsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRC
ZWZvcmVUaW1lb3V0IH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9i
amVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZz
dXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1
cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJy
dXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OwogCiAvKiBTb3VyY2UgZm9yIEpTR2xvYmFsT2JqZWN0
Lmx1dC5oCiBAYmVnaW4gZ2xvYmFsT2JqZWN0VGFibGUKQEAgLTk5MCwxMCArOTkwLDEyIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnNldE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiB2b2lkIEpT
R2xvYmFsT2JqZWN0OjpxdWV1ZU1pY3JvdGFzayhQYXNzUmVmUHRyPE1pY3JvdGFzaz4gdGFzaykK
IHsKLSAgICBpZiAoZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExv
b3ApCisgICAgaWYgKGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnF1ZXVlVGFza1RvRXZlbnRM
b29wKSB7CiAgICAgICAgIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPnF1ZXVlVGFza1RvRXZl
bnRMb29wKHRoaXMsIHRhc2spOwotICAgIGVsc2UKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJP
UjogRXZlbnQgbG9vcCBub3Qgc3VwcG9ydGVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgdm0oKS5xdWV1ZU1pY3JvdGFzayh0aGlzLCB0YXNrKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBjMmVl
MGE1NTMyYzBiNTE5MzY4NzEwOWQ5YTMyZWM0YTE0NDVkOGJkLi4xNTI2ZDA5OTNjZWFlZTk0M2M5
ZjI1YzE4ZDNhMTI2Y2M1MmExY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TG9jay5jcHAKQEAgLTE3Niw2ICsxNzYsOCBAQCB2b2lkIEpTTG9jazo6dW5sb2NrKGludHB0cl90
IHVubG9ja0NvdW50KQogdm9pZCBKU0xvY2s6OndpbGxSZWxlYXNlTG9jaygpCiB7CiAgICAgaWYg
KG1fdm0pIHsKKyAgICAgICAgbV92bS0+ZHJhaW5NaWNyb3Rhc2tzKCk7CisKICAgICAgICAgbV92
bS0+aGVhcC5yZWxlYXNlRGVsYXllZFJlbGVhc2VkT2JqZWN0cygpOwogICAgICAgICBtX3ZtLT5z
ZXRTdGFja1BvaW50ZXJBdFZNRW50cnkobnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDc2NzQxZGQ4YWVhMzdmZjU3Y2NhNGNmNjM2YmZjMzJiYjQy
OWNjNDEuLjRjYzliN2Q2ZDJiOTE5MjA3MjcwYTM4MTUzNTNmZTJjYjViZmJkMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTgyNCw2ICs4MjQsMjIgQEAgdm9pZCBWTTo6
ZHVtcFR5cGVQcm9maWxlckRhdGEoKQogICAgIHR5cGVQcm9maWxlcigpLT5kdW1wVHlwZVByb2Zp
bGVyRGF0YSgqdGhpcyk7CiB9CiAKK3ZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8TWljcm90YXNrPiB0YXNrKQoreworICAgIG1f
bWljcm90YXNrUXVldWUuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMs
IGdsb2JhbE9iamVjdCwgdGFzaykpOworfQorCit2b2lkIFZNOjpkcmFpbk1pY3JvdGFza3MoKQor
eworICAgIHdoaWxlICghbV9taWNyb3Rhc2tRdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fbWlj
cm90YXNrUXVldWUudGFrZUZpcnN0KCktPnJ1bigpOworfQorCit2b2lkIFF1ZXVlZFRhc2s6OnJ1
bigpCit7CisgICAgbV9taWNyb3Rhc2stPnJ1bihtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
KTsKK30KKwogdm9pZCBzYW5pdGl6ZVN0YWNrRm9yVk0oVk0qIHZtKQogewogICAgIGxvZ1Nhbml0
aXplU3RhY2sodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZjc4ZjllYjk2
NDYwYWU5ZmRiZmY5MTY5YzI4NGE4NTg0ODE2YzczOS4uNzRmNDYwYTQ4MjBiYjUxODBmNTRjYjBj
Mzg3ZmJhMDM0YWI1MGFmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSAiTWljcm90YXNrLmgi
CiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgog
I2luY2x1ZGUgIlByb3RvdHlwZU1hcC5oIgpAQCAtNTUsNiArNTYsNyBAQAogI2luY2x1ZGUgPHd0
Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRl
IDx3dGYvRGF0ZU1hdGguaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KQEAgLTE1Myw2ICsxNTUsMjMgQEAgc3RydWN0IExvY2FsVGltZU9mZnNldENhY2hlIHsK
ICAgICBXVEY6OlRpbWVUeXBlIHRpbWVUeXBlOwogfTsKIAorY2xhc3MgUXVldWVkVGFzayB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUXVldWVkVGFzayk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgdm9pZCBydW4oKTsKKworICAgIFF1ZXVlZFRhc2soVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4g
bWljcm90YXNrKQorICAgICAgICA6IG1fZ2xvYmFsT2JqZWN0KHZtLCBnbG9iYWxPYmplY3QpCisg
ICAgICAgICwgbV9taWNyb3Rhc2sobWljcm90YXNrKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBSZWZQdHI8
TWljcm90YXNrPiBtX21pY3JvdGFzazsKK307CisKIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwog
CiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTUzNiw2ICs1NTUsOSBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIGJvb2wgZW5hYmxlQ29udHJvbEZsb3dQ
cm9maWxlcigpOwogICAgIGJvb2wgZGlzYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIAorICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqLCBQ
YXNzUmVmUHRyPE1pY3JvdGFzaz4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHJhaW5N
aWNyb3Rhc2tzKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsKQEAgLTU5MCw2
ICs2MTIsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSBtX2Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEZsb3dQcm9maWxlcj4gbV9jb250cm9sRmxvd1By
b2ZpbGVyOwogICAgIHVuc2lnbmVkIG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudDsK
KyAgICBXVEY6OkRlcXVlPHN0ZDo6dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPj4gbV9taWNyb3Rhc2tR
dWV1ZTsKIH07CiAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkODM5NWUzY2Vm
NmZmMDUzY2MwOTlmNzdjNTljYTlmMDZlMTJiM2Y2Li5jMWUwOGY0N2VlMGMxY2EyN2IyOWFkMTZl
ODU0YjdhNGFkYmY5OWJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDctMTMgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIGF1
dG9tYXRpYyBtaWNyb3Rhc2sgZHJhaW5pbmcgaW50byBKU0MgZnJhbWV3b3JrIGFuZCByZS1lbmFi
bGUgUHJvbWlzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ2ODI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIFByb21pc2UgdGVzdHMgbWFpbmx5IGZvY3VzaW5nIG9uIG1pY3JvdGFza3MuCisgICAg
ICAgIFRoZXkgY2FuIGJlIGV4ZWN1dGVkIGluIEpTQyBzaGVsbC4gU28gdGhleSBhcmUgbG9jYXRl
IGluIGpzLyBkaXJlY3RvcnkgKG5vdCBqcy9kb20pLgorCisgICAgICAgICoganMvcHJvbWlzZS1u
ZXN0ZWQtbWljcm90YXNrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21p
c2UtbmVzdGVkLW1pY3JvdGFza3MuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZS1y
ZXNvbHZlLWluLW5vbi1kb20tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9t
aXNlLXJlc29sdmUtaW4tbm9uLWRvbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQt
dGVzdHMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5qczogQWRkZWQuCisgICAgICAgIChQcm9t
aXNlLnJlc29sdmUudGhlbik6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3Byb21pc2UtcmVz
b2x2ZS1ub24tZG9tLmpzOiBBZGRlZC4KKyAgICAgICAgKHZhbHVlLnRoZW4pOgorICAgICAgICAq
IHJlc291cmNlcy9zdGFuZGFsb25lLXBvc3QuanM6CisKIDIwMTUtMDctMTEgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0VGTF0gVW5yZXZpZXdl
ZCwgRUZMIGdhcmRlbmluZyBvbiAxMnRoIEp1bC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTcwY2M1
ZmJiODRlYjZhODhjY2JiODEzYzEyOGM5NWYyOWUyYzdlOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2pzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTYgQEAKK1Rlc3QgUHJvbWlzZSBuZXN0ZWQgbWljcm90YXNrcy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1RoZSBwcm9taXNlIGlzIG5vdCBmdWxmaWxsZWQgbm93Lgor
UEFTUyB2YWx1ZTEgaXMgNDIKK1BBU1MgdmFsdWUyIGlzIHVuZGVmaW5lZC4KK1BBU1MgcmVzdWx0
IGlzIHVuZGVmaW5lZC4KK1BBU1MgdmFsdWUyIGlzIDg0CitQQVNTIHJlc3VsdCBpcyB1bmRlZmlu
ZWQuCitQQVNTIHJlc3VsdCBpcyAzNTI4CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1u
ZXN0ZWQtbWljcm90YXNrcy5odG1sIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1uZXN0ZWQtbWlj
cm90YXNrcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NzUyODAyNzhiNDg4MjBjY2Q4ODUxODQ3NmNiNzYx
ZTUzMjhkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLW5lc3Rl
ZC1taWNyb3Rhc2tzLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlz
ZS1yZXNvbHZlLWluLW5vbi1kb20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcHJvbWlz
ZS1yZXNvbHZlLWluLW5vbi1kb20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNDExMjkyYWI1
MGI1MDcyOTcwYmMwZTJjZTM2YzZkOWZjN2NiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdCBQcm9taXNlLnJlc29sdmUgaW4gbm9uIGRvbSBkaXJlY3RvcnkuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUaGUgcHJvbWlzZSBpcyBub3QgZnVsZmlsbGVk
IG5vdy4KK1BBU1MgdmFsdWUudGhlbiBpcyBjYWxsZWQuCitQQVNTIHRoaXNWYWx1ZSBpcyB2YWx1
ZQorUEFTUyBmdWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS5odG1sIGIvTGF5b3V0VGVzdHMvanMv
cHJvbWlzZS1yZXNvbHZlLWluLW5vbi1kb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDhkNjA2NDZkM2Fj
NzQ2YWUxNGQzZWU2ODI2NDgwYWRiZjhjMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvcHJvbWlzZS1yZXNvbHZlLWluLW5vbi1kb20uaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcHJvbWlzZS1yZXNv
bHZlLW5vbi1kb20uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuanMgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNzE3ZTAxMDQ5YTBkOWNiMjk2OGJiYWQwZGE1ODUzZWJmMWQyZDk3Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb21pc2UtbmVzdGVk
LW1pY3JvdGFza3MuanMKQEAgLTAsMCArMSwyNiBAQAorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlz
ZSBuZXN0ZWQgbWljcm90YXNrcy4nKTsKKwordmFyIGdsb2JhbE9iamVjdCA9IHRoaXM7CitnbG9i
YWxPYmplY3QuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciB2YWx1ZTE7Cit2YXIgdmFsdWUy
OwordmFyIHJlc3VsdDsKK1Byb21pc2UucmVzb2x2ZSg0MikudGhlbihmdW5jdGlvbiAodjEpIHsK
KyAgICB2YWx1ZTEgPSB2MTsKKyAgICBzaG91bGRCZSgndmFsdWUxJywgJzQyJyk7CisgICAgc2hv
dWxkQmVVbmRlZmluZWQoJ3ZhbHVlMicpOworICAgIHNob3VsZEJlVW5kZWZpbmVkKCdyZXN1bHQn
KTsKKyAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDg0KS50aGVuKGZ1bmN0aW9uICh2Mikgewor
ICAgICAgICB2YWx1ZTIgPSB2MjsKKyAgICAgICAgc2hvdWxkQmUoJ3ZhbHVlMicsICc4NCcpOwor
ICAgICAgICBzaG91bGRCZVVuZGVmaW5lZCgncmVzdWx0Jyk7CisgICAgICAgIHJldHVybiB2MiAq
IHYxOworICAgIH0pOworfSkudGhlbihmdW5jdGlvbiAocikgeworICAgIHJlc3VsdCA9IHI7Cisg
ICAgc2hvdWxkQmUoJ3Jlc3VsdCcsICczNTI4Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsK
KworZGVidWcoJ1RoZSBwcm9taXNlIGlzIG5vdCBmdWxmaWxsZWQgbm93LicpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb21pc2UtcmVzb2x2ZS1ub24tZG9tLmpz
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb21pc2UtcmVzb2x2ZS1ub24tZG9tLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk2NjAxNjcwMDlhMjY3NzU2MmFkNjFhOTk3NDU2ZjA3OWZmMjZkMGUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1yZXNv
bHZlLW5vbi1kb20uanMKQEAgLTAsMCArMSwyNSBAQAorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlz
ZS5yZXNvbHZlIGluIG5vbiBkb20gZGlyZWN0b3J5LicpOworCit2YXIgZ2xvYmFsT2JqZWN0ID0g
dGhpczsKK2dsb2JhbE9iamVjdC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3ZhciB2YWx1ZSA9IHsK
KyAgdGhlbjogZnVuY3Rpb24oZnVsZmlsbENhbGxiYWNrLCByZWplY3RDYWxsYmFjaykgeworICAg
IHRlc3RQYXNzZWQoJ3ZhbHVlLnRoZW4gaXMgY2FsbGVkLicpOworICAgIGdsb2JhbE9iamVjdC50
aGlzVmFsdWUgPSB0aGlzOworICAgIHNob3VsZEJlKCd0aGlzVmFsdWUnLCAndmFsdWUnKTsKKyAg
ICBmdWxmaWxsQ2FsbGJhY2soJ2hlbGxvJyk7CisgIH0KK307Cit2YXIgcHJvbWlzZSA9IG5ldyBQ
cm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOworCitwcm9taXNl
LnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRlc3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICBn
bG9iYWxPYmplY3QucmVzdWx0ID0gcmVzdWx0OworICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jl
c3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0
ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5pc2hKU1Rlc3QoKTsKK30pOworCitkZWJ1Zygn
VGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCBub3cuJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2Vz
L3N0YW5kYWxvbmUtcG9zdC5qcwppbmRleCA3MWUyMjM1NzgzYzA2ZWM3ZTQwM2YxYWRjMDJhZWQ1
MWE2MDlmYTg0Li45M2M3NzlhN2YwMzFmYjRiZmQyNzc1ZDBmODZiNzE2MWZlMzJiYWRhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzCisrKyBiL0xh
eW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFsb25lLXBvc3QuanMKQEAgLTEsMyArMSw3IEBACiB3
YXNQb3N0VGVzdFNjcmlwdFBhcnNlZCA9IHRydWU7CiAKLWZpbmlzaEpTVGVzdCgpOworaWYgKHRo
aXMuanNUZXN0SXNBc3luYykgeworICAgIGlmICh0aGlzLndhc0ZpbmlzaEpTVGVzdENhbGxlZCkK
KyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9IGVsc2UKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256775</attachid>
            <date>2015-07-14 10:17:55 -0700</date>
            <delta_ts>2015-07-14 10:31:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146828-20150714171648.patch</filename>
            <type>text/plain</type>
            <size>18992</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YWRhMjk4YTFjMDc4NWFjOTQ2MjM5YzZmZWE0MDI0MzYzZGQ0ZjYwLi41NDY3Yjk2ZDgwMjAxYTI5
MWQ2NDBiOTlmZDhmMDQ4NWM5NzI5ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNS0wNy0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFpbmluZyBp
bnRvIEpTQyBmcmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXV0b21hdGljIG1pY3JvdGFzayBk
cmFpbmluZyBzeXN0ZW0gaW50byBKU0MgZnJhbWV3b3JrLgorICAgICAgICBXaGVuIHRoZSBkZXB0
aCBvZiBWTSBsb2NrIGJlY29tZXMgMCwgYmVmb3JlIHRoaXMsIHdlIGRyYWluIHRoZSBxdWV1ZWQg
bWljcm90YXNrcy4KKyAgICAgICAgRW5xdWV1aW5nIGJlaGF2aW9yIGNhbiBiZSBpbmplY3RlZCBi
eSB0aGUgSlNHbG9iYWxPYmplY3QncyBtZXRob2QgdGFibGUuCisgICAgICAgIEl0IGlzIHV0aWxp
emVkIGluIFdlYkNvcmUgdG8gcG9zdCB0aGUgbWljcm90YXNrIHRvIFdlYkNvcmUncyBldmVudCBs
b29wLgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIEpTQyBpbnRlcmFjdGl2ZSBzaGVsbCwgVk0g
ZGVwdGggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiAwLgorICAgICAgICBTbyB3ZSBtYW51YWxseSBk
cmFpbnMgdGhlIHF1ZXVlZCBtaWNyb3Rhc2tzIGFmdGVyIGV2YWx1YXRpbmcgdGhlIHdyaXR0ZW4g
bGluZS4KKworICAgICAgICBTaW5jZSBub3cgSlNDIGZyYW1ld29yayBoYXMgdGhlIG1pY3JvdGFz
ayBxdWV1ZSwgd2UgY2FuIGRyYWluIHRoZSBxdWV1ZWQgbWljcm90YXNrcy4KKyAgICAgICAgU28g
cmUtZW5hYmxlIHRoZSBQcm9taXNlIGluIHRoZSBKU0MgZnJhbWV3b3JrIGNvbnRleHQuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRSdW50aW1l
RmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToKKyAgICAgICAgKHRlc3RP
YmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHJ1bkludGVy
YWN0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnF1ZXVlTWljcm90YXNr
KToKKyAgICAgICAgKEpTQzo6Vk06OmRyYWluTWljcm90YXNrcyk6CisgICAgICAgIChKU0M6OlF1
ZXVlZFRhc2s6OnJ1bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpR
dWV1ZWRUYXNrOjpRdWV1ZWRUYXNrKToKKwogMjAxNS0wNy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRzo6RGVzaXJlZFdhdGNocG9pbnRzIHNob3VsZCBh
Y2NlcHQgV2F0Y2hwb2ludFNldFR5cGUncyB0aGF0IGFyZW4ndCBuZWNlc3NhcmlseSBwb2ludGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDQ5NzZj
MjlhZWVlZjkxMzkzYmIwYTg3MjllNTAwNjQ3MjY0YzFmNzkuLmY0ZDkyMzY2YWIzMDViNTE5YmQ0
OGQ2ZTFjNDVlYTE2YjVhMDZmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKQEAgLTU5LDE0ICs1OSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LXN0YXRpYyBSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mg
PSBKU0dsb2JhbE9iamVjdDo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhnbG9iYWxPYmplY3QpOwot
ICAgIHJ1bnRpbWVGbGFncy5zZXRQcm9taXNlRGlzYWJsZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIHJ1
bnRpbWVGbGFnczsKLX0KLQotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNDOjpqYXZh
U2NyaXB0Q29yZUFQSUdsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmSlNHbG9iYWxPYmplY3Q6
OmFsbG93c0FjY2Vzc0Zyb20sICZKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNQcm9maWxpbmcsICZK
U0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJkpTR2xvYmFsT2JqZWN0Ojpz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAm
SlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2Nv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQzo6amF2YVNjcmlwdENvcmVBUElHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsgJkpTR2xvYmFsT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9tLCAm
SlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRzUHJvZmlsaW5nLCAmSlNHbG9iYWxPYmplY3Q6OnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
LCAmSlNHbG9iYWxPYmplY3Q6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZKU0ds
b2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OwogCiAvLyBG
cm9tIHRoZSBBUEkncyBwZXJzcGVjdGl2ZSwgYSBjb250ZXh0IGdyb3VwIHJlbWFpbnMgYWxpdmUg
aWZmCiAvLyAgICAgKGEpIGl0IGhhcyBiZWVuIEpTQ29udGV4dEdyb3VwUmV0YWluZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZmM0OTE0YjdhYjY5NTI3
MDk1ZWYwZTY1OGE0YjM0MmY1OTA0OTVkMS4uNGU2ZjMwNGQ1NmQ2OTAwN2FlOTA2ZWJjZDBkNzQy
ZjU5NDBkYTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMK
QEAgLTE4NTQsMjEgKzE4NTQsNDMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkK
ICAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KGNvbnRleHQpOwogICAgICAgICB7CiAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9taXNl
UHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJvbWlzZSIpOwotICAg
ICAgICAgICAgQVNTRVJUKCFKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVj
dCwgcHJvbWlzZVByb3BlcnR5KSk7CisgICAgICAgICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9w
ZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHByb21pc2VQcm9wZXJ0eSkpOwogICAgICAgICAg
ICAgSlNTdHJpbmdSZWxlYXNlKHByb21pc2VQcm9wZXJ0eSk7CiAgICAgICAgIH0KICAgICAgICAg
ewogICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoInR5cGVvZiBQcm9taXNlIik7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlZiB1bmRl
ZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidW5kZWZpbmVkIik7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiBmdW5jdGlvbiA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJmdW5jdGlvbiIpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTRXZhbHVh
dGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBOVUxMLCBOVUxMLCAxLCBOVUxMKTsKICAgICAgICAg
ICAgIEFTU0VSVChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKTsKICAgICAgICAgICAg
IEpTU3RyaW5nUmVmIHZhbHVlQXNTdHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IHZhbHVlLCBOVUxMKTsKLSAgICAgICAgICAgIEFTU0VSVChKU1N0cmluZ0lzRXF1YWwodmFsdWVB
c1N0cmluZywgdW5kZWZpbmVkKSk7CisgICAgICAgICAgICBBU1NFUlQoSlNTdHJpbmdJc0VxdWFs
KHZhbHVlQXNTdHJpbmcsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2Uo
dmFsdWVBc1N0cmluZyk7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UodW5kZWZpbmVkKTsK
KyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmdW5jdGlvbik7CiAgICAgICAgICAgICBKU1N0
cmluZ1JlbGVhc2Uoc2NyaXB0KTsKICAgICAgICAgfQotICAgICAgICBwcmludGYoIlBBU1M6IFBy
b21pc2UgaXMgbm90IGV4cG9zZWQgdW5kZXIgSlNDb250ZXh0IEFQSS5cbiIpOworICAgICAgICBw
cmludGYoIlBBU1M6IFByb21pc2UgaXMgZXhwb3NlZCB1bmRlciBKU0NvbnRleHQgQVBJLlxuIik7
CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWljcm90YXNrcy4KKyAgICB7CisgICAgICAgIEpTR2xv
YmFsQ29udGV4dFJlZiBjb250ZXh0ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChOVUxM
LCBOVUxMKTsKKyAgICAgICAgeworICAgICAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0
ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOworICAgICAgICAgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb247CisgICAgICAgICAgICBKU1N0cmluZ1JlZiBjb2RlID0gSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoInJlc3VsdCA9IDA7IFByb21pc2UucmVzb2x2ZSg0MikudGhl
bihmdW5jdGlvbiAodmFsdWUpIHsgcmVzdWx0ID0gdmFsdWU7IH0pOyIpOworICAgICAgICAgICAg
SlNTdHJpbmdSZWYgZmlsZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKTsKKyAg
ICAgICAgICAgIGFzc2VydFRydWUoIUpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgY29kZSwgZ2xv
YmFsT2JqZWN0LCBmaWxlLCAxLCAmZXhjZXB0aW9uKSwgIkFuIGV4Y2VwdGlvbiBzaG91bGQgYmUg
dGhyb3duIik7CisgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UoY29kZSk7CisgICAgICAgICAg
ICBKU1N0cmluZ1JlbGVhc2UoZmlsZSk7CisKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHJlc3Vs
dFByb3BlcnR5ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInJlc3VsdCIpOworICAg
ICAgICAgICAgQVNTRVJUKEpTT2JqZWN0SGFzUHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2JqZWN0
LCByZXN1bHRQcm9wZXJ0eSkpOworCisgICAgICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdFZhbHVl
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHJlc3VsdFByb3Bl
cnR5LCAmZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFsc0FzTnVtYmVyKHJlc3Vs
dFZhbHVlLCA0Mik7CisgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UocmVzdWx0UHJvcGVydHkp
OworICAgICAgICB9CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CiAg
ICAgfQogCiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tCmluZGV4IDAxYmI3ZDc2YjMzZmM2NGZkNjU4NWFhMTIxOTM2ZDc5YjgyZmQ5ZDUu
LmYwZjVjYmMzYWVlNTk2NzRiNjE2NTAwYWVmYjk2NWRhMjE5NmRmNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTU0MCw5ICs1NDAsMTYgQEAgc3Rh
dGljIHZvaWQgdGVzdE9iamVjdGl2ZUNBUElNYWluKCkKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewogICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07
Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiUHJvbWlzZSBpcyBub3QgZXhwb3NlZCIsIFtjb250ZXh0
W0AiUHJvbWlzZSJdIGlzVW5kZWZpbmVkXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiUHJvbWlz
ZSBpcyBleHBvc2VkIiwgIVtjb250ZXh0W0AiUHJvbWlzZSJdIGlzVW5kZWZpbmVkXSk7CiAgICAg
ICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidHlwZW9mIFBy
b21pc2UiXTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAndW5kZWZp
bmVkJyIsIHJlc3VsdC5pc1N0cmluZyAmJiBbcmVzdWx0IGlzRXF1YWxUb09iamVjdDpAInVuZGVm
aW5lZCJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAnZnVuY3Rp
b24nIiwgcmVzdWx0LmlzU3RyaW5nICYmIFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiZnVuY3Rp
b24iXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTVmlydHVh
bE1hY2hpbmUqIHZtID0gW1tKU1ZpcnR1YWxNYWNoaW5lIGFsbG9jXSBpbml0XTsKKyAgICAgICAg
SlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoVmlydHVhbE1h
Y2hpbmU6dm1dOworICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInJlc3VsdCA9IDA7
IFByb21pc2UucmVzb2x2ZSg0MikudGhlbihmdW5jdGlvbiAodmFsdWUpIHsgcmVzdWx0ID0gdmFs
dWU7IH0pOyJdOworICAgICAgICBjaGVja1Jlc3VsdChAIk1pY3JvdGFzayBpcyBkcmFpbmVkIiwg
IVtjb250ZXh0W0AicmVzdWx0Il0gIGlzRXF1YWxUb09iamVjdDpANDJdKTsKICAgICB9CiAKICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNTEzMTE2YTQ0NWFj
NDMzOGQ1NmQxY2ZmYTVlMmMyMzA2Nzg4MmQ4Ni4uNTdhZjZhZTkzYTdmMDZkN2QzZDIxMzA3YTI5
OGMwZTkxOTFmMTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTE0MDEsNiArMTQwMSw3IEBA
IHN0YXRpYyB2b2lkIHJ1bkludGVyYWN0aXZlKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
ICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgcmV0dXJuVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCkpLT52YWx1ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRm
OCgpLmRhdGEoKSk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmNsZWFy
RXhjZXB0aW9uKCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+dm0oKS5kcmFpbk1pY3JvdGFza3Mo
KTsKICAgICB9CiAgICAgcHJpbnRmKCJcbiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDEwYmYxNzc4MjAyMmM0Nzk0ZDMw
ZTcwZWZiMmJlZjVkZjI0MmNlMTguLmQ3NjQwNWM2YTMwMmNjYmMzN2Y5YzIwZTZjYjUzNGM3ODE1
OGFjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCiBjb25zdCBDbGFzc0luZm8gSlNHbG9iYWxP
YmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8sICZnbG9iYWxP
YmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dsb2JhbE9iamVjdCkgfTsKIAotY29u
c3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0
TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZz
dXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlw
dFJ1bnRpbWVGbGFncywgMCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsK
K2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9i
amVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5n
LCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFT
Y3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVU
aW1lb3V0IH07CiAKIC8qIFNvdXJjZSBmb3IgSlNHbG9iYWxPYmplY3QubHV0LmgKIEBiZWdpbiBn
bG9iYWxPYmplY3RUYWJsZQpAQCAtOTkwLDEwICs5OTAsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnF1
ZXVlTWljcm90YXNrKFBhc3NSZWZQdHI8TWljcm90YXNrPiB0YXNrKQogewotICAgIGlmIChnbG9i
YWxPYmplY3RNZXRob2RUYWJsZSgpLT5xdWV1ZVRhc2tUb0V2ZW50TG9vcCkKKyAgICBpZiAoZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3ApIHsKICAgICAgICAg
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3AodGhpcywgdGFz
ayk7Ci0gICAgZWxzZQotICAgICAgICBXVEZMb2dBbHdheXMoIkVSUk9SOiBFdmVudCBsb29wIG5v
dCBzdXBwb3J0ZWQuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2bSgpLnF1ZXVl
TWljcm90YXNrKHRoaXMsIHRhc2spOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCmluZGV4IGMyZWUwYTU1MzJjMGI1MTkzNjg3
MTA5ZDlhMzJlYzRhMTQ0NWQ4YmQuLjE1MjZkMDk5M2NlYWVlOTQzYzlmMjVjMThkM2ExMjZjYzUy
YTFjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcApAQCAtMTc2
LDYgKzE3Niw4IEBAIHZvaWQgSlNMb2NrOjp1bmxvY2soaW50cHRyX3QgdW5sb2NrQ291bnQpCiB2
b2lkIEpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKCkKIHsKICAgICBpZiAobV92bSkgeworICAgICAg
ICBtX3ZtLT5kcmFpbk1pY3JvdGFza3MoKTsKKwogICAgICAgICBtX3ZtLT5oZWFwLnJlbGVhc2VE
ZWxheWVkUmVsZWFzZWRPYmplY3RzKCk7CiAgICAgICAgIG1fdm0tPnNldFN0YWNrUG9pbnRlckF0
Vk1FbnRyeShudWxscHRyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
aW5kZXggNzY3NDFkZDhhZWEzN2ZmNTdjY2E0Y2Y2MzZiZmMzMmJiNDI5Y2M0MS4uNGNjOWI3ZDZk
MmI5MTkyMDcyNzBhMzgxNTM1M2ZlMmNiNWJmYmQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcApAQCAtODI0LDYgKzgyNCwyMiBAQCB2b2lkIFZNOjpkdW1wVHlwZVByb2ZpbGVy
RGF0YSgpCiAgICAgdHlwZVByb2ZpbGVyKCktPmR1bXBUeXBlUHJvZmlsZXJEYXRhKCp0aGlzKTsK
IH0KIAordm9pZCBWTTo6cXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUGFzc1JlZlB0cjxNaWNyb3Rhc2s+IHRhc2spCit7CisgICAgbV9taWNyb3Rhc2tRdWV1ZS5h
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxRdWV1ZWRUYXNrPigqdGhpcywgZ2xvYmFsT2JqZWN0LCB0
YXNrKSk7Cit9CisKK3ZvaWQgVk06OmRyYWluTWljcm90YXNrcygpCit7CisgICAgd2hpbGUgKCFt
X21pY3JvdGFza1F1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgbV9taWNyb3Rhc2tRdWV1ZS50YWtl
Rmlyc3QoKS0+cnVuKCk7Cit9CisKK3ZvaWQgUXVldWVkVGFzazo6cnVuKCkKK3sKKyAgICBtX21p
Y3JvdGFzay0+cnVuKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOworfQorCiB2b2lkIHNh
bml0aXplU3RhY2tGb3JWTShWTSogdm0pCiB7CiAgICAgbG9nU2FuaXRpemVTdGFjayh2bSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBmNzhmOWViOTY0NjBhZTlmZGJmZjkxNjlj
Mjg0YTg1ODQ4MTZjNzM5Li43NGY0NjBhNDgyMGJiNTE4MGY1NGNiMGMzODdmYmEwMzRhYjUwYWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlICJNaWNyb3Rhc2suaCIKICNpbmNsdWRlICJOdW1l
cmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlByaXZhdGVOYW1lLmgiCiAjaW5jbHVkZSAiUHJvdG90
eXBlTWFwLmgiCkBAIC01NSw2ICs1Niw3IEBACiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1
ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5o
PgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTUzLDYg
KzE1NSwyMyBAQCBzdHJ1Y3QgTG9jYWxUaW1lT2Zmc2V0Q2FjaGUgewogICAgIFdURjo6VGltZVR5
cGUgdGltZVR5cGU7CiB9OwogCitjbGFzcyBRdWV1ZWRUYXNrIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShRdWV1ZWRUYXNrKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICB2b2lkIHJ1bigpOworCisgICAgUXVldWVkVGFzayhWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8TWljcm90YXNrPiBtaWNyb3Rhc2spCisgICAg
ICAgIDogbV9nbG9iYWxPYmplY3Qodm0sIGdsb2JhbE9iamVjdCkKKyAgICAgICAgLCBtX21pY3Jv
dGFzayhtaWNyb3Rhc2spCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJvbmc8SlNH
bG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworICAgIFJlZlB0cjxNaWNyb3Rhc2s+IG1fbWlj
cm90YXNrOworfTsKKwogY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAKICNpZiBDT01QSUxFUihN
U1ZDKQpAQCAtNTM2LDYgKzU1NSw5IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFZNPiB7CiAgICAgYm9vbCBlbmFibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAgICAg
Ym9vbCBkaXNhYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwogCisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBxdWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8TWljcm90
YXNrPik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkcmFpbk1pY3JvdGFza3MoKTsKKwog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZy
aWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlvblNjb3BlOwpAQCAtNTkwLDYgKzYxMiw3IEBAIGNsYXNz
IFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgRnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlIG1fZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb250cm9sRmxvd1Byb2ZpbGVyPiBtX2NvbnRyb2xGbG93UHJvZmlsZXI7CiAgICAgdW5z
aWduZWQgbV9jb250cm9sRmxvd1Byb2ZpbGVyRW5hYmxlZENvdW50OworICAgIFdURjo6RGVxdWU8
c3RkOjp1bmlxdWVfcHRyPFF1ZXVlZFRhc2s+PiBtX21pY3JvdGFza1F1ZXVlOwogfTsKIAogI2lm
IEVOQUJMRShHQ19WQUxJREFUSU9OKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ4Mzk1ZTNjZWY2ZmYwNTNjYzA5OWY3N2M1
OWNhOWYwNmUxMmIzZjYuLjU3MGI2MTliYTZmNWE4ZjZmNDQyOTQ5MGFhYTA0M2E4Mjg0NmJlZGIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNS0wNy0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFz
ayBkcmFpbmluZyBpbnRvIEpTQyBmcmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgUHJvbWlzZSB0
ZXN0cyBtYWlubHkgZm9jdXNpbmcgb24gbWljcm90YXNrcy4KKyAgICAgICAgVGhleSBjYW4gYmUg
ZXhlY3V0ZWQgaW4gSlNDIHNoZWxsLiBTbyB0aGV5IGFyZSBsb2NhdGUgaW4ganMvIGRpcmVjdG9y
eSAobm90IGpzL2RvbSkuCisKKyAgICAgICAgKiBqcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZS1uZXN0ZWQtbWljcm90
YXNrcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRv
bS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2UtcmVzb2x2ZS1pbi1u
b24tZG9tLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9wcm9taXNlLW5l
c3RlZC1taWNyb3Rhc2tzLmpzOiBBZGRlZC4KKyAgICAgICAgKFByb21pc2UucmVzb2x2ZS50aGVu
KToKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1kb20uanM6
IEFkZGVkLgorICAgICAgICAodmFsdWUudGhlbik6CisgICAgICAgICogcmVzb3VyY2VzL3N0YW5k
YWxvbmUtcG9zdC5qczoKKwogMjAxNS0wNy0xMSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkLCBFRkwgZ2FyZGVuaW5n
IG9uIDEydGggSnVsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1uZXN0ZWQt
bWljcm90YXNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLW5lc3RlZC1t
aWNyb3Rhc2tzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNzI0ZjQzYzNiZmVjYjc3NDE2ODA1
NDVmNTk1MzJhMTkxZDZhMjk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJv
bWlzZS1uZXN0ZWQtbWljcm90YXNrcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGVz
dCBQcm9taXNlIG5lc3RlZCBtaWNyb3Rhc2tzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworVGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCB1bnRpbCBhZnRlciB0aGlzIGZ1bmN0
aW9uIGNhbGwgZXhlY3V0ZXMuCitQQVNTIHZhbHVlMSBpcyA0MgorUEFTUyB2YWx1ZTIgaXMgdW5k
ZWZpbmVkLgorUEFTUyByZXN1bHQgaXMgdW5kZWZpbmVkLgorUEFTUyB2YWx1ZTIgaXMgODQKK1BB
U1MgcmVzdWx0IGlzIHVuZGVmaW5lZC4KK1BBU1MgcmVzdWx0IGlzIDM1MjgKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9q
cy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU3NTI4MDI3OGI0
ODgyMGNjZDg4NTE4NDc2Y2I3NjFlNTMyOGQ2OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0
ZWQtbWljcm90YXNrcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTBkYTA2ZWIwNjMzN2QyOTA2YmU1YzI4OTIwMDRmOTJkM2MwY2EzZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0IFByb21pc2UucmVzb2x2ZSBpbiBub24g
ZG9tIGRpcmVjdG9yeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1RoZSBwcm9t
aXNlIGlzIG5vdCBmdWxmaWxsZWQgdW50aWwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBjYWxsIGV4ZWN1
dGVzLgorUEFTUyB2YWx1ZS50aGVuIGlzIGNhbGxlZC4KK1BBU1MgdGhpc1ZhbHVlIGlzIHZhbHVl
CitQQVNTIGZ1bGZpbGxlZAorUEFTUyByZXN1bHQgaXMgImhlbGxvIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9w
cm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0OGQ2MDY0NmQzYWM3
NDZhZTE0ZDNlZTY4MjY0ODBhZGJmOGMxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9wcm9taXNlLXJlc29s
dmUtbm9uLWRvbS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5qcyBiL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA4YmFmNWIxYzZiZDExZDdlYjIxZjAxZWQ4NjEyZDZiN2Y4MDVkYzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0ZWQt
bWljcm90YXNrcy5qcwpAQCAtMCwwICsxLDI2IEBACitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNl
IG5lc3RlZCBtaWNyb3Rhc2tzLicpOworCit2YXIgZ2xvYmFsT2JqZWN0ID0gdGhpczsKK2dsb2Jh
bE9iamVjdC5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIHZhbHVlMTsKK3ZhciB2YWx1ZTI7
Cit2YXIgcmVzdWx0OworUHJvbWlzZS5yZXNvbHZlKDQyKS50aGVuKGZ1bmN0aW9uICh2MSkgewor
ICAgIHZhbHVlMSA9IHYxOworICAgIHNob3VsZEJlKCd2YWx1ZTEnLCAnNDInKTsKKyAgICBzaG91
bGRCZVVuZGVmaW5lZCgndmFsdWUyJyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ3Jlc3VsdCcp
OworICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoODQpLnRoZW4oZnVuY3Rpb24gKHYyKSB7Cisg
ICAgICAgIHZhbHVlMiA9IHYyOworICAgICAgICBzaG91bGRCZSgndmFsdWUyJywgJzg0Jyk7Cisg
ICAgICAgIHNob3VsZEJlVW5kZWZpbmVkKCdyZXN1bHQnKTsKKyAgICAgICAgcmV0dXJuIHYyICog
djE7CisgICAgfSk7Cit9KS50aGVuKGZ1bmN0aW9uIChyKSB7CisgICAgcmVzdWx0ID0gcjsKKyAg
ICBzaG91bGRCZSgncmVzdWx0JywgJzM1MjgnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30pOwor
CitkZWJ1ZygnVGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCB1bnRpbCBhZnRlciB0aGlzIGZ1
bmN0aW9uIGNhbGwgZXhlY3V0ZXMuJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1kb20uanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1kb20uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDRhODA2ZDY1
YjQxMDg5YmE5NDJmZGYwY2NhMTM1ZGQ1Y2FmYzdkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qcwpAQCAtMCww
ICsxLDI1IEBACitkZXNjcmlwdGlvbignVGVzdCBQcm9taXNlLnJlc29sdmUgaW4gbm9uIGRvbSBk
aXJlY3RvcnkuJyk7CisKK3ZhciBnbG9iYWxPYmplY3QgPSB0aGlzOworZ2xvYmFsT2JqZWN0Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwordmFyIHZhbHVlID0geworICB0aGVuOiBmdW5jdGlvbihmdWxm
aWxsQ2FsbGJhY2ssIHJlamVjdENhbGxiYWNrKSB7CisgICAgdGVzdFBhc3NlZCgndmFsdWUudGhl
biBpcyBjYWxsZWQuJyk7CisgICAgZ2xvYmFsT2JqZWN0LnRoaXNWYWx1ZSA9IHRoaXM7CisgICAg
c2hvdWxkQmUoJ3RoaXNWYWx1ZScsICd2YWx1ZScpOworICAgIGZ1bGZpbGxDYWxsYmFjaygnaGVs
bG8nKTsKKyAgfQorfTsKK3ZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2
ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7CisKK3Byb21pc2UudGhlbihmdW5jdGlvbihyZXN1bHQp
IHsKKyAgdGVzdFBhc3NlZCgnZnVsZmlsbGVkJyk7CisgIGdsb2JhbE9iamVjdC5yZXN1bHQgPSBy
ZXN1bHQ7CisgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2hlbGxvJyk7CisgIGZp
bmlzaEpTVGVzdCgpOworfSwgZnVuY3Rpb24oKSB7CisgIHRlc3RGYWlsZWQoJ3JlamVjdGVkJyk7
CisgIGZpbmlzaEpTVGVzdCgpOworfSk7CisKK2RlYnVnKCdUaGUgcHJvbWlzZSBpcyBub3QgZnVs
ZmlsbGVkIHVudGlsIGFmdGVyIHRoaXMgZnVuY3Rpb24gY2FsbCBleGVjdXRlcy4nKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFsb25lLXBvc3QuanMgYi9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzCmluZGV4IDcxZTIyMzU3ODNjMDZlYzdl
NDAzZjFhZGMwMmFlZDUxYTYwOWZhODQuLjkzYzc3OWE3ZjAzMWZiNGJmZDI3NzVkMGY4NmI3MTYx
ZmUzMmJhZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFsb25lLXBv
c3QuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5qcwpAQCAt
MSwzICsxLDcgQEAKIHdhc1Bvc3RUZXN0U2NyaXB0UGFyc2VkID0gdHJ1ZTsKIAotZmluaXNoSlNU
ZXN0KCk7CitpZiAodGhpcy5qc1Rlc3RJc0FzeW5jKSB7CisgICAgaWYgKHRoaXMud2FzRmluaXNo
SlNUZXN0Q2FsbGVkKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK30gZWxzZQorICAgIGZpbmlz
aEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256777</attachid>
            <date>2015-07-14 10:31:32 -0700</date>
            <delta_ts>2015-07-16 09:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146828-20150714173025.patch</filename>
            <type>text/plain</type>
            <size>18991</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YWRhMjk4YTFjMDc4NWFjOTQ2MjM5YzZmZWE0MDI0MzYzZGQ0ZjYwLi41NDY3Yjk2ZDgwMjAxYTI5
MWQ2NDBiOTlmZDhmMDQ4NWM5NzI5ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNS0wNy0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFpbmluZyBp
bnRvIEpTQyBmcmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXV0b21hdGljIG1pY3JvdGFzayBk
cmFpbmluZyBzeXN0ZW0gaW50byBKU0MgZnJhbWV3b3JrLgorICAgICAgICBXaGVuIHRoZSBkZXB0
aCBvZiBWTSBsb2NrIGJlY29tZXMgMCwgYmVmb3JlIHRoaXMsIHdlIGRyYWluIHRoZSBxdWV1ZWQg
bWljcm90YXNrcy4KKyAgICAgICAgRW5xdWV1aW5nIGJlaGF2aW9yIGNhbiBiZSBpbmplY3RlZCBi
eSB0aGUgSlNHbG9iYWxPYmplY3QncyBtZXRob2QgdGFibGUuCisgICAgICAgIEl0IGlzIHV0aWxp
emVkIGluIFdlYkNvcmUgdG8gcG9zdCB0aGUgbWljcm90YXNrIHRvIFdlYkNvcmUncyBldmVudCBs
b29wLgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIEpTQyBpbnRlcmFjdGl2ZSBzaGVsbCwgVk0g
ZGVwdGggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiAwLgorICAgICAgICBTbyB3ZSBtYW51YWxseSBk
cmFpbnMgdGhlIHF1ZXVlZCBtaWNyb3Rhc2tzIGFmdGVyIGV2YWx1YXRpbmcgdGhlIHdyaXR0ZW4g
bGluZS4KKworICAgICAgICBTaW5jZSBub3cgSlNDIGZyYW1ld29yayBoYXMgdGhlIG1pY3JvdGFz
ayBxdWV1ZSwgd2UgY2FuIGRyYWluIHRoZSBxdWV1ZWQgbWljcm90YXNrcy4KKyAgICAgICAgU28g
cmUtZW5hYmxlIHRoZSBQcm9taXNlIGluIHRoZSBKU0MgZnJhbWV3b3JrIGNvbnRleHQuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRSdW50aW1l
RmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToKKyAgICAgICAgKHRlc3RP
YmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHJ1bkludGVy
YWN0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnF1ZXVlTWljcm90YXNr
KToKKyAgICAgICAgKEpTQzo6Vk06OmRyYWluTWljcm90YXNrcyk6CisgICAgICAgIChKU0M6OlF1
ZXVlZFRhc2s6OnJ1bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpR
dWV1ZWRUYXNrOjpRdWV1ZWRUYXNrKToKKwogMjAxNS0wNy0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRzo6RGVzaXJlZFdhdGNocG9pbnRzIHNob3VsZCBh
Y2NlcHQgV2F0Y2hwb2ludFNldFR5cGUncyB0aGF0IGFyZW4ndCBuZWNlc3NhcmlseSBwb2ludGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCmluZGV4IDQ5NzZj
MjlhZWVlZjkxMzkzYmIwYTg3MjllNTAwNjQ3MjY0YzFmNzkuLmY0ZDkyMzY2YWIzMDViNTE5YmQ0
OGQ2ZTFjNDVlYTE2YjVhMDZmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAKQEAgLTU5LDE0ICs1OSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LXN0YXRpYyBSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIFJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3Mg
PSBKU0dsb2JhbE9iamVjdDo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncyhnbG9iYWxPYmplY3QpOwot
ICAgIHJ1bnRpbWVGbGFncy5zZXRQcm9taXNlRGlzYWJsZWQodHJ1ZSk7Ci0gICAgcmV0dXJuIHJ1
bnRpbWVGbGFnczsKLX0KLQotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNDOjpqYXZh
U2NyaXB0Q29yZUFQSUdsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmSlNHbG9iYWxPYmplY3Q6
OmFsbG93c0FjY2Vzc0Zyb20sICZKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNQcm9maWxpbmcsICZK
U0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJkpTR2xvYmFsT2JqZWN0Ojpz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAm
SlNHbG9iYWxPYmplY3Q6OnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQgfTsKK2Nv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTQzo6amF2YVNjcmlwdENvcmVBUElHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSA9IHsgJkpTR2xvYmFsT2JqZWN0OjphbGxvd3NBY2Nlc3NGcm9tLCAm
SlNHbG9iYWxPYmplY3Q6OnN1cHBvcnRzUHJvZmlsaW5nLCAmSlNHbG9iYWxPYmplY3Q6OnN1cHBv
cnRzUmljaFNvdXJjZUluZm8sICZKU0dsb2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0
LCAmSlNHbG9iYWxPYmplY3Q6OmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZKU0ds
b2JhbE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OwogCiAvLyBG
cm9tIHRoZSBBUEkncyBwZXJzcGVjdGl2ZSwgYSBjb250ZXh0IGdyb3VwIHJlbWFpbnMgYWxpdmUg
aWZmCiAvLyAgICAgKGEpIGl0IGhhcyBiZWVuIEpTQ29udGV4dEdyb3VwUmV0YWluZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZmM0OTE0YjdhYjY5NTI3
MDk1ZWYwZTY1OGE0YjM0MmY1OTA0OTVkMS4uNGU2ZjMwNGQ1NmQ2OTAwN2FlOTA2ZWJjZDBkNzQy
ZjU5NDBkYTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMK
QEAgLTE4NTQsMjEgKzE4NTQsNDMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkK
ICAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0ID0gSlNDb250ZXh0R2V0R2xvYmFsT2Jq
ZWN0KGNvbnRleHQpOwogICAgICAgICB7CiAgICAgICAgICAgICBKU1N0cmluZ1JlZiBwcm9taXNl
UHJvcGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiUHJvbWlzZSIpOwotICAg
ICAgICAgICAgQVNTRVJUKCFKU09iamVjdEhhc1Byb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVj
dCwgcHJvbWlzZVByb3BlcnR5KSk7CisgICAgICAgICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9w
ZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHByb21pc2VQcm9wZXJ0eSkpOwogICAgICAgICAg
ICAgSlNTdHJpbmdSZWxlYXNlKHByb21pc2VQcm9wZXJ0eSk7CiAgICAgICAgIH0KICAgICAgICAg
ewogICAgICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoInR5cGVvZiBQcm9taXNlIik7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlZiB1bmRl
ZmluZWQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidW5kZWZpbmVkIik7CisgICAg
ICAgICAgICBKU1N0cmluZ1JlZiBmdW5jdGlvbiA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJmdW5jdGlvbiIpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTRXZhbHVh
dGVTY3JpcHQoY29udGV4dCwgc2NyaXB0LCBOVUxMLCBOVUxMLCAxLCBOVUxMKTsKICAgICAgICAg
ICAgIEFTU0VSVChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwgdmFsdWUpKTsKICAgICAgICAgICAg
IEpTU3RyaW5nUmVmIHZhbHVlQXNTdHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQs
IHZhbHVlLCBOVUxMKTsKLSAgICAgICAgICAgIEFTU0VSVChKU1N0cmluZ0lzRXF1YWwodmFsdWVB
c1N0cmluZywgdW5kZWZpbmVkKSk7CisgICAgICAgICAgICBBU1NFUlQoSlNTdHJpbmdJc0VxdWFs
KHZhbHVlQXNTdHJpbmcsIGZ1bmN0aW9uKSk7CiAgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2Uo
dmFsdWVBc1N0cmluZyk7Ci0gICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UodW5kZWZpbmVkKTsK
KyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShmdW5jdGlvbik7CiAgICAgICAgICAgICBKU1N0
cmluZ1JlbGVhc2Uoc2NyaXB0KTsKICAgICAgICAgfQotICAgICAgICBwcmludGYoIlBBU1M6IFBy
b21pc2UgaXMgbm90IGV4cG9zZWQgdW5kZXIgSlNDb250ZXh0IEFQSS5cbiIpOworICAgICAgICBw
cmludGYoIlBBU1M6IFByb21pc2UgaXMgZXhwb3NlZCB1bmRlciBKU0NvbnRleHQgQVBJLlxuIik7
CisgICAgfQorCisgICAgLy8gQ2hlY2sgbWljcm90YXNrcy4KKyAgICB7CisgICAgICAgIEpTR2xv
YmFsQ29udGV4dFJlZiBjb250ZXh0ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlSW5Hcm91cChOVUxM
LCBOVUxMKTsKKyAgICAgICAgeworICAgICAgICAgICAgSlNPYmplY3RSZWYgZ2xvYmFsT2JqZWN0
ID0gSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KGNvbnRleHQpOworICAgICAgICAgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb247CisgICAgICAgICAgICBKU1N0cmluZ1JlZiBjb2RlID0gSlNTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoInJlc3VsdCA9IDA7IFByb21pc2UucmVzb2x2ZSg0MikudGhl
bihmdW5jdGlvbiAodmFsdWUpIHsgcmVzdWx0ID0gdmFsdWU7IH0pOyIpOworICAgICAgICAgICAg
SlNTdHJpbmdSZWYgZmlsZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCIiKTsKKyAg
ICAgICAgICAgIGFzc2VydFRydWUoIUpTRXZhbHVhdGVTY3JpcHQoY29udGV4dCwgY29kZSwgZ2xv
YmFsT2JqZWN0LCBmaWxlLCAxLCAmZXhjZXB0aW9uKSwgIkFuIGV4Y2VwdGlvbiBzaG91bGQgYmUg
dGhyb3duIik7CisgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UoY29kZSk7CisgICAgICAgICAg
ICBKU1N0cmluZ1JlbGVhc2UoZmlsZSk7CisKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIHJlc3Vs
dFByb3BlcnR5ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInJlc3VsdCIpOworICAg
ICAgICAgICAgQVNTRVJUKEpTT2JqZWN0SGFzUHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2JqZWN0
LCByZXN1bHRQcm9wZXJ0eSkpOworCisgICAgICAgICAgICBKU1ZhbHVlUmVmIHJlc3VsdFZhbHVl
ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHJlc3VsdFByb3Bl
cnR5LCAmZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFsc0FzTnVtYmVyKHJlc3Vs
dFZhbHVlLCA0Mik7CisgICAgICAgICAgICBKU1N0cmluZ1JlbGVhc2UocmVzdWx0UHJvcGVydHkp
OworICAgICAgICB9CisgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CiAg
ICAgfQogCiAjaWYgT1MoREFSV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tCmluZGV4IDAxYmI3ZDc2YjMzZmM2NGZkNjU4NWFhMTIxOTM2ZDc5YjgyZmQ5ZDUu
LjcwNzg2NWQzYWQ0ZmM2NDFkODUzYzliNjIzMGM2MmEwZDA1OTY0NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTU0MCw5ICs1NDAsMTYgQEAgc3Rh
dGljIHZvaWQgdGVzdE9iamVjdGl2ZUNBUElNYWluKCkKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewogICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07
Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiUHJvbWlzZSBpcyBub3QgZXhwb3NlZCIsIFtjb250ZXh0
W0AiUHJvbWlzZSJdIGlzVW5kZWZpbmVkXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAiUHJvbWlz
ZSBpcyBleHBvc2VkIiwgIVtjb250ZXh0W0AiUHJvbWlzZSJdIGlzVW5kZWZpbmVkXSk7CiAgICAg
ICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidHlwZW9mIFBy
b21pc2UiXTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAndW5kZWZp
bmVkJyIsIHJlc3VsdC5pc1N0cmluZyAmJiBbcmVzdWx0IGlzRXF1YWxUb09iamVjdDpAInVuZGVm
aW5lZCJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJ0eXBlb2YgUHJvbWlzZSBpcyAnZnVuY3Rp
b24nIiwgcmVzdWx0LmlzU3RyaW5nICYmIFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAiZnVuY3Rp
b24iXSk7CisgICAgfQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTVmlydHVh
bE1hY2hpbmUqIHZtID0gW1tKU1ZpcnR1YWxNYWNoaW5lIGFsbG9jXSBpbml0XTsKKyAgICAgICAg
SlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoVmlydHVhbE1h
Y2hpbmU6dm1dOworICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInJlc3VsdCA9IDA7
IFByb21pc2UucmVzb2x2ZSg0MikudGhlbihmdW5jdGlvbiAodmFsdWUpIHsgcmVzdWx0ID0gdmFs
dWU7IH0pOyJdOworICAgICAgICBjaGVja1Jlc3VsdChAIk1pY3JvdGFzayBpcyBkcmFpbmVkIiwg
W2NvbnRleHRbQCJyZXN1bHQiXSAgaXNFcXVhbFRvT2JqZWN0OkA0Ml0pOwogICAgIH0KIAogICAg
IEBhdXRvcmVsZWFzZXBvb2wgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA1MTMxMTZhNDQ1YWM0
MzM4ZDU2ZDFjZmZhNWUyYzIzMDY3ODgyZDg2Li41N2FmNmFlOTNhN2YwNmQ3ZDNkMjEzMDdhMjk4
YzBlOTE5MWYxM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTQwMSw2ICsxNDAxLDcgQEAg
c3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgICAgICAgICBwcmludGYoIiVzXG4iLCByZXR1cm5WYWx1ZS50b1N0cmluZyhnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSktPnZhbHVlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKS0+Y2xlYXJF
eGNlcHRpb24oKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT52bSgpLmRyYWluTWljcm90YXNrcygp
OwogICAgIH0KICAgICBwcmludGYoIlxuIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTBiZjE3NzgyMDIyYzQ3OTRkMzBl
NzBlZmIyYmVmNWRmMjQyY2UxOC4uZDc2NDA1YzZhMzAyY2NiYzM3ZjljMjBlNmNiNTM0Yzc4MTU4
YWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBACiAKIGNvbnN0IENsYXNzSW5mbyBKU0dsb2JhbE9i
amVjdDo6c19pbmZvID0geyAiR2xvYmFsT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJmdsb2JhbE9i
amVjdFRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2xvYmFsT2JqZWN0KSB9OwogCi1jb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1
cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0
UnVudGltZUZsYWdzLCAwLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcs
ICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNj
cmlwdFJ1bnRpbWVGbGFncywgbnVsbHB0ciwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQgfTsKIAogLyogU291cmNlIGZvciBKU0dsb2JhbE9iamVjdC5sdXQuaAogQGJlZ2luIGds
b2JhbE9iamVjdFRhYmxlCkBAIC05OTAsMTAgKzk5MCwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
OjpzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkKIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6cXVl
dWVNaWNyb3Rhc2soUGFzc1JlZlB0cjxNaWNyb3Rhc2s+IHRhc2spCiB7Ci0gICAgaWYgKGdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPnF1ZXVlVGFza1RvRXZlbnRMb29wKQorICAgIGlmIChnbG9i
YWxPYmplY3RNZXRob2RUYWJsZSgpLT5xdWV1ZVRhc2tUb0V2ZW50TG9vcCkgewogICAgICAgICBn
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5xdWV1ZVRhc2tUb0V2ZW50TG9vcCh0aGlzLCB0YXNr
KTsKLSAgICBlbHNlCi0gICAgICAgIFdURkxvZ0Fsd2F5cygiRVJST1I6IEV2ZW50IGxvb3Agbm90
IHN1cHBvcnRlZC4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZtKCkucXVldWVN
aWNyb3Rhc2sodGhpcywgdGFzayk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKaW5kZXggYzJlZTBhNTUzMmMwYjUxOTM2ODcx
MDlkOWEzMmVjNGExNDQ1ZDhiZC4uMTUyNmQwOTkzY2VhZWU5NDNjOWYyNWMxOGQzYTEyNmNjNTJh
MWNhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCkBAIC0xNzYs
NiArMTc2LDggQEAgdm9pZCBKU0xvY2s6OnVubG9jayhpbnRwdHJfdCB1bmxvY2tDb3VudCkKIHZv
aWQgSlNMb2NrOjp3aWxsUmVsZWFzZUxvY2soKQogewogICAgIGlmIChtX3ZtKSB7CisgICAgICAg
IG1fdm0tPmRyYWluTWljcm90YXNrcygpOworCiAgICAgICAgIG1fdm0tPmhlYXAucmVsZWFzZURl
bGF5ZWRSZWxlYXNlZE9iamVjdHMoKTsKICAgICAgICAgbV92bS0+c2V0U3RhY2tQb2ludGVyQXRW
TUVudHJ5KG51bGxwdHIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApp
bmRleCA3Njc0MWRkOGFlYTM3ZmY1N2NjYTRjZjYzNmJmYzMyYmI0MjljYzQxLi40Y2M5YjdkNmQy
YjkxOTIwNzI3MGEzODE1MzUzZmUyY2I1YmZiZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCkBAIC04MjQsNiArODI0LDIyIEBAIHZvaWQgVk06OmR1bXBUeXBlUHJvZmlsZXJE
YXRhKCkKICAgICB0eXBlUHJvZmlsZXIoKS0+ZHVtcFR5cGVQcm9maWxlckRhdGEoKnRoaXMpOwog
fQogCit2b2lkIFZNOjpxdWV1ZU1pY3JvdGFzayhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4gdGFzaykKK3sKKyAgICBtX21pY3JvdGFza1F1ZXVlLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFF1ZXVlZFRhc2s+KCp0aGlzLCBnbG9iYWxPYmplY3QsIHRh
c2spKTsKK30KKwordm9pZCBWTTo6ZHJhaW5NaWNyb3Rhc2tzKCkKK3sKKyAgICB3aGlsZSAoIW1f
bWljcm90YXNrUXVldWUuaXNFbXB0eSgpKQorICAgICAgICBtX21pY3JvdGFza1F1ZXVlLnRha2VG
aXJzdCgpLT5ydW4oKTsKK30KKwordm9pZCBRdWV1ZWRUYXNrOjpydW4oKQoreworICAgIG1fbWlj
cm90YXNrLT5ydW4obV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Cit9CisKIHZvaWQgc2Fu
aXRpemVTdGFja0ZvclZNKFZNKiB2bSkKIHsKICAgICBsb2dTYW5pdGl6ZVN0YWNrKHZtKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGY3OGY5ZWI5NjQ2MGFlOWZkYmZmOTE2OWMy
ODRhODU4NDgxNmM3MzkuLjc0ZjQ2MGE0ODIwYmI1MTgwZjU0Y2IwYzM4N2ZiYTAzNGFiNTBhZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgIk1pY3JvdGFzay5oIgogI2luY2x1ZGUgIk51bWVy
aWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZU5hbWUuaCIKICNpbmNsdWRlICJQcm90b3R5
cGVNYXAuaCIKQEAgLTU1LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVk
ZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+
CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xNTMsNiAr
MTU1LDIzIEBAIHN0cnVjdCBMb2NhbFRpbWVPZmZzZXRDYWNoZSB7CiAgICAgV1RGOjpUaW1lVHlw
ZSB0aW1lVHlwZTsKIH07CiAKK2NsYXNzIFF1ZXVlZFRhc2sgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFF1ZXVlZFRhc2spOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIHZvaWQgcnVuKCk7CisKKyAgICBRdWV1ZWRUYXNrKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxNaWNyb3Rhc2s+IG1pY3JvdGFzaykKKyAgICAg
ICAgOiBtX2dsb2JhbE9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0KQorICAgICAgICAsIG1fbWljcm90
YXNrKG1pY3JvdGFzaykKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cm9uZzxKU0ds
b2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CisgICAgUmVmUHRyPE1pY3JvdGFzaz4gbV9taWNy
b3Rhc2s7Cit9OworCiBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKIAogI2lmIENPTVBJTEVSKE1T
VkMpCkBAIC01MzYsNiArNTU1LDkgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+IHsKICAgICBib29sIGVuYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKICAgICBi
b29sIGRpc2FibGVDb250cm9sRmxvd1Byb2ZpbGVyKCk7CiAKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxNaWNyb3Rh
c2s+KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRyYWluTWljcm90YXNrcygpOworCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgZnJp
ZW5kIGNsYXNzIENsZWFyRXhjZXB0aW9uU2NvcGU7CkBAIC01OTAsNiArNjEyLDcgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBGdW5jdGlvbkhhc0V4
ZWN1dGVkQ2FjaGUgbV9mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPENvbnRyb2xGbG93UHJvZmlsZXI+IG1fY29udHJvbEZsb3dQcm9maWxlcjsKICAgICB1bnNp
Z25lZCBtX2NvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVkQ291bnQ7CisgICAgV1RGOjpEZXF1ZTxz
dGQ6OnVuaXF1ZV9wdHI8UXVldWVkVGFzaz4+IG1fbWljcm90YXNrUXVldWU7CiB9OwogCiAjaWYg
RU5BQkxFKEdDX1ZBTElEQVRJT04pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDgzOTVlM2NlZjZmZjA1M2NjMDk5Zjc3YzU5
Y2E5ZjA2ZTEyYjNmNi4uNTcwYjYxOWJhNmY1YThmNmY0NDI5NDkwYWFhMDQzYTgyODQ2YmVkYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE1LTA3LTE0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEludGVncmF0ZSBhdXRvbWF0aWMgbWljcm90YXNr
IGRyYWluaW5nIGludG8gSlNDIGZyYW1ld29yayBhbmQgcmUtZW5hYmxlIFByb21pc2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjgyOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBQcm9taXNlIHRl
c3RzIG1haW5seSBmb2N1c2luZyBvbiBtaWNyb3Rhc2tzLgorICAgICAgICBUaGV5IGNhbiBiZSBl
eGVjdXRlZCBpbiBKU0Mgc2hlbGwuIFNvIHRoZXkgYXJlIGxvY2F0ZSBpbiBqcy8gZGlyZWN0b3J5
IChub3QganMvZG9tKS4KKworICAgICAgICAqIGpzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3Mt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlLW5lc3RlZC1taWNyb3Rh
c2tzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9t
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZS1yZXNvbHZlLWluLW5v
bi1kb20uaHRtbDogQWRkZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3Byb21pc2UtbmVz
dGVkLW1pY3JvdGFza3MuanM6IEFkZGVkLgorICAgICAgICAoUHJvbWlzZS5yZXNvbHZlLnRoZW4p
OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qczog
QWRkZWQuCisgICAgICAgICh2YWx1ZS50aGVuKToKKyAgICAgICAgKiByZXNvdXJjZXMvc3RhbmRh
bG9uZS1wb3N0LmpzOgorCiAyMDE1LTA3LTExICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQsIEVGTCBnYXJkZW5pbmcg
b24gMTJ0aCBKdWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLW5lc3RlZC1t
aWNyb3Rhc2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3Byb21pc2UtbmVzdGVkLW1p
Y3JvdGFza3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MjRmNDNjM2JmZWNiNzc0MTY4MDU0
NWY1OTUzMmExOTFkNmEyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9wcm9t
aXNlLW5lc3RlZC1taWNyb3Rhc2tzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUZXN0
IFByb21pc2UgbmVzdGVkIG1pY3JvdGFza3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitUaGUgcHJvbWlzZSBpcyBub3QgZnVsZmlsbGVkIHVudGlsIGFmdGVyIHRoaXMgZnVuY3Rp
b24gY2FsbCBleGVjdXRlcy4KK1BBU1MgdmFsdWUxIGlzIDQyCitQQVNTIHZhbHVlMiBpcyB1bmRl
ZmluZWQuCitQQVNTIHJlc3VsdCBpcyB1bmRlZmluZWQuCitQQVNTIHZhbHVlMiBpcyA4NAorUEFT
UyByZXN1bHQgaXMgdW5kZWZpbmVkLgorUEFTUyByZXN1bHQgaXMgMzUyOAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuaHRtbCBiL0xheW91dFRlc3RzL2pz
L3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTc1MjgwMjc4YjQ4
ODIwY2NkODg1MTg0NzZjYjc2MWU1MzI4ZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvanMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9wcm9taXNlLW5lc3Rl
ZC1taWNyb3Rhc2tzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xMGRhMDZlYjA2MzM3ZDI5MDZiZTVjMjg5MjAwNGY5MmQzYzBjYTNkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1yZXNvbHZlLWluLW5vbi1kb20tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3QgUHJvbWlzZS5yZXNvbHZlIGluIG5vbiBk
b20gZGlyZWN0b3J5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVGhlIHByb21p
c2UgaXMgbm90IGZ1bGZpbGxlZCB1bnRpbCBhZnRlciB0aGlzIGZ1bmN0aW9uIGNhbGwgZXhlY3V0
ZXMuCitQQVNTIHZhbHVlLnRoZW4gaXMgY2FsbGVkLgorUEFTUyB0aGlzVmFsdWUgaXMgdmFsdWUK
K1BBU1MgZnVsZmlsbGVkCitQQVNTIHJlc3VsdCBpcyAiaGVsbG8iCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvcHJvbWlzZS1yZXNvbHZlLWluLW5vbi1kb20uaHRtbCBiL0xheW91dFRlc3RzL2pzL3By
b21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ4ZDYwNjQ2ZDNhYzc0
NmFlMTRkM2VlNjgyNjQ4MGFkYmY4YzEzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2pzL3Byb21pc2UtcmVzb2x2ZS1pbi1ub24tZG9tLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Byb21pc2UtcmVzb2x2
ZS1ub24tZG9tLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDhiYWY1YjFjNmJkMTFkN2ViMjFmMDFlZDg2MTJkNmI3ZjgwNWRjOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9wcm9taXNlLW5lc3RlZC1t
aWNyb3Rhc2tzLmpzCkBAIC0wLDAgKzEsMjYgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2Ug
bmVzdGVkIG1pY3JvdGFza3MuJyk7CisKK3ZhciBnbG9iYWxPYmplY3QgPSB0aGlzOworZ2xvYmFs
T2JqZWN0LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCit2YXIgdmFsdWUxOwordmFyIHZhbHVlMjsK
K3ZhciByZXN1bHQ7CitQcm9taXNlLnJlc29sdmUoNDIpLnRoZW4oZnVuY3Rpb24gKHYxKSB7Cisg
ICAgdmFsdWUxID0gdjE7CisgICAgc2hvdWxkQmUoJ3ZhbHVlMScsICc0MicpOworICAgIHNob3Vs
ZEJlVW5kZWZpbmVkKCd2YWx1ZTInKTsKKyAgICBzaG91bGRCZVVuZGVmaW5lZCgncmVzdWx0Jyk7
CisgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSg4NCkudGhlbihmdW5jdGlvbiAodjIpIHsKKyAg
ICAgICAgdmFsdWUyID0gdjI7CisgICAgICAgIHNob3VsZEJlKCd2YWx1ZTInLCAnODQnKTsKKyAg
ICAgICAgc2hvdWxkQmVVbmRlZmluZWQoJ3Jlc3VsdCcpOworICAgICAgICByZXR1cm4gdjIgKiB2
MTsKKyAgICB9KTsKK30pLnRoZW4oZnVuY3Rpb24gKHIpIHsKKyAgICByZXN1bHQgPSByOworICAg
IHNob3VsZEJlKCdyZXN1bHQnLCAnMzUyOCcpOworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7CisK
K2RlYnVnKCdUaGUgcHJvbWlzZSBpcyBub3QgZnVsZmlsbGVkIHVudGlsIGFmdGVyIHRoaXMgZnVu
Y3Rpb24gY2FsbCBleGVjdXRlcy4nKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qcyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9wcm9taXNlLXJlc29sdmUtbm9uLWRvbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNGE4MDZkNjVi
NDEwODliYTk0MmZkZjBjY2ExMzVkZDVjYWZjN2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb21pc2UtcmVzb2x2ZS1ub24tZG9tLmpzCkBAIC0wLDAg
KzEsMjUgQEAKK2Rlc2NyaXB0aW9uKCdUZXN0IFByb21pc2UucmVzb2x2ZSBpbiBub24gZG9tIGRp
cmVjdG9yeS4nKTsKKwordmFyIGdsb2JhbE9iamVjdCA9IHRoaXM7CitnbG9iYWxPYmplY3QuanNU
ZXN0SXNBc3luYyA9IHRydWU7Cit2YXIgdmFsdWUgPSB7CisgIHRoZW46IGZ1bmN0aW9uKGZ1bGZp
bGxDYWxsYmFjaywgcmVqZWN0Q2FsbGJhY2spIHsKKyAgICB0ZXN0UGFzc2VkKCd2YWx1ZS50aGVu
IGlzIGNhbGxlZC4nKTsKKyAgICBnbG9iYWxPYmplY3QudGhpc1ZhbHVlID0gdGhpczsKKyAgICBz
aG91bGRCZSgndGhpc1ZhbHVlJywgJ3ZhbHVlJyk7CisgICAgZnVsZmlsbENhbGxiYWNrKCdoZWxs
bycpOworICB9Cit9OwordmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZl
KSB7IHJlc29sdmUodmFsdWUpOyB9KTsKKworcHJvbWlzZS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkg
eworICB0ZXN0UGFzc2VkKCdmdWxmaWxsZWQnKTsKKyAgZ2xvYmFsT2JqZWN0LnJlc3VsdCA9IHJl
c3VsdDsKKyAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaGVsbG8nKTsKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9LCBmdW5jdGlvbigpIHsKKyAgdGVzdEZhaWxlZCgncmVqZWN0ZWQnKTsK
KyAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworZGVidWcoJ1RoZSBwcm9taXNlIGlzIG5vdCBmdWxm
aWxsZWQgdW50aWwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBjYWxsIGV4ZWN1dGVzLicpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5qcyBiL0xheW91dFRl
c3RzL3Jlc291cmNlcy9zdGFuZGFsb25lLXBvc3QuanMKaW5kZXggNzFlMjIzNTc4M2MwNmVjN2U0
MDNmMWFkYzAyYWVkNTFhNjA5ZmE4NC4uOTNjNzc5YTdmMDMxZmI0YmZkMjc3NWQwZjg2YjcxNjFm
ZTMyYmFkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9z
dC5qcworKysgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzCkBAIC0x
LDMgKzEsNyBAQAogd2FzUG9zdFRlc3RTY3JpcHRQYXJzZWQgPSB0cnVlOwogCi1maW5pc2hKU1Rl
c3QoKTsKK2lmICh0aGlzLmpzVGVzdElzQXN5bmMpIHsKKyAgICBpZiAodGhpcy53YXNGaW5pc2hK
U1Rlc3RDYWxsZWQpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfSBlbHNlCisgICAgZmluaXNo
SlNUZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256902</attachid>
            <date>2015-07-16 09:06:19 -0700</date>
            <delta_ts>2015-07-17 15:33:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146828-20150716160510.patch</filename>
            <type>text/plain</type>
            <size>18927</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OGJlOThjYWRmMDQ0YWRlMWFlYmEzZTE4ZTBkYzU3NWJlYWE1YTVjLi4wMWRkMTIwY2FkZTJiNWQ3
OWFhY2QwYzgzZmMzZmEyMjUxMDUzNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNS0wNy0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbnRlZ3JhdGUgYXV0b21hdGljIG1pY3JvdGFzayBkcmFpbmluZyBp
bnRvIEpTQyBmcmFtZXdvcmsgYW5kIHJlLWVuYWJsZSBQcm9taXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY4MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXV0b21hdGljIG1pY3JvdGFzayBk
cmFpbmluZyBzeXN0ZW0gaW50byBKU0MgZnJhbWV3b3JrLgorICAgICAgICBXaGVuIHRoZSBkZXB0
aCBvZiBWTSBsb2NrIGJlY29tZXMgMCwgYmVmb3JlIHRoaXMsIHdlIGRyYWluIHRoZSBxdWV1ZWQg
bWljcm90YXNrcy4KKyAgICAgICAgRW5xdWV1aW5nIGJlaGF2aW9yIGNhbiBiZSBpbmplY3RlZCBi
eSB0aGUgSlNHbG9iYWxPYmplY3QncyBtZXRob2QgdGFibGUuCisgICAgICAgIEl0IGlzIHV0aWxp
emVkIGluIFdlYkNvcmUgdG8gcG9zdCB0aGUgbWljcm90YXNrIHRvIFdlYkNvcmUncyBldmVudCBs
b29wLgorCisgICAgICAgIEluIHRoZSBjYXNlIG9mIEpTQyBpbnRlcmFjdGl2ZSBzaGVsbCwgVk0g
ZGVwdGggaXMgYWx3YXlzIGdyZWF0ZXIgdGhhbiAwLgorICAgICAgICBTbyB3ZSBtYW51YWxseSBk
cmFpbnMgdGhlIHF1ZXVlZCBtaWNyb3Rhc2tzIGFmdGVyIGV2YWx1YXRpbmcgdGhlIHdyaXR0ZW4g
bGluZS4KKworICAgICAgICBTaW5jZSBub3cgSlNDIGZyYW1ld29yayBoYXMgdGhlIG1pY3JvdGFz
ayBxdWV1ZSwgd2UgY2FuIGRyYWluIHRoZSBxdWV1ZWQgbWljcm90YXNrcy4KKyAgICAgICAgU28g
cmUtZW5hYmxlIHRoZSBQcm9taXNlIGluIHRoZSBKU0MgZnJhbWV3b3JrIGNvbnRleHQuCisKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKGphdmFTY3JpcHRSdW50aW1l
RmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0YXBpLmM6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbToKKyAgICAgICAgKHRlc3RP
YmplY3RpdmVDQVBJTWFpbik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHJ1bkludGVy
YWN0aXZlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnF1ZXVlTWljcm90YXNrKToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6d2lsbFJlbGVhc2VMb2NrKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OnF1ZXVlTWljcm90YXNr
KToKKyAgICAgICAgKEpTQzo6Vk06OmRyYWluTWljcm90YXNrcyk6CisgICAgICAgIChKU0M6OlF1
ZXVlZFRhc2s6OnJ1bik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpR
dWV1ZWRUYXNrOjpRdWV1ZWRUYXNrKToKKwogMjAxNS0wNy0xNSAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBGaXggYXJtdjcgYnVpbGQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggNDk3NmMyOWFlZWVm
OTEzOTNiYjBhODcyOWU1MDA2NDcyNjRjMWY3OS4uZjRkOTIzNjZhYjMwNWI1MTliZDQ4ZDZlMWM0
NWVhMTZiNWEwNmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
LmNwcApAQCAtNTksMTQgKzU5LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGlj
IFJ1bnRpbWVGbGFncyBqYXZhU2NyaXB0UnVudGltZUZsYWdzKGNvbnN0IEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgUnVudGltZUZsYWdzIHJ1bnRpbWVGbGFncyA9IEpTR2xv
YmFsT2JqZWN0OjpqYXZhU2NyaXB0UnVudGltZUZsYWdzKGdsb2JhbE9iamVjdCk7Ci0gICAgcnVu
dGltZUZsYWdzLnNldFByb21pc2VEaXNhYmxlZCh0cnVlKTsKLSAgICByZXR1cm4gcnVudGltZUZs
YWdzOwotfQotCi1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0M6OmphdmFTY3JpcHRD
b3JlQVBJR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZKU0dsb2JhbE9iamVjdDo6YWxsb3dz
QWNjZXNzRnJvbSwgJkpTR2xvYmFsT2JqZWN0OjpzdXBwb3J0c1Byb2ZpbGluZywgJkpTR2xvYmFs
T2JqZWN0OjpzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmSlNHbG9iYWxPYmplY3Q6OnNob3VsZElu
dGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZKU0dsb2Jh
bE9iamVjdDo6c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCB9OworY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgSlNDOjpqYXZhU2NyaXB0Q29yZUFQSUdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlID0geyAmSlNHbG9iYWxPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20sICZKU0dsb2Jh
bE9iamVjdDo6c3VwcG9ydHNQcm9maWxpbmcsICZKU0dsb2JhbE9iamVjdDo6c3VwcG9ydHNSaWNo
U291cmNlSW5mbywgJkpTR2xvYmFsT2JqZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZKU0ds
b2JhbE9iamVjdDo6amF2YVNjcmlwdFJ1bnRpbWVGbGFncywgbnVsbHB0ciwgJkpTR2xvYmFsT2Jq
ZWN0OjpzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07CiAKIC8vIEZyb20gdGhl
IEFQSSdzIHBlcnNwZWN0aXZlLCBhIGNvbnRleHQgZ3JvdXAgcmVtYWlucyBhbGl2ZSBpZmYKIC8v
ICAgICAoYSkgaXQgaGFzIGJlZW4gSlNDb250ZXh0R3JvdXBSZXRhaW5lZApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwppbmRleCBmYzQ5MTRiN2FiNjk1MjcwOTVlZjBl
NjU4YTRiMzQyZjU5MDQ5NWQxLi4zYjg5ODg2Mzc3YzQ4MDNlMzVmOTJmZGY5Y2MxY2VhOGViMGRj
ODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGku
YworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwpAQCAtMTg1
NCwyMSArMTg1NCw0MyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgICAg
ICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QgPSBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3QoY29u
dGV4dCk7CiAgICAgICAgIHsKICAgICAgICAgICAgIEpTU3RyaW5nUmVmIHByb21pc2VQcm9wZXJ0
eSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQcm9taXNlIik7Ci0gICAgICAgICAg
ICBBU1NFUlQoIUpTT2JqZWN0SGFzUHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2JqZWN0LCBwcm9t
aXNlUHJvcGVydHkpKTsKKyAgICAgICAgICAgIEFTU0VSVChKU09iamVjdEhhc1Byb3BlcnR5KGNv
bnRleHQsIGdsb2JhbE9iamVjdCwgcHJvbWlzZVByb3BlcnR5KSk7CiAgICAgICAgICAgICBKU1N0
cmluZ1JlbGVhc2UocHJvbWlzZVByb3BlcnR5KTsKICAgICAgICAgfQogICAgICAgICB7CiAgICAg
ICAgICAgICBKU1N0cmluZ1JlZiBzY3JpcHQgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygidHlwZW9mIFByb21pc2UiKTsKLSAgICAgICAgICAgIEpTU3RyaW5nUmVmIHVuZGVmaW5lZCA9
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ1bmRlZmluZWQiKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nUmVmIGZ1bmN0aW9uID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZ1
bmN0aW9uIik7CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlID0gSlNFdmFsdWF0ZVNjcmlw
dChjb250ZXh0LCBzY3JpcHQsIE5VTEwsIE5VTEwsIDEsIE5VTEwpOwogICAgICAgICAgICAgQVNT
RVJUKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0LCB2YWx1ZSkpOwogICAgICAgICAgICAgSlNTdHJp
bmdSZWYgdmFsdWVBc1N0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUs
IE5VTEwpOwotICAgICAgICAgICAgQVNTRVJUKEpTU3RyaW5nSXNFcXVhbCh2YWx1ZUFzU3RyaW5n
LCB1bmRlZmluZWQpKTsKKyAgICAgICAgICAgIEFTU0VSVChKU1N0cmluZ0lzRXF1YWwodmFsdWVB
c1N0cmluZywgZnVuY3Rpb24pKTsKICAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZSh2YWx1ZUFz
U3RyaW5nKTsKLSAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZSh1bmRlZmluZWQpOworICAgICAg
ICAgICAgSlNTdHJpbmdSZWxlYXNlKGZ1bmN0aW9uKTsKICAgICAgICAgICAgIEpTU3RyaW5nUmVs
ZWFzZShzY3JpcHQpOwogICAgICAgICB9Ci0gICAgICAgIHByaW50ZigiUEFTUzogUHJvbWlzZSBp
cyBub3QgZXhwb3NlZCB1bmRlciBKU0NvbnRleHQgQVBJLlxuIik7CisgICAgICAgIHByaW50Zigi
UEFTUzogUHJvbWlzZSBpcyBleHBvc2VkIHVuZGVyIEpTQ29udGV4dCBBUEkuXG4iKTsKKyAgICB9
CisKKyAgICAvLyBDaGVjayBtaWNyb3Rhc2tzLgorICAgIHsKKyAgICAgICAgSlNHbG9iYWxDb250
ZXh0UmVmIGNvbnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKE5VTEwsIE5VTEwp
OworICAgICAgICB7CisgICAgICAgICAgICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QgPSBKU0Nv
bnRleHRHZXRHbG9iYWxPYmplY3QoY29udGV4dCk7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbjsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVmIGNvZGUgPSBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygicmVzdWx0ID0gMDsgUHJvbWlzZS5yZXNvbHZlKDQyKS50aGVuKGZ1bmN0
aW9uICh2YWx1ZSkgeyByZXN1bHQgPSB2YWx1ZTsgfSk7Iik7CisgICAgICAgICAgICBKU1N0cmlu
Z1JlZiBmaWxlID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIiIpOworICAgICAgICAg
ICAgYXNzZXJ0VHJ1ZShKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIGNvZGUsIGdsb2JhbE9iamVj
dCwgZmlsZSwgMSwgJmV4Y2VwdGlvbiksICJBbiBleGNlcHRpb24gc2hvdWxkIG5vdCBiZSB0aHJv
d24iKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShjb2RlKTsKKyAgICAgICAgICAgIEpT
U3RyaW5nUmVsZWFzZShmaWxlKTsKKworICAgICAgICAgICAgSlNTdHJpbmdSZWYgcmVzdWx0UHJv
cGVydHkgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygicmVzdWx0Iik7CisgICAgICAg
ICAgICBBU1NFUlQoSlNPYmplY3RIYXNQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIHJl
c3VsdFByb3BlcnR5KSk7CisKKyAgICAgICAgICAgIEpTVmFsdWVSZWYgcmVzdWx0VmFsdWUgPSBK
U09iamVjdEdldFByb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVjdCwgcmVzdWx0UHJvcGVydHks
ICZleGNlcHRpb24pOworICAgICAgICAgICAgYXNzZXJ0RXF1YWxzQXNOdW1iZXIocmVzdWx0VmFs
dWUsIDQyKTsKKyAgICAgICAgICAgIEpTU3RyaW5nUmVsZWFzZShyZXN1bHRQcm9wZXJ0eSk7Cisg
ICAgICAgIH0KKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjb250ZXh0KTsKICAgICB9
CiAKICNpZiBPUyhEQVJXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkubW0KaW5kZXggMDFiYjdkNzZiMzNmYzY0ZmQ2NTg1YWExMjE5MzZkNzliODJmZDlkNS4uNzA3
ODY1ZDNhZDRmYzY0MWQ4NTNjOWI2MjMwYzYyYTBkMDU5NjQ3OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtNTQwLDkgKzU0MCwxNiBAQCBzdGF0aWMg
dm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLSAg
ICAgICAgY2hlY2tSZXN1bHQoQCJQcm9taXNlIGlzIG5vdCBleHBvc2VkIiwgW2NvbnRleHRbQCJQ
cm9taXNlIl0gaXNVbmRlZmluZWRdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJQcm9taXNlIGlz
IGV4cG9zZWQiLCAhW2NvbnRleHRbQCJQcm9taXNlIl0gaXNVbmRlZmluZWRdKTsKICAgICAgICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0eXBlb2YgUHJvbWlz
ZSJdOwotICAgICAgICBjaGVja1Jlc3VsdChAInR5cGVvZiBQcm9taXNlIGlzICd1bmRlZmluZWQn
IiwgcmVzdWx0LmlzU3RyaW5nICYmIFtyZXN1bHQgaXNFcXVhbFRvT2JqZWN0OkAidW5kZWZpbmVk
Il0pOworICAgICAgICBjaGVja1Jlc3VsdChAInR5cGVvZiBQcm9taXNlIGlzICdmdW5jdGlvbici
LCByZXN1bHQuaXNTdHJpbmcgJiYgW3Jlc3VsdCBpc0VxdWFsVG9PYmplY3Q6QCJmdW5jdGlvbiJd
KTsKKyAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNWaXJ0dWFsTWFj
aGluZSogdm0gPSBbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdOworICAgICAgICBKU0Nv
bnRleHQqIGNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdFdpdGhWaXJ0dWFsTWFjaGlu
ZTp2bV07CisgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAicmVzdWx0ID0gMDsgUHJv
bWlzZS5yZXNvbHZlKDQyKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXN1bHQgPSB2YWx1ZTsg
fSk7Il07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiTWljcm90YXNrIGlzIGRyYWluZWQiLCBbY29u
dGV4dFtAInJlc3VsdCJdICBpc0VxdWFsVG9PYmplY3Q6QDQyXSk7CiAgICAgfQogCiAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDUxMzExNmE0NDVhYzQzMzhk
NTZkMWNmZmE1ZTJjMjMwNjc4ODJkODYuLjU3YWY2YWU5M2E3ZjA2ZDdkM2QyMTMwN2EyOThjMGU5
MTkxZjEzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0xNDAxLDYgKzE0MDEsNyBAQCBzdGF0
aWMgdm9pZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAg
ICAgICAgIHByaW50ZigiJXNcbiIsIHJldHVyblZhbHVlLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpKS0+dmFsdWUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpLnV0ZjgoKS5k
YXRhKCkpOwogCiAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4Y2Vw
dGlvbigpOworICAgICAgICBnbG9iYWxPYmplY3QtPnZtKCkuZHJhaW5NaWNyb3Rhc2tzKCk7CiAg
ICAgfQogICAgIHByaW50ZigiXG4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmMjIxY2I2MjIxN2RlNDgxODljZjgxMDA5
YWMwOGM0NTdhNGU3OWQ5Li5mM2M4Zjg2MGNlY2E4YmU5NmM5ZjhiZmE3ZmQ2OTU1NzMwZWZjMjYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0xNTcsNyArMTU3LDcgQEAKIAogY29uc3QgQ2xhc3NJbmZvIEpTR2xvYmFsT2JqZWN0
OjpzX2luZm8gPSB7ICJHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmZ2xvYmFsT2JqZWN0
VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNvbnN0IEds
b2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9y
dHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50
aW1lRmxhZ3MsIDAsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0IH07Citjb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1
cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0
UnVudGltZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91
dCB9OwogCiAvKiBTb3VyY2UgZm9yIEpTR2xvYmFsT2JqZWN0Lmx1dC5oCiBAYmVnaW4gZ2xvYmFs
T2JqZWN0VGFibGUKQEAgLTk5MCwxMCArOTkwLDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnNl
dE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpxdWV1ZU1p
Y3JvdGFzayhQYXNzUmVmUHRyPE1pY3JvdGFzaz4gdGFzaykKIHsKLSAgICBpZiAoZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUoKS0+cXVldWVUYXNrVG9FdmVudExvb3ApCisgICAgaWYgKGdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKCktPnF1ZXVlVGFza1RvRXZlbnRMb29wKSB7CiAgICAgICAgIGdsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlKCktPnF1ZXVlVGFza1RvRXZlbnRMb29wKHRoaXMsIHRhc2spOwot
ICAgIGVsc2UKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJPUjogRXZlbnQgbG9vcCBub3Qgc3Vw
cG9ydGVkLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdm0oKS5xdWV1ZU1pY3Jv
dGFzayh0aGlzLCB0YXNrKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAppbmRleCBjMmVlMGE1NTMyYzBiNTE5MzY4NzEwOWQ5
YTMyZWM0YTE0NDVkOGJkLi4xNTI2ZDA5OTNjZWFlZTk0M2M5ZjI1YzE4ZDNhMTI2Y2M1MmExY2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0xvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKQEAgLTE3Niw2ICsx
NzYsOCBAQCB2b2lkIEpTTG9jazo6dW5sb2NrKGludHB0cl90IHVubG9ja0NvdW50KQogdm9pZCBK
U0xvY2s6OndpbGxSZWxlYXNlTG9jaygpCiB7CiAgICAgaWYgKG1fdm0pIHsKKyAgICAgICAgbV92
bS0+ZHJhaW5NaWNyb3Rhc2tzKCk7CisKICAgICAgICAgbV92bS0+aGVhcC5yZWxlYXNlRGVsYXll
ZFJlbGVhc2VkT2JqZWN0cygpOwogICAgICAgICBtX3ZtLT5zZXRTdGFja1BvaW50ZXJBdFZNRW50
cnkobnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IDc2NzQxZGQ4YWVhMzdmZjU3Y2NhNGNmNjM2YmZjMzJiYjQyOWNjNDEuLjRjYzliN2Q2ZDJiOTE5
MjA3MjcwYTM4MTUzNTNmZTJjYjViZmJkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTgyNCw2ICs4MjQsMjIgQEAgdm9pZCBWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEo
KQogICAgIHR5cGVQcm9maWxlcigpLT5kdW1wVHlwZVByb2ZpbGVyRGF0YSgqdGhpcyk7CiB9CiAK
K3ZvaWQgVk06OnF1ZXVlTWljcm90YXNrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBh
c3NSZWZQdHI8TWljcm90YXNrPiB0YXNrKQoreworICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8UXVldWVkVGFzaz4oKnRoaXMsIGdsb2JhbE9iamVjdCwgdGFzaykp
OworfQorCit2b2lkIFZNOjpkcmFpbk1pY3JvdGFza3MoKQoreworICAgIHdoaWxlICghbV9taWNy
b3Rhc2tRdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fbWljcm90YXNrUXVldWUudGFrZUZpcnN0
KCktPnJ1bigpOworfQorCit2b2lkIFF1ZXVlZFRhc2s6OnJ1bigpCit7CisgICAgbV9taWNyb3Rh
c2stPnJ1bihtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKK30KKwogdm9pZCBzYW5pdGl6
ZVN0YWNrRm9yVk0oVk0qIHZtKQogewogICAgIGxvZ1Nhbml0aXplU3RhY2sodm0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZjc4ZjllYjk2NDYwYWU5ZmRiZmY5MTY5YzI4NGE4
NTg0ODE2YzczOS4uNzRmNDYwYTQ4MjBiYjUxODBmNTRjYjBjMzg3ZmJhMDM0YWI1MGFmZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAi
SlNMb2NrLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgiCisjaW5jbHVkZSAiTWljcm90YXNrLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0
cmluZ3MuaCIKICNpbmNsdWRlICJQcml2YXRlTmFtZS5oIgogI2luY2x1ZGUgIlByb3RvdHlwZU1h
cC5oIgpAQCAtNTUsNiArNTYsNyBAQAogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3
dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTE1Myw2ICsxNTUs
MjMgQEAgc3RydWN0IExvY2FsVGltZU9mZnNldENhY2hlIHsKICAgICBXVEY6OlRpbWVUeXBlIHRp
bWVUeXBlOwogfTsKIAorY2xhc3MgUXVldWVkVGFzayB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUXVldWVkVGFzayk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgdm9pZCBydW4oKTsKKworICAgIFF1ZXVlZFRhc2soVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4gbWljcm90YXNrKQorICAgICAgICA6
IG1fZ2xvYmFsT2JqZWN0KHZtLCBnbG9iYWxPYmplY3QpCisgICAgICAgICwgbV9taWNyb3Rhc2so
bWljcm90YXNrKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3Ryb25nPEpTR2xvYmFs
T2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBSZWZQdHI8TWljcm90YXNrPiBtX21pY3JvdGFz
azsKK307CisKIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogCiAjaWYgQ09NUElMRVIoTVNWQykK
QEAgLTUzNiw2ICs1NTUsOSBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIGJvb2wgZW5hYmxlQ29udHJvbEZsb3dQcm9maWxlcigpOwogICAgIGJvb2wg
ZGlzYWJsZUNvbnRyb2xGbG93UHJvZmlsZXIoKTsKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgcXVldWVNaWNyb3Rhc2soSlNHbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPE1pY3JvdGFzaz4p
OworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHJhaW5NaWNyb3Rhc2tzKCk7CisKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQg
Y2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsKQEAgLTU5MCw2ICs2MTIsNyBAQCBjbGFzcyBWTSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIEZ1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZSBtX2Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q29udHJvbEZsb3dQcm9maWxlcj4gbV9jb250cm9sRmxvd1Byb2ZpbGVyOwogICAgIHVuc2lnbmVk
IG1fY29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRDb3VudDsKKyAgICBXVEY6OkRlcXVlPHN0ZDo6
dW5pcXVlX3B0cjxRdWV1ZWRUYXNrPj4gbV9taWNyb3Rhc2tRdWV1ZTsKIH07CiAKICNpZiBFTkFC
TEUoR0NfVkFMSURBVElPTikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4MzQ2MDNmMDVmNDlhNTk1YTc2MmFiYmE4NmNkNDVj
ZWY4MDI3YjMxLi44NDI4OTdiNjUyZTEyMDRjYzkwZTIxNTk4NTI3NzBiZjJkMGZkNGM2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDctMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgSW50ZWdyYXRlIGF1dG9tYXRpYyBtaWNyb3Rhc2sgZHJh
aW5pbmcgaW50byBKU0MgZnJhbWV3b3JrIGFuZCByZS1lbmFibGUgUHJvbWlzZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2ODI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFByb21pc2UgdGVzdHMg
bWFpbmx5IGZvY3VzaW5nIG9uIG1pY3JvdGFza3MuCisgICAgICAgIFRoZXkgY2FuIGJlIGV4ZWN1
dGVkIGluIEpTQyBzaGVsbC4gU28gdGhleSBhcmUgbG9jYXRlIGluIGpzLyBkaXJlY3RvcnkgKG5v
dCBqcy9kb20pLgorCisgICAgICAgICoganMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3Mu
aHRtbDogQWRkZWQuCisgICAgICAgICoganMvcHJvbWlzZS1yZXNvbHZlLWluLW5vbi1kb20tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRv
bS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0ZWQt
bWljcm90YXNrcy5qczogQWRkZWQuCisgICAgICAgIChQcm9taXNlLnJlc29sdmUudGhlbik6Cisg
ICAgICAgICoganMvc2NyaXB0LXRlc3RzL3Byb21pc2UtcmVzb2x2ZS1ub24tZG9tLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHZhbHVlLnRoZW4pOgorICAgICAgICAqIHJlc291cmNlcy9zdGFuZGFsb25l
LXBvc3QuanM6CisKIDIwMTUtMDctMTYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB1cGRhdGUgJCQoKSB0byByZXR1cm4gYW4g
QXJyYXkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFz
a3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNr
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTcyNGY0M2MzYmZlY2I3NzQxNjgwNTQ1ZjU5NTMy
YTE5MWQ2YTI5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL3Byb21pc2UtbmVz
dGVkLW1pY3JvdGFza3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3QgUHJvbWlz
ZSBuZXN0ZWQgbWljcm90YXNrcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Ro
ZSBwcm9taXNlIGlzIG5vdCBmdWxmaWxsZWQgdW50aWwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBjYWxs
IGV4ZWN1dGVzLgorUEFTUyB2YWx1ZTEgaXMgNDIKK1BBU1MgdmFsdWUyIGlzIHVuZGVmaW5lZC4K
K1BBU1MgcmVzdWx0IGlzIHVuZGVmaW5lZC4KK1BBU1MgdmFsdWUyIGlzIDg0CitQQVNTIHJlc3Vs
dCBpcyB1bmRlZmluZWQuCitQQVNTIHJlc3VsdCBpcyAzNTI4CitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5odG1sIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlz
ZS1uZXN0ZWQtbWljcm90YXNrcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NzUyODAyNzhiNDg4MjBjY2Q4
ODUxODQ3NmNiNzYxZTUzMjhkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9w
cm9taXNlLW5lc3RlZC1taWNyb3Rhc2tzLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Byb21pc2UtbmVzdGVkLW1pY3Jv
dGFza3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvcHJvbWlzZS1yZXNvbHZlLWluLW5vbi1kb20tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvcHJvbWlzZS1yZXNvbHZlLWluLW5vbi1kb20tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjEwZGEwNmViMDYzMzdkMjkwNmJlNWMyODkyMDA0ZjkyZDNjMGNhM2QKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9qcy9wcm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdCBQcm9taXNlLnJlc29sdmUgaW4gbm9uIGRvbSBkaXJl
Y3RvcnkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitUaGUgcHJvbWlzZSBpcyBu
b3QgZnVsZmlsbGVkIHVudGlsIGFmdGVyIHRoaXMgZnVuY3Rpb24gY2FsbCBleGVjdXRlcy4KK1BB
U1MgdmFsdWUudGhlbiBpcyBjYWxsZWQuCitQQVNTIHRoaXNWYWx1ZSBpcyB2YWx1ZQorUEFTUyBm
dWxmaWxsZWQKK1BBU1MgcmVzdWx0IGlzICJoZWxsbyIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9w
cm9taXNlLXJlc29sdmUtaW4tbm9uLWRvbS5odG1sIGIvTGF5b3V0VGVzdHMvanMvcHJvbWlzZS1y
ZXNvbHZlLWluLW5vbi1kb20uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDhkNjA2NDZkM2FjNzQ2YWUxNGQz
ZWU2ODI2NDgwYWRiZjhjMTM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvcHJv
bWlzZS1yZXNvbHZlLWluLW5vbi1kb20uaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1k
b20uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFza3MuanMgYi9MYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1uZXN0ZWQtbWljcm90YXNrcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wOGJhZjViMWM2YmQxMWQ3ZWIyMWYwMWVkODYxMmQ2YjdmODA1ZGM4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL3Byb21pc2UtbmVzdGVkLW1pY3JvdGFz
a3MuanMKQEAgLTAsMCArMSwyNiBAQAorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZSBuZXN0ZWQg
bWljcm90YXNrcy4nKTsKKwordmFyIGdsb2JhbE9iamVjdCA9IHRoaXM7CitnbG9iYWxPYmplY3Qu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK3ZhciB2YWx1ZTE7Cit2YXIgdmFsdWUyOwordmFyIHJl
c3VsdDsKK1Byb21pc2UucmVzb2x2ZSg0MikudGhlbihmdW5jdGlvbiAodjEpIHsKKyAgICB2YWx1
ZTEgPSB2MTsKKyAgICBzaG91bGRCZSgndmFsdWUxJywgJzQyJyk7CisgICAgc2hvdWxkQmVVbmRl
ZmluZWQoJ3ZhbHVlMicpOworICAgIHNob3VsZEJlVW5kZWZpbmVkKCdyZXN1bHQnKTsKKyAgICBy
ZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDg0KS50aGVuKGZ1bmN0aW9uICh2MikgeworICAgICAgICB2
YWx1ZTIgPSB2MjsKKyAgICAgICAgc2hvdWxkQmUoJ3ZhbHVlMicsICc4NCcpOworICAgICAgICBz
aG91bGRCZVVuZGVmaW5lZCgncmVzdWx0Jyk7CisgICAgICAgIHJldHVybiB2MiAqIHYxOworICAg
IH0pOworfSkudGhlbihmdW5jdGlvbiAocikgeworICAgIHJlc3VsdCA9IHI7CisgICAgc2hvdWxk
QmUoJ3Jlc3VsdCcsICczNTI4Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKworZGVidWco
J1RoZSBwcm9taXNlIGlzIG5vdCBmdWxmaWxsZWQgdW50aWwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBj
YWxsIGV4ZWN1dGVzLicpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L3Byb21pc2UtcmVzb2x2ZS1ub24tZG9tLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L3Byb21pc2UtcmVzb2x2ZS1ub24tZG9tLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0YTgwNmQ2NWI0MTA4OWJh
OTQyZmRmMGNjYTEzNWRkNWNhZmM3ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvcHJvbWlzZS1yZXNvbHZlLW5vbi1kb20uanMKQEAgLTAsMCArMSwyNSBA
QAorZGVzY3JpcHRpb24oJ1Rlc3QgUHJvbWlzZS5yZXNvbHZlIGluIG5vbiBkb20gZGlyZWN0b3J5
LicpOworCit2YXIgZ2xvYmFsT2JqZWN0ID0gdGhpczsKK2dsb2JhbE9iamVjdC5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKK3ZhciB2YWx1ZSA9IHsKKyAgdGhlbjogZnVuY3Rpb24oZnVsZmlsbENhbGxi
YWNrLCByZWplY3RDYWxsYmFjaykgeworICAgIHRlc3RQYXNzZWQoJ3ZhbHVlLnRoZW4gaXMgY2Fs
bGVkLicpOworICAgIGdsb2JhbE9iamVjdC50aGlzVmFsdWUgPSB0aGlzOworICAgIHNob3VsZEJl
KCd0aGlzVmFsdWUnLCAndmFsdWUnKTsKKyAgICBmdWxmaWxsQ2FsbGJhY2soJ2hlbGxvJyk7Cisg
IH0KK307Cit2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHsgcmVz
b2x2ZSh2YWx1ZSk7IH0pOworCitwcm9taXNlLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7CisgIHRl
c3RQYXNzZWQoJ2Z1bGZpbGxlZCcpOworICBnbG9iYWxPYmplY3QucmVzdWx0ID0gcmVzdWx0Owor
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Jlc3VsdCcsICdoZWxsbycpOworICBmaW5pc2hKU1Rl
c3QoKTsKK30sIGZ1bmN0aW9uKCkgeworICB0ZXN0RmFpbGVkKCdyZWplY3RlZCcpOworICBmaW5p
c2hKU1Rlc3QoKTsKK30pOworCitkZWJ1ZygnVGhlIHByb21pc2UgaXMgbm90IGZ1bGZpbGxlZCB1
bnRpbCBhZnRlciB0aGlzIGZ1bmN0aW9uIGNhbGwgZXhlY3V0ZXMuJyk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzIGIvTGF5b3V0VGVzdHMvcmVz
b3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5qcwppbmRleCA3MWUyMjM1NzgzYzA2ZWM3ZTQwM2YxYWRj
MDJhZWQ1MWE2MDlmYTg0Li45M2M3NzlhN2YwMzFmYjRiZmQyNzc1ZDBmODZiNzE2MWZlMzJiYWRh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvc3RhbmRhbG9uZS1wb3N0LmpzCisr
KyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9zdGFuZGFsb25lLXBvc3QuanMKQEAgLTEsMyArMSw3
IEBACiB3YXNQb3N0VGVzdFNjcmlwdFBhcnNlZCA9IHRydWU7CiAKLWZpbmlzaEpTVGVzdCgpOwor
aWYgKHRoaXMuanNUZXN0SXNBc3luYykgeworICAgIGlmICh0aGlzLndhc0ZpbmlzaEpTVGVzdENh
bGxlZCkKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9IGVsc2UKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsK
</data>
<flag name="review"
          id="282013"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>