<?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>76746</bug_id>
          
          <creation_ts>2012-01-20 15:08:03 -0800</creation_ts>
          <short_desc>[Chromium] IndexedDB: Assertion failure when storing File objects</short_desc>
          <delta_ts>2015-10-12 22:55:50 -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>New Bugs</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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>dgrogan</cc>
    
    <cc>ericu</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>michaeln</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xinchao.peng</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>539823</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-20 15:08:03 -0800</bug_when>
    <thetext>IndexedDB: Crash when storing File objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539826</commentid>
    <comment_count>1</comment_count>
      <attachid>123387</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-20 15:12:45 -0800</bug_when>
    <thetext>Created attachment 123387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539829</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-01-20 15:15:41 -0800</bug_when>
    <thetext>I don&apos;t have an end-to-end fix/test for http://crbug.com/108012, so won&apos;t land this yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548932</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-03 12:14:38 -0800</bug_when>
    <thetext>We may want to have SerializedScriptValue support three options:

* Serialize reference if Blob/File/FileList encountered (current behavior, desired for uses other than IDB)
* DataCloneError if Blob/File/FileList encountered
* Serialize data if Blob/File/FileList encountered (ultimately desired behavior for IDB)

This would be selected by an attribute in the IDL which would cause the binding code generator to pass in an enum value.

There is already support for serializing ArrayBuffers; need to look into that further as it could likely be er-used (e.g. via FileReaderLoader::ReadAsArrayBuffer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549039</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-03 13:50:30 -0800</bug_when>
    <thetext>See also: https://bugs.webkit.org/show_bug.cgi?id=40835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570002</commentid>
    <comment_count>5</comment_count>
      <attachid>129969</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-02 15:44:11 -0800</bug_when>
    <thetext>Created attachment 129969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570003</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-02 15:46:06 -0800</bug_when>
    <thetext>No tests, so I&apos;m still not planning to land this. This would only repro in the Chromium port that uses a WebKit utility process, so can&apos;t be tested in DRT. And there are only issues preventing an end-to-end test from succeeding in Chromium. 

Input appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575172</commentid>
    <comment_count>7</comment_count>
      <attachid>131092</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-09 13:46:02 -0800</bug_when>
    <thetext>Created attachment 131092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575183</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-09 13:51:04 -0800</bug_when>
    <thetext>This patch is insufficient for landing (it only implements SSV API changes in V8, not JSC), but I wanted to get early feedback.

This includes:
* SerializedScriptValue exposes blobURLs() accessor
* IndexedDB methods that take SSVs throw DATA_CLONE_ERROR if blobURL list is not empty
* A preemptive fix (from earlier patches) that corrects the assumption that non-Window contexts must be Worker contexts. (In the Chromium port they might be utility process contexts instead.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575186</commentid>
    <comment_count>9</comment_count>
      <attachid>131099</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-09 13:53:44 -0800</bug_when>
    <thetext>Created attachment 131099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575190</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-09 13:54:14 -0800</bug_when>
    <thetext>New patch just updates ChangeLogs with more comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575255</commentid>
    <comment_count>11</comment_count>
      <attachid>131099</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-09 14:44:21 -0800</bug_when>
    <thetext>Comment on attachment 131099
Patch

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

LGTM IDB-wise

&gt; LayoutTests/storage/indexeddb/noblobs.html:103
&gt; +        if (cursor) {

Will this ever not be true?  Either way remove the {}.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575275</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-09 15:03:49 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; LayoutTests/storage/indexeddb/noblobs.html:103
&gt; &gt; +        if (cursor) {
&gt; 
&gt; Will this ever not be true?  Either way remove the {}.

Good point. No, it will never not be true(!). Simplified.

New patch - I edited the description and forgot to regenerate the expected file anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575276</commentid>
    <comment_count>13</comment_count>
      <attachid>131120</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-09 15:04:08 -0800</bug_when>
    <thetext>Created attachment 131120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576268</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-12 10:48:50 -0700</bug_when>
    <thetext>haraken@ - can you take a look? Any feedback on the SSV API change would be very appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577237</commentid>
    <comment_count>15</comment_count>
      <attachid>131120</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-13 04:59:37 -0700</bug_when>
    <thetext>Comment on attachment 131120
Patch

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

The changes around SerializedScriptValue look good!

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:31
&gt; +#include &quot;ExceptionCode.h&quot;

Nit: not necessary (ExceptionCode is just a typedef and should be already defined in IDBCursor.h)

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:32
&gt; +#include &quot;ExceptionCode.h&quot;

Nit: not necessary

&gt; Source/WebCore/bindings/v8/V8DOMWrapper.cpp:239
&gt; +            else if (isWrapperOfType(globalPrototype, &amp;V8WorkerContext::info))

What is this change for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577361</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-13 08:48:22 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8DOMWrapper.cpp:239
&gt; &gt; +            else if (isWrapperOfType(globalPrototype, &amp;V8WorkerContext::info))
&gt; 
&gt; What is this change for?

Ah, context was lost. That&apos;s source of the actual crash the bug title references. I added a note to the ChangeList in the latest patch:

WebCore::V8DOMWrapper::instantiateV8Object):  Ensure context is a worker context before treating it as such

The instantiateV8Object code looks like it started off handling two cases: (1) &quot;window&quot; context or (2) no context (i.e. chromium utility process). At some point logic was added to support worker contexts, but that code just assumed &quot;if !window then worker&quot;, and thus failed for the chromium utility process.

If you attempt to deserialize a Blob without this patch at all, it hits the above case and crashes if the utility process is involved (e.g. IDB key path calculation). With just the instantiateV8Object change it doesn&apos;t crash but (in the the chromium port, at least) the blob&apos;s data has likely been released so chromium DCHECKs later in the deserialization process.

Having IDB reject SSVs with blobs would prevent any of the above from occurring, but that&apos;s temporary until we do correctly serialize the blob data. I could remove the instantiateV8Object change, but the code right now is definitely incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577551</commentid>
    <comment_count>17</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-13 11:01:12 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Ah, context was lost. That&apos;s source of the actual crash the bug title references. I added a note to the ChangeList in the latest patch:

Thank you very much for the clarification. r+ for the SSV related code. I am not familiar with IDB and thus would like to delegate the review to another guy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577677</commentid>
    <comment_count>18</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-13 12:36:45 -0700</bug_when>
    <thetext>LGTM for IDB-stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577678</commentid>
    <comment_count>19</comment_count>
      <attachid>131120</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-13 12:38:23 -0700</bug_when>
    <thetext>Comment on attachment 131120
Patch

Thanks for the preliminary looks. Marking r- for now until I update with the JSC version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578989</commentid>
    <comment_count>20</comment_count>
      <attachid>131964</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-14 17:48:20 -0700</bug_when>
    <thetext>Created attachment 131964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578993</commentid>
    <comment_count>21</comment_count>
      <attachid>131964</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-14 17:55:36 -0700</bug_when>
    <thetext>Comment on attachment 131964
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:-1660
&gt; -SerializedScriptValue::SerializedScriptValue(Vector&lt;uint8_t&gt;&amp; buffer)

Maybe you can keep SerializedScriptValue(Vector&lt;uint8_t&gt;&amp; buffer), which initializes m_blobURLs to an empty string vector.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1733
&gt; -    return adoptRef(new SerializedScriptValue(buffer));
&gt; +    Vector&lt;String&gt; blobURLs;
&gt; +    return adoptRef(new SerializedScriptValue(buffer, blobURLs));

If you keep SerializedScriptValue(Vector&lt;uint8_t&gt;&amp; buffer), this change won&apos;t be necessary.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1742
&gt; +    Vector&lt;String&gt; blobURLs;
&gt;      if (!CloneSerializer::serialize(string, buffer))
&gt;          return 0;
&gt; -    return adoptRef(new SerializedScriptValue(buffer));
&gt; +    return adoptRef(new SerializedScriptValue(buffer, blobURLs));

Ditto.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1855
&gt; +    Vector&lt;String&gt; blobURLs;
&gt;      CloneSerializer::serializeUndefined(buffer);
&gt; -    return adoptRef(new SerializedScriptValue(buffer));
&gt; +    return adoptRef(new SerializedScriptValue(buffer, blobURLs));

Ditto.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:1863
&gt; +    Vector&lt;String&gt; blobURLs;
&gt;      CloneSerializer::serializeBoolean(value, buffer);
&gt; -    return adoptRef(new SerializedScriptValue(buffer));
&gt; +    return adoptRef(new SerializedScriptValue(buffer, blobURLs));

Ditto.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.h:77
&gt; -        return adoptRef(new SerializedScriptValue(buffer));
&gt; +        Vector&lt;String&gt; blobURLs;
&gt; +        return adoptRef(new SerializedScriptValue(buffer, blobURLs));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579027</commentid>
    <comment_count>22</comment_count>
      <attachid>131964</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-14 19:02:13 -0700</bug_when>
    <thetext>Comment on attachment 131964
Patch

Attachment 131964 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11953594</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579676</commentid>
    <comment_count>23</comment_count>
      <attachid>132110</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-15 13:26:44 -0700</bug_when>
    <thetext>Created attachment 132110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579678</commentid>
    <comment_count>24</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-15 13:28:55 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 131964 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131964&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:-1660
&gt; &gt; -SerializedScriptValue::SerializedScriptValue(Vector&lt;uint8_t&gt;&amp; buffer)
&gt; 
&gt; Maybe you can keep SerializedScriptValue(Vector&lt;uint8_t&gt;&amp; buffer), which initializes m_blobURLs to an empty string vector.

Agreed - Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579821</commentid>
    <comment_count>25</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-15 15:37:40 -0700</bug_when>
    <thetext>tony@, can you review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579863</commentid>
    <comment_count>26</comment_count>
      <attachid>132110</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-15 16:18:05 -0700</bug_when>
    <thetext>Comment on attachment 132110
Patch

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

&gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1000
&gt; +        uint32_t length = fileList-&gt;length();
&gt; +        for (unsigned i = 0; i &lt; length; ++i)

Nit: It looks like the return type is &apos;unsigned&apos; for FileList::length().

&gt; LayoutTests/storage/indexeddb/noblobs.html:9
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

Nit: I think js-test-pre.js will auto create the console div for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580665</commentid>
    <comment_count>27</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-16 10:43:54 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 132110 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132110&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/SerializedScriptValue.cpp:1000
&gt; &gt; +        uint32_t length = fileList-&gt;length();
&gt; &gt; +        for (unsigned i = 0; i &lt; length; ++i)
&gt; 
&gt; Nit: It looks like the return type is &apos;unsigned&apos; for FileList::length().

Thanks, will fix.

&gt; &gt; LayoutTests/storage/indexeddb/noblobs.html:9
&gt; &gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; 
&gt; Nit: I think js-test-pre.js will auto create the console div for you.

All of the storage/indexeddb/*.html tests have this. I&apos;ll file another bug to clean this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580718</commentid>
    <comment_count>28</comment_count>
      <attachid>132328</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-03-16 11:28:02 -0700</bug_when>
    <thetext>Created attachment 132328
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580797</commentid>
    <comment_count>29</comment_count>
      <attachid>132328</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 12:26:16 -0700</bug_when>
    <thetext>Comment on attachment 132328
Patch for landing

Clearing flags on attachment: 132328

Committed r111044: &lt;http://trac.webkit.org/changeset/111044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580798</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 12:26:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132700</commentid>
    <comment_count>31</comment_count>
    <who name="Peng Xinchao">xinchao.peng</who>
    <bug_when>2015-10-12 22:54:51 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; IndexedDB: Crash when storing File objects

 I want to enalbe BLOB/File of the IndexDB, Could you support the testcase of storing File objects ?
i have tested some case , i need more testcase to check my patch .
Thank you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132701</commentid>
    <comment_count>32</comment_count>
    <who name="Peng Xinchao">xinchao.peng</who>
    <bug_when>2015-10-12 22:55:50 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #0)
&gt; &gt; IndexedDB: Crash when storing File objects
&gt; Dear Mr.Bell
&gt;  I want to enalbe BLOB/File of the IndexDB, Could you support the testcase
&gt; of storing File objects ?
&gt; i have tested some case , i need more testcase to check my patch .
&gt; Thank you</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123387</attachid>
            <date>2012-01-20 15:12:45 -0800</date>
            <delta_ts>2012-03-02 15:44:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76746-20120120151244.patch</filename>
            <type>text/plain</type>
            <size>4448</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI2NTA2NTdjZjc4Zjcy
ZjJjNWZiNmNjOWY4OWEyMTc3NjhiYTFlNy4uMmQ0NDhmNjc1NTQ4ZjU1OTdkMWE5NGU5YTA2OWYz
MjEyNzU2MGQ3NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAxLTIwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDcmFz
aCB3aGVuIHN0b3JpbmcgRmlsZSBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njc0NgorCisgICAgICAgIFRoZSBWOERPTVdyYXBwZXIgd2Fz
IGFzc3VtaW5nIHRoYXQgaWYgdGhlIGNvbnRleHQgd2FzIG5vdCBhIGRvY3VtZW50IHRoYXQgaXQK
KyAgICAgICAgbXVzdCBiZSBhIHdvcmtlci4gVGhpcyBpcyB1bnRydWUgZm9yIHRoZSBDaHJvbWl1
bSBwb3J0J3MgdXRpbGl0eSBwcm9jZXNzLCBzbworICAgICAgICBuZWVkIHRvIHRlc3QgZXhwbGlj
aXRseSBmb3IgYSB3b3JrZXIgY29udGV4dC4gRmlyc3QgcGFydCBvZiB0aGUgZml4IGZvcjoKKyAg
ICAgICAgaHR0cDovL2NyYnVnLmNvbS8xMDgwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOE9iamVjdE1hcDo6UmVhZGVyOjpyZWFkQmxvYik6ICJMb2NhbCB2YXJpYWJsZXMgc2hvdWxk
IG5ldmVyIGJlIFBhc3NSZWZQdHIuIgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlJl
YWRlcjo6cmVhZEZpbGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpS
ZWFkZXI6OnJlYWRGaWxlTGlzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KTogVW5uZWNlc3NhcnkgZ2V0
KCkgY2FsbC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KTogVGVzdCBleHBs
aWNpdGx5IGZvciB3b3JrZXIgY29udGV4dC4KKwogMjAxMi0wMS0xOSAgQW5kcmVhcyBLbGluZyAg
PGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBkZWJ1ZyBidWls
ZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAppbmRleCA2OGMzMzE2YmNmNDkwYjE1ZGE5NDY4NmEyNzI2YzQ4Y2VlYzMy
NDUxLi4yOTY1NzM4NDljNWE4NGU4MTQ5NjRiY2Q0N2ViMTQyMWU0YjU2ODNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
QEAgLTE3MDUsOCArMTcwNSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIGlmICghZG9SZWFkVWludDY0KCZzaXplKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgUGFzc1JlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCB1cmwpLCB0eXBlLCBzaXplKTsKLSAgICAgICAgKnZhbHVlID0gdG9W
OChibG9iKTsKKyAgICAgICAgUmVmUHRyPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVhdGUoS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCksIHR5cGUsIHNpemUpOworICAgICAgICAqdmFsdWUgPSB0b1Y4
KGJsb2IucmVsZWFzZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xNzIx
LDggKzE3MjEsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBpZiAoIXJlYWRXZWJDb3JlU3RyaW5nKCZ0eXBlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgUGFzc1JlZlB0cjxGaWxlPiBmaWxlID0gRmlsZTo6Y3JlYXRlKHBhdGgsIEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCB0eXBlKTsKLSAgICAgICAgKnZhbHVlID0gdG9WOChm
aWxlKTsKKyAgICAgICAgUmVmUHRyPEZpbGU+IGZpbGUgPSBGaWxlOjpjcmVhdGUocGF0aCwgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIHR5cGUpOworICAgICAgICAqdmFsdWUgPSB0b1Y4KGZp
bGUucmVsZWFzZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xNzMxLDcg
KzE3MzEsNyBAQCBwcml2YXRlOgogICAgICAgICB1aW50MzJfdCBsZW5ndGg7CiAgICAgICAgIGlm
ICghZG9SZWFkVWludDMyKCZsZW5ndGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBQYXNzUmVmUHRyPEZpbGVMaXN0PiBmaWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsK
KyAgICAgICAgUmVmUHRyPEZpbGVMaXN0PiBmaWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgcGF0aDsKICAgICAgICAgICAgIFN0cmluZyB1cmxTdHJpbmc7CkBAIC0xNzQ0
LDcgKzE3NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGgsIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmxTdHJpbmcpLCB0eXBlKSk7CiAgICAgICAgIH0KLSAgICAgICAgKnZhbHVl
ID0gdG9WOChmaWxlTGlzdCk7CisgICAgICAgICp2YWx1ZSA9IHRvVjgoZmlsZUxpc3QucmVsZWFz
ZSgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMDU3LDcgKzIwNTcsNyBA
QCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemVBbmRTZXRQcm9wZXJ0eSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iagogdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRl
c2VyaWFsaXplQW5kU2V0UHJvcGVydHkodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSkKIHsKLSAgICBkZXNlcmlhbGl6
ZUFuZFNldFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGUsIHZhbHVlLmdl
dCgpKTsKKyAgICBkZXNlcmlhbGl6ZUFuZFNldFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGUsIHZhbHVlKTsKIH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4
IDBiNzU3Y2EwOGQ3NjBmOTM1NmY4NDllYzcwZjgxZDllMGE4OTcxZWMuLjdiYzVkZjI5YmYzMzVj
OGNiOTZiN2VlZjhhMDA2MzdkYWE3ZWMwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoVjhQcm94eSogcHJveHksIFdy
YXBwZXJUCiAgICAgICAgICAgICAgICAgICAgIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoZnJh
bWUpOwogICAgICAgICAgICAgfQogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgZWxzZSBpZiAoaXNXcmFwcGVyT2ZUeXBlKGdsb2JhbFByb3RvdHlwZSwg
JlY4V29ya2VyQ29udGV4dDo6aW5mbykpCiAgICAgICAgICAgICAgICAgd29ya2VyQ29udGV4dCA9
IFY4V29ya2VyQ29udGV4dDo6dG9OYXRpdmUobG9va3VwRE9NV3JhcHBlcihWOFdvcmtlckNvbnRl
eHQ6OkdldFRlbXBsYXRlKCksIGNvbnRleHQtPkdsb2JhbCgpKSk7CiAjZW5kaWYKICAgICAgICAg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129969</attachid>
            <date>2012-03-02 15:44:11 -0800</date>
            <delta_ts>2012-03-09 13:46:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76746-20120302154410.patch</filename>
            <type>text/plain</type>
            <size>1734</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTkxOTRmOGVmYjgyNWNi
NjVkMDE0NDhjNTk3Yjk2YTAxY2E2NTFkYS4uMzBiODNiODBjMTg1Mzc1MjYxYjRiM2QyZmU3YzE1
YTlhNDBjNmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTIwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDcmFz
aCB3aGVuIHN0b3JpbmcgRmlsZSBvYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03Njc0NgorCisgICAgICAgIFRoZSBWOERPTVdyYXBwZXIgd2Fz
IGFzc3VtaW5nIHRoYXQgaWYgdGhlIGNvbnRleHQgd2FzIG5vdCBhIGRvY3VtZW50IHRoYXQgaXQK
KyAgICAgICAgbXVzdCBiZSBhIHdvcmtlci4gVGhpcyBpcyB1bnRydWUgZm9yIHRoZSBDaHJvbWl1
bSBwb3J0J3MgdXRpbGl0eSBwcm9jZXNzLCBzbworICAgICAgICBuZWVkIHRvIHRlc3QgZXhwbGlj
aXRseSBmb3IgYSB3b3JrZXIgY29udGV4dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBw
ZXI6Omluc3RhbnRpYXRlVjhPYmplY3QpOiBUZXN0IGV4cGxpY2l0bHkgZm9yIHdvcmtlciBjb250
ZXh0LgorCiAyMDEyLTAzLTAyICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBUUkFDRV9FVkVOVCBmcm9tIENDUXVh
ZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcAppbmRleCA0Y2YzYzlhNDZjYTZlMDNjM2E4OTJkNWNmNjZkZGQwMDQy
NmRiNjNlLi4zNzU3MWViYjc4MTFkNzg3YjQ1YmI0ZmQwZjcyNWYxYjRmMjk0MDVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTIzNiw3ICsyMzYs
NyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2Jq
ZWN0KFY4UHJveHkqIHByb3h5LCBXcmFwcGVyVAogICAgICAgICAgICAgICAgICAgICBwcm94eSA9
IFY4UHJveHk6OnJldHJpZXZlKGZyYW1lKTsKICAgICAgICAgICAgIH0KICNpZiBFTkFCTEUoV09S
S0VSUykKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzV3JhcHBlck9m
VHlwZShnbG9iYWxQcm90b3R5cGUsICZWOFdvcmtlckNvbnRleHQ6OmluZm8pKQogICAgICAgICAg
ICAgICAgIHdvcmtlckNvbnRleHQgPSBWOFdvcmtlckNvbnRleHQ6OnRvTmF0aXZlKGxvb2t1cERP
TVdyYXBwZXIoVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0ZSgpLCBjb250ZXh0LT5HbG9iYWwo
KSkpOwogI2VuZGlmCiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131092</attachid>
            <date>2012-03-09 13:46:02 -0800</date>
            <delta_ts>2012-03-09 13:53:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76746-20120309134601.patch</filename>
            <type>text/plain</type>
            <size>18107</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTkyZTc2Y2VjNzQ1MDU5
ZmIwNGRkNTk3ZDVjNDE1ZDg2MzcyMDc5Mi4uNDgxZDkzOTdhNWZlNDA1ODEwMTJmYmU3ZDUwZmNj
NWNhOTVmMTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTA5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEFzc2VydGlvbiBmYWlsdXJlIHdoZW4gc3RvcmluZyBGaWxlIG9iamVjdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzQ2CisKKyAgICAg
ICAgVGhlIGJsb2IgZGF0YSBpbiBCbG9iL0ZpbGUvRmlsZUxpc3Qgb2JqZWN0cyBpcyBzZXJpYWxp
emVkICJieSByZWZlcmVuY2UiICh0aGUgCisgICAgICAgIGludGVybmFsIFVSTCkgcmF0aGVyIHRo
YW4gImJ5IHZhbHVlIiAodGhlIGFjdHVhbCBkYXRhKTsgdGhpcyBpcyBzdWZmaWNpZW50IGZvcgor
ICAgICAgICBwb3N0TWVzc2FnZSgpIGJ1dCBub3QgZm9yIEluZGV4ZWREQiBzaW5jZSB0aGUgcmVm
ZXJlbmNlZCBkYXRhIGlzIG5vdCByZXRhaW5lZC4KKyAgICAgICAgRXhwb3NlIGEgbWVjaGFuaXNt
IHRvIGVudW1lcmF0ZSB0aGUgVVJMcyBzbyB0aGF0IFNTVnMgY2FuIGJlIHJlamVjdGVkIGJ5IElE
QiAKKyAgICAgICAgdW50aWwgYmxvYiBkYXRhIHNlcmlhbGl6YXRpb24gY2FuIGlzIGltcGxlbWVu
dGVkIChvdXRzaWRlIHRoZSBTU1YgbWVjaGFuaXNtLCBhbmQKKyAgICAgICAgcG90ZW50aWFsbHkg
YXN5bmNocm9ub3VzbHkpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMuaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YWRkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmJsb2JVUkxzKToKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdCk6CisKIDIwMTItMDMtMDggIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMDUz
OTYpOiBEcmFnZ2luZyBhbiBpV29yayBkb2N1bWVudCBpbnRvIGljbG91ZC5jb20gb3BlbnMgaXQg
aW4gdGhlIE1hYyBhcHAgaW5zdGVhZCBvZiB1cGxvYWRpbmcgaXQgdG8gaWNsb3VkLmNvbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggZTdh
MDFlY2I3OWE4YTg4Y2I1MmQ0OTc5ZTU0MTk3YmMxOTYzNGVlOS4uYWVkMjYyNzI0MWUyZDUwYTll
MTIyMjNiM2RmMTE0MTQyNzJlYzU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJ
REJBbnkuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmgiCkBAIC05MSw5ICs5MiwxNyBAQCBJREJBbnkqIElEQkN1cnNvcjo6
c291cmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7CiB9CiAKLVBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRp
b25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHBycFZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklE
QkN1cnNvcjo6dXBkYXRlIik7CisKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
YWx1ZSA9IHBycFZhbHVlOworICAgIGlmICh2YWx1ZS0+YmxvYlVSTHMoKS5zaXplKCkgPiAwKSB7
CisgICAgICAgIC8vIEZJWE1FOiBBZGQgQmxvYi9GaWxlL0ZpbGVMaXN0IHN1cHBvcnQKKyAgICAg
ICAgZWMgPSBEQVRBX0NMT05FX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2Vu
ZC0+dXBkYXRlKHZhbHVlLCByZXF1ZXN0LCBlYyk7CiAgICAgaWYgKGVjKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXgg
NWMzNDY2NmQzZmI1MWNkYjBjNWM4ZmY0YTNmY2M1MDQ1NDZmNDM0ZC4uZDI3ZjI5ODNhMmJkYTMy
MGJmZWY5YTZlZTZmN2Q2YmFmMzFkYmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRl
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCkBAIC05NSw3
ICs5Niw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgcmV0dXJuIHJlcXVlc3QucmVs
ZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBl
YykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
cHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwogICAgIGlmIChrZXkgJiYgKGtl
eS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CkBAIC0xMDMsNiArMTA0LDEzIEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CisgICAgaWYg
KHZhbHVlLT5ibG9iVVJMcygpLnNpemUoKSA+IDApIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBC
bG9iL0ZpbGUvRmlsZUxpc3Qgc3VwcG9ydAorICAgICAgICBlYyA9IERBVEFfQ0xPTkVfRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVz
dCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90
cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5wdXQodmFsdWUsIGtleSwgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpBZGRPbmx5LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9u
LT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTExMiw3ICsxMjAsNyBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzcwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1
ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0Uo
IklEQk9iamVjdFN0b3JlOjpwdXQiKTsKICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJ
REJLZXk6OkludmFsaWRUeXBlKSkgewpAQCAtMTIwLDYgKzEyOCwxMyBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzcwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOworICAgIGlmICh2YWx1ZS0+YmxvYlVS
THMoKS5zaXplKCkgPiAwKSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgQmxvYi9GaWxlL0ZpbGVM
aXN0IHN1cHBvcnQKKyAgICAgICAgZWMgPSBEQVRBX0NMT05FX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0
OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0
KCkpOwogICAgIG1fYmFja2VuZC0+cHV0KHZhbHVlLCBrZXksIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZTo6QWRkT3JVcGRhdGUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOwogICAgIGlmIChlYykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYzY3MzhjZGM0NTU5MTQ2NDhmZmQw
YTc1ZTAyYWIwOGU3NGIwZjFiYy4uOTNhNDg4NzcwNDI5YmIzODQ3NmFjNWYzMzM0ZDg4MTNhMGFh
NDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCkBAIC02MDYsMTMgKzYwNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIEpT
RmFpbHVyZQogICAgIH07CiAKLSAgICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVyLCBNZXNzYWdl
UG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywg
djg6OlRyeUNhdGNoJiB0cnlDYXRjaCkKKyAgICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVyLCBN
ZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVm
ZmVycywgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCB2ODo6VHJ5Q2F0Y2gmIHRyeUNhdGNoKQog
ICAgICAgICA6IG1fd3JpdGVyKHdyaXRlcikKICAgICAgICAgLCBtX3RyeUNhdGNoKHRyeUNhdGNo
KQogICAgICAgICAsIG1fZGVwdGgoMCkKICAgICAgICAgLCBtX2V4ZWNEZXB0aCgwKQogICAgICAg
ICAsIG1fc3RhdHVzKFN1Y2Nlc3MpCiAgICAgICAgICwgbV9uZXh0T2JqZWN0UmVmZXJlbmNlKDAp
CisgICAgICAgICwgbV9ibG9iVVJMcyhibG9iVVJMcykKICAgICB7CiAgICAgICAgIEFTU0VSVCgh
dHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpOwogICAgICAgICBpZiAobWVzc2FnZVBvcnRzKSB7CkBAIC05
NzcsNiArOTc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFibG9iKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBtX3dyaXRlci53cml0ZUJsb2IoYmxvYi0+dXJsKCkuc3RyaW5nKCks
IGJsb2ItPnR5cGUoKSwgYmxvYi0+c2l6ZSgpKTsKKyAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQo
YmxvYi0+dXJsKCkuc3RyaW5nKCkpOwogICAgIH0KIAogICAgIHZvaWQgd3JpdGVGaWxlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTk4NSw2ICs5ODcsNyBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAoIWZpbGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fd3JpdGVyLndy
aXRlRmlsZShmaWxlLT5wYXRoKCksIGZpbGUtPnVybCgpLnN0cmluZygpLCBmaWxlLT50eXBlKCkp
OworICAgICAgICBtX2Jsb2JVUkxzLmFwcGVuZChmaWxlLT51cmwoKS5zdHJpbmcoKSk7CiAgICAg
fQogCiAgICAgdm9pZCB3cml0ZUZpbGVMaXN0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkK
QEAgLTk5Myw2ICs5OTYsOSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWZpbGVMaXN0KQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3dyaXRlci53cml0ZUZpbGVMaXN0KCpmaWxlTGlz
dCk7CisgICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IGZpbGVMaXN0LT5sZW5ndGgoKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbV9i
bG9iVVJMcy5hcHBlbmQoZmlsZUxpc3QtPml0ZW0oaSktPnVybCgpLnN0cmluZygpKTsKICAgICB9
CiAKICAgICB2b2lkIHdyaXRlSW1hZ2VEYXRhKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkK
QEAgLTExMTEsNiArMTExNyw3IEBAIHByaXZhdGU6CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVy
cmVkTWVzc2FnZVBvcnRzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVy
czsKICAgICB1aW50MzJfdCBtX25leHRPYmplY3RSZWZlcmVuY2U7CisgICAgVmVjdG9yPFN0cmlu
Zz4mIG1fYmxvYlVSTHM7CiB9OwogCiBTZXJpYWxpemVyOjpTdGF0ZUJhc2UqIFNlcmlhbGl6ZXI6
OmRvU2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU3RhdGVCYXNlKiBuZXh0
KQpAQCAtMjIwNCw3ICsyMjExLDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLAogICAgIFNlcmlhbGl6ZXI6
OlN0YXR1cyBzdGF0dXM7CiAgICAgewogICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0g
ICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIsIG1lc3NhZ2VQb3J0cywgYXJyYXlC
dWZmZXJzLCB0cnlDYXRjaCk7CisgICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIs
IG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBtX2Jsb2JVUkxzLCB0cnlDYXRjaCk7CiAgICAg
ICAgIHN0YXR1cyA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKICAgICAgICAgaWYgKHN0
YXR1cyA9PSBTZXJpYWxpemVyOjpKU0V4Y2VwdGlvbikgewogICAgICAgICAgICAgLy8gSWYgdGhl
cmUgd2FzIGEgSlMgZXhjZXB0aW9uIHRocm93biwgcmUtdGhyb3cgaXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDY4YjE5
NTRkNWY1MTExZTE4NThlMjI5MDhiZjE5MTQyYjgyNzYzOTQuLjdmNmI5ZTAzZmEzZjI1NmMxMmZm
NmM2YmFiZTNlZjRmM2Q3MzlhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKICAg
ICBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihTY3JpcHRTdGF0ZSopOwogI2Vu
ZGlmCiAKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMoKSBjb25zdCB7IHJldHVy
biBtX2Jsb2JVUkxzOyB9CisKIHByaXZhdGU6CiAgICAgZW51bSBTdHJpbmdEYXRhTW9kZSB7CiAg
ICAgICAgIFN0cmluZ1ZhbHVlLApAQCAtOTUsNiArOTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3Ry
aW5nIG1fZGF0YTsKICAgICBPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX2FycmF5
QnVmZmVyQ29udGVudHNBcnJheTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHAKaW5kZXggNGNmM2M5YTQ2Y2E2ZTAzYzNhODkyZDVjZjY2ZGRkMDA0MjZk
YjYzZS4uMzc1NzFlYmI3ODExZDc4N2I0NWJiNGZkMGY3MjVmMWI0ZjI5NDA1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0yMzYsNyArMjM2LDcg
QEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVj
dChWOFByb3h5KiBwcm94eSwgV3JhcHBlclQKICAgICAgICAgICAgICAgICAgICAgcHJveHkgPSBW
OFByb3h5OjpyZXRyaWV2ZShmcmFtZSk7CiAgICAgICAgICAgICB9CiAjaWYgRU5BQkxFKFdPUktF
UlMpCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChpc1dyYXBwZXJPZlR5
cGUoZ2xvYmFsUHJvdG90eXBlLCAmVjhXb3JrZXJDb250ZXh0OjppbmZvKSkKICAgICAgICAgICAg
ICAgICB3b3JrZXJDb250ZXh0ID0gVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZShsb29rdXBET01X
cmFwcGVyKFY4V29ya2VyQ29udGV4dDo6R2V0VGVtcGxhdGUoKSwgY29udGV4dC0+R2xvYmFsKCkp
KTsKICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTFhN2FiNjdjMWNmYmFkZDM2ZjRhYTk1Y2Uy
OGM0YmY4OWMxMDA3YS4uYjRlYzYzZDcyMGE1OTFmNGZkNGFhYzhhYWQzYTNkYjA2NTY4N2VjMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTA5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRleGVkREI6IEFzc2VydGlvbiBm
YWlsdXJlIHdoZW4gc3RvcmluZyBGaWxlIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzQ2CisKKyAgICAgICAgRW5zdXJlIHRoYXQgQmxv
Yi9GaWxlL0ZpbGVMaXN0IHR5cGVzIGFyZSByZWplY3RlZCBpbiBJREIgdmFsdWVzLCB0byBkZXRl
Y3QgcmVncmVzc2lvbnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wMy0wOCAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCB1cGRhdGUgY2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg4YTU1ZTZhMTEyOGI3NjEyMTM4ZmU0NTM0OGMzMDU2ZDg4ZWZjOGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDgzIEBACisKK0NvbmZpcm0gQmxvYi9GaWxlL0ZpbGVMaXN0IGxpbWl0YXRp
b25zIG9mIEluZGV4ZWREQiBpbXBsZW1lbnRhdGlvbi4gRmlsZS9GaWxlTGlzdCB0ZXN0cyByZXF1
aXJlIER1bXBSZW5kZXJUcmVlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5k
ZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCCitQQVNT
IGluZGV4ZWREQiAhPSBudWxsIGlzIHRydWUKK0lEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRy
YW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbgorUEFTUyBJREJUcmFuc2Fj
dGlvbiAhPSBudWxsIGlzIHRydWUKKworUHJlcGFyZSBEYXRhYmFzZQoraW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKCdub2Jsb2JzJykKK2luZGV4ZWREQi5vcGVuKCdub2Jsb2JzJykKK2RiID0gcmVx
dWVzdC5yZXN1bHQKK1BBU1MgZGIudmVyc2lvbiBpcyAiIgorZGIuc2V0VmVyc2lvbignMScpCitz
dG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorc3RvcmUucHV0KCd2YWx1
ZScsICdrZXknKQorCit0ZXN0QmxvYigpOgorQmxvYkJ1aWxkZXIgPSB3aW5kb3cuQmxvYkJ1aWxk
ZXIgfHwgd2luZG93LldlYktpdEJsb2JCdWlsZGVyCitQQVNTIEJsb2JCdWlsZGVyICE9IG51bGwg
aXMgdHJ1ZQorUEFTUyBGaWxlUmVhZGVyICE9IG51bGwgaXMgdHJ1ZQorYnVpbGRlciA9IG5ldyBC
bG9iQnVpbGRlcigpCit0ZXN0X2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgb25s
eSBhIHRlc3QuJworYnVpbGRlci5hcHBlbmQodGVzdF9jb250ZW50KQorYmxvYiA9IGJ1aWxkZXIu
Z2V0QmxvYigpCisKK3ZhbGlkYXRlRXhjZXB0aW9ucyhibG9iKToKK3RyYW5zYWN0aW9uID0gZGIu
dHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitzdG9y
ZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIHN0b3JlLnB1dChibG9iLCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCitFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKGJsb2IsICdrZXknKQorUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIKK3JlcXVl
c3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkKK2N1cnNvciA9IHJlcXVlc3QucmVzdWx0CitFeHBlY3Rp
bmcgZXhjZXB0aW9uIGZyb20gY3Vyc29yLnVwZGF0ZShibG9iKQorUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIKKwordGVz
dEZpbGUoKToKK2ZpbGUgPSBmaWxlSW5wdXQuZmlsZXNbMF0KKwordmFsaWRhdGVFeGNlcHRpb25z
KGZpbGUpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUucHV0KGZpbGUsICdrZXkn
KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24u
REFUQV9DTE9ORV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQoZmlsZSwg
J2tleScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2Vw
dGlvbi5EQVRBX0NMT05FX0VSUgorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29y
ID0gcmVxdWVzdC5yZXN1bHQKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IudXBkYXRl
KGZpbGUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2Vw
dGlvbi5EQVRBX0NMT05FX0VSUgorCit0ZXN0RmlsZUxpc3QoKToKK2ZpbGVsaXN0ID0gZmlsZUlu
cHV0LmZpbGVzCisKK3ZhbGlkYXRlRXhjZXB0aW9ucyhmaWxlbGlzdCk6Cit0cmFuc2FjdGlvbiA9
IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQor
c3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK0V4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBzdG9yZS5wdXQoZmlsZWxpc3QsICdrZXknKQorUEFTUyBFeGNlcHRpb24g
d2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQoZmlsZWxpc3QsICdrZXknKQorUEFTUyBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9O
RV9FUlIKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkKK2N1cnNvciA9IHJlcXVlc3QucmVz
dWx0CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gY3Vyc29yLnVwZGF0ZShmaWxlbGlzdCkKK1BB
U1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFf
Q0xPTkVfRVJSCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQzMGVhYWFmZjNkNzI4ZjFhOTMwZGVjMTQwZWJiZmI1MGNmMDkyNzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLmh0bWwKQEAgLTAs
MCArMSwxMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgdHlwZT0iZmls
ZSIgaWQ9ImZpbGVJbnB1dCIgbXVsdGlwbGU+PC9pbnB1dD4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigi
Q29uZmlybSBCbG9iL0ZpbGUvRmlsZUxpc3QgbGltaXRhdGlvbnMgb2YgV2ViS2l0J3MgSW5kZXhl
ZERCIGltcGxlbWVudGF0aW9uLiIpOworLy8gRklYTUU6IFRoaXMgdmVyaWZpZXMgdGhhdCBibG9i
LXR5cGUgZGF0YSBpcyByZWplY3RlZCBmb3Igbm93LCByYXRoZXIgdGhhbiBzaWxlbnRseSBmYWls
aW5nLgorLy8gVHJhY2tlZCBmb3IgdGhlIENocm9taXVtIHBvcnQgYXM6IGh0dHA6Ly9jcmJ1Zy5j
b20vMTA4MDEyCisKK2ZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlSW5w
dXQiKTsKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB2YXIgZmlsZVJlY3QgPSBmaWxl
SW5wdXQuZ2V0Q2xpZW50UmVjdHMoKVswXTsKKyAgICB2YXIgdGFyZ2V0WCA9IGZpbGVSZWN0Lmxl
ZnQgKyBmaWxlUmVjdC53aWR0aCAvIDI7CisgICAgdmFyIHRhcmdldFkgPSBmaWxlUmVjdC50b3Ag
KyBmaWxlUmVjdC5oZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLmJlZ2luRHJhZ1dpdGhGaWxl
cyhbJ3Jlc291cmNlcy90ZXN0LWRhdGEuaHRtbCcsICdyZXNvdXJjZXMvdGVzdC1kYXRhLnR4dCdd
KTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh0YXJnZXRYLCB0YXJnZXRZKTsKKyAgICBl
dmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGV2YWxB
bmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4
ZWREQiIpOworICAgIHNob3VsZEJlVHJ1ZSgiaW5kZXhlZERCICE9IG51bGwiKTsKKyAgICBldmFs
QW5kTG9nKCJJREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cu
d2Via2l0SURCVHJhbnNhY3Rpb24iKTsKKyAgICBzaG91bGRCZVRydWUoIklEQlRyYW5zYWN0aW9u
ICE9IG51bGwiKTsKKyAgICBwcmVwYXJlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gcHJlcGFy
ZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIlByZXBhcmUgRGF0YWJh
c2UiKTsKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KCdub2Jsb2JzJykiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgcmVx
dWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5vcGVuKCdub2Jsb2JzJykiKTsKKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgZXZhbEFuZExvZygiZGIg
PSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJk
Yi52ZXJzaW9uIiwgIiIpOworICAgICAgICAgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJzEnKSIpOworICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KGUpIHsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3Jl
LnB1dCgndmFsdWUnLCAna2V5JykiKTsKKyAgICAgICAgICAgICAgICB2YXIgdHJhbnMgPSByZXF1
ZXN0LnJlc3VsdDsKKyAgICAgICAgICAgICAgICB0cmFucy5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworICAgICAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSB0ZXN0Qmxv
YigpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiB0
ZXN0QmxvYigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0QmxvYigpOiIpOwor
CisgICAgZXZhbEFuZExvZygiQmxvYkJ1aWxkZXIgPSB3aW5kb3cuQmxvYkJ1aWxkZXIgfHwgd2lu
ZG93LldlYktpdEJsb2JCdWlsZGVyIik7CisgICAgc2hvdWxkQmVUcnVlKCJCbG9iQnVpbGRlciAh
PSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJGaWxlUmVhZGVyICE9IG51bGwiKTsKKyAgICBl
dmFsQW5kTG9nKCJidWlsZGVyID0gbmV3IEJsb2JCdWlsZGVyKCkiKTsKKyAgICBldmFsQW5kTG9n
KCJ0ZXN0X2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRlc3QuIFRoaXMgaXMgb25seSBhIHRlc3QuJyIp
OworICAgIGV2YWxBbmRMb2coImJ1aWxkZXIuYXBwZW5kKHRlc3RfY29udGVudCkiKTsKKyAgICBl
dmFsQW5kTG9nKCJibG9iID0gYnVpbGRlci5nZXRCbG9iKCkiKTsKKyAgICB2YWxpZGF0ZUV4Y2Vw
dGlvbnMoImJsb2IiLCB0ZXN0RmlsZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGaWxlKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RGaWxlKCk6Iik7CisgICAgZXZhbEFuZExvZygi
ZmlsZSA9IGZpbGVJbnB1dC5maWxlc1swXSIpOworICAgIHZhbGlkYXRlRXhjZXB0aW9ucygiZmls
ZSIsIHRlc3RGaWxlTGlzdCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGaWxlTGlzdCgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0RmlsZUxpc3QoKToiKTsKKyAgICBldmFsQW5kTG9n
KCJmaWxlbGlzdCA9IGZpbGVJbnB1dC5maWxlcyIpOworICAgIHZhbGlkYXRlRXhjZXB0aW9ucygi
ZmlsZWxpc3QiLCBmaW5pc2hKU1Rlc3QpOworfQorCitmdW5jdGlvbiB2YWxpZGF0ZUV4Y2VwdGlv
bnModmFyaWFibGUsIG9uQ29tcGxldGUpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ2
YWxpZGF0ZUV4Y2VwdGlvbnMoIiArIHZhcmlhYmxlICsgIik6Iik7CisgICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24u
UkVBRF9XUklURSkiKTsKKyAgICBldmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCdzdG9yZU5hbWUnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LnB1dCgiICsgdmFyaWFibGUgKyAiLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVf
RVJSIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuYWRkKCIgKyB2YXJpYWJs
ZSArICIsICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKKyAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpIik7CisgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV2YWxBbmRMb2coImN1cnNvciA9IHJlcXVl
c3QucmVzdWx0Iik7CisgICAgICAgIGlmIChjdXJzb3IpIHsKKyAgICAgICAgICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oImN1cnNvci51cGRhdGUoIiArIHZhcmlhYmxlICsgIikiLCAiRE9NRXhj
ZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7CisgICAgICAgIH0KKyAgICB9OworICAgIHRyYW5zYWN0
aW9uLm9uY29tcGxldGUgPSBvbkNvbXBsZXRlOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgdGVzdCgpOworfSBlbHNlIHsKKyAgICBhbGVydCgiU2VsZWN0IGZpbGUocykgdXNp
bmcgdGhlIGlucHV0IGNvbnRyb2wgYWJvdmUgdG8gaW5pdGlhdGUgdGhlIHRlc3QiKTsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZUlucHV0Iikub25jaGFuZ2UgPSB0ZXN0OworfQor
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131099</attachid>
            <date>2012-03-09 13:53:44 -0800</date>
            <delta_ts>2012-03-09 15:04:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76746-20120309135343.patch</filename>
            <type>text/plain</type>
            <size>18337</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTkyZTc2Y2VjNzQ1MDU5
ZmIwNGRkNTk3ZDVjNDE1ZDg2MzcyMDc5Mi4uZmYyOTU3Y2JiNjdiMDU0MzhhYzc2ZTMyZTcyZWM3
MjNkZTU4ZmUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTA5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEFzc2VydGlvbiBmYWlsdXJlIHdoZW4gc3RvcmluZyBGaWxlIG9iamVjdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzQ2CisKKyAgICAg
ICAgVGhlIGJsb2IgZGF0YSBpbiBCbG9iL0ZpbGUvRmlsZUxpc3Qgb2JqZWN0cyBpcyBzZXJpYWxp
emVkICJieSByZWZlcmVuY2UiICh0aGUKKyAgICAgICAgaW50ZXJuYWwgVVJMKSByYXRoZXIgdGhh
biAiYnkgdmFsdWUiICh0aGUgYWN0dWFsIGRhdGEpOyB0aGlzIGlzIHN1ZmZpY2llbnQgZm9yCisg
ICAgICAgIHBvc3RNZXNzYWdlKCkgYnV0IG5vdCBmb3IgSW5kZXhlZERCIHNpbmNlIHRoZSByZWZl
cmVuY2VkIGRhdGEgaXMgbm90IHJldGFpbmVkCisgICAgICAgIEV4cG9zZSBhIG1lY2hhbmlzbSB0
byBlbnVtZXJhdGUgdGhlIFVSTHMgc28gdGhhdCBTU1ZzIGNhbiBiZSByZWplY3RlZCBieSBJREIK
KyAgICAgICAgdW50aWwgYmxvYiBkYXRhIHNlcmlhbGl6YXRpb24gY2FuIGlzIGltcGxlbWVudGVk
IChvdXRzaWRlIHRoZSBTU1YgbWVjaGFuaXNtLCBhbmQKKyAgICAgICAgcG90ZW50aWFsbHkgYXN5
bmNocm9ub3VzbHkpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMuaHRtbAorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6dXBkYXRlKTogUmVqZWN0IFNTVnMgdGhhdCBjb250YWluIGJsb2IgcmVmZXJlbmNlcy4K
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YWRkKTogUmVqZWN0IFNTVnMgdGhhdCBjb250YWlu
IGJsb2IgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQp
OiBSZWplY3QgU1NWcyB0aGF0IGNvbnRhaW4gYmxvYiByZWZlcmVuY2VzLgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJsb2JVUkxzKTogTmV3IEFQSSB0byBlbmFibGUgdGhlIGNs
aWVudHMgdG8gYmUgcGlja3kuCisgICAgICAgIChTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QpOiAgRW5zdXJlIGNvbnRleHQgaXMgYSB3
b3JrZXIgY29udGV4dCBiZWZvcmUgdHJlYXRpbmcgaXQgYXMgc3VjaC4KKwogMjAxMi0wMy0wOCAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEw
NTM5Nik6IERyYWdnaW5nIGFuIGlXb3JrIGRvY3VtZW50IGludG8gaWNsb3VkLmNvbSBvcGVucyBp
dCBpbiB0aGUgTWFjIGFwcCBpbnN0ZWFkIG9mIHVwbG9hZGluZyBpdCB0byBpY2xvdWQuY29tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCBl
N2EwMWVjYjc5YThhODhjYjUyZDQ5NzllNTQxOTdiYzE5NjM0ZWU5Li5hZWQyNjI3MjQxZTJkNTBh
OWUxMjIyM2IzZGYxMTQxNDI3MmVjNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IklEQkFueS5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaCIKQEAgLTkxLDkgKzkyLDE3IEBAIElEQkFueSogSURCQ3Vyc29y
Ojpzb3VyY2UoKSBjb25zdAogICAgIHJldHVybiBtX3NvdXJjZS5nZXQoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gcHJwVmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgi
SURCQ3Vyc29yOjp1cGRhdGUiKTsKKworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlID0gcHJwVmFsdWU7CisgICAgaWYgKHZhbHVlLT5ibG9iVVJMcygpLnNpemUoKSA+IDAp
IHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0ZpbGUvRmlsZUxpc3Qgc3VwcG9ydAorICAg
ICAgICBlYyA9IERBVEFfQ0xPTkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAg
ICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0
LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNr
ZW5kLT51cGRhdGUodmFsdWUsIHJlcXVlc3QsIGVjKTsKICAgICBpZiAoZWMpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRl
eCA1YzM0NjY2ZDNmYjUxY2RiMGM1YzhmZjRhM2ZjYzUwNDU0NmY0MzRkLi5kMjdmMjk4M2EyYmRh
MzIwYmZlZjlhNmVlNmY3ZDZiYWYzMWRiYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0Lmgi
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIklEQkFueS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIKQEAgLTk1
LDcgKzk2LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKICAgICByZXR1cm4gcmVxdWVzdC5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFk
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUm
IGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6YWRkIik7CiAgICAgaWYgKGtleSAmJiAo
a2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKQEAgLTEwMyw2ICsxMDQsMTMg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKKyAgICBp
ZiAodmFsdWUtPmJsb2JVUkxzKCkuc2l6ZSgpID4gMCkgeworICAgICAgICAvLyBGSVhNRTogQWRk
IEJsb2IvRmlsZS9GaWxlTGlzdCBzdXBwb3J0CisgICAgICAgIGVjID0gREFUQV9DTE9ORV9FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBt
X3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPnB1dCh2YWx1ZSwga2V5LCBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9ubHksIHJlcXVlc3QsIG1fdHJhbnNhY3Rp
b24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAtMTEyLDcgKzEyMCw3IEBAIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZh
bHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFD
RSgiSURCT2JqZWN0U3RvcmU6OnB1dCIpOwogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09
IElEQktleTo6SW52YWxpZFR5cGUpKSB7CkBAIC0xMjAsNiArMTI4LDEzIEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CisgICAgaWYgKHZhbHVlLT5ibG9i
VVJMcygpLnNpemUoKSA+IDApIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0ZpbGUvRmls
ZUxpc3Qgc3VwcG9ydAorICAgICAgICBlYyA9IERBVEFfQ0xPTkVfRVJSOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5wdXQodmFsdWUsIGtleSwgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlOjpBZGRPclVwZGF0ZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2Vu
ZCgpLCBlYyk7CiAgICAgaWYgKGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBjNjczOGNkYzQ1NTkxNDY0OGZm
ZDBhNzVlMDJhYjA4ZTc0YjBmMWJjLi45M2E0ODg3NzA0MjliYjM4NDc2YWM1ZjMzMzRkODgxM2Ew
YWE0MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTYwNiwxMyArNjA2LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
SlNGYWlsdXJlCiAgICAgfTsKIAotICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0ZXIsIE1lc3Nh
Z2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlCdWZmZXJz
LCB2ODo6VHJ5Q2F0Y2gmIHRyeUNhdGNoKQorICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0ZXIs
IE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlC
dWZmZXJzLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHY4OjpUcnlDYXRjaCYgdHJ5Q2F0Y2gp
CiAgICAgICAgIDogbV93cml0ZXIod3JpdGVyKQogICAgICAgICAsIG1fdHJ5Q2F0Y2godHJ5Q2F0
Y2gpCiAgICAgICAgICwgbV9kZXB0aCgwKQogICAgICAgICAsIG1fZXhlY0RlcHRoKDApCiAgICAg
ICAgICwgbV9zdGF0dXMoU3VjY2VzcykKICAgICAgICAgLCBtX25leHRPYmplY3RSZWZlcmVuY2Uo
MCkKKyAgICAgICAgLCBtX2Jsb2JVUkxzKGJsb2JVUkxzKQogICAgIHsKICAgICAgICAgQVNTRVJU
KCF0cnlDYXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgICAgIGlmIChtZXNzYWdlUG9ydHMpIHsKQEAg
LTk3Nyw2ICs5NzgsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWJsb2IpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIG1fd3JpdGVyLndyaXRlQmxvYihibG9iLT51cmwoKS5zdHJpbmco
KSwgYmxvYi0+dHlwZSgpLCBibG9iLT5zaXplKCkpOworICAgICAgICBtX2Jsb2JVUkxzLmFwcGVu
ZChibG9iLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgfQogCiAgICAgdm9pZCB3cml0ZUZpbGUodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQpAQCAtOTg1LDYgKzk4Nyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGlmICghZmlsZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV93cml0ZXIu
d3JpdGVGaWxlKGZpbGUtPnBhdGgoKSwgZmlsZS0+dXJsKCkuc3RyaW5nKCksIGZpbGUtPnR5cGUo
KSk7CisgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKGZpbGUtPnVybCgpLnN0cmluZygpKTsKICAg
ICB9CiAKICAgICB2b2lkIHdyaXRlRmlsZUxpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
KQpAQCAtOTkzLDYgKzk5Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghZmlsZUxpc3QpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fd3JpdGVyLndyaXRlRmlsZUxpc3QoKmZpbGVM
aXN0KTsKKyAgICAgICAgdWludDMyX3QgbGVuZ3RoID0gZmlsZUxpc3QtPmxlbmd0aCgpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICBt
X2Jsb2JVUkxzLmFwcGVuZChmaWxlTGlzdC0+aXRlbShpKS0+dXJsKCkuc3RyaW5nKCkpOwogICAg
IH0KIAogICAgIHZvaWQgd3JpdGVJbWFnZURhdGEodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
KQpAQCAtMTExMSw2ICsxMTE3LDcgQEAgcHJpdmF0ZToKICAgICBPYmplY3RQb29sIG1fdHJhbnNm
ZXJyZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkQXJyYXlCdWZm
ZXJzOwogICAgIHVpbnQzMl90IG1fbmV4dE9iamVjdFJlZmVyZW5jZTsKKyAgICBWZWN0b3I8U3Ry
aW5nPiYgbV9ibG9iVVJMczsKIH07CiAKIFNlcmlhbGl6ZXI6OlN0YXRlQmFzZSogU2VyaWFsaXpl
cjo6ZG9TZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBTdGF0ZUJhc2UqIG5l
eHQpCkBAIC0yMjA0LDcgKzIyMTEsNyBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsCiAgICAgU2VyaWFsaXpl
cjo6U3RhdHVzIHN0YXR1czsKICAgICB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsK
LSAgICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgbWVzc2FnZVBvcnRzLCBhcnJh
eUJ1ZmZlcnMsIHRyeUNhdGNoKTsKKyAgICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRl
ciwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIG1fYmxvYlVSTHMsIHRyeUNhdGNoKTsKICAg
ICAgICAgc3RhdHVzID0gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwogICAgICAgICBpZiAo
c3RhdHVzID09IFNlcmlhbGl6ZXI6OkpTRXhjZXB0aW9uKSB7CiAgICAgICAgICAgICAvLyBJZiB0
aGVyZSB3YXMgYSBKUyBleGNlcHRpb24gdGhyb3duLCByZS10aHJvdyBpdC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNjhi
MTk1NGQ1ZjUxMTFlMTg1OGUyMjkwOGJmMTkxNDJiODI3NjM5NC4uN2Y2YjllMDNmYTNmMjU2YzEy
ZmY2YzZiYWJlM2VmNGYzZDczOWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTgwLDYgKzgwLDggQEAgcHVibGljOgog
ICAgIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlwdFN0YXRlKik7CiAj
ZW5kaWYKIAorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcygpIGNvbnN0IHsgcmV0
dXJuIG1fYmxvYlVSTHM7IH0KKwogcHJpdmF0ZToKICAgICBlbnVtIFN0cmluZ0RhdGFNb2RlIHsK
ICAgICAgICAgU3RyaW5nVmFsdWUsCkBAIC05NSw2ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAgICBT
dHJpbmcgbV9kYXRhOwogICAgIE93blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fYXJy
YXlCdWZmZXJDb250ZW50c0FycmF5OworICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxvYlVSTHM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcAppbmRleCA0Y2YzYzlhNDZjYTZlMDNjM2E4OTJkNWNmNjZkZGQwMDQy
NmRiNjNlLi4zNzU3MWViYjc4MTFkNzg3YjQ1YmI0ZmQwZjcyNWYxYjRmMjk0MDVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTIzNiw3ICsyMzYs
NyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2Jq
ZWN0KFY4UHJveHkqIHByb3h5LCBXcmFwcGVyVAogICAgICAgICAgICAgICAgICAgICBwcm94eSA9
IFY4UHJveHk6OnJldHJpZXZlKGZyYW1lKTsKICAgICAgICAgICAgIH0KICNpZiBFTkFCTEUoV09S
S0VSUykKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzV3JhcHBlck9m
VHlwZShnbG9iYWxQcm90b3R5cGUsICZWOFdvcmtlckNvbnRleHQ6OmluZm8pKQogICAgICAgICAg
ICAgICAgIHdvcmtlckNvbnRleHQgPSBWOFdvcmtlckNvbnRleHQ6OnRvTmF0aXZlKGxvb2t1cERP
TVdyYXBwZXIoVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0ZSgpLCBjb250ZXh0LT5HbG9iYWwo
KSkpOwogI2VuZGlmCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMWE3YWI2N2MxY2ZiYWRkMzZmNGFhOTVj
ZTI4YzRiZjg5YzEwMDdhLi5iNGVjNjNkNzIwYTU5MWY0ZmQ0YWFjOGFhZDNhM2RiMDY1Njg3ZWMy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDMtMDkgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEluZGV4ZWREQjogQXNzZXJ0aW9u
IGZhaWx1cmUgd2hlbiBzdG9yaW5nIEZpbGUgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY3NDYKKworICAgICAgICBFbnN1cmUgdGhhdCBC
bG9iL0ZpbGUvRmlsZUxpc3QgdHlwZXMgYXJlIHJlamVjdGVkIGluIElEQiB2YWx1ZXMsIHRvIGRl
dGVjdCByZWdyZXNzaW9ucy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLmh0bWw6IEFkZGVkLgorCiAy
MDEyLTAzLTA4ICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHVwZGF0ZSBjaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODhhNTVlNmExMTI4Yjc2MTIxMzhmZTQ1MzQ4YzMwNTZkODhlZmM4YQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsODMgQEAKKworQ29uZmlybSBCbG9iL0ZpbGUvRmlsZUxpc3QgbGltaXRh
dGlvbnMgb2YgSW5kZXhlZERCIGltcGxlbWVudGF0aW9uLiBGaWxlL0ZpbGVMaXN0IHRlc3RzIHJl
cXVpcmUgRHVtcFJlbmRlclRyZWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitp
bmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIKK1BB
U1MgaW5kZXhlZERCICE9IG51bGwgaXMgdHJ1ZQorSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURC
VHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uCitQQVNTIElEQlRyYW5z
YWN0aW9uICE9IG51bGwgaXMgdHJ1ZQorCitQcmVwYXJlIERhdGFiYXNlCitpbmRleGVkREIuZGVs
ZXRlRGF0YWJhc2UoJ25vYmxvYnMnKQoraW5kZXhlZERCLm9wZW4oJ25vYmxvYnMnKQorZGIgPSBy
ZXF1ZXN0LnJlc3VsdAorUEFTUyBkYi52ZXJzaW9uIGlzICIiCitkYi5zZXRWZXJzaW9uKCcxJykK
K3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitzdG9yZS5wdXQoJ3Zh
bHVlJywgJ2tleScpCisKK3Rlc3RCbG9iKCk6CitCbG9iQnVpbGRlciA9IHdpbmRvdy5CbG9iQnVp
bGRlciB8fCB3aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXIKK1BBU1MgQmxvYkJ1aWxkZXIgIT0gbnVs
bCBpcyB0cnVlCitQQVNTIEZpbGVSZWFkZXIgIT0gbnVsbCBpcyB0cnVlCitidWlsZGVyID0gbmV3
IEJsb2JCdWlsZGVyKCkKK3Rlc3RfY29udGVudCA9ICdUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyBv
bmx5IGEgdGVzdC4nCitidWlsZGVyLmFwcGVuZCh0ZXN0X2NvbnRlbnQpCitibG9iID0gYnVpbGRl
ci5nZXRCbG9iKCkKKwordmFsaWRhdGVFeGNlcHRpb25zKGJsb2IpOgordHJhbnNhY3Rpb24gPSBk
Yi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0
b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitFeHBlY3RpbmcgZXhj
ZXB0aW9uIGZyb20gc3RvcmUucHV0KGJsb2IsICdrZXknKQorUEFTUyBFeGNlcHRpb24gd2FzIHRo
cm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIKK0V4cGVjdGlu
ZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQoYmxvYiwgJ2tleScpCitQQVNTIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorcmVx
dWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK0V4cGVj
dGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IudXBkYXRlKGJsb2IpCitQQVNTIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorCit0
ZXN0RmlsZSgpOgorZmlsZSA9IGZpbGVJbnB1dC5maWxlc1swXQorCit2YWxpZGF0ZUV4Y2VwdGlv
bnMoZmlsZSk6Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJU
cmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgn
c3RvcmVOYW1lJykKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5wdXQoZmlsZSwgJ2tl
eScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlv
bi5EQVRBX0NMT05FX0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZChmaWxl
LCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhj
ZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpCitjdXJz
b3IgPSByZXF1ZXN0LnJlc3VsdAorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGN1cnNvci51cGRh
dGUoZmlsZSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhj
ZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCisKK3Rlc3RGaWxlTGlzdCgpOgorZmlsZWxpc3QgPSBmaWxl
SW5wdXQuZmlsZXMKKwordmFsaWRhdGVFeGNlcHRpb25zKGZpbGVsaXN0KToKK3RyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
CitzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIHN0b3JlLnB1dChmaWxlbGlzdCwgJ2tleScpCitQQVNTIEV4Y2VwdGlv
biB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgor
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZChmaWxlbGlzdCwgJ2tleScpCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NM
T05FX0VSUgorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29yID0gcmVxdWVzdC5y
ZXN1bHQKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IudXBkYXRlKGZpbGVsaXN0KQor
UEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFU
QV9DTE9ORV9FUlIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2Jz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDMwZWFhYWZmM2Q3MjhmMWE5MzBkZWMxNDBlYmJmYjUwY2YwOTI3NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMuaHRtbApAQCAt
MCwwICsxLDEyMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCB0eXBlPSJm
aWxlIiBpZD0iZmlsZUlucHV0IiBtdWx0aXBsZT48L2lucHV0PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJDb25maXJtIEJsb2IvRmlsZS9GaWxlTGlzdCBsaW1pdGF0aW9ucyBvZiBXZWJLaXQncyBJbmRl
eGVkREIgaW1wbGVtZW50YXRpb24uIik7CisvLyBGSVhNRTogVGhpcyB2ZXJpZmllcyB0aGF0IGJs
b2ItdHlwZSBkYXRhIGlzIHJlamVjdGVkIGZvciBub3csIHJhdGhlciB0aGFuIHNpbGVudGx5IGZh
aWxpbmcuCisvLyBUcmFja2VkIGZvciB0aGUgQ2hyb21pdW0gcG9ydCBhczogaHR0cDovL2NyYnVn
LmNvbS8xMDgwMTIKKworZmlsZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVJ
bnB1dCIpOworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIHZhciBmaWxlUmVjdCA9IGZp
bGVJbnB1dC5nZXRDbGllbnRSZWN0cygpWzBdOworICAgIHZhciB0YXJnZXRYID0gZmlsZVJlY3Qu
bGVmdCArIGZpbGVSZWN0LndpZHRoIC8gMjsKKyAgICB2YXIgdGFyZ2V0WSA9IGZpbGVSZWN0LnRv
cCArIGZpbGVSZWN0LmhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZp
bGVzKFsncmVzb3VyY2VzL3Rlc3QtZGF0YS5odG1sJywgJ3Jlc291cmNlcy90ZXN0LWRhdGEudHh0
J10pOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHRhcmdldFgsIHRhcmdldFkpOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZXZh
bEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4ZWREQiB8fCB3aW5kb3cud2Via2l0SW5k
ZXhlZERCIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRleGVkREIgIT0gbnVsbCIpOworICAgIGV2
YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gd2luZG93LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRv
dy53ZWJraXRJREJUcmFuc2FjdGlvbiIpOworICAgIHNob3VsZEJlVHJ1ZSgiSURCVHJhbnNhY3Rp
b24gIT0gbnVsbCIpOworICAgIHByZXBhcmVEYXRhYmFzZSgpOworfQorCitmdW5jdGlvbiBwcmVw
YXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygiUHJlcGFyZSBEYXRh
YmFzZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2UoJ25vYmxvYnMnKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9wZW4oJ25vYmxvYnMnKSIpOworICAgICAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJk
YiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
ImRiLnZlcnNpb24iLCAiIik7CisgICAgICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIu
c2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oZSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3Rv
cmUucHV0KCd2YWx1ZScsICdrZXknKSIpOworICAgICAgICAgICAgICAgIHZhciB0cmFucyA9IHJl
cXVlc3QucmVzdWx0OworICAgICAgICAgICAgICAgIHRyYW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3Rl
ZEFib3J0Q2FsbGJhY2s7CisgICAgICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHRlc3RC
bG9iKCk7CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9u
IHRlc3RCbG9iKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RCbG9iKCk6Iik7
CisKKyAgICBldmFsQW5kTG9nKCJCbG9iQnVpbGRlciA9IHdpbmRvdy5CbG9iQnVpbGRlciB8fCB3
aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXIiKTsKKyAgICBzaG91bGRCZVRydWUoIkJsb2JCdWlsZGVy
ICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIkZpbGVSZWFkZXIgIT0gbnVsbCIpOworICAg
IGV2YWxBbmRMb2coImJ1aWxkZXIgPSBuZXcgQmxvYkJ1aWxkZXIoKSIpOworICAgIGV2YWxBbmRM
b2coInRlc3RfY29udGVudCA9ICdUaGlzIGlzIGEgdGVzdC4gVGhpcyBpcyBvbmx5IGEgdGVzdC4n
Iik7CisgICAgZXZhbEFuZExvZygiYnVpbGRlci5hcHBlbmQodGVzdF9jb250ZW50KSIpOworICAg
IGV2YWxBbmRMb2coImJsb2IgPSBidWlsZGVyLmdldEJsb2IoKSIpOworICAgIHZhbGlkYXRlRXhj
ZXB0aW9ucygiYmxvYiIsIHRlc3RGaWxlKTsKK30KKworZnVuY3Rpb24gdGVzdEZpbGUoKQorewor
ICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEZpbGUoKToiKTsKKyAgICBldmFsQW5kTG9n
KCJmaWxlID0gZmlsZUlucHV0LmZpbGVzWzBdIik7CisgICAgdmFsaWRhdGVFeGNlcHRpb25zKCJm
aWxlIiwgdGVzdEZpbGVMaXN0KTsKK30KKworZnVuY3Rpb24gdGVzdEZpbGVMaXN0KCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RGaWxlTGlzdCgpOiIpOworICAgIGV2YWxBbmRM
b2coImZpbGVsaXN0ID0gZmlsZUlucHV0LmZpbGVzIik7CisgICAgdmFsaWRhdGVFeGNlcHRpb25z
KCJmaWxlbGlzdCIsIGZpbmlzaEpTVGVzdCk7Cit9CisKK2Z1bmN0aW9uIHZhbGlkYXRlRXhjZXB0
aW9ucyh2YXJpYWJsZSwgb25Db21wbGV0ZSkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
InZhbGlkYXRlRXhjZXB0aW9ucygiICsgdmFyaWFibGUgKyAiKToiKTsKKyAgICBldmFsQW5kTG9n
KCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3Rv
cmUucHV0KCIgKyB2YXJpYWJsZSArICIsICdrZXknKSIsICJET01FeGNlcHRpb24uREFUQV9DTE9O
RV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5hZGQoIiArIHZhcmlh
YmxlICsgIiwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworICAgIGV2
YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXZhbEFuZExvZygiY3Vyc29yID0gcmVx
dWVzdC5yZXN1bHQiKTsKKyAgICAgICAgaWYgKGN1cnNvcikgeworICAgICAgICAgICAgZXZhbEFu
ZEV4cGVjdEV4Y2VwdGlvbigiY3Vyc29yLnVwZGF0ZSgiICsgdmFyaWFibGUgKyAiKSIsICJET01F
eGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHJhbnNh
Y3Rpb24ub25jb21wbGV0ZSA9IG9uQ29tcGxldGU7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICB0ZXN0KCk7Cit9IGVsc2UgeworICAgIGFsZXJ0KCJTZWxlY3QgZmlsZShzKSB1
c2luZyB0aGUgaW5wdXQgY29udHJvbCBhYm92ZSB0byBpbml0aWF0ZSB0aGUgdGVzdCIpOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlSW5wdXQiKS5vbmNoYW5nZSA9IHRlc3Q7Cit9
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131120</attachid>
            <date>2012-03-09 15:04:08 -0800</date>
            <delta_ts>2012-03-14 17:47:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76746-20120309150407.patch</filename>
            <type>text/plain</type>
            <size>18209</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY5MWIyYjA4NmU1MDcz
NjgxMTRiYmFjMTkwMjRjMzg4NTg1NWFkYy4uNjVhMTdkODM3ODFlYjUxMjZmODJjZWRjZTY5NmFj
M2Q5Y2RiYjk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTAzLTA5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEFzc2VydGlvbiBmYWlsdXJlIHdoZW4gc3RvcmluZyBGaWxlIG9iamVjdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzQ2CisKKyAgICAg
ICAgVGhlIGJsb2IgZGF0YSBpbiBCbG9iL0ZpbGUvRmlsZUxpc3Qgb2JqZWN0cyBpcyBzZXJpYWxp
emVkICJieSByZWZlcmVuY2UiICh0aGUKKyAgICAgICAgaW50ZXJuYWwgVVJMKSByYXRoZXIgdGhh
biAiYnkgdmFsdWUiICh0aGUgYWN0dWFsIGRhdGEpOyB0aGlzIGlzIHN1ZmZpY2llbnQgZm9yCisg
ICAgICAgIHBvc3RNZXNzYWdlKCkgYnV0IG5vdCBmb3IgSW5kZXhlZERCIHNpbmNlIHRoZSByZWZl
cmVuY2VkIGRhdGEgaXMgbm90IHJldGFpbmVkCisgICAgICAgIEV4cG9zZSBhIG1lY2hhbmlzbSB0
byBlbnVtZXJhdGUgdGhlIFVSTHMgc28gdGhhdCBTU1ZzIGNhbiBiZSByZWplY3RlZCBieSBJREIK
KyAgICAgICAgdW50aWwgYmxvYiBkYXRhIHNlcmlhbGl6YXRpb24gY2FuIGlzIGltcGxlbWVudGVk
IChvdXRzaWRlIHRoZSBTU1YgbWVjaGFuaXNtLCBhbmQKKyAgICAgICAgcG90ZW50aWFsbHkgYXN5
bmNocm9ub3VzbHkpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMuaHRtbAorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvcjo6dXBkYXRlKTogUmVqZWN0IFNTVnMgdGhhdCBjb250YWluIGJsb2IgcmVmZXJlbmNlcy4K
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YWRkKTogUmVqZWN0IFNTVnMgdGhhdCBjb250YWlu
IGJsb2IgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQp
OiBSZWplY3QgU1NWcyB0aGF0IGNvbnRhaW4gYmxvYiByZWZlcmVuY2VzLgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJsb2JVUkxzKTogTmV3IEFQSSB0byBlbmFibGUgdGhlIGNs
aWVudHMgdG8gYmUgcGlja3kuCisgICAgICAgIChTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QpOiAgRW5zdXJlIGNvbnRleHQgaXMgYSB3
b3JrZXIgY29udGV4dCBiZWZvcmUgdHJlYXRpbmcgaXQgYXMgc3VjaC4KKwogMjAxMi0wMy0wOSAg
SWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1d
IEVuc3VyZSB3ZSB1c2UgdGhlIGNvcnJlY3QgdGltZSB3aGVuIG5vdGlmeWluZyBhbmltYXRpb24g
c3RhcnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKaW5kZXggZTdhMDFlY2I3OWE4YTg4Y2I1MmQ0OTc5ZTU0MTk3YmMxOTYzNGVlOS4uYWVkMjYy
NzI0MWUyZDUwYTllMTIyMjNiM2RmMTE0MTQyNzJlYzU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRl
ICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCkBAIC05MSw5ICs5MiwxNyBAQCBJREJBbnkq
IElEQkN1cnNvcjo6c291cmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29y
Ojp1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkN1cnNvcjo6dXBkYXRlIik7CisKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOworICAgIGlmICh2YWx1ZS0+YmxvYlVSTHMoKS5z
aXplKCkgPiAwKSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgQmxvYi9GaWxlL0ZpbGVMaXN0IHN1
cHBvcnQKKyAgICAgICAgZWMgPSBEQVRBX0NMT05FX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgIG1fYmFja2VuZC0+dXBkYXRlKHZhbHVlLCByZXF1ZXN0LCBlYyk7CiAgICAgaWYgKGVjKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAKaW5kZXggNWMzNDY2NmQzZmI1MWNkYjBjNWM4ZmY0YTNmY2M1MDQ1NDZmNDM0ZC4uZDI3
ZjI5ODNhMmJkYTMyMGJmZWY5YTZlZTZmN2Q2YmFmMzFkYmMzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRE9NU3Ry
aW5nTGlzdC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJREJBbnku
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkluZGV4
LmgiCkBAIC05NSw3ICs5Niw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgcmV0dXJu
IHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFk
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwogICAgIGlm
IChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CkBAIC0xMDMs
NiArMTA0LDEzIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAorICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFs
dWU7CisgICAgaWYgKHZhbHVlLT5ibG9iVVJMcygpLnNpemUoKSA+IDApIHsKKyAgICAgICAgLy8g
RklYTUU6IEFkZCBCbG9iL0ZpbGUvRmlsZUxpc3Qgc3VwcG9ydAorICAgICAgICBlYyA9IERBVEFf
Q0xPTkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8SURCUmVx
dWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0
ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5wdXQodmFsdWUs
IGtleSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpBZGRPbmx5LCByZXF1ZXN0LCBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTExMiw3ICsx
MjAsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVh
c2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBy
cFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpwdXQiKTsKICAgICBpZiAoa2V5ICYmIChrZXkt
PnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewpAQCAtMTIwLDYgKzEyOCwxMyBAQCBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzcwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOworICAgIGlmICh2
YWx1ZS0+YmxvYlVSTHMoKS5zaXplKCkgPiAwKSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgQmxv
Yi9GaWxlL0ZpbGVMaXN0IHN1cHBvcnQKKyAgICAgICAgZWMgPSBEQVRBX0NMT05FX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3Qg
PSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJh
bnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+cHV0KHZhbHVlLCBrZXksIElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZTo6QWRkT3JVcGRhdGUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rp
b24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYzY3MzhjZGM0
NTU5MTQ2NDhmZmQwYTc1ZTAyYWIwOGU3NGIwZjFiYy4uOTNhNDg4NzcwNDI5YmIzODQ3NmFjNWYz
MzM0ZDg4MTNhMGFhNDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02MDYsMTMgKzYwNiwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIEpTRmFpbHVyZQogICAgIH07CiAKLSAgICBTZXJpYWxpemVyKFdyaXRlciYgd3Jp
dGVyLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFy
cmF5QnVmZmVycywgdjg6OlRyeUNhdGNoJiB0cnlDYXRjaCkKKyAgICBTZXJpYWxpemVyKFdyaXRl
ciYgd3JpdGVyLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJy
YXkqIGFycmF5QnVmZmVycywgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCB2ODo6VHJ5Q2F0Y2gm
IHRyeUNhdGNoKQogICAgICAgICA6IG1fd3JpdGVyKHdyaXRlcikKICAgICAgICAgLCBtX3RyeUNh
dGNoKHRyeUNhdGNoKQogICAgICAgICAsIG1fZGVwdGgoMCkKICAgICAgICAgLCBtX2V4ZWNEZXB0
aCgwKQogICAgICAgICAsIG1fc3RhdHVzKFN1Y2Nlc3MpCiAgICAgICAgICwgbV9uZXh0T2JqZWN0
UmVmZXJlbmNlKDApCisgICAgICAgICwgbV9ibG9iVVJMcyhibG9iVVJMcykKICAgICB7CiAgICAg
ICAgIEFTU0VSVCghdHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpOwogICAgICAgICBpZiAobWVzc2FnZVBv
cnRzKSB7CkBAIC05NzcsNiArOTc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFibG9iKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3dyaXRlci53cml0ZUJsb2IoYmxvYi0+dXJs
KCkuc3RyaW5nKCksIGJsb2ItPnR5cGUoKSwgYmxvYi0+c2l6ZSgpKTsKKyAgICAgICAgbV9ibG9i
VVJMcy5hcHBlbmQoYmxvYi0+dXJsKCkuc3RyaW5nKCkpOwogICAgIH0KIAogICAgIHZvaWQgd3Jp
dGVGaWxlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTk4NSw2ICs5ODcsNyBAQCBw
cml2YXRlOgogICAgICAgICBpZiAoIWZpbGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1fd3JpdGVyLndyaXRlRmlsZShmaWxlLT5wYXRoKCksIGZpbGUtPnVybCgpLnN0cmluZygpLCBm
aWxlLT50eXBlKCkpOworICAgICAgICBtX2Jsb2JVUkxzLmFwcGVuZChmaWxlLT51cmwoKS5zdHJp
bmcoKSk7CiAgICAgfQogCiAgICAgdm9pZCB3cml0ZUZpbGVMaXN0KHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSkKQEAgLTk5Myw2ICs5OTYsOSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWZp
bGVMaXN0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3dyaXRlci53cml0ZUZpbGVM
aXN0KCpmaWxlTGlzdCk7CisgICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IGZpbGVMaXN0LT5sZW5n
dGgoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQoZmlsZUxpc3QtPml0ZW0oaSktPnVybCgpLnN0cmlu
ZygpKTsKICAgICB9CiAKICAgICB2b2lkIHdyaXRlSW1hZ2VEYXRhKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSkKQEAgLTExMTEsNiArMTExNyw3IEBAIHByaXZhdGU6CiAgICAgT2JqZWN0UG9v
bCBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJl
ZEFycmF5QnVmZmVyczsKICAgICB1aW50MzJfdCBtX25leHRPYmplY3RSZWZlcmVuY2U7CisgICAg
VmVjdG9yPFN0cmluZz4mIG1fYmxvYlVSTHM7CiB9OwogCiBTZXJpYWxpemVyOjpTdGF0ZUJhc2Uq
IFNlcmlhbGl6ZXI6OmRvU2VyaWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU3Rh
dGVCYXNlKiBuZXh0KQpAQCAtMjIwNCw3ICsyMjExLDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLAogICAg
IFNlcmlhbGl6ZXI6OlN0YXR1cyBzdGF0dXM7CiAgICAgewogICAgICAgICB2ODo6VHJ5Q2F0Y2gg
dHJ5Q2F0Y2g7Ci0gICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIsIG1lc3NhZ2VQ
b3J0cywgYXJyYXlCdWZmZXJzLCB0cnlDYXRjaCk7CisgICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFs
aXplcih3cml0ZXIsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBtX2Jsb2JVUkxzLCB0cnlD
YXRjaCk7CiAgICAgICAgIHN0YXR1cyA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKICAg
ICAgICAgaWYgKHN0YXR1cyA9PSBTZXJpYWxpemVyOjpKU0V4Y2VwdGlvbikgewogICAgICAgICAg
ICAgLy8gSWYgdGhlcmUgd2FzIGEgSlMgZXhjZXB0aW9uIHRocm93biwgcmUtdGhyb3cgaXQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CmluZGV4IDY4YjE5NTRkNWY1MTExZTE4NThlMjI5MDhiZjE5MTQyYjgyNzYzOTQuLjdmNmI5ZTAz
ZmEzZjI1NmMxMmZmNmM2YmFiZTNlZjRmM2Q3MzlhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC04MCw2ICs4MCw4IEBA
IHB1YmxpYzoKICAgICBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihTY3JpcHRT
dGF0ZSopOwogI2VuZGlmCiAKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMoKSBj
b25zdCB7IHJldHVybiBtX2Jsb2JVUkxzOyB9CisKIHByaXZhdGU6CiAgICAgZW51bSBTdHJpbmdE
YXRhTW9kZSB7CiAgICAgICAgIFN0cmluZ1ZhbHVlLApAQCAtOTUsNiArOTcsNyBAQCBwcml2YXRl
OgogCiAgICAgU3RyaW5nIG1fZGF0YTsKICAgICBPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5PiBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2Js
b2JVUkxzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggNGNmM2M5YTQ2Y2E2ZTAzYzNhODkyZDVj
ZjY2ZGRkMDA0MjZkYjYzZS4uMzc1NzFlYmI3ODExZDc4N2I0NWJiNGZkMGY3MjVmMWI0ZjI5NDA1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0y
MzYsNyArMjM2LDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6aW5zdGFu
dGlhdGVWOE9iamVjdChWOFByb3h5KiBwcm94eSwgV3JhcHBlclQKICAgICAgICAgICAgICAgICAg
ICAgcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShmcmFtZSk7CiAgICAgICAgICAgICB9CiAjaWYg
RU5BQkxFKFdPUktFUlMpCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChp
c1dyYXBwZXJPZlR5cGUoZ2xvYmFsUHJvdG90eXBlLCAmVjhXb3JrZXJDb250ZXh0OjppbmZvKSkK
ICAgICAgICAgICAgICAgICB3b3JrZXJDb250ZXh0ID0gVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2
ZShsb29rdXBET01XcmFwcGVyKFY4V29ya2VyQ29udGV4dDo6R2V0VGVtcGxhdGUoKSwgY29udGV4
dC0+R2xvYmFsKCkpKTsKICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmFkNGNjZDBmNjVhNDMx
MTAwMTljOTczZGVmNjJhZWIyOTMyMzEzMS4uZTM4ZTNjYjM1NzQxYmE5OWM3ODMxZGQ5Y2YyZjI3
MDZhNGJjYzg1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTA5ICBKb3NodWEgQmVs
bCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRleGVkREI6
IEFzc2VydGlvbiBmYWlsdXJlIHdoZW4gc3RvcmluZyBGaWxlIG9iamVjdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzQ2CisKKyAgICAgICAgRW5z
dXJlIHRoYXQgQmxvYi9GaWxlL0ZpbGVMaXN0IHR5cGVzIGFyZSByZWplY3RlZCBpbiBJREIgdmFs
dWVzLCB0byBkZXRlY3QgcmVncmVzc2lvbnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sOiBB
ZGRlZC4KKwogMjAxMi0wMy0wOSAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zODYzMzg4Zjg2YjZhYTE0MjA2OGQ2ZDExYWNhYjZjMzUxMTQwMWJjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw4MyBAQAorCitDb25maXJtIEJsb2IvRmlsZS9GaWxlTGlzdCBsaW1p
dGF0aW9ucyBvZiBXZWJLaXQncyBJbmRleGVkREIgaW1wbGVtZW50YXRpb24uCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdp
bmRvdy53ZWJraXRJbmRleGVkREIKK1BBU1MgaW5kZXhlZERCICE9IG51bGwgaXMgdHJ1ZQorSURC
VHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRy
YW5zYWN0aW9uCitQQVNTIElEQlRyYW5zYWN0aW9uICE9IG51bGwgaXMgdHJ1ZQorCitQcmVwYXJl
IERhdGFiYXNlCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ25vYmxvYnMnKQoraW5kZXhlZERC
Lm9wZW4oJ25vYmxvYnMnKQorZGIgPSByZXF1ZXN0LnJlc3VsdAorUEFTUyBkYi52ZXJzaW9uIGlz
ICIiCitkYi5zZXRWZXJzaW9uKCcxJykKK3N0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpCitzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScpCisKK3Rlc3RCbG9iKCk6CitCbG9i
QnVpbGRlciA9IHdpbmRvdy5CbG9iQnVpbGRlciB8fCB3aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXIK
K1BBU1MgQmxvYkJ1aWxkZXIgIT0gbnVsbCBpcyB0cnVlCitQQVNTIEZpbGVSZWFkZXIgIT0gbnVs
bCBpcyB0cnVlCitidWlsZGVyID0gbmV3IEJsb2JCdWlsZGVyKCkKK3Rlc3RfY29udGVudCA9ICdU
aGlzIGlzIGEgdGVzdC4gVGhpcyBpcyBvbmx5IGEgdGVzdC4nCitidWlsZGVyLmFwcGVuZCh0ZXN0
X2NvbnRlbnQpCitibG9iID0gYnVpbGRlci5nZXRCbG9iKCkKKwordmFsaWRhdGVFeGNlcHRpb25z
KGJsb2IpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJh
bnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0
b3JlTmFtZScpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUucHV0KGJsb2IsICdrZXkn
KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24u
REFUQV9DTE9ORV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQoYmxvYiwg
J2tleScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2Vw
dGlvbi5EQVRBX0NMT05FX0VSUgorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKQorY3Vyc29y
ID0gcmVxdWVzdC5yZXN1bHQKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBjdXJzb3IudXBkYXRl
KGJsb2IpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2Vw
dGlvbi5EQVRBX0NMT05FX0VSUgorCit0ZXN0RmlsZSgpOgorZmlsZSA9IGZpbGVJbnB1dC5maWxl
c1swXQorCit2YWxpZGF0ZUV4Y2VwdGlvbnMoZmlsZSk6Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5z
YWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorc3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykKK0V4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBzdG9yZS5wdXQoZmlsZSwgJ2tleScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIHN0b3JlLmFkZChmaWxlLCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCityZXF1ZXN0ID0g
c3RvcmUub3BlbkN1cnNvcigpCitjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdAorRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIGN1cnNvci51cGRhdGUoZmlsZSkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCisKK3Rlc3RGaWxl
TGlzdCgpOgorZmlsZWxpc3QgPSBmaWxlSW5wdXQuZmlsZXMKKwordmFsaWRhdGVFeGNlcHRpb25z
KGZpbGVsaXN0KToKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElE
QlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCdzdG9yZU5hbWUnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLnB1dChmaWxlbGlz
dCwgJ2tleScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4
Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFk
ZChmaWxlbGlzdCwgJ2tleScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2Rl
IGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJz
b3IoKQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBj
dXJzb3IudXBkYXRlKGZpbGVsaXN0KQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
Y29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9ub2Jsb2JzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTYyMGY2YWM1ODZmYTg0MmVlNTU1ZjdhM2Y2
ZWQ5MTRhOGY5N2FiMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL25vYmxvYnMuaHRtbApAQCAtMCwwICsxLDExOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxpbnB1dCB0eXBlPSJmaWxlIiBpZD0iZmlsZUlucHV0IiBtdWx0aXBsZT48L2lu
cHV0PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJDb25maXJtIEJsb2IvRmlsZS9GaWxlTGlzdCBsaW1p
dGF0aW9ucyBvZiBXZWJLaXQncyBJbmRleGVkREIgaW1wbGVtZW50YXRpb24uIik7CisvLyBGSVhN
RTogVGhpcyB2ZXJpZmllcyB0aGF0IGJsb2ItdHlwZSBkYXRhIGlzIHJlamVjdGVkIGZvciBub3cs
IHJhdGhlciB0aGFuIHNpbGVudGx5IGZhaWxpbmcuCisvLyBUcmFja2VkIGZvciB0aGUgQ2hyb21p
dW0gcG9ydCBhczogaHR0cDovL2NyYnVnLmNvbS8xMDgwMTIKKworZmlsZUlucHV0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImZpbGVJbnB1dCIpOworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgIHZhciBmaWxlUmVjdCA9IGZpbGVJbnB1dC5nZXRDbGllbnRSZWN0cygpWzBdOworICAg
IHZhciB0YXJnZXRYID0gZmlsZVJlY3QubGVmdCArIGZpbGVSZWN0LndpZHRoIC8gMjsKKyAgICB2
YXIgdGFyZ2V0WSA9IGZpbGVSZWN0LnRvcCArIGZpbGVSZWN0LmhlaWdodCAvIDI7CisgICAgZXZl
bnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZpbGVzKFsncmVzb3VyY2VzL3Rlc3QtZGF0YS5odG1sJywg
J3Jlc291cmNlcy90ZXN0LWRhdGEudHh0J10pOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHRhcmdldFgsIHRhcmdldFkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKK30KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgZXZhbEFuZExvZygiaW5kZXhlZERCID0gd2luZG93LmluZGV4
ZWREQiB8fCB3aW5kb3cud2Via2l0SW5kZXhlZERCIik7CisgICAgc2hvdWxkQmVUcnVlKCJpbmRl
eGVkREIgIT0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coIklEQlRyYW5zYWN0aW9uID0gd2luZG93
LklEQlRyYW5zYWN0aW9uIHx8IHdpbmRvdy53ZWJraXRJREJUcmFuc2FjdGlvbiIpOworICAgIHNo
b3VsZEJlVHJ1ZSgiSURCVHJhbnNhY3Rpb24gIT0gbnVsbCIpOworICAgIHByZXBhcmVEYXRhYmFz
ZSgpOworfQorCitmdW5jdGlvbiBwcmVwYXJlRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1ZygiUHJlcGFyZSBEYXRhYmFzZSIpOworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9n
KCJpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoJ25vYmxvYnMnKSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oZSkgeworICAgICAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLm9w
ZW4oJ25vYmxvYnMnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRiLnZlcnNpb24iLCAiIik7CisgICAgICAgICAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgIGV2YWxBbmRM
b2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygic3RvcmUucHV0KCd2YWx1ZScsICdrZXknKSIpOworICAgICAg
ICAgICAgICAgIHZhciB0cmFucyA9IHJlcXVlc3QucmVzdWx0OworICAgICAgICAgICAgICAgIHRy
YW5zLm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgICAgICAgICB0
cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgICAgICAgICAg
dHJhbnMub25jb21wbGV0ZSA9IHRlc3RCbG9iKCk7CisgICAgICAgICAgICB9OworICAgICAgICB9
OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlc3RCbG9iKCkKK3sKKyAgICBkZWJ1ZygiIik7Cisg
ICAgZGVidWcoInRlc3RCbG9iKCk6Iik7CisKKyAgICBldmFsQW5kTG9nKCJCbG9iQnVpbGRlciA9
IHdpbmRvdy5CbG9iQnVpbGRlciB8fCB3aW5kb3cuV2ViS2l0QmxvYkJ1aWxkZXIiKTsKKyAgICBz
aG91bGRCZVRydWUoIkJsb2JCdWlsZGVyICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIkZp
bGVSZWFkZXIgIT0gbnVsbCIpOworICAgIGV2YWxBbmRMb2coImJ1aWxkZXIgPSBuZXcgQmxvYkJ1
aWxkZXIoKSIpOworICAgIGV2YWxBbmRMb2coInRlc3RfY29udGVudCA9ICdUaGlzIGlzIGEgdGVz
dC4gVGhpcyBpcyBvbmx5IGEgdGVzdC4nIik7CisgICAgZXZhbEFuZExvZygiYnVpbGRlci5hcHBl
bmQodGVzdF9jb250ZW50KSIpOworICAgIGV2YWxBbmRMb2coImJsb2IgPSBidWlsZGVyLmdldEJs
b2IoKSIpOworICAgIHZhbGlkYXRlRXhjZXB0aW9ucygiYmxvYiIsIHRlc3RGaWxlKTsKK30KKwor
ZnVuY3Rpb24gdGVzdEZpbGUoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEZp
bGUoKToiKTsKKyAgICBldmFsQW5kTG9nKCJmaWxlID0gZmlsZUlucHV0LmZpbGVzWzBdIik7Cisg
ICAgdmFsaWRhdGVFeGNlcHRpb25zKCJmaWxlIiwgdGVzdEZpbGVMaXN0KTsKK30KKworZnVuY3Rp
b24gdGVzdEZpbGVMaXN0KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3RGaWxl
TGlzdCgpOiIpOworICAgIGV2YWxBbmRMb2coImZpbGVsaXN0ID0gZmlsZUlucHV0LmZpbGVzIik7
CisgICAgdmFsaWRhdGVFeGNlcHRpb25zKCJmaWxlbGlzdCIsIGZpbmlzaEpTVGVzdCk7Cit9CisK
K2Z1bmN0aW9uIHZhbGlkYXRlRXhjZXB0aW9ucyh2YXJpYWJsZSwgb25Db21wbGV0ZSkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInZhbGlkYXRlRXhjZXB0aW9ucygiICsgdmFyaWFibGUg
KyAiKToiKTsKKyAgICBldmFsQW5kTG9nKCJ0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdz
dG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKSIpOworICAgIGV2YWxBbmRMb2co
InN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpIik7CisgICAgZXZh
bEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUucHV0KCIgKyB2YXJpYWJsZSArICIsICdrZXknKSIs
ICJET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5hZGQoIiArIHZhcmlhYmxlICsgIiwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5E
QVRBX0NMT05FX0VSUiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vy
c29yKCkiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ZXZhbEFuZExvZygiY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZEV4
cGVjdEV4Y2VwdGlvbigiY3Vyc29yLnVwZGF0ZSgiICsgdmFyaWFibGUgKyAiKSIsICJET01FeGNl
cHRpb24uREFUQV9DTE9ORV9FUlIiKTsKKyAgICB9OworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxl
dGUgPSBvbkNvbXBsZXRlOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdGVz
dCgpOworfSBlbHNlIHsKKyAgICBhbGVydCgiU2VsZWN0IGZpbGUocykgdXNpbmcgdGhlIGlucHV0
IGNvbnRyb2wgYWJvdmUgdG8gaW5pdGlhdGUgdGhlIHRlc3QiKTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZmlsZUlucHV0Iikub25jaGFuZ2UgPSB0ZXN0OworfQorCis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131964</attachid>
            <date>2012-03-14 17:48:20 -0700</date>
            <delta_ts>2012-03-15 13:26:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76746-20120314174819.patch</filename>
            <type>text/plain</type>
            <size>26065</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRlMDI5MzBhYTcxYzVk
YTQxMjJlOTY5Mzc1M2NmODczZTkzOTBmNi4uMjE1ZjEyMzljZmMwZGM2YWMyYWY0NDM4YTljYTA1
YzJkZDFiMzI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAzLTE0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEFzc2VydGlvbiBmYWlsdXJlIHdoZW4gc3RvcmluZyBGaWxlIG9iamVjdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzQ2CisKKyAgICAg
ICAgVGhlIGJsb2IgZGF0YSBpbiBCbG9iL0ZpbGUvRmlsZUxpc3Qgb2JqZWN0cyBpcyBzZXJpYWxp
emVkICJieSByZWZlcmVuY2UiICh0aGUKKyAgICAgICAgaW50ZXJuYWwgVVJMKSByYXRoZXIgdGhh
biAiYnkgdmFsdWUiICh0aGUgYWN0dWFsIGRhdGEpOyB0aGlzIGlzIHN1ZmZpY2llbnQgZm9yCisg
ICAgICAgIHBvc3RNZXNzYWdlKCkgYnV0IG5vdCBmb3IgSW5kZXhlZERCIHNpbmNlIHRoZSByZWZl
cmVuY2VkIGRhdGEgaXMgbm90IHJldGFpbmVkCisgICAgICAgIEV4cG9zZSBhIG1lY2hhbmlzbSB0
byBlbnVtZXJhdGUgdGhlIFVSTHMgc28gdGhhdCBTU1ZzIGNhbiBiZSByZWplY3RlZCBieSBJREIK
KyAgICAgICAgdW50aWwgYmxvYiBkYXRhIHNlcmlhbGl6YXRpb24gY2FuIGlzIGltcGxlbWVudGVk
IChvdXRzaWRlIHRoZSBTU1YgbWVjaGFuaXNtLCBhbmQKKyAgICAgICAgcG90ZW50aWFsbHkgYXN5
bmNocm9ub3VzbHkpLgorCisgICAgICAgIEFsc28sIGNvcnJlY3QgaXNzdWUgaW4gVjhET01XcmFw
cGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0IHdoZXJlIGNvbnRleHQgaXMgYXNzdW1lZAorICAgICAg
ICB0byBiZSBhIFdvcmtlciBjb250ZXh0IGlmIGl0J3Mgbm90IGEgV2luZG93LCB3aGljaCBpcyBp
bmNvcnJlY3QgZm9yIHRoZSAKKyAgICAgICAgQ2hyb21pdW0gdXRpbGl0eSBwcm9jZXNzOyB0aGlz
IGlzIGhpdCBpZiBCbG9icyBhcmUgbm90IGJsb2NrZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9i
cy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjp1cGRhdGUpOiBSZWplY3QgU1NWcyB0aGF0IGNvbnRh
aW4gYmxvYiByZWZlcmVuY2VzLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphZGQpOiBSZWpl
Y3QgU1NWcyB0aGF0IGNvbnRhaW4gYmxvYiByZWZlcmVuY2VzLgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OnB1dCk6IFJlamVjdCBTU1ZzIHRoYXQgY29udGFpbiBibG9iIHJlZmVy
ZW5jZXMuCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6Q2xvbmVTZXJpYWxpemVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVTZXJpYWxpemVyOjp3cml0ZSk6CisgICAgICAgIChDbG9uZVNlcmlhbGl6ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmJvb2xlYW5WYWx1
ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6IE5ldyBB
UEkgdG8gZW5hYmxlIHRoZSBjbGllbnRzIHRvIGJlIHBpY2t5LgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6IE5ldyBBUEkgdG8gZW5hYmxlIHRoZSBjbGll
bnRzIHRvIGJlIHBpY2t5LgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpibG9iVVJMcyk6CisgICAgICAgIChTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdy
YXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QpOiAgRW5zdXJlIGNvbnRleHQgaXMgYSB3b3JrZXIg
Y29udGV4dCBiZWZvcmUgdHJlYXRpbmcgaXQgYXMgc3VjaC4KKwogMjAxMi0wMy0xMyAgQWRyaWVu
bmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWFyayBy
b290IGxheWVyIHNjcm9sbGJhcnMgYXMgYWx3YXlzIG9wYXF1ZSB0byBkaXNhYmxlIGJsZW5kaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRl
eCBlN2EwMWVjYjc5YThhODhjYjUyZDQ5NzllNTQxOTdiYzE5NjM0ZWU5Li4yNzRmOTk1YzcyZGIz
MjEyMDdmYjU3MjA4MDU3YzZjN2Y0ZGI5ODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTkxLDkgKzkxLDE3IEBAIElEQkFueSogSURC
Q3Vyc29yOjpzb3VyY2UoKSBjb25zdAogICAgIHJldHVybiBtX3NvdXJjZS5nZXQoKTsKIH0KIAot
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVw
ZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9U
UkFDRSgiSURCQ3Vyc29yOjp1cGRhdGUiKTsKKworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CisgICAgaWYgKHZhbHVlLT5ibG9iVVJMcygpLnNpemUo
KSA+IDApIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0ZpbGUvRmlsZUxpc3Qgc3VwcG9y
dAorICAgICAgICBlYyA9IERBVEFfQ0xPTkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShj
b250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAg
bV9iYWNrZW5kLT51cGRhdGUodmFsdWUsIHJlcXVlc3QsIGVjKTsKICAgICBpZiAoZWMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNw
cAppbmRleCAzYTVhMDczNmJkMjYzMmQzMjYyNGQ0NjhhOGRmN2Q2ZWU4NDQ0NmNkLi5kZjkyNmY0
NTljNjQ4YjNiZTVjYjI2MmU3MTMxMWMwYmQ1ZGI4YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC05NSw3ICs5NSw3
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgp
OwogfQogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFs
dWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElE
Ql9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwogICAgIGlmIChrZXkgJiYgKGtleS0+dHlw
ZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CkBAIC0xMDMsNiArMTAzLDEzIEBAIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CisgICAgaWYgKHZhbHVl
LT5ibG9iVVJMcygpLnNpemUoKSA+IDApIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0Zp
bGUvRmlsZUxpc3Qgc3VwcG9ydAorICAgICAgICBlYyA9IERBVEFfQ0xPTkVfRVJSOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElE
QlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5wdXQodmFsdWUsIGtleSwgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlOjpBZGRPbmx5LCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNr
ZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTExMiw3ICsxMTksNyBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzcwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9i
amVjdFN0b3JlOjpwdXQiKTsKICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6
OkludmFsaWRUeXBlKSkgewpAQCAtMTIwLDYgKzEyNywxMyBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzcwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOworICAgIGlmICh2YWx1ZS0+YmxvYlVSTHMoKS5z
aXplKCkgPiAwKSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgQmxvYi9GaWxlL0ZpbGVMaXN0IHN1
cHBvcnQKKyAgICAgICAgZWMgPSBEQVRBX0NMT05FX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgIG1fYmFja2VuZC0+cHV0KHZhbHVlLCBrZXksIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZTo6QWRkT3JVcGRhdGUsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMp
OwogICAgIGlmIChlYykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZTIzNTk0NTU4NjQ1ODY4YzlkMGFmYzgxNTdk
OWI2NzQwZTU1YmM4ZC4uOTZhZWRkZDM4YmRlYWU0OTIxZDE4MDliNTE3MzIwYjliODdjM2JlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC0zMjEsOSArMzIxLDkgQEAgY2xhc3MgQ2xvbmVTZXJpYWxpemVyIDogQ2xv
bmVCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgU2VyaWFsaXphdGlvblJldHVybkNvZGUgc2Vy
aWFsaXplKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0
cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlCdWZmZXJzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
THMsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQogICAgIHsKLSAgICAgICAgQ2xvbmVTZXJpYWxpemVy
IHNlcmlhbGl6ZXIoZXhlYywgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIG91dCk7CisgICAg
ICAgIENsb25lU2VyaWFsaXplciBzZXJpYWxpemVyKGV4ZWMsIG1lc3NhZ2VQb3J0cywgYXJyYXlC
dWZmZXJzLCBibG9iVVJMcywgb3V0KTsKICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZXIuc2VyaWFs
aXplKHZhbHVlKTsKICAgICB9CiAKQEAgLTM1NCw5ICszNTQsMTAgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8SlNPYmplY3QqLCB1aW50MzJfdD4gT2JqZWN0UG9vbDsK
IAotICAgIENsb25lU2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIE1lc3NhZ2VQb3J0QXJyYXkq
IG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlCdWZmZXJzLCBWZWN0b3I8dWlu
dDhfdD4mIG91dCkKKyAgICBDbG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBNZXNzYWdl
UG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBWZWN0b3I8dWludDhfdD4mIG91dCkKICAgICAgICAg
OiBDbG9uZUJhc2UoZXhlYykKICAgICAgICAgLCBtX2J1ZmZlcihvdXQpCisgICAgICAgICwgbV9i
bG9iVVJMcyhibG9iVVJMcykKICAgICAgICAgLCBtX2VtcHR5SWRlbnRpZmllcihleGVjLCBVU3Ry
aW5nKCIiLCAwKSkKICAgICB7CiAgICAgICAgIHdyaXRlKEN1cnJlbnRWZXJzaW9uKTsKQEAgLTU4
Niw2ICs1ODcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHdyaXRlKGJsb2ItPnVybCgp
KTsKICAgICAgICAgICAgICAgICB3cml0ZShibG9iLT50eXBlKCkpOwogICAgICAgICAgICAgICAg
IHdyaXRlKGJsb2ItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQo
YmxvYi0+dXJsKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHMoJkpTSW1hZ2VEYXRhOjpzX2luZm8pKSB7
CkBAIC03NjcsNiArNzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd3JpdGUoY29uc3QgRmls
ZSogZmlsZSkKICAgICB7CisgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKGZpbGUtPnVybCgpKTsK
ICAgICAgICAgd3JpdGUoZmlsZS0+cGF0aCgpKTsKICAgICAgICAgd3JpdGUoZmlsZS0+dXJsKCkp
OwogICAgICAgICB3cml0ZShmaWxlLT50eXBlKCkpOwpAQCAtNzc4LDYgKzc4MSw3IEBAIHByaXZh
dGU6CiAgICAgfQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8
U3RyaW5nPiYgbV9ibG9iVVJMczsKICAgICBPYmplY3RQb29sIG1fb2JqZWN0UG9vbDsKICAgICBP
YmplY3RQb29sIG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3Ry
YW5zZmVycmVkQXJyYXlCdWZmZXJzOwpAQCAtMTY1NywxNSArMTY2MSwxNyBAQCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKQogewogfQogCi1TZXJpYWxpemVk
U2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mIGJ1ZmZl
cikKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1
aW50OF90PiYgYnVmZmVyLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMpCiB7CiAgICAgbV9kYXRh
LnN3YXAoYnVmZmVyKTsKKyAgICBtX2Jsb2JVUkxzLnN3YXAoYmxvYlVSTHMpOwogfQogCi1TZXJp
YWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4m
IGJ1ZmZlciwgUGFzc093blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVy
Q29udGVudHNBcnJheSkKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFBh
c3NPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkpCiAgICAgOiBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShhcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXkpCiB7CiAgICAgbV9kYXRhLnN3YXAoYnVmZmVyKTsKKyAgICBtX2Jsb2JVUkxzLnN3YXAo
YmxvYlVSTHMpOwogfQogCiBQYXNzT3duUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRyYW5zZmVyQXJyYXlC
dWZmZXJzKApAQCAtMTcwMyw3ICsxNzA5LDggQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKICAgICBWZWN0
b3I8dWludDhfdD4gYnVmZmVyOwotICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUgPSBD
bG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJh
eUJ1ZmZlcnMsIGJ1ZmZlcik7CisgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHM7CisgICAgU2Vy
aWFsaXphdGlvblJldHVybkNvZGUgY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKGV4
ZWMsIHZhbHVlLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywgYmxvYlVSTHMsIGJ1ZmZlcik7
CiAKICAgICBPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBhcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk7CiAKQEAgLTE3MTYsMjEgKzE3MjMsMjMgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywKICAgICBpZiAoIXNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShjb2RlKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShidWZmZXIsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlKCkpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIsIGJs
b2JVUkxzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZSgpKSk7CiB9CiAKIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSgpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBi
bG9iVVJMczsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShi
dWZmZXIsIGJsb2JVUkxzKSk7CiB9CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyOworICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxz
OwogICAgIGlmICghQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoc3RyaW5nLCBidWZmZXIpKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShidWZmZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShidWZmZXIsIGJsb2JVUkxzKSk7CiB9CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKQEAgLTE4NDEsMTUgKzE4NTAsMTcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1ZSgpCiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKKyAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMczsKICAg
ICBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZVVuZGVmaW5lZChidWZmZXIpOwotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKGJ1ZmZlcikpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKGJ1ZmZlciwgYmxvYlVSTHMpKTsK
IH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Ym9vbGVhblZhbHVlKGJvb2wgdmFsdWUpCiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1
ZmZlcjsKKyAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMczsKICAgICBDbG9uZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZUJvb2xlYW4odmFsdWUsIGJ1ZmZlcik7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVyLCBibG9iVVJMcykpOwogfQogCiB2b2lkIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZh
aWxlZChFeGVjU3RhdGUqIGV4ZWMsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmlu
ZGV4IDg1OGU4YzljMjQwMzliYjdjZjE2ZWExNTdjNDM1YjRhMmVhOWIxM2MuLjFhMzUzZDc2OGU1
OThmY2E0N2Y5OGEyYWJmOWUyYTYxMTY4MjMzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC03Myw3ICs3Myw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoYnVmZmVyKSk7CisgICAgICAg
IFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxzOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIsIGJsb2JVUkxzKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoKTsKQEAgLTkyLDYg
KzkzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEoKSB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVS
THMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JVUkxzOyB9CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNy
ZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CkBAIC0xMDgsMTEgKzExMCwxMiBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6
YXRpb25GYWlsZWQoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSk7CiAg
ICAgc3RhdGljIGJvb2wgc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5KFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk+IHRyYW5zZmVyQXJyYXlCdWZmZXJzKEFycmF5QnVmZmVyQXJyYXkmLCBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSYpOwotICAgIAotICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShW
ZWN0b3I8dW5zaWduZWQgY2hhcj4mKTsKLSAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiwgUGFzc093blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KTsK
KworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mLCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMpOworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8
dW5zaWduZWQgY2hhcj4mLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFBhc3NPd25QdHI8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5Pik7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0
YTsKICAgICBPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX2FycmF5QnVmZmVyQ29u
dGVudHNBcnJheTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggYzY3MzhjZGM0NTU5MTQ2NDhmZmQwYTc1ZTAyYWIwOGU3NGIwZjFiYy4uOTNhNDg4
NzcwNDI5YmIzODQ3NmFjNWYzMzM0ZDg4MTNhMGFhNDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC02MDYsMTMg
KzYwNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIEpTRmFpbHVyZQogICAgIH07CiAKLSAgICBTZXJp
YWxpemVyKFdyaXRlciYgd3JpdGVyLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFy
cmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywgdjg6OlRyeUNhdGNoJiB0cnlDYXRjaCkKKyAg
ICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVyLCBNZXNzYWdlUG9ydEFycmF5KiBtZXNzYWdlUG9y
dHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzLCB2ODo6VHJ5Q2F0Y2gmIHRyeUNhdGNoKQogICAgICAgICA6IG1fd3JpdGVyKHdyaXRlcikK
ICAgICAgICAgLCBtX3RyeUNhdGNoKHRyeUNhdGNoKQogICAgICAgICAsIG1fZGVwdGgoMCkKICAg
ICAgICAgLCBtX2V4ZWNEZXB0aCgwKQogICAgICAgICAsIG1fc3RhdHVzKFN1Y2Nlc3MpCiAgICAg
ICAgICwgbV9uZXh0T2JqZWN0UmVmZXJlbmNlKDApCisgICAgICAgICwgbV9ibG9iVVJMcyhibG9i
VVJMcykKICAgICB7CiAgICAgICAgIEFTU0VSVCghdHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpOwogICAg
ICAgICBpZiAobWVzc2FnZVBvcnRzKSB7CkBAIC05NzcsNiArOTc4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKCFibG9iKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3dyaXRlci53
cml0ZUJsb2IoYmxvYi0+dXJsKCkuc3RyaW5nKCksIGJsb2ItPnR5cGUoKSwgYmxvYi0+c2l6ZSgp
KTsKKyAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQoYmxvYi0+dXJsKCkuc3RyaW5nKCkpOwogICAg
IH0KIAogICAgIHZvaWQgd3JpdGVGaWxlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKQEAg
LTk4NSw2ICs5ODcsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWZpbGUpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIG1fd3JpdGVyLndyaXRlRmlsZShmaWxlLT5wYXRoKCksIGZpbGUt
PnVybCgpLnN0cmluZygpLCBmaWxlLT50eXBlKCkpOworICAgICAgICBtX2Jsb2JVUkxzLmFwcGVu
ZChmaWxlLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgfQogCiAgICAgdm9pZCB3cml0ZUZpbGVMaXN0
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTk5Myw2ICs5OTYsOSBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoIWZpbGVMaXN0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBt
X3dyaXRlci53cml0ZUZpbGVMaXN0KCpmaWxlTGlzdCk7CisgICAgICAgIHVpbnQzMl90IGxlbmd0
aCA9IGZpbGVMaXN0LT5sZW5ndGgoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQoZmlsZUxpc3QtPml0
ZW0oaSktPnVybCgpLnN0cmluZygpKTsKICAgICB9CiAKICAgICB2b2lkIHdyaXRlSW1hZ2VEYXRh
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTExMTEsNiArMTExNyw3IEBAIHByaXZh
dGU6CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzOwogICAgIE9iamVj
dFBvb2wgbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVyczsKICAgICB1aW50MzJfdCBtX25leHRPYmpl
Y3RSZWZlcmVuY2U7CisgICAgVmVjdG9yPFN0cmluZz4mIG1fYmxvYlVSTHM7CiB9OwogCiBTZXJp
YWxpemVyOjpTdGF0ZUJhc2UqIFNlcmlhbGl6ZXI6OmRvU2VyaWFsaXplKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgU3RhdGVCYXNlKiBuZXh0KQpAQCAtMjIwNCw3ICsyMjExLDcgQEAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLAogICAgIFNlcmlhbGl6ZXI6OlN0YXR1cyBzdGF0dXM7CiAgICAgewogICAg
ICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXpl
cih3cml0ZXIsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCB0cnlDYXRjaCk7CisgICAgICAg
IFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJz
LCBtX2Jsb2JVUkxzLCB0cnlDYXRjaCk7CiAgICAgICAgIHN0YXR1cyA9IHNlcmlhbGl6ZXIuc2Vy
aWFsaXplKHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXR1cyA9PSBTZXJpYWxpemVyOjpKU0V4Y2Vw
dGlvbikgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgSlMgZXhjZXB0aW9uIHRocm93
biwgcmUtdGhyb3cgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDY4YjE5NTRkNWY1MTExZTE4NThlMjI5MDhiZjE5MTQy
YjgyNzYzOTQuLjdmNmI5ZTAzZmEzZjI1NmMxMmZmNmM2YmFiZTNlZjRmM2Q3MzlhYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
CkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICBTY3JpcHRWYWx1ZSBkZXNlcmlhbGl6ZUZv
ckluc3BlY3RvcihTY3JpcHRTdGF0ZSopOwogI2VuZGlmCiAKKyAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JVUkxzOyB9CisKIHByaXZhdGU6
CiAgICAgZW51bSBTdHJpbmdEYXRhTW9kZSB7CiAgICAgICAgIFN0cmluZ1ZhbHVlLApAQCAtOTUs
NiArOTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1fZGF0YTsKICAgICBPd25QdHI8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PiBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggYzk5NTI3
NGNiNGJmMWRlMjc3MzUyNDJmYmRkYzIxMDJkZjdhNTlmYS4uYTNhNDFkZWQ4ODdlNTQ1NjJjMWVj
NmUyYWJiMTZhNmM0MzU2YjRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IFY4
RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChWOFByb3h5KiBwcm94eSwgV3JhcHBlclQK
ICAgICAgICAgICAgICAgICAgICAgcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShmcmFtZSk7CiAg
ICAgICAgICAgICB9CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICBlbHNlIGlmIChpc1dyYXBwZXJPZlR5cGUoZ2xvYmFsUHJvdG90eXBlLCAmVjhXb3Jr
ZXJDb250ZXh0OjppbmZvKSkKICAgICAgICAgICAgICAgICB3b3JrZXJDb250ZXh0ID0gVjhXb3Jr
ZXJDb250ZXh0Ojp0b05hdGl2ZShsb29rdXBET01XcmFwcGVyKFY4V29ya2VyQ29udGV4dDo6R2V0
VGVtcGxhdGUoKSwgY29udGV4dC0+R2xvYmFsKCkpKTsKICNlbmRpZgogICAgICAgICB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOWMxYjlkNWY0YWI4MWYwMjMxNmM1NGMzMDg5NmFmMmE0MGVkMWFkMC4uYjRjNzMwYzJkYjZh
ZTM2NDU5YmEwMzYxZjA4ZWNhZGMxNDQwOWEwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEy
LTAzLTE0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0No
cm9taXVtXSBJbmRleGVkREI6IEFzc2VydGlvbiBmYWlsdXJlIHdoZW4gc3RvcmluZyBGaWxlIG9i
amVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NzQ2CisKKyAgICAgICAgRW5zdXJlIHRoYXQgQmxvYi9GaWxlL0ZpbGVMaXN0IHR5cGVzIGFyZSBy
ZWplY3RlZCBpbiBJREIgdmFsdWVzLCB0byBkZXRlY3QgcmVncmVzc2lvbnMuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9ub2Jsb2JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvbm9ibG9icy5odG1sOiBBZGRlZC4KKwogMjAxMi0wMy0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEZvciBzb21lIHJlYXNvbiBjaHJvbWl1bS13aW4gYW5k
IGNocm9taXVtLWxpbnV4IGhhdmUgYSBkaWZmZXJlbnQgbnVtYmVyCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4
NjMzODhmODZiNmFhMTQyMDY4ZDZkMTFhY2FiNmMzNTExNDAxYmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDgzIEBACisKK0NvbmZpcm0gQmxvYi9GaWxlL0ZpbGVMaXN0IGxpbWl0YXRpb25zIG9m
IFdlYktpdCdzIEluZGV4ZWREQiBpbXBsZW1lbnRhdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtp
dEluZGV4ZWREQgorUEFTUyBpbmRleGVkREIgIT0gbnVsbCBpcyB0cnVlCitJREJUcmFuc2FjdGlv
biA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cud2Via2l0SURCVHJhbnNhY3Rpb24K
K1BBU1MgSURCVHJhbnNhY3Rpb24gIT0gbnVsbCBpcyB0cnVlCisKK1ByZXBhcmUgRGF0YWJhc2UK
K2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnbm9ibG9icycpCitpbmRleGVkREIub3Blbignbm9i
bG9icycpCitkYiA9IHJlcXVlc3QucmVzdWx0CitQQVNTIGRiLnZlcnNpb24gaXMgIiIKK2RiLnNl
dFZlcnNpb24oJzEnKQorc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykK
K3N0b3JlLnB1dCgndmFsdWUnLCAna2V5JykKKwordGVzdEJsb2IoKToKK0Jsb2JCdWlsZGVyID0g
d2luZG93LkJsb2JCdWlsZGVyIHx8IHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcgorUEFTUyBCbG9i
QnVpbGRlciAhPSBudWxsIGlzIHRydWUKK1BBU1MgRmlsZVJlYWRlciAhPSBudWxsIGlzIHRydWUK
K2J1aWxkZXIgPSBuZXcgQmxvYkJ1aWxkZXIoKQordGVzdF9jb250ZW50ID0gJ1RoaXMgaXMgYSB0
ZXN0LiBUaGlzIGlzIG9ubHkgYSB0ZXN0LicKK2J1aWxkZXIuYXBwZW5kKHRlc3RfY29udGVudCkK
K2Jsb2IgPSBidWlsZGVyLmdldEJsb2IoKQorCit2YWxpZGF0ZUV4Y2VwdGlvbnMoYmxvYik6Cit0
cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlvbi5S
RUFEX1dSSVRFKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykK
K0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5wdXQoYmxvYiwgJ2tleScpCitQQVNTIEV4
Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05F
X0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmFkZChibG9iLCAna2V5JykKK1BB
U1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFf
Q0xPTkVfRVJSCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpCitjdXJzb3IgPSByZXF1ZXN0
LnJlc3VsdAorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGN1cnNvci51cGRhdGUoYmxvYikKK1BB
U1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFf
Q0xPTkVfRVJSCisKK3Rlc3RGaWxlKCk6CitmaWxlID0gZmlsZUlucHV0LmZpbGVzWzBdCisKK3Zh
bGlkYXRlRXhjZXB0aW9ucyhmaWxlKToKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0
b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpCitzdG9yZSA9IHRyYW5zYWN0aW9u
Lm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
LnB1dChmaWxlLCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUg
aXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
c3RvcmUuYWRkKGZpbGUsICdrZXknKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
Y29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIKK3JlcXVlc3QgPSBzdG9yZS5vcGVu
Q3Vyc29yKCkKK2N1cnNvciA9IHJlcXVlc3QucmVzdWx0CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gY3Vyc29yLnVwZGF0ZShmaWxlKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
Y29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIKKwordGVzdEZpbGVMaXN0KCk6Citm
aWxlbGlzdCA9IGZpbGVJbnB1dC5maWxlcworCit2YWxpZGF0ZUV4Y2VwdGlvbnMoZmlsZWxpc3Qp
OgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3RvcmVOYW1lJywgSURCVHJhbnNhY3Rp
b24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUucHV0KGZpbGVsaXN0LCAna2V5JykK
K1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRB
VEFfQ0xPTkVfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKGZpbGVsaXN0
LCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhj
ZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNvcigpCitjdXJz
b3IgPSByZXF1ZXN0LnJlc3VsdAorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGN1cnNvci51cGRh
dGUoZmlsZWxpc3QpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERP
TUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL25vYmxvYnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25vYmxv
YnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNjIwZjZhYzU4NmZhODQyZWU1NTVmN2EzZjZlZDkxNGE4Zjk3
YWIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9i
bG9icy5odG1sCkBAIC0wLDAgKzEsMTE4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlSW5wdXQiIG11bHRpcGxlPjwvaW5wdXQ+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
KworZGVzY3JpcHRpb24oIkNvbmZpcm0gQmxvYi9GaWxlL0ZpbGVMaXN0IGxpbWl0YXRpb25zIG9m
IFdlYktpdCdzIEluZGV4ZWREQiBpbXBsZW1lbnRhdGlvbi4iKTsKKy8vIEZJWE1FOiBUaGlzIHZl
cmlmaWVzIHRoYXQgYmxvYi10eXBlIGRhdGEgaXMgcmVqZWN0ZWQgZm9yIG5vdywgcmF0aGVyIHRo
YW4gc2lsZW50bHkgZmFpbGluZy4KKy8vIFRyYWNrZWQgZm9yIHRoZSBDaHJvbWl1bSBwb3J0IGFz
OiBodHRwOi8vY3JidWcuY29tLzEwODAxMgorCitmaWxlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZmlsZUlucHV0Iik7CitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdmFy
IGZpbGVSZWN0ID0gZmlsZUlucHV0LmdldENsaWVudFJlY3RzKClbMF07CisgICAgdmFyIHRhcmdl
dFggPSBmaWxlUmVjdC5sZWZ0ICsgZmlsZVJlY3Qud2lkdGggLyAyOworICAgIHZhciB0YXJnZXRZ
ID0gZmlsZVJlY3QudG9wICsgZmlsZVJlY3QuaGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5i
ZWdpbkRyYWdXaXRoRmlsZXMoWydyZXNvdXJjZXMvdGVzdC1kYXRhLmh0bWwnLCAncmVzb3VyY2Vz
L3Rlc3QtZGF0YS50eHQnXSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8odGFyZ2V0WCwg
dGFyZ2V0WSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworfQorCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdp
bmRvdy53ZWJraXRJbmRleGVkREIiKTsKKyAgICBzaG91bGRCZVRydWUoImluZGV4ZWREQiAhPSBu
dWxsIik7CisgICAgZXZhbEFuZExvZygiSURCVHJhbnNhY3Rpb24gPSB3aW5kb3cuSURCVHJhbnNh
Y3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9uIik7CisgICAgc2hvdWxkQmVUcnVl
KCJJREJUcmFuc2FjdGlvbiAhPSBudWxsIik7CisgICAgcHJlcGFyZURhdGFiYXNlKCk7Cit9CisK
K2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVn
KCJQcmVwYXJlIERhdGFiYXNlIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZSgnbm9ibG9icycpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihl
KSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbignbm9ibG9i
cycpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICIiKTsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBl
dmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygic3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgICAgICAgICBl
dmFsQW5kTG9nKCJzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScpIik7CisgICAgICAgICAgICAgICAg
dmFyIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgICAgICAgICAgdHJhbnMub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgICAgIHRyYW5zLm9uYWJv
cnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgICAgICAgICB0cmFucy5vbmNv
bXBsZXRlID0gdGVzdEJsb2IoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsK
K30KKworZnVuY3Rpb24gdGVzdEJsb2IoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygi
dGVzdEJsb2IoKToiKTsKKworICAgIGV2YWxBbmRMb2coIkJsb2JCdWlsZGVyID0gd2luZG93LkJs
b2JCdWlsZGVyIHx8IHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlciIpOworICAgIHNob3VsZEJlVHJ1
ZSgiQmxvYkJ1aWxkZXIgIT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgiRmlsZVJlYWRlciAh
PSBudWxsIik7CisgICAgZXZhbEFuZExvZygiYnVpbGRlciA9IG5ldyBCbG9iQnVpbGRlcigpIik7
CisgICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlz
IG9ubHkgYSB0ZXN0LiciKTsKKyAgICBldmFsQW5kTG9nKCJidWlsZGVyLmFwcGVuZCh0ZXN0X2Nv
bnRlbnQpIik7CisgICAgZXZhbEFuZExvZygiYmxvYiA9IGJ1aWxkZXIuZ2V0QmxvYigpIik7Cisg
ICAgdmFsaWRhdGVFeGNlcHRpb25zKCJibG9iIiwgdGVzdEZpbGUpOworfQorCitmdW5jdGlvbiB0
ZXN0RmlsZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0RmlsZSgpOiIpOwor
ICAgIGV2YWxBbmRMb2coImZpbGUgPSBmaWxlSW5wdXQuZmlsZXNbMF0iKTsKKyAgICB2YWxpZGF0
ZUV4Y2VwdGlvbnMoImZpbGUiLCB0ZXN0RmlsZUxpc3QpOworfQorCitmdW5jdGlvbiB0ZXN0Rmls
ZUxpc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEZpbGVMaXN0KCk6Iik7
CisgICAgZXZhbEFuZExvZygiZmlsZWxpc3QgPSBmaWxlSW5wdXQuZmlsZXMiKTsKKyAgICB2YWxp
ZGF0ZUV4Y2VwdGlvbnMoImZpbGVsaXN0IiwgZmluaXNoSlNUZXN0KTsKK30KKworZnVuY3Rpb24g
dmFsaWRhdGVFeGNlcHRpb25zKHZhcmlhYmxlLCBvbkNvbXBsZXRlKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygidmFsaWRhdGVFeGNlcHRpb25zKCIgKyB2YXJpYWJsZSArICIpOiIpOwor
ICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScs
IElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSB0
cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJzdG9yZS5wdXQoIiArIHZhcmlhYmxlICsgIiwgJ2tleScpIiwgIkRPTUV4Y2Vw
dGlvbi5EQVRBX0NMT05FX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3Jl
LmFkZCgiICsgdmFyaWFibGUgKyAiLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVf
RVJSIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3IoKSIpOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFsQW5kTG9n
KCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJjdXJzb3IudXBkYXRlKCIgKyB2YXJpYWJsZSArICIpIiwgIkRPTUV4Y2VwdGlvbi5EQVRB
X0NMT05FX0VSUiIpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IG9uQ29t
cGxldGU7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB0ZXN0KCk7Cit9IGVs
c2UgeworICAgIGFsZXJ0KCJTZWxlY3QgZmlsZShzKSB1c2luZyB0aGUgaW5wdXQgY29udHJvbCBh
Ym92ZSB0byBpbml0aWF0ZSB0aGUgdGVzdCIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJmaWxlSW5wdXQiKS5vbmNoYW5nZSA9IHRlc3Q7Cit9CisKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132110</attachid>
            <date>2012-03-15 13:26:44 -0700</date>
            <delta_ts>2012-03-16 11:27:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76746-20120315132643.patch</filename>
            <type>text/plain</type>
            <size>24433</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRlMDI5MzBhYTcxYzVk
YTQxMjJlOTY5Mzc1M2NmODczZTkzOTBmNi4uNzViYzY1OTBiYTdhMmU4Y2ZiNTVjN2ZiNTBjZDcw
ZGUxYjIyMzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAzLTE0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEFzc2VydGlvbiBmYWlsdXJlIHdoZW4gc3RvcmluZyBGaWxlIG9iamVjdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzQ2CisKKyAgICAg
ICAgVGhlIGJsb2IgZGF0YSBpbiBCbG9iL0ZpbGUvRmlsZUxpc3Qgb2JqZWN0cyBpcyBzZXJpYWxp
emVkICJieSByZWZlcmVuY2UiICh0aGUKKyAgICAgICAgaW50ZXJuYWwgVVJMKSByYXRoZXIgdGhh
biAiYnkgdmFsdWUiICh0aGUgYWN0dWFsIGRhdGEpOyB0aGlzIGlzIHN1ZmZpY2llbnQgZm9yCisg
ICAgICAgIHBvc3RNZXNzYWdlKCkgYnV0IG5vdCBmb3IgSW5kZXhlZERCIHNpbmNlIHRoZSByZWZl
cmVuY2VkIGRhdGEgaXMgbm90IHJldGFpbmVkCisgICAgICAgIEV4cG9zZSBhIG1lY2hhbmlzbSB0
byBlbnVtZXJhdGUgdGhlIFVSTHMgc28gdGhhdCBTU1ZzIGNhbiBiZSByZWplY3RlZCBieSBJREIK
KyAgICAgICAgdW50aWwgYmxvYiBkYXRhIHNlcmlhbGl6YXRpb24gY2FuIGlzIGltcGxlbWVudGVk
IChvdXRzaWRlIHRoZSBTU1YgbWVjaGFuaXNtLCBhbmQKKyAgICAgICAgcG90ZW50aWFsbHkgYXN5
bmNocm9ub3VzbHkpLgorCisgICAgICAgIEFsc28sIGNvcnJlY3QgaXNzdWUgaW4gVjhET01XcmFw
cGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0IHdoZXJlIGNvbnRleHQgaXMgYXNzdW1lZAorICAgICAg
ICB0byBiZSBhIFdvcmtlciBjb250ZXh0IGlmIGl0J3Mgbm90IGEgV2luZG93LCB3aGljaCBpcyBp
bmNvcnJlY3QgZm9yIHRoZQorICAgICAgICBDaHJvbWl1bSB1dGlsaXR5IHByb2Nlc3M7IHRoaXMg
aXMgaGl0IGlmIEJsb2JzIGFyZSBub3QgYmxvY2tlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2Jz
Lmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnVwZGF0ZSk6IFJlamVjdCBTU1ZzIHRoYXQgY29udGFp
biBibG9iIHJlZmVyZW5jZXMuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmFkZCk6IFJlamVj
dCBTU1ZzIHRoYXQgY29udGFpbiBibG9iIHJlZmVyZW5jZXMuCisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZTo6cHV0KTogUmVqZWN0IFNTVnMgdGhhdCBjb250YWluIGJsb2IgcmVmZXJl
bmNlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpDbG9uZVNlcmlhbGl6ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZVNlcmlhbGl6ZXI6OndyaXRlKToKKyAgICAgICAgKENsb25lU2VyaWFsaXplcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnVuZGVmaW5lZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Ym9vbGVhblZhbHVl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDogTmV3IEFQ
SSB0byBlbmFibGUgdGhlIGNsaWVudHMgdG8gYmUgcGlja3kuCisgICAgICAgICogYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaDogTmV3IEFQSSB0byBlbmFibGUgdGhlIGNsaWVu
dHMgdG8gYmUgcGlja3kuCisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmJsb2JVUkxzKToKKyAgICAgICAgKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3Jh
cHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdCk6ICBFbnN1cmUgY29udGV4dCBpcyBhIHdvcmtlciBj
b250ZXh0IGJlZm9yZSB0cmVhdGluZyBpdCBhcyBzdWNoLgorCiAyMDEyLTAzLTEzICBBZHJpZW5u
ZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBNYXJrIHJv
b3QgbGF5ZXIgc2Nyb2xsYmFycyBhcyBhbHdheXMgb3BhcXVlIHRvIGRpc2FibGUgYmxlbmRpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4
IGU3YTAxZWNiNzlhOGE4OGNiNTJkNDk3OWU1NDE5N2JjMTk2MzRlZTkuLjI3NGY5OTVjNzJkYjMy
MTIwN2ZiNTcyMDgwNTdjNmM3ZjRkYjk4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtOTEsOSArOTEsMTcgQEAgSURCQW55KiBJREJD
dXJzb3I6OnNvdXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc291cmNlLmdldCgpOwogfQogCi1Q
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBk
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJDdXJzb3I6OnVwZGF0ZSIpOworCisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKKyAgICBpZiAodmFsdWUtPmJsb2JVUkxzKCkuc2l6ZSgp
ID4gMCkgeworICAgICAgICAvLyBGSVhNRTogQWRkIEJsb2IvRmlsZS9GaWxlTGlzdCBzdXBwb3J0
CisgICAgICAgIGVjID0gREFUQV9DTE9ORV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNv
bnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBt
X2JhY2tlbmQtPnVwZGF0ZSh2YWx1ZSwgcmVxdWVzdCwgZWMpOwogICAgIGlmIChlYykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CmluZGV4IDNhNWEwNzM2YmQyNjMyZDMyNjI0ZDQ2OGE4ZGY3ZDZlZTg0NDQ2Y2QuLmRmOTI2ZjQ1
OWM2NDhiM2JlNWNiMjYyZTcxMzExYzBiZDVkYjhhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7
CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1
ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZTo6YWRkIik7CiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBl
KCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKQEAgLTEwMyw2ICsxMDMsMTMgQEAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3MKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKKyAgICBpZiAodmFsdWUt
PmJsb2JVUkxzKCkuc2l6ZSgpID4gMCkgeworICAgICAgICAvLyBGSVhNRTogQWRkIEJsb2IvRmls
ZS9GaWxlTGlzdCBzdXBwb3J0CisgICAgICAgIGVjID0gREFUQV9DTE9ORV9FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0
aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPnB1dCh2YWx1ZSwga2V5LCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9ubHksIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tl
bmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAtMTEyLDcgKzExOSw3IEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzCiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2Jq
ZWN0U3RvcmU6OnB1dCIpOwogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6
SW52YWxpZFR5cGUpKSB7CkBAIC0xMjAsNiArMTI3LDEzIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CisgICAgaWYgKHZhbHVlLT5ibG9iVVJMcygpLnNp
emUoKSA+IDApIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0ZpbGUvRmlsZUxpc3Qgc3Vw
cG9ydAorICAgICAgICBlYyA9IERBVEFfQ0xPTkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAg
ICAgbV9iYWNrZW5kLT5wdXQodmFsdWUsIGtleSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlOjpBZGRPclVwZGF0ZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7
CiAgICAgaWYgKGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBlMjM1OTQ1NTg2NDU4NjhjOWQwYWZjODE1N2Q5
YjY3NDBlNTViYzhkLi45NmYwYTgxNDg3NDEzN2Y1MjViYzQ5NTM2ZTMxNDJmYTE4ODIyZWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKQEAgLTMyMSw5ICszMjEsOSBAQCBjbGFzcyBDbG9uZVNlcmlhbGl6ZXIgOiBDbG9u
ZUJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBzZXJp
YWxpemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRz
LCBBcnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4mIG91dCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJM
cywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCiAgICAgewotICAgICAgICBDbG9uZVNlcmlhbGl6ZXIg
c2VyaWFsaXplcihleGVjLCBtZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVycywgb3V0KTsKKyAgICAg
ICAgQ2xvbmVTZXJpYWxpemVyIHNlcmlhbGl6ZXIoZXhlYywgbWVzc2FnZVBvcnRzLCBhcnJheUJ1
ZmZlcnMsIGJsb2JVUkxzLCBvdXQpOwogICAgICAgICByZXR1cm4gc2VyaWFsaXplci5zZXJpYWxp
emUodmFsdWUpOwogICAgIH0KIApAQCAtMzU0LDkgKzM1NCwxMCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHR5cGVkZWYgSGFzaE1hcDxKU09iamVjdCosIHVpbnQzMl90PiBPYmplY3RQb29sOwog
Ci0gICAgQ2xvbmVTZXJpYWxpemVyKEV4ZWNTdGF0ZSogZXhlYywgTWVzc2FnZVBvcnRBcnJheSog
bWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBhcnJheUJ1ZmZlcnMsIFZlY3Rvcjx1aW50
OF90PiYgb3V0KQorICAgIENsb25lU2VyaWFsaXplcihFeGVjU3RhdGUqIGV4ZWMsIE1lc3NhZ2VQ
b3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlCdWZmZXJzLCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIFZlY3Rvcjx1aW50OF90PiYgb3V0KQogICAgICAgICA6
IENsb25lQmFzZShleGVjKQogICAgICAgICAsIG1fYnVmZmVyKG91dCkKKyAgICAgICAgLCBtX2Js
b2JVUkxzKGJsb2JVUkxzKQogICAgICAgICAsIG1fZW1wdHlJZGVudGlmaWVyKGV4ZWMsIFVTdHJp
bmcoIiIsIDApKQogICAgIHsKICAgICAgICAgd3JpdGUoQ3VycmVudFZlcnNpb24pOwpAQCAtNTgz
LDYgKzU4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0cygmSlNC
bG9iOjpzX2luZm8pKSB7CiAgICAgICAgICAgICAgICAgd3JpdGUoQmxvYlRhZyk7CiAgICAgICAg
ICAgICAgICAgQmxvYiogYmxvYiA9IHRvQmxvYihvYmopOworICAgICAgICAgICAgICAgIG1fYmxv
YlVSTHMuYXBwZW5kKGJsb2ItPnVybCgpKTsKICAgICAgICAgICAgICAgICB3cml0ZShibG9iLT51
cmwoKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoYmxvYi0+dHlwZSgpKTsKICAgICAgICAgICAg
ICAgICB3cml0ZShibG9iLT5zaXplKCkpOwpAQCAtNzY3LDYgKzc2OSw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHdyaXRlKGNvbnN0IEZpbGUqIGZpbGUpCiAgICAgeworICAgICAgICBtX2Jsb2JV
UkxzLmFwcGVuZChmaWxlLT51cmwoKSk7CiAgICAgICAgIHdyaXRlKGZpbGUtPnBhdGgoKSk7CiAg
ICAgICAgIHdyaXRlKGZpbGUtPnVybCgpKTsKICAgICAgICAgd3JpdGUoZmlsZS0+dHlwZSgpKTsK
QEAgLTc3OCw2ICs3ODEsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFZlY3Rvcjx1aW50OF90
PiYgbV9idWZmZXI7CisgICAgVmVjdG9yPFN0cmluZz4mIG1fYmxvYlVSTHM7CiAgICAgT2JqZWN0
UG9vbCBtX29iamVjdFBvb2w7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkTWVzc2FnZVBv
cnRzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVyczsKQEAgLTE2NjIs
MTAgKzE2NjYsMTcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIpCiAgICAgbV9kYXRhLnN3YXAoYnVmZmVyKTsKIH0K
IAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVp
bnQ4X3Q+JiBidWZmZXIsIFBhc3NPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBhcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXkpCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzKQoreworICAgIG1fZGF0YS5zd2FwKGJ1ZmZlcik7CisgICAgbV9ibG9iVVJMcy5zd2FwKGJs
b2JVUkxzKTsKK30KKworU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgUGFz
c093blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJh
eSkKICAgICA6IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KGFycmF5QnVmZmVyQ29udGVudHNB
cnJheSkKIHsKICAgICBtX2RhdGEuc3dhcChidWZmZXIpOworICAgIG1fYmxvYlVSTHMuc3dhcChi
bG9iVVJMcyk7CiB9CiAKIFBhc3NPd25QdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dHJhbnNmZXJBcnJheUJ1
ZmZlcnMoCkBAIC0xNzAzLDcgKzE3MTQsOCBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewogICAgIFZlY3Rv
cjx1aW50OF90PiBidWZmZXI7Ci0gICAgU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSA9IENs
b25lU2VyaWFsaXplcjo6c2VyaWFsaXplKGV4ZWMsIHZhbHVlLCBtZXNzYWdlUG9ydHMsIGFycmF5
QnVmZmVycywgYnVmZmVyKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBibG9iVVJMczsKKyAgICBTZXJp
YWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoZXhl
YywgdmFsdWUsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBibG9iVVJMcywgYnVmZmVyKTsK
IAogICAgIE93blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheTsKIApAQCAtMTcxNiw3ICsxNzI4LDcgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywK
ICAgICBpZiAoIXNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShjb2RlKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShidWZmZXIsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlKCkpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShidWZmZXIsIGJsb2JV
UkxzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZSgpKSk7CiB9CiAKIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCmluZGV4IDg1OGU4YzljMjQwMzliYjdjZjE2ZWExNTdjNDM1YjRhMmVhOWIxM2MuLjFhMmRl
MDA2ODQyZDkwM2JkOWM3OWM0NTYxYTNmMjQzYmMwM2QyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaWZuZGVmIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZV9oCiAjZGVmaW5lIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZV9oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmcuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTVmFsdWUuaD4KQEAgLTkyLDYgKzkzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2JVUkxzOyB9CiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7
CkBAIC0xMDgsMTEgKzExMCwxMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1heWJlVGhy
b3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoSlNDOjpFeGVjU3RhdGUqLCBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZSk7CiAgICAgc3RhdGljIGJvb2wgc2VyaWFsaXphdGlvbkRpZENvbXBs
ZXRlU3VjY2Vzc2Z1bGx5KFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgUGFz
c093blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHRyYW5zZmVyQXJyYXlCdWZmZXJzKEFy
cmF5QnVmZmVyQXJyYXkmLCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSYpOwotICAgIAorCiAgICAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYpOwotICAgIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mLCBQYXNzT3duUHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4pOworICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8
dW5zaWduZWQgY2hhcj4mLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMpOworICAgIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mLCBWZWN0b3I8U3RyaW5nPiYgYmxv
YlVSTHMsIFBhc3NPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pik7CiAgICAgVmVjdG9y
PHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKICAgICBPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5PiBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2Js
b2JVUkxzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYzY3MzhjZGM0NTU5MTQ2NDhmZmQwYTc1ZTAy
YWIwOGU3NGIwZjFiYy4uOTNhNDg4NzcwNDI5YmIzODQ3NmFjNWYzMzM0ZDg4MTNhMGFhNDM2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC02MDYsMTMgKzYwNiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIEpTRmFpbHVy
ZQogICAgIH07CiAKLSAgICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVyLCBNZXNzYWdlUG9ydEFy
cmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywgdjg6OlRy
eUNhdGNoJiB0cnlDYXRjaCkKKyAgICBTZXJpYWxpemVyKFdyaXRlciYgd3JpdGVyLCBNZXNzYWdl
UG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywg
VmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCB2ODo6VHJ5Q2F0Y2gmIHRyeUNhdGNoKQogICAgICAg
ICA6IG1fd3JpdGVyKHdyaXRlcikKICAgICAgICAgLCBtX3RyeUNhdGNoKHRyeUNhdGNoKQogICAg
ICAgICAsIG1fZGVwdGgoMCkKICAgICAgICAgLCBtX2V4ZWNEZXB0aCgwKQogICAgICAgICAsIG1f
c3RhdHVzKFN1Y2Nlc3MpCiAgICAgICAgICwgbV9uZXh0T2JqZWN0UmVmZXJlbmNlKDApCisgICAg
ICAgICwgbV9ibG9iVVJMcyhibG9iVVJMcykKICAgICB7CiAgICAgICAgIEFTU0VSVCghdHJ5Q2F0
Y2guSGFzQ2F1Z2h0KCkpOwogICAgICAgICBpZiAobWVzc2FnZVBvcnRzKSB7CkBAIC05NzcsNiAr
OTc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFibG9iKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX3dyaXRlci53cml0ZUJsb2IoYmxvYi0+dXJsKCkuc3RyaW5nKCksIGJsb2It
PnR5cGUoKSwgYmxvYi0+c2l6ZSgpKTsKKyAgICAgICAgbV9ibG9iVVJMcy5hcHBlbmQoYmxvYi0+
dXJsKCkuc3RyaW5nKCkpOwogICAgIH0KIAogICAgIHZvaWQgd3JpdGVGaWxlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTk4NSw2ICs5ODcsNyBAQCBwcml2YXRlOgogICAgICAgICBp
ZiAoIWZpbGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fd3JpdGVyLndyaXRlRmls
ZShmaWxlLT5wYXRoKCksIGZpbGUtPnVybCgpLnN0cmluZygpLCBmaWxlLT50eXBlKCkpOworICAg
ICAgICBtX2Jsb2JVUkxzLmFwcGVuZChmaWxlLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgfQogCiAg
ICAgdm9pZCB3cml0ZUZpbGVMaXN0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTk5
Myw2ICs5OTYsOSBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWZpbGVMaXN0KQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBtX3dyaXRlci53cml0ZUZpbGVMaXN0KCpmaWxlTGlzdCk7Cisg
ICAgICAgIHVpbnQzMl90IGxlbmd0aCA9IGZpbGVMaXN0LT5sZW5ndGgoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgbV9ibG9iVVJM
cy5hcHBlbmQoZmlsZUxpc3QtPml0ZW0oaSktPnVybCgpLnN0cmluZygpKTsKICAgICB9CiAKICAg
ICB2b2lkIHdyaXRlSW1hZ2VEYXRhKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKQEAgLTEx
MTEsNiArMTExNyw3IEBAIHByaXZhdGU6CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkTWVz
c2FnZVBvcnRzOwogICAgIE9iamVjdFBvb2wgbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVyczsKICAg
ICB1aW50MzJfdCBtX25leHRPYmplY3RSZWZlcmVuY2U7CisgICAgVmVjdG9yPFN0cmluZz4mIG1f
YmxvYlVSTHM7CiB9OwogCiBTZXJpYWxpemVyOjpTdGF0ZUJhc2UqIFNlcmlhbGl6ZXI6OmRvU2Vy
aWFsaXplKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU3RhdGVCYXNlKiBuZXh0KQpAQCAt
MjIwNCw3ICsyMjExLDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLAogICAgIFNlcmlhbGl6ZXI6OlN0YXR1
cyBzdGF0dXM7CiAgICAgewogICAgICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7Ci0gICAgICAg
IFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJz
LCB0cnlDYXRjaCk7CisgICAgICAgIFNlcmlhbGl6ZXIgc2VyaWFsaXplcih3cml0ZXIsIG1lc3Nh
Z2VQb3J0cywgYXJyYXlCdWZmZXJzLCBtX2Jsb2JVUkxzLCB0cnlDYXRjaCk7CiAgICAgICAgIHN0
YXR1cyA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTsKICAgICAgICAgaWYgKHN0YXR1cyA9
PSBTZXJpYWxpemVyOjpKU0V4Y2VwdGlvbikgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2Fz
IGEgSlMgZXhjZXB0aW9uIHRocm93biwgcmUtdGhyb3cgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDY4YjE5NTRkNWY1
MTExZTE4NThlMjI5MDhiZjE5MTQyYjgyNzYzOTQuLjdmNmI5ZTAzZmEzZjI1NmMxMmZmNmM2YmFi
ZTNlZjRmM2Q3MzlhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICBTY3Jp
cHRWYWx1ZSBkZXNlcmlhbGl6ZUZvckluc3BlY3RvcihTY3JpcHRTdGF0ZSopOwogI2VuZGlmCiAK
KyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMoKSBjb25zdCB7IHJldHVybiBtX2Js
b2JVUkxzOyB9CisKIHByaXZhdGU6CiAgICAgZW51bSBTdHJpbmdEYXRhTW9kZSB7CiAgICAgICAg
IFN0cmluZ1ZhbHVlLApAQCAtOTUsNiArOTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1f
ZGF0YTsKICAgICBPd25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX2FycmF5QnVmZmVy
Q29udGVudHNBcnJheTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2Jsb2JVUkxzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAKaW5kZXggYzk5NTI3NGNiNGJmMWRlMjc3MzUyNDJmYmRkYzIxMDJkZjdhNTlmYS4u
YTNhNDFkZWQ4ODdlNTQ1NjJjMWVjNmUyYWJiMTZhNmM0MzU2YjRiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChWOFBy
b3h5KiBwcm94eSwgV3JhcHBlclQKICAgICAgICAgICAgICAgICAgICAgcHJveHkgPSBWOFByb3h5
OjpyZXRyaWV2ZShmcmFtZSk7CiAgICAgICAgICAgICB9CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0g
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChpc1dyYXBwZXJPZlR5cGUoZ2xv
YmFsUHJvdG90eXBlLCAmVjhXb3JrZXJDb250ZXh0OjppbmZvKSkKICAgICAgICAgICAgICAgICB3
b3JrZXJDb250ZXh0ID0gVjhXb3JrZXJDb250ZXh0Ojp0b05hdGl2ZShsb29rdXBET01XcmFwcGVy
KFY4V29ya2VyQ29udGV4dDo6R2V0VGVtcGxhdGUoKSwgY29udGV4dC0+R2xvYmFsKCkpKTsKICNl
bmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWMxYjlkNWY0YWI4MWYwMjMxNmM1NGMzMDg5NmFmMmE0
MGVkMWFkMC4uYjRjNzMwYzJkYjZhZTM2NDU5YmEwMzYxZjA4ZWNhZGMxNDQwOWEwZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTAzLTE0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRleGVkREI6IEFzc2VydGlvbiBmYWlsdXJl
IHdoZW4gc3RvcmluZyBGaWxlIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2NzQ2CisKKyAgICAgICAgRW5zdXJlIHRoYXQgQmxvYi9GaWxl
L0ZpbGVMaXN0IHR5cGVzIGFyZSByZWplY3RlZCBpbiBJREIgdmFsdWVzLCB0byBkZXRlY3QgcmVn
cmVzc2lvbnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sOiBBZGRlZC4KKwogMjAxMi0wMy0x
MyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEZvciBzb21lIHJl
YXNvbiBjaHJvbWl1bS13aW4gYW5kIGNocm9taXVtLWxpbnV4IGhhdmUgYSBkaWZmZXJlbnQgbnVt
YmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM4NjMzODhmODZiNmFhMTQyMDY4ZDZkMTFhY2FiNmMzNTExNDAx
YmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Js
b2JzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgzIEBACisKK0NvbmZpcm0gQmxvYi9GaWxlL0Zp
bGVMaXN0IGxpbWl0YXRpb25zIG9mIFdlYktpdCdzIEluZGV4ZWREQiBpbXBsZW1lbnRhdGlvbi4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRl
eGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQgorUEFTUyBpbmRleGVkREIgIT0gbnVsbCBp
cyB0cnVlCitJREJUcmFuc2FjdGlvbiA9IHdpbmRvdy5JREJUcmFuc2FjdGlvbiB8fCB3aW5kb3cu
d2Via2l0SURCVHJhbnNhY3Rpb24KK1BBU1MgSURCVHJhbnNhY3Rpb24gIT0gbnVsbCBpcyB0cnVl
CisKK1ByZXBhcmUgRGF0YWJhc2UKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnbm9ibG9icycp
CitpbmRleGVkREIub3Blbignbm9ibG9icycpCitkYiA9IHJlcXVlc3QucmVzdWx0CitQQVNTIGRi
LnZlcnNpb24gaXMgIiIKK2RiLnNldFZlcnNpb24oJzEnKQorc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykKK3N0b3JlLnB1dCgndmFsdWUnLCAna2V5JykKKwordGVzdEJs
b2IoKToKK0Jsb2JCdWlsZGVyID0gd2luZG93LkJsb2JCdWlsZGVyIHx8IHdpbmRvdy5XZWJLaXRC
bG9iQnVpbGRlcgorUEFTUyBCbG9iQnVpbGRlciAhPSBudWxsIGlzIHRydWUKK1BBU1MgRmlsZVJl
YWRlciAhPSBudWxsIGlzIHRydWUKK2J1aWxkZXIgPSBuZXcgQmxvYkJ1aWxkZXIoKQordGVzdF9j
b250ZW50ID0gJ1RoaXMgaXMgYSB0ZXN0LiBUaGlzIGlzIG9ubHkgYSB0ZXN0LicKK2J1aWxkZXIu
YXBwZW5kKHRlc3RfY29udGVudCkKK2Jsb2IgPSBidWlsZGVyLmdldEJsb2IoKQorCit2YWxpZGF0
ZUV4Y2VwdGlvbnMoYmxvYik6Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5h
bWUnLCBJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmpl
Y3RTdG9yZSgnc3RvcmVOYW1lJykKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5wdXQo
YmxvYiwgJ2tleScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERP
TUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3Jl
LmFkZChibG9iLCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUg
aXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCityZXF1ZXN0ID0gc3RvcmUub3BlbkN1cnNv
cigpCitjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdAorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGN1
cnNvci51cGRhdGUoYmxvYikKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUg
aXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCisKK3Rlc3RGaWxlKCk6CitmaWxlID0gZmls
ZUlucHV0LmZpbGVzWzBdCisKK3ZhbGlkYXRlRXhjZXB0aW9ucyhmaWxlKToKK3RyYW5zYWN0aW9u
ID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUp
CitzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQorRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIHN0b3JlLnB1dChmaWxlLCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdh
cyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCitFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKGZpbGUsICdrZXknKQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIK
K3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkKK2N1cnNvciA9IHJlcXVlc3QucmVzdWx0CitF
eHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gY3Vyc29yLnVwZGF0ZShmaWxlKQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIK
KwordGVzdEZpbGVMaXN0KCk6CitmaWxlbGlzdCA9IGZpbGVJbnB1dC5maWxlcworCit2YWxpZGF0
ZUV4Y2VwdGlvbnMoZmlsZWxpc3QpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUu
cHV0KGZpbGVsaXN0LCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gc3RvcmUuYWRkKGZpbGVsaXN0LCAna2V5JykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCityZXF1ZXN0ID0gc3Rv
cmUub3BlbkN1cnNvcigpCitjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdAorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGN1cnNvci51cGRhdGUoZmlsZWxpc3QpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhy
b3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMuaHRtbCBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjIwZjZhYzU4NmZhODQy
ZWU1NTVmN2EzZjZlZDkxNGE4Zjk3YWIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy5odG1sCkBAIC0wLDAgKzEsMTE4IEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlSW5wdXQiIG11
bHRpcGxlPjwvaW5wdXQ+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIkNvbmZpcm0gQmxvYi9GaWxlL0Zp
bGVMaXN0IGxpbWl0YXRpb25zIG9mIFdlYktpdCdzIEluZGV4ZWREQiBpbXBsZW1lbnRhdGlvbi4i
KTsKKy8vIEZJWE1FOiBUaGlzIHZlcmlmaWVzIHRoYXQgYmxvYi10eXBlIGRhdGEgaXMgcmVqZWN0
ZWQgZm9yIG5vdywgcmF0aGVyIHRoYW4gc2lsZW50bHkgZmFpbGluZy4KKy8vIFRyYWNrZWQgZm9y
IHRoZSBDaHJvbWl1bSBwb3J0IGFzOiBodHRwOi8vY3JidWcuY29tLzEwODAxMgorCitmaWxlSW5w
dXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZUlucHV0Iik7CitpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgdmFyIGZpbGVSZWN0ID0gZmlsZUlucHV0LmdldENsaWVudFJlY3Rz
KClbMF07CisgICAgdmFyIHRhcmdldFggPSBmaWxlUmVjdC5sZWZ0ICsgZmlsZVJlY3Qud2lkdGgg
LyAyOworICAgIHZhciB0YXJnZXRZID0gZmlsZVJlY3QudG9wICsgZmlsZVJlY3QuaGVpZ2h0IC8g
MjsKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWydyZXNvdXJjZXMvdGVzdC1k
YXRhLmh0bWwnLCAncmVzb3VyY2VzL3Rlc3QtZGF0YS50eHQnXSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8odGFyZ2V0WCwgdGFyZ2V0WSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgp
OworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3
aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIiKTsKKyAgICBzaG91bGRC
ZVRydWUoImluZGV4ZWREQiAhPSBudWxsIik7CisgICAgZXZhbEFuZExvZygiSURCVHJhbnNhY3Rp
b24gPSB3aW5kb3cuSURCVHJhbnNhY3Rpb24gfHwgd2luZG93LndlYmtpdElEQlRyYW5zYWN0aW9u
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJJREJUcmFuc2FjdGlvbiAhPSBudWxsIik7CisgICAgcHJl
cGFyZURhdGFiYXNlKCk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJQcmVwYXJlIERhdGFiYXNlIik7CisgICAgcmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnbm9ibG9icycpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3Blbignbm9ibG9icycpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKGUpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICIiKTsKKyAg
ICAgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAg
ICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAg
ICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScp
Iik7CisgICAgICAgICAgICAgICAgdmFyIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAg
ICAgICAgICAgdHJhbnMub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAg
ICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAg
ICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gdGVzdEJsb2IoKTsKKyAgICAgICAgICAgIH07
CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gdGVzdEJsb2IoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEJsb2IoKToiKTsKKworICAgIGV2YWxBbmRMb2coIkJs
b2JCdWlsZGVyID0gd2luZG93LkJsb2JCdWlsZGVyIHx8IHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRl
ciIpOworICAgIHNob3VsZEJlVHJ1ZSgiQmxvYkJ1aWxkZXIgIT0gbnVsbCIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiRmlsZVJlYWRlciAhPSBudWxsIik7CisgICAgZXZhbEFuZExvZygiYnVpbGRlciA9
IG5ldyBCbG9iQnVpbGRlcigpIik7CisgICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gJ1Ro
aXMgaXMgYSB0ZXN0LiBUaGlzIGlzIG9ubHkgYSB0ZXN0LiciKTsKKyAgICBldmFsQW5kTG9nKCJi
dWlsZGVyLmFwcGVuZCh0ZXN0X2NvbnRlbnQpIik7CisgICAgZXZhbEFuZExvZygiYmxvYiA9IGJ1
aWxkZXIuZ2V0QmxvYigpIik7CisgICAgdmFsaWRhdGVFeGNlcHRpb25zKCJibG9iIiwgdGVzdEZp
bGUpOworfQorCitmdW5jdGlvbiB0ZXN0RmlsZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRl
YnVnKCJ0ZXN0RmlsZSgpOiIpOworICAgIGV2YWxBbmRMb2coImZpbGUgPSBmaWxlSW5wdXQuZmls
ZXNbMF0iKTsKKyAgICB2YWxpZGF0ZUV4Y2VwdGlvbnMoImZpbGUiLCB0ZXN0RmlsZUxpc3QpOwor
fQorCitmdW5jdGlvbiB0ZXN0RmlsZUxpc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1
ZygidGVzdEZpbGVMaXN0KCk6Iik7CisgICAgZXZhbEFuZExvZygiZmlsZWxpc3QgPSBmaWxlSW5w
dXQuZmlsZXMiKTsKKyAgICB2YWxpZGF0ZUV4Y2VwdGlvbnMoImZpbGVsaXN0IiwgZmluaXNoSlNU
ZXN0KTsKK30KKworZnVuY3Rpb24gdmFsaWRhdGVFeGNlcHRpb25zKHZhcmlhYmxlLCBvbkNvbXBs
ZXRlKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidmFsaWRhdGVFeGNlcHRpb25zKCIg
KyB2YXJpYWJsZSArICIpOiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAg
ZXZhbEFuZExvZygic3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJyki
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoIiArIHZhcmlhYmxlICsg
IiwgJ2tleScpIiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworICAgIGV2YWxBbmRF
eHBlY3RFeGNlcHRpb24oInN0b3JlLmFkZCgiICsgdmFyaWFibGUgKyAiLCAna2V5JykiLCAiRE9N
RXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0
b3JlLm9wZW5DdXJzb3IoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkg
eworICAgICAgICBldmFsQW5kTG9nKCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJjdXJzb3IudXBkYXRlKCIgKyB2YXJpYWJsZSArICIp
IiwgIkRPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworICAgIH07CisgICAgdHJhbnNhY3Rp
b24ub25jb21wbGV0ZSA9IG9uQ29tcGxldGU7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICB0ZXN0KCk7Cit9IGVsc2UgeworICAgIGFsZXJ0KCJTZWxlY3QgZmlsZShzKSB1c2lu
ZyB0aGUgaW5wdXQgY29udHJvbCBhYm92ZSB0byBpbml0aWF0ZSB0aGUgdGVzdCIpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlSW5wdXQiKS5vbmNoYW5nZSA9IHRlc3Q7Cit9CisK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132328</attachid>
            <date>2012-03-16 11:28:02 -0700</date>
            <delta_ts>2012-03-16 12:26:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-76746-20120316112801.patch</filename>
            <type>text/plain</type>
            <size>24361</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWZiODQ0ZGUzZjIwNzU2
ODVlYzYyY2E5MDBiNTljN2YxMTRkZDg3MC4uZTMyMWJlMDRlMzdlNjliYTUyNTA2ZWE2N2UyMThh
NjllNjk1ZWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAzLTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEFzc2VydGlvbiBmYWlsdXJlIHdoZW4gc3RvcmluZyBGaWxlIG9iamVjdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzQ2CisKKyAgICAg
ICAgVGhlIGJsb2IgZGF0YSBpbiBCbG9iL0ZpbGUvRmlsZUxpc3Qgb2JqZWN0cyBpcyBzZXJpYWxp
emVkICJieSByZWZlcmVuY2UiICh0aGUKKyAgICAgICAgaW50ZXJuYWwgVVJMKSByYXRoZXIgdGhh
biAiYnkgdmFsdWUiICh0aGUgYWN0dWFsIGRhdGEpOyB0aGlzIGlzIHN1ZmZpY2llbnQgZm9yCisg
ICAgICAgIHBvc3RNZXNzYWdlKCkgYnV0IG5vdCBmb3IgSW5kZXhlZERCIHNpbmNlIHRoZSByZWZl
cmVuY2VkIGRhdGEgaXMgbm90IHJldGFpbmVkCisgICAgICAgIEV4cG9zZSBhIG1lY2hhbmlzbSB0
byBlbnVtZXJhdGUgdGhlIFVSTHMgc28gdGhhdCBTU1ZzIGNhbiBiZSByZWplY3RlZCBieSBJREIK
KyAgICAgICAgdW50aWwgYmxvYiBkYXRhIHNlcmlhbGl6YXRpb24gY2FuIGlzIGltcGxlbWVudGVk
IChvdXRzaWRlIHRoZSBTU1YgbWVjaGFuaXNtLCBhbmQKKyAgICAgICAgcG90ZW50aWFsbHkgYXN5
bmNocm9ub3VzbHkpLgorCisgICAgICAgIEFsc28sIGNvcnJlY3QgaXNzdWUgaW4gVjhET01XcmFw
cGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0IHdoZXJlIGNvbnRleHQgaXMgYXNzdW1lZAorICAgICAg
ICB0byBiZSBhIFdvcmtlciBjb250ZXh0IGlmIGl0J3Mgbm90IGEgV2luZG93LCB3aGljaCBpcyBp
bmNvcnJlY3QgZm9yIHRoZQorICAgICAgICBDaHJvbWl1bSB1dGlsaXR5IHByb2Nlc3M7IHRoaXMg
aXMgaGl0IGlmIEJsb2JzIGFyZSBub3QgYmxvY2tlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBU
b255IENoYW5nLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMuaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRlKTogUmVqZWN0IFNTVnMgdGhhdCBjb250YWluIGJs
b2IgcmVmZXJlbmNlcy4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YWRkKTogUmVqZWN0IFNT
VnMgdGhhdCBjb250YWluIGJsb2IgcmVmZXJlbmNlcy4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpwdXQpOiBSZWplY3QgU1NWcyB0aGF0IGNvbnRhaW4gYmxvYiByZWZlcmVuY2Vz
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZVNlcmlhbGl6ZXI6OkNsb25lU2VyaWFsaXplcik6CisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lU2VyaWFsaXplcjo6d3JpdGUpOgorICAgICAgICAoQ2xvbmVTZXJpYWxpemVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpib29sZWFuVmFsdWUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOiBOZXcgQVBJIHRv
IGVuYWJsZSB0aGUgY2xpZW50cyB0byBiZSBwaWNreS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOiBOZXcgQVBJIHRvIGVuYWJsZSB0aGUgY2xpZW50cyB0
byBiZSBwaWNreS4KKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Ymxv
YlVSTHMpOgorICAgICAgICAoU2VyaWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVy
OjppbnN0YW50aWF0ZVY4T2JqZWN0KTogIEVuc3VyZSBjb250ZXh0IGlzIGEgd29ya2VyIGNvbnRl
eHQgYmVmb3JlIHRyZWF0aW5nIGl0IGFzIHN1Y2guCisKIDIwMTItMDMtMTUgIERhbmEgSmFuc2Vu
cyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNb3ZlIG92ZXJk
cmF3IG1ldHJpY3MgaW50byBhIHRlbXBsYXRlZCBjbGFzcyBmb3IgYm90aCBwYWludCBhbmQgZHJh
dyBtZXRyaWNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKaW5kZXggZTdhMDFlY2I3OWE4YTg4Y2I1MmQ0OTc5ZTU0MTk3YmMxOTYzNGVlOS4uMjc0
Zjk5NWM3MmRiMzIxMjA3ZmI1NzIwODA1N2M2YzdmNGRiOTg5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC05MSw5ICs5MSwxNyBAQCBJ
REJBbnkqIElEQkN1cnNvcjo6c291cmNlKCkgY29uc3QKICAgICByZXR1cm4gbV9zb3VyY2UuZ2V0
KCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
Q3Vyc29yOjp1cGRhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6dXBkYXRlIik7CisKKyAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOworICAgIGlmICh2YWx1ZS0+YmxvYlVS
THMoKS5zaXplKCkgPiAwKSB7CisgICAgICAgIC8vIEZJWE1FOiBBZGQgQmxvYi9GaWxlL0ZpbGVM
aXN0IHN1cHBvcnQKKyAgICAgICAgZWMgPSBEQVRBX0NMT05FX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0
OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0
KCkpOwogICAgIG1fYmFja2VuZC0+dXBkYXRlKHZhbHVlLCByZXF1ZXN0LCBlYyk7CiAgICAgaWYg
KGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggM2E1YTA3MzZiZDI2MzJkMzI2MjRkNDY4YThkZjdkNmVlODQ0NDZj
ZC4uZGY5MjZmNDU5YzY0OGIzYmU1Y2IyNjJlNzEzMTFjMGJkNWRiOGE2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAt
OTUsNyArOTUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogICAgIHJldHVybiByZXF1ZXN0
LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjphZGQiKTsKICAgICBpZiAoa2V5ICYm
IChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewpAQCAtMTAzLDYgKzEwMywx
MyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
KyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOworICAg
IGlmICh2YWx1ZS0+YmxvYlVSTHMoKS5zaXplKCkgPiAwKSB7CisgICAgICAgIC8vIEZJWE1FOiBB
ZGQgQmxvYi9GaWxlL0ZpbGVMaXN0IHN1cHBvcnQKKyAgICAgICAgZWMgPSBEQVRBX0NMT05FX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyks
IG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+cHV0KHZhbHVlLCBrZXksIElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6QWRkT25seSwgcmVxdWVzdCwgbV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVjKSB7CkBAIC0xMTIsNyArMTE5LDcgQEAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3MKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6cHV0Iik7CiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkg
PT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKQEAgLTEyMCw2ICsxMjcsMTMgQEAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3MKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKKyAgICBpZiAodmFsdWUtPmJs
b2JVUkxzKCkuc2l6ZSgpID4gMCkgeworICAgICAgICAvLyBGSVhNRTogQWRkIEJsb2IvRmlsZS9G
aWxlTGlzdCBzdXBwb3J0CisgICAgICAgIGVjID0gREFUQV9DTE9ORV9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKICAgICBtX2JhY2tlbmQtPnB1dCh2YWx1ZSwga2V5LCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2U6OkFkZE9yVXBkYXRlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNr
ZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGUyMzU5NDU1ODY0NTg2OGM5
ZDBhZmM4MTU3ZDliNjc0MGU1NWJjOGQuLjk2ZjBhODE0ODc0MTM3ZjUyNWJjNDk1MzZlMzE0MmZh
MTg4MjJlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzIxLDkgKzMyMSw5IEBAIGNsYXNzIENsb25lU2VyaWFs
aXplciA6IENsb25lQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlIHNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUG9ydEFycmF5KiBt
ZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiYgb3V0KQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4mIGJsb2JVUkxzLCBWZWN0b3I8dWludDhfdD4mIG91dCkKICAgICB7Ci0gICAgICAgIENsb25l
U2VyaWFsaXplciBzZXJpYWxpemVyKGV4ZWMsIG1lc3NhZ2VQb3J0cywgYXJyYXlCdWZmZXJzLCBv
dXQpOworICAgICAgICBDbG9uZVNlcmlhbGl6ZXIgc2VyaWFsaXplcihleGVjLCBtZXNzYWdlUG9y
dHMsIGFycmF5QnVmZmVycywgYmxvYlVSTHMsIG91dCk7CiAgICAgICAgIHJldHVybiBzZXJpYWxp
emVyLnNlcmlhbGl6ZSh2YWx1ZSk7CiAgICAgfQogCkBAIC0zNTQsOSArMzU0LDEwIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPEpTT2JqZWN0KiwgdWludDMyX3Q+IE9i
amVjdFBvb2w7CiAKLSAgICBDbG9uZVNlcmlhbGl6ZXIoRXhlY1N0YXRlKiBleGVjLCBNZXNzYWdl
UG9ydEFycmF5KiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQXJyYXkqIGFycmF5QnVmZmVycywg
VmVjdG9yPHVpbnQ4X3Q+JiBvdXQpCisgICAgQ2xvbmVTZXJpYWxpemVyKEV4ZWNTdGF0ZSogZXhl
YywgTWVzc2FnZVBvcnRBcnJheSogbWVzc2FnZVBvcnRzLCBBcnJheUJ1ZmZlckFycmF5KiBhcnJh
eUJ1ZmZlcnMsIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPHVpbnQ4X3Q+JiBvdXQp
CiAgICAgICAgIDogQ2xvbmVCYXNlKGV4ZWMpCiAgICAgICAgICwgbV9idWZmZXIob3V0KQorICAg
ICAgICAsIG1fYmxvYlVSTHMoYmxvYlVSTHMpCiAgICAgICAgICwgbV9lbXB0eUlkZW50aWZpZXIo
ZXhlYywgVVN0cmluZygiIiwgMCkpCiAgICAgewogICAgICAgICB3cml0ZShDdXJyZW50VmVyc2lv
bik7CkBAIC01ODMsNiArNTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmIChvYmotPmlu
aGVyaXRzKCZKU0Jsb2I6OnNfaW5mbykpIHsKICAgICAgICAgICAgICAgICB3cml0ZShCbG9iVGFn
KTsKICAgICAgICAgICAgICAgICBCbG9iKiBibG9iID0gdG9CbG9iKG9iaik7CisgICAgICAgICAg
ICAgICAgbV9ibG9iVVJMcy5hcHBlbmQoYmxvYi0+dXJsKCkpOwogICAgICAgICAgICAgICAgIHdy
aXRlKGJsb2ItPnVybCgpKTsKICAgICAgICAgICAgICAgICB3cml0ZShibG9iLT50eXBlKCkpOwog
ICAgICAgICAgICAgICAgIHdyaXRlKGJsb2ItPnNpemUoKSk7CkBAIC03NjcsNiArNzY5LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgd3JpdGUoY29uc3QgRmlsZSogZmlsZSkKICAgICB7CisgICAg
ICAgIG1fYmxvYlVSTHMuYXBwZW5kKGZpbGUtPnVybCgpKTsKICAgICAgICAgd3JpdGUoZmlsZS0+
cGF0aCgpKTsKICAgICAgICAgd3JpdGUoZmlsZS0+dXJsKCkpOwogICAgICAgICB3cml0ZShmaWxl
LT50eXBlKCkpOwpAQCAtNzc4LDYgKzc4MSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+JiBtX2J1ZmZlcjsKKyAgICBWZWN0b3I8U3RyaW5nPiYgbV9ibG9iVVJMczsK
ICAgICBPYmplY3RQb29sIG1fb2JqZWN0UG9vbDsKICAgICBPYmplY3RQb29sIG1fdHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJz
OwpAQCAtMTY2MiwxMCArMTY2NiwxNyBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mIGJ1ZmZlcikKICAgICBtX2RhdGEuc3dhcChi
dWZmZXIpOwogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgUGFzc093blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyLCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMpCit7CisgICAgbV9kYXRhLnN3YXAoYnVmZmVyKTsKKyAgICBtX2Jsb2JV
UkxzLnN3YXAoYmxvYlVSTHMpOworfQorCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBQYXNzT3duUHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5KQogICAgIDogbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkoYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5KQogewogICAgIG1fZGF0YS5zd2FwKGJ1ZmZlcik7CisgICAgbV9ibG9i
VVJMcy5zd2FwKGJsb2JVUkxzKTsKIH0KIAogUGFzc093blB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OkFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0cmFu
c2ZlckFycmF5QnVmZmVycygKQEAgLTE3MDMsNyArMTcxNCw4IEBAIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCiB7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoZXhlYywgdmFsdWUsIG1lc3NhZ2VQ
b3J0cywgYXJyYXlCdWZmZXJzLCBidWZmZXIpOworICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JVUkxz
OworICAgIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNl
cmlhbGl6ZShleGVjLCB2YWx1ZSwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIGJsb2JVUkxz
LCBidWZmZXIpOwogCiAgICAgT3duUHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlC
dWZmZXJDb250ZW50c0FycmF5OwogCkBAIC0xNzE2LDcgKzE3MjgsNyBAQCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLAogICAgIGlmICghc2VyaWFsaXphdGlvbkRpZENvbXBsZXRlU3VjY2Vzc2Z1bGx5
KGNvZGUpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKGJ1ZmZlciwgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LnJlbGVh
c2UoKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKGJ1
ZmZlciwgYmxvYlVSTHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5yZWxlYXNlKCkpKTsKIH0K
IAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKaW5kZXggODU4ZThjOWMyNDAzOWJiN2NmMTZlYTE1N2M0MzViNGEyZWE5
YjEzYy4uMWEyZGUwMDY4NDJkOTAzYmQ5Yzc5YzQ1NjFhM2YyNDNiYzAzZDJiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKICNkZWZpbmUg
U2VyaWFsaXplZFNjcmlwdFZhbHVlX2gKIAorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNWYWx1ZS5oPgpAQCAtOTIsNiArOTMsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQor
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxv
YlVSTHM7IH0KIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlKTsKQEAgLTEwOCwxMSArMTEwLDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChKU0M6OkV4ZWNTdGF0
ZSosIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlKTsKICAgICBzdGF0aWMgYm9vbCBzZXJpYWxpemF0
aW9uRGlkQ29tcGxldGVTdWNjZXNzZnVsbHkoU2VyaWFsaXphdGlvblJldHVybkNvZGUpOwogICAg
IHN0YXRpYyBQYXNzT3duUHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gdHJhbnNmZXJBcnJh
eUJ1ZmZlcnMoQXJyYXlCdWZmZXJBcnJheSYsIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlJik7Ci0g
ICAgCisKICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+Jik7
Ci0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYsIFBhc3NP
d25QdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pik7CisgICAgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYsIFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcyk7Cisg
ICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYsIFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgUGFzc093blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+KTsK
ICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOwogICAgIE93blB0cjxBcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXk+IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5OworICAgIFZlY3RvcjxT
dHJpbmc+IG1fYmxvYlVSTHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCBjNjczOGNkYzQ1NTkxNDY0
OGZmZDBhNzVlMDJhYjA4ZTc0YjBmMWJjLi40NmRiNmQxNTAxNzU4OTE5M2UyOGFkYzk3NjhhYjc3
NjhmYjU3Y2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTYwNiwxMyArNjA2LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgSlNGYWlsdXJlCiAgICAgfTsKIAotICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0ZXIsIE1l
c3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJyYXlCdWZm
ZXJzLCB2ODo6VHJ5Q2F0Y2gmIHRyeUNhdGNoKQorICAgIFNlcmlhbGl6ZXIoV3JpdGVyJiB3cml0
ZXIsIE1lc3NhZ2VQb3J0QXJyYXkqIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJBcnJheSogYXJy
YXlCdWZmZXJzLCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHY4OjpUcnlDYXRjaCYgdHJ5Q2F0
Y2gpCiAgICAgICAgIDogbV93cml0ZXIod3JpdGVyKQogICAgICAgICAsIG1fdHJ5Q2F0Y2godHJ5
Q2F0Y2gpCiAgICAgICAgICwgbV9kZXB0aCgwKQogICAgICAgICAsIG1fZXhlY0RlcHRoKDApCiAg
ICAgICAgICwgbV9zdGF0dXMoU3VjY2VzcykKICAgICAgICAgLCBtX25leHRPYmplY3RSZWZlcmVu
Y2UoMCkKKyAgICAgICAgLCBtX2Jsb2JVUkxzKGJsb2JVUkxzKQogICAgIHsKICAgICAgICAgQVNT
RVJUKCF0cnlDYXRjaC5IYXNDYXVnaHQoKSk7CiAgICAgICAgIGlmIChtZXNzYWdlUG9ydHMpIHsK
QEAgLTk3Nyw2ICs5NzgsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWJsb2IpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIG1fd3JpdGVyLndyaXRlQmxvYihibG9iLT51cmwoKS5zdHJp
bmcoKSwgYmxvYi0+dHlwZSgpLCBibG9iLT5zaXplKCkpOworICAgICAgICBtX2Jsb2JVUkxzLmFw
cGVuZChibG9iLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgfQogCiAgICAgdm9pZCB3cml0ZUZpbGUo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQpAQCAtOTg1LDYgKzk4Nyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICghZmlsZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV93cml0
ZXIud3JpdGVGaWxlKGZpbGUtPnBhdGgoKSwgZmlsZS0+dXJsKCkuc3RyaW5nKCksIGZpbGUtPnR5
cGUoKSk7CisgICAgICAgIG1fYmxvYlVSTHMuYXBwZW5kKGZpbGUtPnVybCgpLnN0cmluZygpKTsK
ICAgICB9CiAKICAgICB2b2lkIHdyaXRlRmlsZUxpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlKQpAQCAtOTkzLDYgKzk5Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghZmlsZUxpc3Qp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1fd3JpdGVyLndyaXRlRmlsZUxpc3QoKmZp
bGVMaXN0KTsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gZmlsZUxpc3QtPmxlbmd0aCgpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICBtX2Jsb2JVUkxzLmFwcGVuZChmaWxlTGlzdC0+aXRlbShpKS0+dXJsKCkuc3RyaW5nKCkpOwog
ICAgIH0KIAogICAgIHZvaWQgd3JpdGVJbWFnZURhdGEodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlKQpAQCAtMTExMSw2ICsxMTE3LDcgQEAgcHJpdmF0ZToKICAgICBPYmplY3RQb29sIG1fdHJh
bnNmZXJyZWRNZXNzYWdlUG9ydHM7CiAgICAgT2JqZWN0UG9vbCBtX3RyYW5zZmVycmVkQXJyYXlC
dWZmZXJzOwogICAgIHVpbnQzMl90IG1fbmV4dE9iamVjdFJlZmVyZW5jZTsKKyAgICBWZWN0b3I8
U3RyaW5nPiYgbV9ibG9iVVJMczsKIH07CiAKIFNlcmlhbGl6ZXI6OlN0YXRlQmFzZSogU2VyaWFs
aXplcjo6ZG9TZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBTdGF0ZUJhc2Uq
IG5leHQpCkBAIC0yMjA0LDcgKzIyMTEsNyBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsCiAgICAgU2VyaWFs
aXplcjo6U3RhdHVzIHN0YXR1czsKICAgICB7CiAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRj
aDsKLSAgICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdyaXRlciwgbWVzc2FnZVBvcnRzLCBh
cnJheUJ1ZmZlcnMsIHRyeUNhdGNoKTsKKyAgICAgICAgU2VyaWFsaXplciBzZXJpYWxpemVyKHdy
aXRlciwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlcnMsIG1fYmxvYlVSTHMsIHRyeUNhdGNoKTsK
ICAgICAgICAgc3RhdHVzID0gc2VyaWFsaXplci5zZXJpYWxpemUodmFsdWUpOwogICAgICAgICBp
ZiAoc3RhdHVzID09IFNlcmlhbGl6ZXI6OkpTRXhjZXB0aW9uKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB0aGVyZSB3YXMgYSBKUyBleGNlcHRpb24gdGhyb3duLCByZS10aHJvdyBpdC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXgg
NjhiMTk1NGQ1ZjUxMTFlMTg1OGUyMjkwOGJmMTkxNDJiODI3NjM5NC4uN2Y2YjllMDNmYTNmMjU2
YzEyZmY2YzZiYWJlM2VmNGYzZDczOWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTgwLDYgKzgwLDggQEAgcHVibGlj
OgogICAgIFNjcmlwdFZhbHVlIGRlc2VyaWFsaXplRm9ySW5zcGVjdG9yKFNjcmlwdFN0YXRlKik7
CiAjZW5kaWYKIAorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcygpIGNvbnN0IHsg
cmV0dXJuIG1fYmxvYlVSTHM7IH0KKwogcHJpdmF0ZToKICAgICBlbnVtIFN0cmluZ0RhdGFNb2Rl
IHsKICAgICAgICAgU3RyaW5nVmFsdWUsCkBAIC05NSw2ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICBTdHJpbmcgbV9kYXRhOwogICAgIE93blB0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1f
YXJyYXlCdWZmZXJDb250ZW50c0FycmF5OworICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxvYlVSTHM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcAppbmRleCBjOTk1Mjc0Y2I0YmYxZGUyNzczNTI0MmZiZGRjMjEw
MmRmN2E1OWZhLi5hM2E0MWRlZDg4N2U1NDU2MmMxZWM2ZTJhYmIxNmE2YzQzNTZiNGI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTIxNiw3ICsy
MTYsNyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4
T2JqZWN0KFY4UHJveHkqIHByb3h5LCBXcmFwcGVyVAogICAgICAgICAgICAgICAgICAgICBwcm94
eSA9IFY4UHJveHk6OnJldHJpZXZlKGZyYW1lKTsKICAgICAgICAgICAgIH0KICNpZiBFTkFCTEUo
V09SS0VSUykKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKGlzV3JhcHBl
ck9mVHlwZShnbG9iYWxQcm90b3R5cGUsICZWOFdvcmtlckNvbnRleHQ6OmluZm8pKQogICAgICAg
ICAgICAgICAgIHdvcmtlckNvbnRleHQgPSBWOFdvcmtlckNvbnRleHQ6OnRvTmF0aXZlKGxvb2t1
cERPTVdyYXBwZXIoVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0ZSgpLCBjb250ZXh0LT5HbG9i
YWwoKSkpOwogI2VuZGlmCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZTVlMDAxZWQ1OWJjMDM4MGE4NmMw
ZjJkODY0NzQ0MTFkNzg5ZGEwLi5iYWI5Y2I2Y2IyNzAyOWVlOTY1MmI0ZGExZDI4YTU2YTA1NDA3
N2QzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDMtMTYgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEluZGV4ZWREQjogQXNzZXJ0
aW9uIGZhaWx1cmUgd2hlbiBzdG9yaW5nIEZpbGUgb2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY3NDYKKworICAgICAgICBFbnN1cmUgdGhh
dCBCbG9iL0ZpbGUvRmlsZUxpc3QgdHlwZXMgYXJlIHJlamVjdGVkIGluIElEQiB2YWx1ZXMsIHRv
IGRldGVjdCByZWdyZXNzaW9ucy4KKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgor
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL25vYmxvYnMuaHRtbDogQWRkZWQuCisKIDIw
MTItMDMtMTUgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBGaXhpbmcgQ2hyb21pdW0gZXhwZWN0YXRpb25zIGFmdGVy
IHdlIGJlZ2FuIGZhbGxpbmcgYmFjayB0byB0aGUgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Jsb2JzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODY1
MDI0ZmVhZGUzNGE4MjEzYTI4MThhM2Y1YTAxYmIxMzBlOGM1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9icy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw4MiBAQAorCitDb25maXJtIEJsb2IvRmlsZS9GaWxlTGlzdCBsaW1pdGF0aW9ucyBvZiBX
ZWJLaXQncyBJbmRleGVkREIgaW1wbGVtZW50YXRpb24uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4
ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0lu
ZGV4ZWREQjsKK1BBU1MgQm9vbGVhbihpbmRleGVkREIgJiYgSURCQ3Vyc29yICYmIElEQkRhdGFi
YXNlICYmIElEQkRhdGFiYXNlRXJyb3IgJiYgSURCRGF0YWJhc2VFeGNlcHRpb24gJiYgSURCRmFj
dG9yeSAmJiBJREJJbmRleCAmJiBJREJLZXlSYW5nZSAmJiBJREJPYmplY3RTdG9yZSAmJiBJREJS
ZXF1ZXN0ICYmIElEQlRyYW5zYWN0aW9uKSBpcyB0cnVlCisKKworUHJlcGFyZSBEYXRhYmFzZQor
aW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCdub2Jsb2JzJykKK2luZGV4ZWREQi5vcGVuKCdub2Js
b2JzJykKK2RiID0gcmVxdWVzdC5yZXN1bHQKK1BBU1MgZGIudmVyc2lvbiBpcyAiIgorZGIuc2V0
VmVyc2lvbignMScpCitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQor
c3RvcmUucHV0KCd2YWx1ZScsICdrZXknKQorCit0ZXN0QmxvYigpOgorQmxvYkJ1aWxkZXIgPSB3
aW5kb3cuQmxvYkJ1aWxkZXIgfHwgd2luZG93LldlYktpdEJsb2JCdWlsZGVyCitQQVNTIEJsb2JC
dWlsZGVyICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBGaWxlUmVhZGVyICE9IG51bGwgaXMgdHJ1ZQor
YnVpbGRlciA9IG5ldyBCbG9iQnVpbGRlcigpCit0ZXN0X2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRl
c3QuIFRoaXMgaXMgb25seSBhIHRlc3QuJworYnVpbGRlci5hcHBlbmQodGVzdF9jb250ZW50KQor
YmxvYiA9IGJ1aWxkZXIuZ2V0QmxvYigpCisKK3ZhbGlkYXRlRXhjZXB0aW9ucyhibG9iKToKK3Ry
YW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3JlTmFtZScsIElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEUpCitzdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCdzdG9yZU5hbWUnKQor
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLnB1dChibG9iLCAna2V5JykKK1BBU1MgRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLkRBVEFfQ0xPTkVf
RVJSCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuYWRkKGJsb2IsICdrZXknKQorUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9D
TE9ORV9FUlIKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkKK2N1cnNvciA9IHJlcXVlc3Qu
cmVzdWx0CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gY3Vyc29yLnVwZGF0ZShibG9iKQorUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFUQV9D
TE9ORV9FUlIKKwordGVzdEZpbGUoKToKK2ZpbGUgPSBmaWxlSW5wdXQuZmlsZXNbMF0KKwordmFs
aWRhdGVFeGNlcHRpb25zKGZpbGUpOgordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbignc3Rv
cmVOYW1lJywgSURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkKK3N0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUu
cHV0KGZpbGUsICdrZXknKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyBET01FeGNlcHRpb24uREFUQV9DTE9ORV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBz
dG9yZS5hZGQoZmlsZSwgJ2tleScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBj
b2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorcmVxdWVzdCA9IHN0b3JlLm9wZW5D
dXJzb3IoKQorY3Vyc29yID0gcmVxdWVzdC5yZXN1bHQKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBjdXJzb3IudXBkYXRlKGZpbGUpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBj
b2RlIGlzIERPTUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUgorCit0ZXN0RmlsZUxpc3QoKToKK2Zp
bGVsaXN0ID0gZmlsZUlucHV0LmZpbGVzCisKK3ZhbGlkYXRlRXhjZXB0aW9ucyhmaWxlbGlzdCk6
Cit0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZU5hbWUnLCBJREJUcmFuc2FjdGlv
bi5SRUFEX1dSSVRFKQorc3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5wdXQoZmlsZWxpc3QsICdrZXknKQor
UEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uREFU
QV9DTE9ORV9FUlIKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBzdG9yZS5hZGQoZmlsZWxpc3Qs
ICdrZXknKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNl
cHRpb24uREFUQV9DTE9ORV9FUlIKK3JlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKCkKK2N1cnNv
ciA9IHJlcXVlc3QucmVzdWx0CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gY3Vyc29yLnVwZGF0
ZShmaWxlbGlzdCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9N
RXhjZXB0aW9uLkRBVEFfQ0xPTkVfRVJSCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbm9ibG9icy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbm9ibG9i
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk5Y2VkOWI3Mzg3ZTA3NGMzNTc0OWI2MzI0MDgyYzE3YTMzMmM5
Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9ub2Js
b2JzLmh0bWwKQEAgLTAsMCArMSwxMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
aW5wdXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGVJbnB1dCIgbXVsdGlwbGU+PC9pbnB1dD4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
CitkZXNjcmlwdGlvbigiQ29uZmlybSBCbG9iL0ZpbGUvRmlsZUxpc3QgbGltaXRhdGlvbnMgb2Yg
V2ViS2l0J3MgSW5kZXhlZERCIGltcGxlbWVudGF0aW9uLiIpOworLy8gRklYTUU6IFRoaXMgdmVy
aWZpZXMgdGhhdCBibG9iLXR5cGUgZGF0YSBpcyByZWplY3RlZCBmb3Igbm93LCByYXRoZXIgdGhh
biBzaWxlbnRseSBmYWlsaW5nLgorLy8gVHJhY2tlZCBmb3IgdGhlIENocm9taXVtIHBvcnQgYXM6
IGh0dHA6Ly9jcmJ1Zy5jb20vMTA4MDEyCisKK2ZpbGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmaWxlSW5wdXQiKTsKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB2YXIg
ZmlsZVJlY3QgPSBmaWxlSW5wdXQuZ2V0Q2xpZW50UmVjdHMoKVswXTsKKyAgICB2YXIgdGFyZ2V0
WCA9IGZpbGVSZWN0LmxlZnQgKyBmaWxlUmVjdC53aWR0aCAvIDI7CisgICAgdmFyIHRhcmdldFkg
PSBmaWxlUmVjdC50b3AgKyBmaWxlUmVjdC5oZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLmJl
Z2luRHJhZ1dpdGhGaWxlcyhbJ3Jlc291cmNlcy90ZXN0LWRhdGEuaHRtbCcsICdyZXNvdXJjZXMv
dGVzdC1kYXRhLnR4dCddKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh0YXJnZXRYLCB0
YXJnZXRZKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgcHJlcGFyZURhdGFiYXNlKCk7
Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVEYXRhYmFzZSgpCit7CisgICAgZGVidWcoIiIpOworICAg
IGRlYnVnKCJQcmVwYXJlIERhdGFiYXNlIik7CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImlu
ZGV4ZWREQi5kZWxldGVEYXRhYmFzZSgnbm9ibG9icycpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbihlKSB7CisgICAgICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3Blbign
bm9ibG9icycpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGUpIHsKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZGIudmVyc2lvbiIsICIiKTsKKyAgICAgICAgICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygi
c3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJzdG9yZS5wdXQoJ3ZhbHVlJywgJ2tleScpIik7CisgICAgICAgICAg
ICAgICAgdmFyIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7CisgICAgICAgICAgICAgICAgdHJhbnMu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICAgICAgICAgIHRyYW5z
Lm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAgICAgICAgICB0cmFu
cy5vbmNvbXBsZXRlID0gdGVzdEJsb2IoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07Cisg
ICAgfTsKK30KKworZnVuY3Rpb24gdGVzdEJsb2IoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBk
ZWJ1ZygidGVzdEJsb2IoKToiKTsKKworICAgIGV2YWxBbmRMb2coIkJsb2JCdWlsZGVyID0gd2lu
ZG93LkJsb2JCdWlsZGVyIHx8IHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlciIpOworICAgIHNob3Vs
ZEJlVHJ1ZSgiQmxvYkJ1aWxkZXIgIT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgiRmlsZVJl
YWRlciAhPSBudWxsIik7CisgICAgZXZhbEFuZExvZygiYnVpbGRlciA9IG5ldyBCbG9iQnVpbGRl
cigpIik7CisgICAgZXZhbEFuZExvZygidGVzdF9jb250ZW50ID0gJ1RoaXMgaXMgYSB0ZXN0LiBU
aGlzIGlzIG9ubHkgYSB0ZXN0LiciKTsKKyAgICBldmFsQW5kTG9nKCJidWlsZGVyLmFwcGVuZCh0
ZXN0X2NvbnRlbnQpIik7CisgICAgZXZhbEFuZExvZygiYmxvYiA9IGJ1aWxkZXIuZ2V0QmxvYigp
Iik7CisgICAgdmFsaWRhdGVFeGNlcHRpb25zKCJibG9iIiwgdGVzdEZpbGUpOworfQorCitmdW5j
dGlvbiB0ZXN0RmlsZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0RmlsZSgp
OiIpOworICAgIGV2YWxBbmRMb2coImZpbGUgPSBmaWxlSW5wdXQuZmlsZXNbMF0iKTsKKyAgICB2
YWxpZGF0ZUV4Y2VwdGlvbnMoImZpbGUiLCB0ZXN0RmlsZUxpc3QpOworfQorCitmdW5jdGlvbiB0
ZXN0RmlsZUxpc3QoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGVzdEZpbGVMaXN0
KCk6Iik7CisgICAgZXZhbEFuZExvZygiZmlsZWxpc3QgPSBmaWxlSW5wdXQuZmlsZXMiKTsKKyAg
ICB2YWxpZGF0ZUV4Y2VwdGlvbnMoImZpbGVsaXN0IiwgZmluaXNoSlNUZXN0KTsKK30KKworZnVu
Y3Rpb24gdmFsaWRhdGVFeGNlcHRpb25zKHZhcmlhYmxlLCBvbkNvbXBsZXRlKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1ZygidmFsaWRhdGVFeGNlcHRpb25zKCIgKyB2YXJpYWJsZSArICIp
OiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oJ3N0b3Jl
TmFtZScsIElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEUpIik7CisgICAgZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykiKTsKKyAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5wdXQoIiArIHZhcmlhYmxlICsgIiwgJ2tleScpIiwgIkRP
TUV4Y2VwdGlvbi5EQVRBX0NMT05FX0VSUiIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
InN0b3JlLmFkZCgiICsgdmFyaWFibGUgKyAiLCAna2V5JykiLCAiRE9NRXhjZXB0aW9uLkRBVEFf
Q0xPTkVfRVJSIik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3Io
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFs
QW5kTG9nKCJjdXJzb3IgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJjdXJzb3IudXBkYXRlKCIgKyB2YXJpYWJsZSArICIpIiwgIkRPTUV4Y2VwdGlv
bi5EQVRBX0NMT05FX0VSUiIpOworICAgIH07CisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
IG9uQ29tcGxldGU7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB0ZXN0KCk7
Cit9IGVsc2UgeworICAgIGFsZXJ0KCJTZWxlY3QgZmlsZShzKSB1c2luZyB0aGUgaW5wdXQgY29u
dHJvbCBhYm92ZSB0byBpbml0aWF0ZSB0aGUgdGVzdCIpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJmaWxlSW5wdXQiKS5vbmNoYW5nZSA9IHRlc3Q7Cit9CisKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>