<?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>103763</bug_id>
          
          <creation_ts>2012-11-30 12:31:36 -0800</creation_ts>
          <short_desc>IndexedDB: Correct database version after aborted upgrade</short_desc>
          <delta_ts>2012-12-04 12:26:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103920</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>780314</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 12:31:36 -0800</bug_when>
    <thetext>IndexedDB: Correct database version after aborted upgrade</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780316</commentid>
    <comment_count>1</comment_count>
      <attachid>177012</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 12:37:52 -0800</bug_when>
    <thetext>Created attachment 177012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780317</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 12:38:19 -0800</bug_when>
    <thetext>dgrogan@ - can you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780403</commentid>
    <comment_count>3</comment_count>
      <attachid>177012</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-30 14:03:25 -0800</bug_when>
    <thetext>Comment on attachment 177012
Patch

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

LGTM

It&apos;s a little weird that the &quot;previous&quot; data for objectstores is stored in IDBTransaction but the &quot;previous&quot; data for the database is stored in IDBDatabase. But this does seem like the best option.

&gt; Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp:121
&gt; +        idbDatabase = IDBDatabase::create(scriptExecutionContext(), backend, m_databaseCallbacks, IDBDatabaseMetadata::DefaultIntVersion);

The default is ok here because this IDBDatabase object will never have a versionchange transaction, correct?

&gt; LayoutTests/storage/indexeddb/mozilla/versionchange-abort-expected.txt:16
&gt;  FIXME: Fails because of http://wkb.ug/102412

This line can be deleted and that bug duped against this one.

&gt; LayoutTests/storage/indexeddb/resources/unblocked-version-changes.js:39
&gt; +    evalAndLog(&quot;transaction.abort()&quot;);

This test would still pass without this line, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780447</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 15:00:28 -0800</bug_when>
    <thetext>*** Bug 102412 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780483</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 15:40:01 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 177012 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177012&amp;action=review
&gt; 
&gt; LGTM
&gt; 
&gt; It&apos;s a little weird that the &quot;previous&quot; data for objectstores is stored in IDBTransaction but the &quot;previous&quot; data for the database is stored in IDBDatabase. But this does seem like the best option.

I agree that the transaction would be a better place for it. I&apos;ll see if I can make that work w/o too much plumbing.

&gt; &gt; Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp:121
&gt; &gt; +        idbDatabase = IDBDatabase::create(scriptExecutionContext(), backend, m_databaseCallbacks, IDBDatabaseMetadata::DefaultIntVersion);
&gt; 
&gt; The default is ok here because this IDBDatabase object will never have a versionchange transaction, correct?

Correct.

&gt; &gt; LayoutTests/storage/indexeddb/mozilla/versionchange-abort-expected.txt:16
&gt; &gt;  FIXME: Fails because of http://wkb.ug/102412
&gt; 
&gt; This line can be deleted and that bug duped against this one.

Thanks, updated in next patch upload.

&gt; &gt; LayoutTests/storage/indexeddb/resources/unblocked-version-changes.js:39
&gt; &gt; +    evalAndLog(&quot;transaction.abort()&quot;);
&gt; 
&gt; This test would still pass without this line, correct?

No, it&apos;s the important bit of the test - that an aborted version change gets rolled back. The spec appears to read that closing the connection should have no effect on the version change itself (although the explicit close shouldn&apos;t be necessary with the abort.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780568</commentid>
    <comment_count>6</comment_count>
      <attachid>177059</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 17:17:06 -0800</bug_when>
    <thetext>Created attachment 177059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780569</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-30 17:17:19 -0800</bug_when>
    <thetext>dgrogan@ - can you take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781807</commentid>
    <comment_count>8</comment_count>
      <attachid>177059</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-03 13:17:46 -0800</bug_when>
    <thetext>Comment on attachment 177059
Patch

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

LGTM

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:98
&gt; +void IDBDatabase::transactionFinished(IDBTransaction* transaction, bool completed)

You don&apos;t need this anymore.

&gt; Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp:87
&gt; +    IDBDatabaseMetadata metadata = databaseBackend-&gt;metadata();

We could eliminate this sync ipc call if the new metadata were passed in the upgradeneeded message, right? Could you add a fixme to that effect?

&gt; Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp:119
&gt; +    // FIXME: Not safe to use backend here as it is only set if upgradeneeded didn&apos;t fire. This is due to the proxy not passing a duplicate

This is fixed with the changes to WebIDBCallbacksImpl, right?

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.h:61
&gt; +    static PassRefPtr&lt;IDBTransaction&gt; create(ScriptExecutionContext*, int64_t, PassRefPtr&lt;IDBTransactionBackendInterface&gt;, IDBDatabase*, IDBOpenDBRequest*, const IDBDatabaseMetadata&amp;);

Could you label the new parameter oldMetadata or oldMetadataForRollback or something similar? Or just previousMetadata like m_previousMetadata.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781836</commentid>
    <comment_count>9</comment_count>
      <attachid>177059</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 13:41:33 -0800</bug_when>
    <thetext>Comment on attachment 177059
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:98
&gt;&gt; +void IDBDatabase::transactionFinished(IDBTransaction* transaction, bool completed)
&gt; 
&gt; You don&apos;t need this anymore.

Hooray for another set of eyes!

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp:87
&gt;&gt; +    IDBDatabaseMetadata metadata = databaseBackend-&gt;metadata();
&gt; 
&gt; We could eliminate this sync ipc call if the new metadata were passed in the upgradeneeded message, right? Could you add a fixme to that effect?

Done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp:119
&gt;&gt; +    // FIXME: Not safe to use backend here as it is only set if upgradeneeded didn&apos;t fire. This is due to the proxy not passing a duplicate
&gt; 
&gt; This is fixed with the changes to WebIDBCallbacksImpl, right?

Oops, yes. Removed.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.h:61
&gt;&gt; +    static PassRefPtr&lt;IDBTransaction&gt; create(ScriptExecutionContext*, int64_t, PassRefPtr&lt;IDBTransactionBackendInterface&gt;, IDBDatabase*, IDBOpenDBRequest*, const IDBDatabaseMetadata&amp;);
&gt; 
&gt; Could you label the new parameter oldMetadata or oldMetadataForRollback or something similar? Or just previousMetadata like m_previousMetadata.

Will do (just &quot;previousMetadata&quot; for consistency). I also pondered moving the storage into the IDBOpenDBRequest but keeping it in IDBTransaction for now, since that&apos;s where the object store rollback metadata lives at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781846</commentid>
    <comment_count>10</comment_count>
      <attachid>177320</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 13:46:03 -0800</bug_when>
    <thetext>Created attachment 177320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781857</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-03 13:56:50 -0800</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782252</commentid>
    <comment_count>12</comment_count>
      <attachid>177320</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 23:17:59 -0800</bug_when>
    <thetext>Comment on attachment 177320
Patch

Clearing flags on attachment: 177320

Committed r136475: &lt;http://trac.webkit.org/changeset/136475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782253</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-03 23:18:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782711</commentid>
    <comment_count>14</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-04 10:53:37 -0800</bug_when>
    <thetext>*** Bug 100537 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782798</commentid>
    <comment_count>15</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-04 12:26:17 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; *** Bug 100537 has been marked as a duplicate of this bug. ***

I think you got the wrong bug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177012</attachid>
            <date>2012-11-30 12:37:52 -0800</date>
            <delta_ts>2012-11-30 17:17:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103763-20121130123523.patch</filename>
            <type>text/plain</type>
            <size>14326</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMyMzk2YWY2YTk0YzNh
Nzc0ZjcxY2Q5OGNmMzYzOTBiMzU3MmI3Yy4uMDczMDJlOWRmZTg1ZGIxMjEzNjM1YjJkOWFmNjdh
OGE0MmU5OWY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTExLTMwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb3Jy
ZWN0IGRhdGFiYXNlIHZlcnNpb24gYWZ0ZXIgYWJvcnRlZCB1cGdyYWRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM3NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZnRlciBhbiBhYm9ydGVkICJ2ZXJz
aW9uY2hhbmdlIiB0cmFuc2FjdGlvbiwgdGhlIElEQkRhdGFiYXNlIHdvdWxkIGZldGNoIGEgZnJl
c2ggc25hcHNob3QKKyAgICAgICAgb2YgdGhlIG1ldGFkYXRhIGZyb20gdGhlIGJhY2sgZW5kLiBJ
ZiB0aGUgYmFjayBlbmQgaGFkIGFscmVhZHkgc3RhcnRlZCBhIG5ldyAidmVyc2lvbmNoYW5nZSIK
KyAgICAgICAgdHJhbnNhY3Rpb24gdGhlIHNuYXBzaG90IHdvdWxkIGJlIGJvZ3VzLiBJbnN0ZWFk
LCBzYXZlIGEgY29weSBvZiB0aGUgSURCRGF0YWJhc2UncyBtZXRhZGF0YQorICAgICAgICBhbmQg
cm9sbCBiYWNrIHRvIHRoYXQsIGFzIGlzIGRvbmUgZm9yIElEQk9iamVjdFN0b3JlLgorCisgICAg
ICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwt
dXBncmFkZW5lZWRlZC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3ZlcnNpb25jaGFuZ2UtYWJvcnQuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRl
eGVkZGIvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6Y3JlYXRlKTogUGFzcyB0aHJvdWdoIHRoZSBvbGQgdmVyc2lvbiwgZm9yIHJvbGxiYWNrIHB1
cnBvc2VzLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNyZWF0ZWQpOiBEb24ndCBu
ZWVkIHRvIHNuYXBzaG90IG1ldGFkYXRhIGhlcmUgbm93IHRoYXQKKyAgICAgICAgdGhlIHNldFZl
cnNpb24oKSBBUEkgaXMgZ29uZS4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFu
c2FjdGlvbkZpbmlzaGVkKTogUmVzdG9yZSBoZXJlLiBTbmFwc2hvdCBvbiBzdWNjZXNzIHNpbmNl
IG9iamVjdAorICAgICAgICBzdG9yZXMgbWF5IGhhdmUgbXV0YXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oOgorICAgICAgICAoSURCRGF0YWJhc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb246Om9uQWJvcnQpOiBQYXNzIGFsb25nIGEgY29tcGxldGUvYWJvcnQgZmxhZy4KKwogMjAx
Mi0xMS0yOSAgVGlhbmNoZW5nIEppYW5nICA8dGlqaWFuZ0ByaW0uY29tPgogCiAgICAgICAgIFtC
bGFja0JlcnJ5XSBVcGRhdGUgQkIxMCBmb3JtIHRoZW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IGU3OTljMGRiMmVjYWFiNWFk
YzRmM2JlMjc3YTYyNjI0ZjRmZjZhY2MuLmY2NTM4MmNhNzM4ODE3NzM1Mjc0ZTE0NWQyOWQwYjc1
NDBlNGMyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKQEAgLTUyLDE0ICs1MiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CitQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tz
LCBpbnQ2NF90IG9sZFZlcnNpb24pCiB7Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRh
YmFzZShhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UsIGNhbGxiYWNr
cykpKTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKGFkb3B0UmVmKG5ldyBJ
REJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSwgY2FsbGJhY2tzLCBvbGRWZXJzaW9uKSkpOwog
ICAgIGlkYkRhdGFiYXNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gaWRiRGF0YWJh
c2UucmVsZWFzZSgpOwogfQogCi1JREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+IGJhY2tlbmQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykK
K0lEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IG9sZFZlcnNpb24p
CiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChi
YWNrZW5kKQogICAgICwgbV9jbG9zZVBlbmRpbmcoZmFsc2UpCkBAIC02OSw2ICs2OSw4IEBAIElE
QkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlCiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlz
IG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CiAgICAgbV9tZXRhZGF0YSA9IG1fYmFja2VuZC0+bWV0YWRhdGEoKTsKKyAgICBt
X3ByZXZpb3VzTWV0YWRhdGEgPSBtX21ldGFkYXRhOworICAgIG1fcHJldmlvdXNNZXRhZGF0YS5p
bnRWZXJzaW9uID0gb2xkVmVyc2lvbjsKIH0KIAogSURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSgp
CkBAIC05MywxMSArOTUsMTAgQEAgdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVk
KElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICBpZiAodHJhbnNhY3Rpb24tPmlzVmVy
c2lvbkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24pOwogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uOwot
ICAgICAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogICAgIH0KIH0KIAot
dm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25GaW5pc2hlZChJREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24pCit2b2lkIElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkZpbmlzaGVkKElEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgYm9vbCBjb21wbGV0ZWQpCiB7CiAgICAgQVNTRVJUKHRyYW5z
YWN0aW9uKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24p
KTsKQEAgLTEwNiw3ICsxMDcsMTIgQEAgdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25GaW5p
c2hlZChJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5p
c1ZlcnNpb25DaGFuZ2UoKSkgewogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
biA9IDA7Ci0gICAgICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CisgICAg
ICAgIGlmIChjb21wbGV0ZWQpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBFbGltaW5hdGUgdGhp
cyBmZXRjaCBmcm9tIHRoZSBiYWNrIGVuZCAtIGdhdGhlciB0aGUgdXBkYXRlZCBtZXRhZGF0YSBm
cm9tIHRoZQorICAgICAgICAgICAgLy8gdHJhbnNhY3Rpb24ncyBvYmplY3Qgc3RvcmVzLCBvciBo
YXZlIG5ldyBtZXRhZGF0YSBwdXNoZWQgdG8gSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzLgor
ICAgICAgICAgICAgbV9tZXRhZGF0YSA9IG1fYmFja2VuZC0+bWV0YWRhdGEoKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBtX21ldGFkYXRhID0gbV9wcmV2aW91c01ldGFkYXRhOwogICAg
IH0KIAogICAgIGlmIChtX2Nsb3NlUGVuZGluZyAmJiBtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAppbmRl
eCBhOGFiOTRkOTQ5M2JkZTgzYmJhNzk4MDRiNDUwMGE1ODA4YjQ1ZGI5Li5kMmJkNjk0NDA1Njk1
NjU0NWQ3OGM0NTA2ZjRkMzFjMjcwZDU0YTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTUyLDExICs1MiwxMSBAQCB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBJREJEYXRhYmFzZSA6IHB1YmxpYyBSZWZDb3VudGVk
PElEQkRhdGFiYXNlPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIEV2ZW50VGFyZ2V0
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IG9sZFZlcnNpb24p
OwogICAgIH5JREJEYXRhYmFzZSgpOwogCiAgICAgdm9pZCB0cmFuc2FjdGlvbkNyZWF0ZWQoSURC
VHJhbnNhY3Rpb24qKTsKLSAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWQoSURCVHJhbnNhY3Rp
b24qKTsKKyAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWQoSURCVHJhbnNhY3Rpb24qLCBib29s
IGNvbXBsZXRlZCA9IHRydWUpOwogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKICAgICBjb25z
dCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEubmFtZTsgfQpAQCAtMTA0
LDggKzEwNCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6
ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4pOwotCisgICAgSURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3Qgb2xkVmVyc2lvbik7CiAKICAgICAv
LyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7
IH0KQEAgLTExNiw2ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xvc2VDb25uZWN0aW9u
KCk7CiAKICAgICBJREJEYXRhYmFzZU1ldGFkYXRhIG1fbWV0YWRhdGE7CisgICAgSURCRGF0YWJh
c2VNZXRhZGF0YSBtX3ByZXZpb3VzTWV0YWRhdGE7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV92
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb247CiAgICAgSGFzaFNldDxJREJUcmFuc2FjdGlvbio+IG1f
dHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPcGVuREJSZXF1ZXN0LmNwcAppbmRleCA1NTFkMGRkMDkzYmE3Y2UwZmQwNjgzYzM1YWI1
MDExN2MyM2UxNTFiLi5hOGVmMDk4NjAxN2VmODY3YzNmOTAwN2VjYmM2MDFhM2ViM2U5NmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmNwcApAQCAtODMsOSArODMsMTQgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVw
Z3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWMKIAog
ICAgIEFTU0VSVChtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKIAorICAgIGlmIChvbGRWZXJzaW9uID09
IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikgeworICAgICAgICAvLyBUaGlzIGRh
dGFiYXNlIGhhc24ndCBoYWQgYW4gaW50ZWdlciB2ZXJzaW9uIGJlZm9yZS4KKyAgICAgICAgb2xk
VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uOworICAgIH0K
KwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlQmFja2Vu
ZCA9IHBycERhdGFiYXNlQmFja2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBwcnBUcmFuc2FjdGlvbkJhY2tlbmQ7Ci0g
ICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkYXRhYmFzZUJhY2tlbmQsIG1fZGF0YWJhc2VDYWxs
YmFja3MpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFz
ZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZGF0YWJhc2VCYWNrZW5kLCBtX2Rh
dGFiYXNlQ2FsbGJhY2tzLCBvbGRWZXJzaW9uKTsKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzLT5j
b25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gMDsK
IApAQCAtOTUsMTAgKzEwMCw2IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVl
ZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjCiAgICAgbV90cmFu
c2FjdGlvbiA9IGZyb250ZW5kOwogICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoaWRiRGF0
YWJhc2UucmVsZWFzZSgpKTsKIAotICAgIGlmIChvbGRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0
YWRhdGE6Ok5vSW50VmVyc2lvbikgewotICAgICAgICAvLyBUaGlzIGRhdGFiYXNlIGhhc24ndCBo
YWQgYW4gaW50ZWdlciB2ZXJzaW9uIGJlZm9yZS4KLSAgICAgICAgb2xkVmVyc2lvbiA9IElEQkRh
dGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uOwotICAgIH0KICAgICBpZiAobV92ZXJz
aW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKICAgICAgICAgbV92ZXJz
aW9uID0gMTsKICAgICBlbnF1ZXVlRXZlbnQoSURCVXBncmFkZU5lZWRlZEV2ZW50OjpjcmVhdGUo
b2xkVmVyc2lvbiwgbV92ZXJzaW9uLCBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50KSk7
CkBAIC0xMTcsNyArMTE4LDcgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQKICAgICAgICAgQVNT
RVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQo
bV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAgICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQsIG1fZGF0YWJhc2VDYWxs
YmFja3MpOworICAgICAgICBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tzLCBJREJEYXRh
YmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbik7CiAgICAgICAgIG1fZGF0YWJhc2VDYWxs
YmFja3MtPmNvbm5lY3QoaWRiRGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICBtX2RhdGFiYXNlQ2Fs
bGJhY2tzID0gMDsKICAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFz
ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKaW5kZXggODM3ZDU0NmE3Y2ZmMGMwZmYxZDEyNDRiMTZmZTczOTZjNzQ3
ZWYwNy4uNTM5N2Q5YjNhNGU4MDAyZGEwZmM0MmY2ZDQ1ODNlMGYzZDYxZmRjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApA
QCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQWJvcnQoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcikKIAogICAgIC8vIEVucXVldWUgZXZlbnRzIGJlZm9y
ZSBub3RpZnlpbmcgZGF0YWJhc2UsIGFzIGRhdGFiYXNlIG1heSBjbG9zZSB3aGljaCBlbnF1ZXVl
cyBtb3JlIGV2ZW50cyBhbmQgb3JkZXIgbWF0dGVycy4KICAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKLSAgICBtX2Rh
dGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOworICAgIG1fZGF0YWJhc2UtPnRyYW5z
YWN0aW9uRmluaXNoZWQodGhpcywgZmFsc2UpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpv
bkNvbXBsZXRlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA2ODE5NDc3YTQ0OTI2NTU4MDZhYmQxMjdkOGVlODBhMGUxOWQ1
OGUzLi45MDhlMDkyYjEwN2FiYTdlMWM2ZTRmMWEwYTM2NzQ4MGViNzk5NDUzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTItMTEtMzAgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IENvcnJlY3QgZGF0YWJhc2UgdmVyc2lvbiBhZnRlciBh
Ym9ydGVkIHVwZ3JhZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzc2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucyBhbmQgdHdlYWsgYSB0ZXN0IHNvIGl0J3Mg
dGVzdGluZyB3aGF0IGl0IGNsYWltZWQuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9p
bnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdW5ibG9j
a2VkLXZlcnNpb24tY2hhbmdlcy5qczoKKyAgICAgICAgKG9uVXBncmFkZU5lZWRlZCk6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy1leHBlY3Rl
ZC50eHQ6CisKIDIwMTItMTEtMjkgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBUeXBvIGluICdhdXRvZm9jdXMnIHNhbmRib3hpbmcgZXJyb3IgbWVzc2FnZS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQt
aW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4
cGVjdGVkLnR4dAppbmRleCA2M2RjMDAzMWU2MWMxMDMxYTNmZTc2OWQzMGJjYzdkOWM3Zjg3ZGQ3
Li43Yzg4NmQ3NTM1MGIxOWU5OGM5N2I1NjM3Y2U0ZTg0MmJlYWUyOGNkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwt
dXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQu
dHh0CkBAIC0xNiwxNCArMTYsMTQgQEAgUEFTUyBkYi52ZXJzaW9uIGlzIDIKIHRyYW5zYWN0aW9u
LmFib3J0KCkKIAogb25BYm9ydCgpOgotRkFJTCBldmVudC50YXJnZXQuZGIudmVyc2lvbiBzaG91
bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMgIChvZiB0eXBlIHN0cmluZykuCitQQVNTIGV2
ZW50LnRhcmdldC5kYi52ZXJzaW9uIGlzIDAKIFBBU1MgcmVxdWVzdC50cmFuc2FjdGlvbiBpcyBu
b24tbnVsbC4KIAogb25FcnJvcigpOgogUEFTUyBkYiBpcyBldmVudC50YXJnZXQucmVzdWx0CiBQ
QVNTIHJlcXVlc3QgaXMgZXZlbnQudGFyZ2V0CiBQQVNTIGV2ZW50LnRhcmdldC5lcnJvci5uYW1l
IGlzICJBYm9ydEVycm9yIgotRkFJTCBldmVudC50YXJnZXQucmVzdWx0LnZlcnNpb24gc2hvdWxk
IGJlIDAgKG9mIHR5cGUgbnVtYmVyKS4gV2FzICAob2YgdHlwZSBzdHJpbmcpLgorUEFTUyBldmVu
dC50YXJnZXQucmVzdWx0LnZlcnNpb24gaXMgMAogUEFTUyByZXF1ZXN0LnRyYW5zYWN0aW9uIGlz
IG51bGwKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lv
bmNoYW5nZS1hYm9ydC1leHBlY3RlZC50eHQKaW5kZXggN2Y2MGUwYWNjMDU5YjI1YzA4M2RmODIy
ZGNlMzA0ZjllMGFlN2Q1NC4uZmIwNDU1MWYxMzZkNTljMzRjMWYzNTcxNzhjYzM5YWZjZGFjMjVk
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJz
aW9uY2hhbmdlLWFib3J0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2UtYWJvcnQtZXhwZWN0ZWQudHh0CkBAIC0xNCw3
ICsxNCw3IEBAIGluZGV4ID0gb2JqZWN0U3RvcmUuY3JlYXRlSW5kZXgoJ2JhcicsICdiYXonKTsK
IFBBU1Mgb2JqZWN0U3RvcmUuaW5kZXhOYW1lcy5sZW5ndGggaXMgMQogZXZlbnQudGFyZ2V0LnRy
YW5zYWN0aW9uLmFib3J0KCk7CiBGSVhNRTogRmFpbHMgYmVjYXVzZSBvZiBodHRwOi8vd2tiLnVn
LzEwMjQxMgotRkFJTCBkYi52ZXJzaW9uIHNob3VsZCBiZSAwIChvZiB0eXBlIG51bWJlcikuIFdh
cyAgKG9mIHR5cGUgc3RyaW5nKS4KK1BBU1MgZGIudmVyc2lvbiBpcyAwCiBQQVNTIGRiLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIGlzIDAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Vu
YmxvY2tlZC12ZXJzaW9uLWNoYW5nZXMuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy5qcwppbmRleCA5NjYzNjM2ZWU5
YTZiNGJiMTk2OWE0YjQ1ZmQ5YTY4OTMyMDMxOWMxLi4xNzExOTc0NzhlOGMzYTM1MWI3ZWZkZjAx
ZjNhNTMyMzFkOWIzYjZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy5qcworKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy5q
cwpAQCAtMjksMTIgKzI5LDE1IEBAIGZ1bmN0aW9uIG9uVXBncmFkZU5lZWRlZChldnQpCiAgICAg
cHJlYW1ibGUoZXZ0KTsKICAgICBldmFsQW5kTG9nKCJkYiA9IHJlcXVlc3QucmVzdWx0Iik7CiAg
ICAgc2hvdWxkQmUoImRiLnZlcnNpb24iLCAiMiIpOworICAgIGV2YWxBbmRMb2coInRyYW5zYWN0
aW9uID0gcmVxdWVzdC50cmFuc2FjdGlvbiIpOwogCiAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMykiKTsKICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IG9uVXBn
cmFkZU5lZWRlZDI7CiAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBvblN1Y2Nlc3M7CiAKKyAgICBl
dmFsQW5kTG9nKCJ0cmFuc2FjdGlvbi5hYm9ydCgpIik7CisgICAgLy8gRklYTUU6IFNob3VsZCBu
b3QgYmUgbmVjZXNzYXJ5LiBodHRwOi8vd2tidWcuY29tLzEwMjI5OAogICAgIGV2YWxBbmRMb2co
ImRiLmNsb3NlKCkiKTsKIH0KIApAQCAtNTksNCArNjIsNCBAQCBmdW5jdGlvbiBvblN1Y2Nlc3Mo
ZXZ0KQogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCi10ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi91bmJsb2NrZWQtdmVyc2lvbi1jaGFuZ2VzLWV4cGVjdGVkLnR4
dAppbmRleCAxZjE4MzE4ZWQyNjEwNzE1YjdkZGM0MzQyZjA0NzkwMDg0NWM5ZTFjLi4yNWRjNmM4
NDZiNmI0OTk4NzRlOTNjYjBlMmVkMjI0YWRiMjkyYTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi91bmJsb2NrZWQtdmVyc2lvbi1jaGFuZ2VzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi91bmJsb2NrZWQtdmVyc2lvbi1j
aGFuZ2VzLWV4cGVjdGVkLnR4dApAQCAtMTQsMTEgKzE0LDEzIEBAIHJlcXVlc3QgPSBpbmRleGVk
REIub3BlbihkYm5hbWUsIDIpCiBvblVwZ3JhZGVOZWVkZWQoKToKIGRiID0gcmVxdWVzdC5yZXN1
bHQKIFBBU1MgZGIudmVyc2lvbiBpcyAyCit0cmFuc2FjdGlvbiA9IHJlcXVlc3QudHJhbnNhY3Rp
b24KIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDMpCit0cmFuc2FjdGlvbi5hYm9y
dCgpCiBkYi5jbG9zZSgpCiAKIG9uRXJyb3IoKToKLUZBSUwgZGIudmVyc2lvbiBzaG91bGQgYmUg
MC4gV2FzIDIuCitQQVNTIGRiLnZlcnNpb24gaXMgMAogCiBvblVwZ3JhZGVOZWVkZWQyKCk6CiBk
YiA9IHJlcXVlc3QucmVzdWx0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177059</attachid>
            <date>2012-11-30 17:17:06 -0800</date>
            <delta_ts>2012-12-03 13:46:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103763-20121130171437.patch</filename>
            <type>text/plain</type>
            <size>22671</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEwZWQ4YWUzMDg2ZWI2
OTc1OGM0ZmZhODVjMDRiNjE3MTA0NzI1ZS4uNzViZTIxZmEzNDE2M2UwNjU0ZWI5MzhhNWZkZThh
NzNjNDU3OTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDEyLTExLTMwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgSW5kZXhlZERCOiBDb3Jy
ZWN0IGRhdGFiYXNlIHZlcnNpb24gYWZ0ZXIgYWJvcnRlZCB1cGdyYWRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM3NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZnRlciBhbiBhYm9ydGVkICJ2ZXJz
aW9uY2hhbmdlIiB0cmFuc2FjdGlvbiwgdGhlIElEQkRhdGFiYXNlIHdvdWxkIGZldGNoIGEgZnJl
c2ggc25hcHNob3QKKyAgICAgICAgb2YgdGhlIG1ldGFkYXRhIGZyb20gdGhlIGJhY2sgZW5kLiBJ
ZiB0aGUgYmFjayBlbmQgaGFkIGFscmVhZHkgc3RhcnRlZCBhIG5ldyAidmVyc2lvbmNoYW5nZSIK
KyAgICAgICAgdHJhbnNhY3Rpb24gdGhlIHNuYXBzaG90IHdvdWxkIGJlIGJvZ3VzLiBJbnN0ZWFk
LCBzYXZlIGEgY29weSBvZiB0aGUgSURCRGF0YWJhc2UncyBtZXRhZGF0YQorICAgICAgICBhbmQg
cm9sbCBiYWNrIHRvIHRoYXQsIGFzIGlzIGRvbmUgZm9yIElEQk9iamVjdFN0b3JlLgorCisgICAg
ICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwt
dXBncmFkZW5lZWRlZC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3ZlcnNpb25jaGFuZ2UtYWJvcnQuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRl
eGVkZGIvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6SURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0
aW9uQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25G
aW5pc2hlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpzZXRNZXRhZGF0YSk6IExldCBJREJPcGVuREJS
ZXF1ZXN0IGFuZCBJREJUcmFuc2FjdGlvbiB0aW5rZXIuCisgICAgICAgIChJREJEYXRhYmFzZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQpOiBGZXRjaCBu
ZXcgYW5kIGNvbXB1dGUgb2xkIG1ldGFkYXRhLgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRC
UmVxdWVzdDo6b25TdWNjZXNzKTogRmV0Y2ggbmV3IG1ldGFkYXRhLCBpbiBjYXNlIHVwZ3JhZGUg
Y2hhbmdlZCBpdC4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKTogU3Rhc2ggdGhl
IG9sZCBtZXRhZGF0YSwgaW4gY2FzZSBvZiByb2xsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6b25BYm9ydCk6IFJldmVydCB0aGUgZGF0YWJhc2UgYXMgd2VsbCBhcyB0aGUgc3Rv
cmVzLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAg
ICAgIChJREJUcmFuc2FjdGlvbik6CisKKzIwMTItMTEtMzAgIEpvc2h1YSBCZWxsICA8anNiZWxs
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBJbmRleGVkREI6IFJlcGxhY2UgdXNlIG9mIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgKFBhcnQgMSkKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTQ4MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGE1ZjE0NGZlYTQ2M2RiZTJjZWQ3NWUzOGJlYzhlMDNmZTFlMzE4ZjcuLmIxZTdhMWJi
YWZmN2IwZTgyNzc5ZDdiZWJjOWYyYThkMjhjNmMwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMTEtMzAgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENvcnJlY3QgZGF0YWJhc2UgdmVyc2lv
biBhZnRlciBhYm9ydGVkIHVwZ3JhZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMzc2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFBhc3MgcHJldmlvdXNseSBjcmVhdGVkIHByb3h5IGFsb25nIGluIGFu
IG9wZW4gb25TdWNjZXNzLCByYXRoZXIgdGhhbiBhIHVzZWxlc3Mgd3JhcHBlci4KKworICAgICAg
ICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q2FsbGJhY2tzSW1wbDo6V2ViSURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNh
bGxiYWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViSURCQ2FsbGJhY2tz
SW1wbCk6CisKIDIwMTItMTEtMzAgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBTdXBwcmVzcyB0aGUgbmV3IHNlcGFyYWJsZSBt
YXNrIGJsdXJzIGluIHNraWEgdW50aWwgdGhlIHRlc3RzIGNhbiBiZSByZWJhc2VsaW5lZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRl
eCBlNzk5YzBkYjJlY2FhYjVhZGM0ZjNiZTI3N2E2MjYyNGY0ZmY2YWNjLi4wNDMzOTZhM2YyMmMy
MGVkYjE4YWEzOWVjNzQ1NjcxOWVlMmZiYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC02OCw3ICs2OCw2IEBAIElEQkRhdGFi
YXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlCiB7CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9i
amVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVt
ZW50KCk7Ci0gICAgbV9tZXRhZGF0YSA9IG1fYmFja2VuZC0+bWV0YWRhdGEoKTsKIH0KIAogSURC
RGF0YWJhc2U6On5JREJEYXRhYmFzZSgpCkBAIC05MywxMSArOTIsMTAgQEAgdm9pZCBJREJEYXRh
YmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVkKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAg
ICBpZiAodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCgh
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbiA9IHRyYW5zYWN0aW9uOwotICAgICAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5t
ZXRhZGF0YSgpOwogICAgIH0KIH0KIAotdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25GaW5p
c2hlZChJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCit2b2lkIElEQkRhdGFiYXNlOjp0cmFu
c2FjdGlvbkZpbmlzaGVkKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgYm9vbCBjb21wbGV0
ZWQpCiB7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlv
bnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKQEAgLTEwNiw3ICsxMDQsNiBAQCB2b2lkIElEQkRh
dGFiYXNlOjp0cmFuc2FjdGlvbkZpbmlzaGVkKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikK
ICAgICBpZiAodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VS
VChtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9PSB0cmFuc2FjdGlvbik7CiAgICAgICAgIG1f
dmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gMDsKLSAgICAgICAgbV9tZXRhZGF0YSA9IG1fYmFj
a2VuZC0+bWV0YWRhdGEoKTsKICAgICB9CiAKICAgICBpZiAobV9jbG9zZVBlbmRpbmcgJiYgbV90
cmFuc2FjdGlvbnMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggYThhYjk0ZDk0OTNiZGU4M2JiYTc5ODA0YjQ1MDBhNTgw
OGI0NWRiOS4uMWZiODM1ZmE0MWMwMThhYThjODc5NzAyYzdjYjM4ZWQ4YjViMWU0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC01NSw4
ICs1NSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKICAgICB+SURC
RGF0YWJhc2UoKTsKIAorICAgIHZvaWQgc2V0TWV0YWRhdGEoY29uc3QgSURCRGF0YWJhc2VNZXRh
ZGF0YSYgbWV0YWRhdGEpIHsgbV9tZXRhZGF0YSA9IG1ldGFkYXRhOyB9CiAgICAgdm9pZCB0cmFu
c2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qKTsKLSAgICB2b2lkIHRyYW5zYWN0aW9uRmlu
aXNoZWQoSURCVHJhbnNhY3Rpb24qKTsKKyAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNoZWQoSURC
VHJhbnNhY3Rpb24qLCBib29sIGNvbXBsZXRlZCA9IHRydWUpOwogCiAgICAgLy8gSW1wbGVtZW50
IHRoZSBJREwKICAgICBjb25zdCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRh
dGEubmFtZTsgfQpAQCAtMTA2LDcgKzEwNyw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSURC
RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCi0K
ICAgICAvLyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsg
cmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRC
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmNwcAppbmRleCA1NTFkMGRkMDkzYmE3Y2UwZmQwNjgzYzM1YWI1MDExN2MyM2UxNTFi
Li5iYTlmYmYzNGM5OWUxOGU3ODI5NGZlZTMxZGFjNjdmMmI2YWU4Y2Q3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcApA
QCAtODQsMzIgKzg0LDQxIEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVk
KGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjCiAgICAgQVNTRVJUKG1f
ZGF0YWJhc2VDYWxsYmFja3MpOwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gZGF0YWJhc2VCYWNrZW5kID0gcHJwRGF0YWJhc2VCYWNrZW5kOworICAgIElEQkRhdGFi
YXNlTWV0YWRhdGEgbWV0YWRhdGEgPSBkYXRhYmFzZUJhY2tlbmQtPm1ldGFkYXRhKCk7CisKICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tl
bmQgPSBwcnBUcmFuc2FjdGlvbkJhY2tlbmQ7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJE
YXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBk
YXRhYmFzZUJhY2tlbmQsIG1fZGF0YWJhc2VDYWxsYmFja3MpOworICAgIGlkYkRhdGFiYXNlLT5z
ZXRNZXRhZGF0YShtZXRhZGF0YSk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+Y29ubmVjdChp
ZGJEYXRhYmFzZS5nZXQoKSk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IDA7CiAKKyAgICBp
ZiAob2xkVmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pIHsKKyAg
ICAgICAgLy8gVGhpcyBkYXRhYmFzZSBoYXNuJ3QgaGFkIGFuIGludGVnZXIgdmVyc2lvbiBiZWZv
cmUuCisgICAgICAgIG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50
VmVyc2lvbjsKKyAgICB9CisgICAgbWV0YWRhdGEuaW50VmVyc2lvbiA9IG9sZFZlcnNpb247CisK
ICAgICBpbnQ2NF90IHRyYW5zYWN0aW9uSWQgPSBJREJEYXRhYmFzZTo6bmV4dFRyYW5zYWN0aW9u
SWQoKTsKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rp
b246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRyYW5zYWN0aW9uSWQsIHRyYW5z
YWN0aW9uQmFja2VuZCwgVmVjdG9yPFN0cmluZz4oKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcyk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiBmcm9udGVuZCA9IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCB0cmFuc2FjdGlvbklkLCB0cmFuc2FjdGlvbkJhY2tlbmQsIGlkYkRhdGFiYXNlLmdl
dCgpLCB0aGlzLCBtZXRhZGF0YSk7CiAgICAgdHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFj
a3MoZnJvbnRlbmQuZ2V0KCkpOwogICAgIG1fdHJhbnNhY3Rpb24gPSBmcm9udGVuZDsKICAgICBt
X3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CiAKLSAgICBp
ZiAob2xkVmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pIHsKLSAg
ICAgICAgLy8gVGhpcyBkYXRhYmFzZSBoYXNuJ3QgaGFkIGFuIGludGVnZXIgdmVyc2lvbiBiZWZv
cmUuCi0gICAgICAgIG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50
VmVyc2lvbjsKLSAgICB9CiAgICAgaWYgKG1fdmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRh
OjpOb0ludFZlcnNpb24pCiAgICAgICAgIG1fdmVyc2lvbiA9IDE7CiAgICAgZW5xdWV1ZUV2ZW50
KElEQlVwZ3JhZGVOZWVkZWRFdmVudDo6Y3JlYXRlKG9sZFZlcnNpb24sIG1fdmVyc2lvbiwgZXZl
bnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCkpOwogfQogCi12b2lkIElEQk9wZW5EQlJlcXVl
c3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCkKK3ZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBCYWNrZW5kKQogewogICAgIElEQl9UUkFDRSgiSURC
T3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKCkiKTsKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVu
dCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBiYWNrZW5kID0gcHJwQmFja2VuZDsKKyAgICAvLyBGSVhNRTogTm90IHNhZmUgdG8g
dXNlIGJhY2tlbmQgaGVyZSBhcyBpdCBpcyBvbmx5IHNldCBpZiB1cGdyYWRlbmVlZGVkIGRpZG4n
dCBmaXJlLiBUaGlzIGlzIGR1ZSB0byB0aGUgcHJveHkgbm90IHBhc3NpbmcgYSBkdXBsaWNhdGUK
KyAgICAvLyBwcm94eSB0aHJvdWdoLiBGaXggYnkgKDEpIHNhdmluZyBvdGhlciBwcm94eSBvciAo
MikgZGlnZ2luZyBiYWNrZW5kIG91dCBvZiBmcm9udGVuZD8KKyAgICBJREJEYXRhYmFzZU1ldGFk
YXRhIG1ldGFkYXRhID0gYmFja2VuZC0+bWV0YWRhdGEoKTsKICAgICBSZWZQdHI8SURCRGF0YWJh
c2U+IGlkYkRhdGFiYXNlOwogICAgIGlmIChtX3Jlc3VsdCkgewogICAgICAgICBpZGJEYXRhYmFz
ZSA9IG1fcmVzdWx0LT5pZGJEYXRhYmFzZSgpOwpAQCAtMTE3LDExICsxMjYsMTIgQEAgdm9pZCBJ
REJPcGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IGJhY2tlbmQKICAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlQ2FsbGJhY2tzKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9kYXRhYmFzZUNhbGxiYWNrcyk7Ci0gICAg
ICAgIGlkYkRhdGFiYXNlID0gSURCRGF0YWJhc2U6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGJhY2tlbmQsIG1fZGF0YWJhc2VDYWxsYmFja3MpOworICAgICAgICBpZGJEYXRhYmFz
ZSA9IElEQkRhdGFiYXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5k
LnJlbGVhc2UoKSwgbV9kYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgICAgIG1fZGF0YWJhc2VDYWxs
YmFja3MtPmNvbm5lY3QoaWRiRGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICBtX2RhdGFiYXNlQ2Fs
bGJhY2tzID0gMDsKICAgICAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFz
ZS5nZXQoKSk7CiAgICAgfQorICAgIGlkYkRhdGFiYXNlLT5zZXRNZXRhZGF0YShtZXRhZGF0YSk7
CiAgICAgZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA4MzdkNTQ2YTdjZmYwYzBmZjFkMTI0
NGIxNmZlNzM5NmM3NDdlZjA3Li45ZmVkMjRkNzJjMWUwMThmYjc1YTUyY2M2ZmY0ZjhiNDg3MjI4
M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCkBAIC00NywxMiArNDcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVj
dFN0b3JlTmFtZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikK
IHsKICAgICBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0ID0gMDsKLSAgICByZXR1cm4g
Y3JlYXRlKGNvbnRleHQsIGlkLCBiYWNrZW5kLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwg
b3BlbkRCUmVxdWVzdCk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbihh
ZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgaWQsIGJhY2tlbmQsIG9iamVjdFN0
b3JlTmFtZXMsIG1vZGUsIGRiLCBvcGVuREJSZXF1ZXN0LCBJREJEYXRhYmFzZU1ldGFkYXRhKCkp
KSk7CisgICAgdHJhbnNhY3Rpb24tPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0cmFu
c2FjdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRy
YW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50NjRf
dCBpZCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJREJUcmFuc2FjdGlvbjo6
TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVl
c3QpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJEYXRhYmFzZSogZGIsIElE
Qk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEm
IG1ldGFkYXRhKQogewotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRv
cHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBiYWNrZW5kLCBvYmplY3RTdG9y
ZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVxdWVzdCkpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBp
ZCwgYmFja2VuZCwgVmVjdG9yPFN0cmluZz4oKSwgVkVSU0lPTl9DSEFOR0UsIGRiLCBvcGVuREJS
ZXF1ZXN0LCBtZXRhZGF0YSkpKTsKICAgICB0cmFuc2FjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7
CiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0KQEAgLTg4LDcgKzkwLDcgQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRXcml0ZUxlZ2FjeSgp
CiB9CiAKIAotSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVO
YW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVu
REJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0KQorSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0
YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0
aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX2lkKGlkKQpAQCAtOTksNiAr
MTAxLDcgQEAgSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIFBhc3MKICAgICAsIG1fc3RhdGUoQWN0aXZlKQog
ICAgICwgbV9oYXNQZW5kaW5nQWN0aXZpdHkodHJ1ZSkKICAgICAsIG1fY29udGV4dFN0b3BwZWQo
ZmFsc2UpCisgICAgLCBtX3ByZXZpb3VzTWV0YWRhdGEobWV0YWRhdGEpCiB7CiAgICAgQVNTRVJU
KG1fYmFja2VuZCk7CiAKQEAgLTMwNywxMyArMzEwLDE0IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
Om9uQWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcikKICAgICBpZiAoaXNW
ZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhTWFw
OjppdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmJlZ2luKCk7IGl0ICE9IG1f
b2JqZWN0U3RvcmVDbGVhbnVwTWFwLmVuZCgpOyArK2l0KQogICAgICAgICAgICAgaXQtPmtleS0+
c2V0TWV0YWRhdGEoaXQtPnZhbHVlKTsKKyAgICAgICAgbV9kYXRhYmFzZS0+c2V0TWV0YWRhdGEo
bV9wcmV2aW91c01ldGFkYXRhKTsKICAgICB9CiAgICAgbV9vYmplY3RTdG9yZUNsZWFudXBNYXAu
Y2xlYXIoKTsKICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7CiAKICAgICAvLyBFbnF1ZXVlIGV2ZW50
cyBiZWZvcmUgbm90aWZ5aW5nIGRhdGFiYXNlLCBhcyBkYXRhYmFzZSBtYXkgY2xvc2Ugd2hpY2gg
ZW5xdWV1ZXMgbW9yZSBldmVudHMgYW5kIG9yZGVyIG1hdHRlcnMuCiAgICAgZW5xdWV1ZUV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIHRydWUsIGZhbHNlKSk7Ci0g
ICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKKyAgICBtX2RhdGFiYXNl
LT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMsIGZhbHNlKTsKIH0KIAogdm9pZCBJREJUcmFuc2Fj
dGlvbjo6b25Db21wbGV0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA2YTk3MGM2MzhmMWVhNTUxZDA0ZmZlODdhM2E4YjI1
ZmNmYjYwM2E3Li5hMTVlY2Q5NDZkNTQ4NzI0MjY4YjBhYjNjNGUzNjE1YjNhZjMyYWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSURCTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC01Nyw3ICs1
OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b2JqZWN0U3RvcmVOYW1lcywgTW9kZSwgSURCRGF0YWJhc2UqKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2
NF90LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBNb2RlLCBJREJEYXRhYmFzZSosIElEQk9w
ZW5EQlJlcXVlc3QqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4sIElEQkRhdGFiYXNlKiwgSURCT3BlbkRCUmVxdWVzdCos
IGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKTsKICAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlv
bigpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5KCk7CkBA
IC0xMjMsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCVHJhbnNh
Y3Rpb25DYWxsYmFja3M+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJUcmFuc2FjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIE1vZGUsIElEQkRhdGFi
YXNlKiwgSURCT3BlbkRCUmVxdWVzdCopOworICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJP
cGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYpOwogCiAgICAgdm9pZCBl
bnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIHZvaWQgY2xvc2VPcGVuQ3Vyc29y
cygpOwpAQCAtMTY2LDYgKzE2Nyw3IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPElEQk9iamVjdFN0b3JlPiwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gSURCT2JqZWN0
U3RvcmVNZXRhZGF0YU1hcDsKICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhTWFwIG1fb2JqZWN0
U3RvcmVDbGVhbnVwTWFwOworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbV9wcmV2aW91c01ldGFk
YXRhOwogCiAgICAgSGFzaFNldDxJREJDdXJzb3IqPiBtX29wZW5DdXJzb3JzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4
IGRjZjMwM2IzOTExMmFhYTFlNjdjNjVkZjc0MmQ5M2EyNGIwNmZkOTIuLjU3YzAzMTlkNDkyYWQ0
NWIxMzI0ZWI2NzgwYjZhZWQyZjI3NDYyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC00OSw3ICs0OSw2IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBXZWJJREJDYWxsYmFja3NJbXBsOjpXZWJJREJDYWxsYmFja3NJbXBs
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBtX2NhbGxiYWNrcyhj
YWxsYmFja3MpCi0gICAgLCBtX2RpZENyZWF0ZURhdGFiYXNlUHJveHkoZmFsc2UpCiB7CiB9CiAK
QEAgLTc0LDggKzczLDggQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoV2Vi
SURCQ3Vyc29yKiBjdXJzb3IsIGNvbnN0IFdlYklEQktleSYga2V5LAogCiB2b2lkIFdlYklEQkNh
bGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJJREJEYXRhYmFzZSogd2ViS2l0SW5zdGFuY2UpCiB7
Ci0gICAgaWYgKG1fZGlkQ3JlYXRlRGF0YWJhc2VQcm94eSkgewotICAgICAgICBtX2NhbGxiYWNr
cy0+b25TdWNjZXNzKElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIoc3Rh
dGljX2Nhc3Q8V2ViSURCRGF0YWJhc2UqPigwKSkpKTsKKyAgICBpZiAobV9kYXRhYmFzZVByb3h5
KSB7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobV9kYXRhYmFzZVByb3h5LnJlbGVh
c2UoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
cyhJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKHdlYktpdEluc3RhbmNl
KSkpOwpAQCAtMTIzLDggKzEyMiw4IEBAIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25CbG9j
a2VkKGxvbmcgbG9uZyBvbGRWZXJzaW9uKQogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9u
VXBncmFkZU5lZWRlZChsb25nIGxvbmcgb2xkVmVyc2lvbiwgV2ViSURCVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uLCBXZWJJREJEYXRhYmFzZSogZGF0YWJhc2UpCiB7Ci0gICAgbV9kaWRDcmVhdGVE
YXRhYmFzZVByb3h5ID0gdHJ1ZTsKLSAgICBtX2NhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9s
ZFZlcnNpb24sIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIodHJh
bnNhY3Rpb24pKSwgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZShhZG9wdFB0cihkYXRh
YmFzZSkpKTsKKyAgICBtX2RhdGFiYXNlUHJveHkgPSBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
Y3JlYXRlKGFkb3B0UHRyKGRhdGFiYXNlKSk7CisgICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5l
ZWRlZChvbGRWZXJzaW9uLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0
UHRyKHRyYW5zYWN0aW9uKSksIG1fZGF0YWJhc2VQcm94eSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5oCmluZGV4IDhmOGMwMmFhYTAyOGNmYzM5YmU5MjFhYmMwZDZiN2RhM2ZkNTMyNmYuLjRi
MTA2NDkxZGVlMjVhNWE3ODhjODkxOTM3MjMxMzk5NDRkYmI3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKQEAgLTMyLDcgKzMyLDEy
IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCQ2FsbGJhY2tzOyB9CituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIElEQkNhbGxiYWNrczsKK2NsYXNzIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtNTcsNyArNjIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdl
YkNvcmU6OklEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7Ci0gICAgYm9vbCBtX2RpZENyZWF0ZURh
dGFiYXNlUHJveHk7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gbV9kYXRhYmFzZVByb3h5OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMWU5Y2Q2MzQ2NzI2OGZmODEzM2U2NWJjNWNmZjdhYWVjM2EwMzQ1ZC4uMGVkMjBmNDdjY2I3
Zjc4NzUzMGNlYjM2NmI2ZWZhZGJjMGVlZDk1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEy
LTExLTMwICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5k
ZXhlZERCOiBDb3JyZWN0IGRhdGFiYXNlIHZlcnNpb24gYWZ0ZXIgYWJvcnRlZCB1cGdyYWRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM3NjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGVz
dCBleHBlY3RhdGlvbnMgYW5kIHR3ZWFrIGEgdGVzdCBzbyBpdCdzIHRlc3Rpbmcgd2hhdCBpdCBj
bGFpbWVkLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1p
bi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UtYWJvcnQuanM6CisgICAg
ICAgIChwb3N0QWJvcnQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVy
c2lvbmNoYW5nZS1hYm9ydC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3VuYmxvY2tlZC12ZXJzaW9uLWNoYW5nZXMuanM6CisgICAgICAgIChvblVw
Z3JhZGVOZWVkZWQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3VuYmxvY2tlZC12ZXJz
aW9uLWNoYW5nZXMtZXhwZWN0ZWQudHh0OgorCiAyMDEyLTExLTMwICBTdGVwaGVuIENoZW5uZXkg
IDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBSZWJhc2VsaW5p
bmcgdGVzdHMgYWZmZWN0ZWQgYnkgcmVjZW50IFNraWEgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVw
Z3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDYzZGMwMDMxZTYxYzEwMzFhM2ZlNzY5ZDMwYmNjN2Q5YzdmODdkZDcuLjdjODg2ZDc1MzUw
YjE5ZTk4Yzk3YjU2MzdjZTRlODQyYmVhZTI4Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVk
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJz
aW9uLWFib3J0LWluLWluaXRpYWwtdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQKQEAgLTE2LDE0
ICsxNiwxNCBAQCBQQVNTIGRiLnZlcnNpb24gaXMgMgogdHJhbnNhY3Rpb24uYWJvcnQoKQogCiBv
bkFib3J0KCk6Ci1GQUlMIGV2ZW50LnRhcmdldC5kYi52ZXJzaW9uIHNob3VsZCBiZSAwIChvZiB0
eXBlIG51bWJlcikuIFdhcyAgKG9mIHR5cGUgc3RyaW5nKS4KK1BBU1MgZXZlbnQudGFyZ2V0LmRi
LnZlcnNpb24gaXMgMAogUEFTUyByZXF1ZXN0LnRyYW5zYWN0aW9uIGlzIG5vbi1udWxsLgogCiBv
bkVycm9yKCk6CiBQQVNTIGRiIGlzIGV2ZW50LnRhcmdldC5yZXN1bHQKIFBBU1MgcmVxdWVzdCBp
cyBldmVudC50YXJnZXQKIFBBU1MgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgaXMgIkFib3J0RXJy
b3IiCi1GQUlMIGV2ZW50LnRhcmdldC5yZXN1bHQudmVyc2lvbiBzaG91bGQgYmUgMCAob2YgdHlw
ZSBudW1iZXIpLiBXYXMgIChvZiB0eXBlIHN0cmluZykuCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1
bHQudmVyc2lvbiBpcyAwCiBQQVNTIHJlcXVlc3QudHJhbnNhY3Rpb24gaXMgbnVsbAogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0LmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNo
YW5nZS1hYm9ydC5qcwppbmRleCBkOTQ3YTFhZmE0Yjc1N2M2MWQxNjc2Zjc2NWFmNTdkNzQ4YWMy
NDc1Li41ZDAxOTQ0MmY3YWIyYmMxNTYyM2FhNmFjMGMyMjA1YTU4ODk5YjE2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy92ZXJzaW9u
Y2hhbmdlLWFib3J0LmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvcmVzb3VyY2VzL3ZlcnNpb25jaGFuZ2UtYWJvcnQuanMKQEAgLTMyLDcgKzMyLDYgQEAgZnVu
Y3Rpb24gcHJlcGFyZURhdGFiYXNlKCkKIAogZnVuY3Rpb24gcG9zdEFib3J0KCkKIHsKLSAgICBk
ZWJ1ZygiRklYTUU6IEZhaWxzIGJlY2F1c2Ugb2YgaHR0cDovL3drYi51Zy8xMDI0MTIiKTsKICAg
ICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICIwIik7CiAgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0
b3JlTmFtZXMubGVuZ3RoIiwgIjAiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS1hYm9ydC1l
eHBlY3RlZC50eHQKaW5kZXggN2Y2MGUwYWNjMDU5YjI1YzA4M2RmODIyZGNlMzA0ZjllMGFlN2Q1
NC4uZDlmZDYwZjc5NTkxMTQzYjYwYWIxNGQzZTdmY2RlMjg2NjlhMWQ3MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L3ZlcnNpb25jaGFuZ2UtYWJvcnQtZXhwZWN0ZWQudHh0CkBAIC0xMyw4ICsxMyw3IEBAIFBBU1Mg
ZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQogaW5kZXggPSBvYmplY3RTdG9yZS5jcmVh
dGVJbmRleCgnYmFyJywgJ2JheicpOwogUEFTUyBvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0
aCBpcyAxCiBldmVudC50YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKLUZJWE1FOiBGYWlscyBi
ZWNhdXNlIG9mIGh0dHA6Ly93a2IudWcvMTAyNDEyCi1GQUlMIGRiLnZlcnNpb24gc2hvdWxkIGJl
IDAgKG9mIHR5cGUgbnVtYmVyKS4gV2FzICAob2YgdHlwZSBzdHJpbmcpLgorUEFTUyBkYi52ZXJz
aW9uIGlzIDAKIFBBU1MgZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMAogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy5qcyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy91bmJsb2NrZWQtdmVyc2lvbi1jaGFu
Z2VzLmpzCmluZGV4IDk2NjM2MzZlZTlhNmI0YmIxOTY5YTRiNDVmZDlhNjg5MzIwMzE5YzEuLjE3
MTE5NzQ3OGU4YzNhMzUxYjdlZmRmMDFmM2E1MzIzMWQ5YjNiNmQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy91bmJsb2NrZWQtdmVyc2lvbi1jaGFu
Z2VzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy91bmJs
b2NrZWQtdmVyc2lvbi1jaGFuZ2VzLmpzCkBAIC0yOSwxMiArMjksMTUgQEAgZnVuY3Rpb24gb25V
cGdyYWRlTmVlZGVkKGV2dCkKICAgICBwcmVhbWJsZShldnQpOwogICAgIGV2YWxBbmRMb2coImRi
ID0gcmVxdWVzdC5yZXN1bHQiKTsKICAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICIyIik7Cisg
ICAgZXZhbEFuZExvZygidHJhbnNhY3Rpb24gPSByZXF1ZXN0LnRyYW5zYWN0aW9uIik7CiAKICAg
ICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAzKSIpOwogICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogICAgIHJlcXVlc3Qu
b251cGdyYWRlbmVlZGVkID0gb25VcGdyYWRlTmVlZGVkMjsKICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9uU3VjY2VzczsKIAorICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLmFib3J0KCkiKTsK
KyAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkuIGh0dHA6Ly93a2J1Zy5jb20v
MTAyMjk4CiAgICAgZXZhbEFuZExvZygiZGIuY2xvc2UoKSIpOwogfQogCkBAIC01OSw0ICs2Miw0
IEBAIGZ1bmN0aW9uIG9uU3VjY2VzcyhldnQpCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKLXRl
c3QoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi91bmJsb2NrZWQtdmVyc2lvbi1jaGFuZ2VzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3VuYmxvY2tlZC12ZXJz
aW9uLWNoYW5nZXMtZXhwZWN0ZWQudHh0CmluZGV4IDFmMTgzMThlZDI2MTA3MTViN2RkYzQzNDJm
MDQ3OTAwODQ1YzllMWMuLjI1ZGM2Yzg0NmI2YjQ5OTg3NGU5M2NiMGUyZWQyMjRhZGIyOTJhM2Yg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3VuYmxvY2tlZC12ZXJz
aW9uLWNoYW5nZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3VuYmxvY2tlZC12ZXJzaW9uLWNoYW5nZXMtZXhwZWN0ZWQudHh0CkBAIC0xNCwxMSArMTQs
MTMgQEAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSwgMikKIG9uVXBncmFkZU5lZWRl
ZCgpOgogZGIgPSByZXF1ZXN0LnJlc3VsdAogUEFTUyBkYi52ZXJzaW9uIGlzIDIKK3RyYW5zYWN0
aW9uID0gcmVxdWVzdC50cmFuc2FjdGlvbgogcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFt
ZSwgMykKK3RyYW5zYWN0aW9uLmFib3J0KCkKIGRiLmNsb3NlKCkKIAogb25FcnJvcigpOgotRkFJ
TCBkYi52ZXJzaW9uIHNob3VsZCBiZSAwLiBXYXMgMi4KK1BBU1MgZGIudmVyc2lvbiBpcyAwCiAK
IG9uVXBncmFkZU5lZWRlZDIoKToKIGRiID0gcmVxdWVzdC5yZXN1bHQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177320</attachid>
            <date>2012-12-03 13:46:03 -0800</date>
            <delta_ts>2012-12-03 23:17:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103763-20121203134329.patch</filename>
            <type>text/plain</type>
            <size>22111</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYxOTQ2MzNiMjM4NGY1
Y2YxOTk1NjkzYThhY2IxZjJjODE3ZWU4OS4uZjQwZDk4ZjUzNjQ3ODMzMzg5Zjk2ZTY3YTFiZGRh
MmU3YTNiODFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTExLTMwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb3Jy
ZWN0IGRhdGFiYXNlIHZlcnNpb24gYWZ0ZXIgYWJvcnRlZCB1cGdyYWRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM3NjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZnRlciBhbiBhYm9ydGVkICJ2ZXJz
aW9uY2hhbmdlIiB0cmFuc2FjdGlvbiwgdGhlIElEQkRhdGFiYXNlIHdvdWxkIGZldGNoIGEgZnJl
c2ggc25hcHNob3QKKyAgICAgICAgb2YgdGhlIG1ldGFkYXRhIGZyb20gdGhlIGJhY2sgZW5kLiBJ
ZiB0aGUgYmFjayBlbmQgaGFkIGFscmVhZHkgc3RhcnRlZCBhIG5ldyAidmVyc2lvbmNoYW5nZSIK
KyAgICAgICAgdHJhbnNhY3Rpb24gdGhlIHNuYXBzaG90IHdvdWxkIGJlIGJvZ3VzLiBJbnN0ZWFk
LCBzYXZlIGEgY29weSBvZiB0aGUgSURCRGF0YWJhc2UncyBtZXRhZGF0YQorICAgICAgICBhbmQg
cm9sbCBiYWNrIHRvIHRoYXQsIGFzIGlzIGRvbmUgZm9yIElEQk9iamVjdFN0b3JlLgorCisgICAg
ICAgIFRlc3RzOiBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWluaXRpYWwt
dXBncmFkZW5lZWRlZC5odG1sCisgICAgICAgICAgICAgICBzdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL3ZlcnNpb25jaGFuZ2UtYWJvcnQuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9pbmRl
eGVkZGIvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZTo6SURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0
aW9uQ3JlYXRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpzZXRNZXRhZGF0YSk6IExldCBJREJPcGVu
REJSZXF1ZXN0IGFuZCBJREJUcmFuc2FjdGlvbiB0aW5rZXIuCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVu
REJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQpOiBGZXRjaCBuZXcgYW5kIGNvbXB1dGUgb2xkIG1l
dGFkYXRhLgorICAgICAgICAoV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKTog
RmV0Y2ggbmV3IG1ldGFkYXRhLCBpbiBjYXNlIHVwZ3JhZGUgY2hhbmdlZCBpdC4KKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKTogU3Rhc2ggdGhlIG9sZCBtZXRhZGF0YSwgaW4gY2Fz
ZSBvZiByb2xsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpJREJUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9ydCk6IFJl
dmVydCB0aGUgZGF0YWJhc2UgYXMgd2VsbCBhcyB0aGUgc3RvcmVzLgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChJREJUcmFuc2FjdGlvbik6
CisKIDIwMTItMTItMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2hlbiBhbmltYXRpbmcgbWFzay1wb3N0aW9uIG9uIGEgY29tcG9zaXRlZCBsYXll
ciwgZWxlbWVudCByZW5kZXJzIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGViMjUxNTBkZjg3YmYxNzZhNmZiNDJhYjQ4MTA0NjJlZjJiODBmYWQuLjM5MDViZDk0MWM2
M2VhYzI2NzUyM2EzNjBlZGI4N2Y4ODg2MWM3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMTEtMzAgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENvcnJlY3QgZGF0YWJhc2UgdmVyc2lvbiBh
ZnRlciBhYm9ydGVkIHVwZ3JhZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMzc2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFBhc3MgcHJldmlvdXNseSBjcmVhdGVkIHByb3h5IGFsb25nIGluIGFuIG9w
ZW4gb25TdWNjZXNzLCByYXRoZXIgdGhhbiBhIHVzZWxlc3Mgd3JhcHBlci4KKworICAgICAgICAq
IHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2Fs
bGJhY2tzSW1wbDo6V2ViSURCQ2FsbGJhY2tzSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxi
YWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViSURCQ2FsbGJhY2tzSW1w
bCk6CisKIDIwMTItMTItMDMgIEV1Z2VuZSBLbHl1Y2huaWtvdiAgPGV1c3Rhc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSBtYWluLXRocmVhZCBtb25pdG9yaW5n
IGdvIHRocm91Z2ggSW5zcGVjdG9yQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDczODIzYzVmZDk0YTJhZTAwODI2
ZmYzYjM1MGJkNWY3MzYxZDFhMmQuLmExYWE5ZjdiNjQ3OTA4NTEzZGRhODViMTZlYzgxNTA4MmQ4
Njg3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5jcHAKQEAgLTY4LDcgKzY4LDYgQEAgSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2UKIHsKICAg
ICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMgb2JqZWN0IGJlZm9yZSBpdCBjYW4gYmUg
YWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKLSAgICBtX21ldGFkYXRh
ID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogfQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNl
KCkKQEAgLTkzLDcgKzkyLDYgQEAgdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVk
KElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICBpZiAodHJhbnNhY3Rpb24tPmlzVmVy
c2lvbkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24pOwogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uOwot
ICAgICAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogICAgIH0KIH0KIApA
QCAtMTA2LDcgKzEwNCw2IEBAIHZvaWQgSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uRmluaXNoZWQo
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIGlmICh0cmFuc2FjdGlvbi0+aXNWZXJz
aW9uQ2hhbmdlKCkpIHsKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
ID09IHRyYW5zYWN0aW9uKTsKICAgICAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPSAw
OwotICAgICAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogICAgIH0KIAog
ICAgIGlmIChtX2Nsb3NlUGVuZGluZyAmJiBtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCBhOGFi
OTRkOTQ5M2JkZTgzYmJhNzk4MDRiNDUwMGE1ODA4YjQ1ZGI5Li45YTI3ZjI1ZjI0NjJkNjQ5ZTU4
MzJhNDFjMTkyZDgyMmFhY2IxMmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIH5JREJEYXRhYmFzZSgpOwogCisgICAgdm9pZCBzZXRN
ZXRhZGF0YShjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkgeyBtX21ldGFkYXRh
ID0gbWV0YWRhdGE7IH0KICAgICB2b2lkIHRyYW5zYWN0aW9uQ3JlYXRlZChJREJUcmFuc2FjdGlv
biopOwogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZChJREJUcmFuc2FjdGlvbiopOwogCkBA
IC0xMDYsNyArMTA3LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CiAKLQogICAgIC8vIEV2ZW50
VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCmlu
ZGV4IGYyZTc2ZDcxNTA1NjExOWU0ODdkNTc2ODgwYTRkMGY4ZDdmZmRmMmQuLjdiNmY4YzY5NGE1
NzYxNGRhZDY1NDA5MWQ3Mjk1MzA2NmU4NGVlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC04NCwzMiArODQs
NDMgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRW
ZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWMKICAgICBBU1NFUlQobV9kYXRhYmFzZUNhbGxi
YWNrcyk7CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFz
ZUJhY2tlbmQgPSBwcnBEYXRhYmFzZUJhY2tlbmQ7CisgICAgLy8gRklYTUU6IFRoaXMgcG90ZW50
aWFsbHkgZXhwZW5zaXZlIChzeW5jaHJvbm91cykgY2FsbCBpbnRvIHRoZSBiYWNrZW5kIGNvdWxk
IGJlIHJlbW92ZWQgaWYgdGhlIG1ldGFkYXRhCisgICAgLy8gd2VyZSBwYXNzZWQgaW4gZHVyaW5n
IHRoZSAoYXN5bmNocm9ub3VzKSBvblVwZ3JhZGVOZWVkZWQgY2FsbCBmcm9tIHRoZSBiYWNrZW5k
LiBodHRwOi8vd2tidWcuY29tLzEwMzkyMAorICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRh
dGEgPSBkYXRhYmFzZUJhY2tlbmQtPm1ldGFkYXRhKCk7CisKICAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBwcnBUcmFuc2FjdGlv
bkJhY2tlbmQ7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IElEQkRhdGFi
YXNlOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBkYXRhYmFzZUJhY2tlbmQsIG1f
ZGF0YWJhc2VDYWxsYmFja3MpOworICAgIGlkYkRhdGFiYXNlLT5zZXRNZXRhZGF0YShtZXRhZGF0
YSk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+Y29ubmVjdChpZGJEYXRhYmFzZS5nZXQoKSk7
CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IDA7CiAKKyAgICBpZiAob2xkVmVyc2lvbiA9PSBJ
REJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pIHsKKyAgICAgICAgLy8gVGhpcyBkYXRh
YmFzZSBoYXNuJ3QgaGFkIGFuIGludGVnZXIgdmVyc2lvbiBiZWZvcmUuCisgICAgICAgIG9sZFZl
cnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbjsKKyAgICB9Cisg
ICAgbWV0YWRhdGEuaW50VmVyc2lvbiA9IG9sZFZlcnNpb247CisKICAgICBpbnQ2NF90IHRyYW5z
YWN0aW9uSWQgPSBJREJEYXRhYmFzZTo6bmV4dFRyYW5zYWN0aW9uSWQoKTsKLSAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHRyYW5zYWN0aW9uSWQsIHRyYW5zYWN0aW9uQmFja2VuZCwgVmVj
dG9yPFN0cmluZz4oKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBpZGJEYXRhYmFz
ZS5nZXQoKSwgdGhpcyk7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBmcm9udGVuZCA9IElE
QlRyYW5zYWN0aW9uOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0cmFuc2FjdGlv
bklkLCB0cmFuc2FjdGlvbkJhY2tlbmQsIGlkYkRhdGFiYXNlLmdldCgpLCB0aGlzLCBtZXRhZGF0
YSk7CiAgICAgdHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFja3MoZnJvbnRlbmQuZ2V0KCkp
OwogICAgIG1fdHJhbnNhY3Rpb24gPSBmcm9udGVuZDsKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6
Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CiAKLSAgICBpZiAob2xkVmVyc2lvbiA9PSBJ
REJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pIHsKLSAgICAgICAgLy8gVGhpcyBkYXRh
YmFzZSBoYXNuJ3QgaGFkIGFuIGludGVnZXIgdmVyc2lvbiBiZWZvcmUuCi0gICAgICAgIG9sZFZl
cnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbjsKLSAgICB9CiAg
ICAgaWYgKG1fdmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCiAg
ICAgICAgIG1fdmVyc2lvbiA9IDE7CiAgICAgZW5xdWV1ZUV2ZW50KElEQlVwZ3JhZGVOZWVkZWRF
dmVudDo6Y3JlYXRlKG9sZFZlcnNpb24sIG1fdmVyc2lvbiwgZXZlbnROYW1lcygpLnVwZ3JhZGVu
ZWVkZWRFdmVudCkpOwogfQogCi12b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKK3ZvaWQgSURCT3Bl
bkRCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPiBwcnBCYWNrZW5kKQogewogICAgIElEQl9UUkFDRSgiSURCT3BlbkRCUmVxdWVzdDo6b25T
dWNjZXNzKCkiKTsKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1
cm47CiAKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kID0g
cHJwQmFja2VuZDsKKyAgICAvLyBGSVhNRTogVGhpcyBwb3RlbnRpYWxseSBleHBlbnNpdmUgKHN5
bmNocm9ub3VzKSBjYWxsIGludG8gdGhlIGJhY2tlbmQgY291bGQgYmUgcmVtb3ZlZCBpZiB0aGUg
bWV0YWRhdGEKKyAgICAvLyB3ZXJlIHBhc3NlZCBpbiBkdXJpbmcgdGhlIChhc3luY2hyb25vdXMp
IG9uU3VjY2VzcyBjYWxsIGZyb20gdGhlIGJhY2tlbmQuIGh0dHA6Ly93a2J1Zy5jb20vMTAzOTIw
CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSA9IGJhY2tlbmQtPm1ldGFkYXRhKCk7
CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZTsKICAgICBpZiAobV9yZXN1bHQp
IHsKICAgICAgICAgaWRiRGF0YWJhc2UgPSBtX3Jlc3VsdC0+aWRiRGF0YWJhc2UoKTsKQEAgLTEx
NywxMSArMTI4LDEyIEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kCiAgICAgICAgIEFTU0VSVCgh
bV9kYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fZGF0
YWJhc2VDYWxsYmFja3MpOwotICAgICAgICBpZGJEYXRhYmFzZSA9IElEQkRhdGFiYXNlOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBiYWNrZW5kLCBtX2RhdGFiYXNlQ2FsbGJhY2tz
KTsKKyAgICAgICAgaWRiRGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgYmFja2VuZC5yZWxlYXNlKCksIG1fZGF0YWJhc2VDYWxsYmFja3MpOwog
ICAgICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsK
ICAgICAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IDA7CiAgICAgICAgIG1fcmVzdWx0ID0gSURC
QW55OjpjcmVhdGUoaWRiRGF0YWJhc2UuZ2V0KCkpOwogICAgIH0KKyAgICBpZGJEYXRhYmFzZS0+
c2V0TWV0YWRhdGEobWV0YWRhdGEpOwogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
NDc5ZjEyYTE1NTdmNDFlNjQ1OWZmM2ViNTE0MzMyYmM3YTY2NDg1Ny4uMDBiOWQxNmRlOTc1YTYy
NGRiNWNkZTJkZTEwYzU1MDhkMjdmODU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDcsMTIgKzQ3LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0
aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwg
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBt
b2RlLCBJREJEYXRhYmFzZSogZGIpCiB7CiAgICAgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVx
dWVzdCA9IDA7Ci0gICAgcmV0dXJuIGNyZWF0ZShjb250ZXh0LCBpZCwgYmFja2VuZCwgb2JqZWN0
U3RvcmVOYW1lcywgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QpOworICAgIFJlZlB0cjxJREJUcmFu
c2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQs
IGlkLCBiYWNrZW5kLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVxdWVzdCwg
SURCRGF0YWJhc2VNZXRhZGF0YSgpKSkpOworICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVO
YW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVu
REJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0KQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURC
VHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2
NF90IGlkLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0LCBjb25z
dCBJREJEYXRhYmFzZU1ldGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKQogewotICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNv
bnRleHQsIGlkLCBiYWNrZW5kLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVx
dWVzdCkpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVm
KG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBpZCwgYmFja2VuZCwgVmVjdG9yPFN0cmluZz4o
KSwgVkVSU0lPTl9DSEFOR0UsIGRiLCBvcGVuREJSZXF1ZXN0LCBwcmV2aW91c01ldGFkYXRhKSkp
OwogICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gdHJhbnNh
Y3Rpb24ucmVsZWFzZSgpOwogfQpAQCAtODgsNyArOTAsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdyaXRlTGVnYWN5KCkKIH0KIAogCi1JREJUcmFuc2Fj
dGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50
NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tl
bmQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJREJUcmFuc2FjdGlv
bjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJl
cXVlc3QpCitJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5h
bWVzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5E
QlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIHByZXZp
b3VzTWV0YWRhdGEpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAs
IG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9pZChpZCkKQEAgLTk5LDYgKzEwMSw3IEBAIElE
QlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBpbnQ2NF90IGlkLCBQYXNzCiAgICAgLCBtX3N0YXRlKEFjdGl2ZSkKICAgICAsIG1faGFz
UGVuZGluZ0FjdGl2aXR5KHRydWUpCiAgICAgLCBtX2NvbnRleHRTdG9wcGVkKGZhbHNlKQorICAg
ICwgbV9wcmV2aW91c01ldGFkYXRhKHByZXZpb3VzTWV0YWRhdGEpCiB7CiAgICAgQVNTRVJUKG1f
YmFja2VuZCk7CiAKQEAgLTMwNyw2ICszMTAsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFi
b3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IpCiAgICAgaWYgKGlzVmVyc2lv
bkNoYW5nZSgpKSB7CiAgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YU1hcDo6aXRl
cmF0b3IgaXQgPSBtX29iamVjdFN0b3JlQ2xlYW51cE1hcC5iZWdpbigpOyBpdCAhPSBtX29iamVj
dFN0b3JlQ2xlYW51cE1hcC5lbmQoKTsgKytpdCkKICAgICAgICAgICAgIGl0LT5rZXktPnNldE1l
dGFkYXRhKGl0LT52YWx1ZSk7CisgICAgICAgIG1fZGF0YWJhc2UtPnNldE1ldGFkYXRhKG1fcHJl
dmlvdXNNZXRhZGF0YSk7CiAgICAgfQogICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFy
KCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNmE5NzBjNjM4ZjFlYTU1MWQwNGZm
ZTg3YTNhOGIyNWZjZmI2MDNhNy4uNjgyZWI5YzYxMGExMmNmZmQwOTRiYTRkOWNiZDZhNWI3NWU3
NmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1
ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIK
ICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3Qs
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIE1vZGUsIElEQkRhdGFiYXNlKik7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgaW50NjRfdCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgTW9kZSwgSURCRGF0YWJh
c2UqLCBJREJPcGVuREJSZXF1ZXN0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBJREJEYXRhYmFzZSosIElEQk9wZW5E
QlJlcXVlc3QqLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBwcmV2aW91c01ldGFkYXRhKTsK
ICAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbigpOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgbW9kZVJlYWRPbmx5KCk7CkBAIC0xMjMsNyArMTI0LDcgQEAgcHVibGljOgogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+OjpkZXJlZjsKIAogcHJp
dmF0ZToKLSAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRf
dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIE1vZGUsIElEQkRhdGFiYXNlKiwgSURCT3BlbkRCUmVxdWVzdCopOworICAg
IElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0KiwgY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0YSYpOwogCiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4p
OwogICAgIHZvaWQgY2xvc2VPcGVuQ3Vyc29ycygpOwpAQCAtMTY2LDYgKzE2Nyw3IEBAIHByaXZh
dGU6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPElEQk9iamVjdFN0b3JlPiwgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YT4gSURCT2JqZWN0U3RvcmVNZXRhZGF0YU1hcDsKICAgICBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhTWFwIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwOworICAgIElEQkRhdGFi
YXNlTWV0YWRhdGEgbV9wcmV2aW91c01ldGFkYXRhOwogCiAgICAgSGFzaFNldDxJREJDdXJzb3Iq
PiBtX29wZW5DdXJzb3JzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGRjZjMwM2IzOTExMmFhYTFlNjdjNjVkZjc0MmQ5
M2EyNGIwNmZkOTIuLjU3YzAzMTlkNDkyYWQ0NWIxMzI0ZWI2NzgwYjZhZWQyZjI3NDYyMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
Y3BwCkBAIC00OSw3ICs0OSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJJREJDYWxsYmFj
a3NJbXBsOjpXZWJJREJDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgLCBtX2RpZENyZWF0ZURh
dGFiYXNlUHJveHkoZmFsc2UpCiB7CiB9CiAKQEAgLTc0LDggKzczLDggQEAgdm9pZCBXZWJJREJD
YWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoV2ViSURCQ3Vyc29yKiBjdXJzb3IsIGNvbnN0IFdlYklE
QktleSYga2V5LAogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJJREJE
YXRhYmFzZSogd2ViS2l0SW5zdGFuY2UpCiB7Ci0gICAgaWYgKG1fZGlkQ3JlYXRlRGF0YWJhc2VQ
cm94eSkgewotICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIoc3RhdGljX2Nhc3Q8V2ViSURCRGF0YWJhc2UqPigwKSkp
KTsKKyAgICBpZiAobV9kYXRhYmFzZVByb3h5KSB7CisgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3MobV9kYXRhYmFzZVByb3h5LnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3Jl
YXRlKGFkb3B0UHRyKHdlYktpdEluc3RhbmNlKSkpOwpAQCAtMTIzLDggKzEyMiw4IEBAIHZvaWQg
V2ViSURCQ2FsbGJhY2tzSW1wbDo6b25CbG9ja2VkKGxvbmcgbG9uZyBvbGRWZXJzaW9uKQogCiB2
b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uVXBncmFkZU5lZWRlZChsb25nIGxvbmcgb2xkVmVy
c2lvbiwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBXZWJJREJEYXRhYmFzZSogZGF0
YWJhc2UpCiB7Ci0gICAgbV9kaWRDcmVhdGVEYXRhYmFzZVByb3h5ID0gdHJ1ZTsKLSAgICBtX2Nh
bGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZlcnNpb24sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5OjpjcmVhdGUoYWRvcHRQdHIodHJhbnNhY3Rpb24pKSwgSURCRGF0YWJhc2VCYWNrZW5k
UHJveHk6OmNyZWF0ZShhZG9wdFB0cihkYXRhYmFzZSkpKTsKKyAgICBtX2RhdGFiYXNlUHJveHkg
PSBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGRhdGFiYXNlKSk7Cisg
ICAgbV9jYWxsYmFja3MtPm9uVXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKHRyYW5zYWN0aW9uKSksIG1fZGF0YWJhc2VQ
cm94eSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDhmOGMwMmFhYTAyOGNmYzM5
YmU5MjFhYmMwZDZiN2RhM2ZkNTMyNmYuLjRiMTA2NDkxZGVlMjVhNWE3ODhjODkxOTM3MjMxMzk5
NDRkYmI3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNh
bGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmgKQEAgLTMyLDcgKzMyLDEyIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
SURCQ2FsbGJhY2tzOyB9CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkNhbGxiYWNr
czsKK2NsYXNzIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTcsNyArNjIsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4gbV9jYWxsYmFj
a3M7Ci0gICAgYm9vbCBtX2RpZENyZWF0ZURhdGFiYXNlUHJveHk7CisgICAgUmVmUHRyPFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gbV9kYXRhYmFzZVByb3h5OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjUwNjZhZTkwZGZhZDZmMTdlNzczNGU0ZGVh
M2U3YmYzOWMyZWRmMy4uMGEyYmVkM2M4OWVmOTQ2MjNmOTY3NWE3NTM3N2Y2NDFmZDFhY2IwYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTExLTMwICBKb3NodWEgQmVsbCAgPGpzYmVsbEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDb3JyZWN0IGRhdGFiYXNlIHZlcnNp
b24gYWZ0ZXIgYWJvcnRlZCB1cGdyYWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM3NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdCBleHBlY3RhdGlvbnMgYW5kIHR3ZWFrIGEgdGVz
dCBzbyBpdCdzIHRlc3Rpbmcgd2hhdCBpdCBjbGFpbWVkLgorCisgICAgICAgICogc3RvcmFnZS9p
bmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3Zl
cnNpb25jaGFuZ2UtYWJvcnQuanM6CisgICAgICAgIChwb3N0QWJvcnQpOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS1hYm9ydC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3VuYmxvY2tlZC12ZXJzaW9u
LWNoYW5nZXMuanM6CisgICAgICAgIChvblVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL3VuYmxvY2tlZC12ZXJzaW9uLWNoYW5nZXMtZXhwZWN0ZWQudHh0OgorCiAy
MDEyLTEyLTAzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFdoZW4gYW5pbWF0aW5nIG1hc2stcG9zdGlvbiBvbiBhIGNvbXBvc2l0ZWQgbGF5ZXIsIGVs
ZW1lbnQgcmVuZGVycyBpbmNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9ydC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1hYm9y
dC1pbi1pbml0aWFsLXVwZ3JhZGVuZWVkZWQtZXhwZWN0ZWQudHh0CmluZGV4IDYzZGMwMDMxZTYx
YzEwMzFhM2ZlNzY5ZDMwYmNjN2Q5YzdmODdkZDcuLjdjODg2ZDc1MzUwYjE5ZTk4Yzk3YjU2Mzdj
ZTRlODQyYmVhZTI4Y2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ludHZlcnNpb24tYWJvcnQtaW4taW5pdGlhbC11cGdyYWRlbmVlZGVkLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLWFib3J0LWluLWlu
aXRpYWwtdXBncmFkZW5lZWRlZC1leHBlY3RlZC50eHQKQEAgLTE2LDE0ICsxNiwxNCBAQCBQQVNT
IGRiLnZlcnNpb24gaXMgMgogdHJhbnNhY3Rpb24uYWJvcnQoKQogCiBvbkFib3J0KCk6Ci1GQUlM
IGV2ZW50LnRhcmdldC5kYi52ZXJzaW9uIHNob3VsZCBiZSAwIChvZiB0eXBlIG51bWJlcikuIFdh
cyAgKG9mIHR5cGUgc3RyaW5nKS4KK1BBU1MgZXZlbnQudGFyZ2V0LmRiLnZlcnNpb24gaXMgMAog
UEFTUyByZXF1ZXN0LnRyYW5zYWN0aW9uIGlzIG5vbi1udWxsLgogCiBvbkVycm9yKCk6CiBQQVNT
IGRiIGlzIGV2ZW50LnRhcmdldC5yZXN1bHQKIFBBU1MgcmVxdWVzdCBpcyBldmVudC50YXJnZXQK
IFBBU1MgZXZlbnQudGFyZ2V0LmVycm9yLm5hbWUgaXMgIkFib3J0RXJyb3IiCi1GQUlMIGV2ZW50
LnRhcmdldC5yZXN1bHQudmVyc2lvbiBzaG91bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMg
IChvZiB0eXBlIHN0cmluZykuCitQQVNTIGV2ZW50LnRhcmdldC5yZXN1bHQudmVyc2lvbiBpcyAw
CiBQQVNTIHJlcXVlc3QudHJhbnNhY3Rpb24gaXMgbnVsbAogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
b3ppbGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0LmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS9yZXNvdXJjZXMvdmVyc2lvbmNoYW5nZS1hYm9ydC5qcwpp
bmRleCBkOTQ3YTFhZmE0Yjc1N2M2MWQxNjc2Zjc2NWFmNTdkNzQ4YWMyNDc1Li41ZDAxOTQ0MmY3
YWIyYmMxNTYyM2FhNmFjMGMyMjA1YTU4ODk5YjE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3Jlc291cmNlcy92ZXJzaW9uY2hhbmdlLWFib3J0Lmpz
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvcmVzb3VyY2VzL3Zl
cnNpb25jaGFuZ2UtYWJvcnQuanMKQEAgLTMyLDcgKzMyLDYgQEAgZnVuY3Rpb24gcHJlcGFyZURh
dGFiYXNlKCkKIAogZnVuY3Rpb24gcG9zdEFib3J0KCkKIHsKLSAgICBkZWJ1ZygiRklYTUU6IEZh
aWxzIGJlY2F1c2Ugb2YgaHR0cDovL3drYi51Zy8xMDI0MTIiKTsKICAgICBzaG91bGRCZSgiZGIu
dmVyc2lvbiIsICIwIik7CiAgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3Ro
IiwgIjAiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21vemlsbGEvdmVyc2lvbmNoYW5nZS1hYm9ydC1leHBlY3RlZC50eHQKaW5k
ZXggN2Y2MGUwYWNjMDU5YjI1YzA4M2RmODIyZGNlMzA0ZjllMGFlN2Q1NC4uZDlmZDYwZjc5NTkx
MTQzYjYwYWIxNGQzZTdmY2RlMjg2NjlhMWQ3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvbW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL3ZlcnNpb25jaGFuZ2Ut
YWJvcnQtZXhwZWN0ZWQudHh0CkBAIC0xMyw4ICsxMyw3IEBAIFBBU1MgZGIub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGggaXMgMQogaW5kZXggPSBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnYmFyJywg
J2JheicpOwogUEFTUyBvYmplY3RTdG9yZS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCiBldmVudC50
YXJnZXQudHJhbnNhY3Rpb24uYWJvcnQoKTsKLUZJWE1FOiBGYWlscyBiZWNhdXNlIG9mIGh0dHA6
Ly93a2IudWcvMTAyNDEyCi1GQUlMIGRiLnZlcnNpb24gc2hvdWxkIGJlIDAgKG9mIHR5cGUgbnVt
YmVyKS4gV2FzICAob2YgdHlwZSBzdHJpbmcpLgorUEFTUyBkYi52ZXJzaW9uIGlzIDAKIFBBU1Mg
ZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvdW5ibG9ja2VkLXZlcnNpb24tY2hhbmdlcy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy91bmJsb2NrZWQtdmVyc2lvbi1jaGFuZ2VzLmpzCmluZGV4IDk2
NjM2MzZlZTlhNmI0YmIxOTY5YTRiNDVmZDlhNjg5MzIwMzE5YzEuLjhiMmQ2M2E5NGQ0ZjQ2MDJj
ZTQ0YzkyYjBhODI5MzM3YjBmMjY2ZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy91bmJsb2NrZWQtdmVyc2lvbi1jaGFuZ2VzLmpzCisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy91bmJsb2NrZWQtdmVyc2lvbi1j
aGFuZ2VzLmpzCkBAIC0yOSwxMiArMjksMTUgQEAgZnVuY3Rpb24gb25VcGdyYWRlTmVlZGVkKGV2
dCkKICAgICBwcmVhbWJsZShldnQpOwogICAgIGV2YWxBbmRMb2coImRiID0gcmVxdWVzdC5yZXN1
bHQiKTsKICAgICBzaG91bGRCZSgiZGIudmVyc2lvbiIsICIyIik7CisgICAgZXZhbEFuZExvZygi
dHJhbnNhY3Rpb24gPSByZXF1ZXN0LnRyYW5zYWN0aW9uIik7CiAKICAgICBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lLCAzKSIpOwogICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwogICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVk
ID0gb25VcGdyYWRlTmVlZGVkMjsKICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9uU3VjY2VzczsK
IAorICAgIGV2YWxBbmRMb2coInRyYW5zYWN0aW9uLmFib3J0KCkiKTsKKyAgICAvLyBGSVhNRTog
RXhwbGljaXQgZGIuY2xvc2UoKSBjYWxsIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5LiBodHRwOi8v
d2tidWcuY29tLzEwMjI5OAogICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKIH0KIApAQCAt
NTksNCArNjIsNCBAQCBmdW5jdGlvbiBvblN1Y2Nlc3MoZXZ0KQogICAgIGZpbmlzaEpTVGVzdCgp
OwogfQogCi10ZXN0KCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQordGVzdCgpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdW5ibG9ja2VkLXZlcnNpb24t
Y2hhbmdlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi91bmJs
b2NrZWQtdmVyc2lvbi1jaGFuZ2VzLWV4cGVjdGVkLnR4dAppbmRleCAxZjE4MzE4ZWQyNjEwNzE1
YjdkZGM0MzQyZjA0NzkwMDg0NWM5ZTFjLi4yNWRjNmM4NDZiNmI0OTk4NzRlOTNjYjBlMmVkMjI0
YWRiMjkyYTNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi91bmJs
b2NrZWQtdmVyc2lvbi1jaGFuZ2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi91bmJsb2NrZWQtdmVyc2lvbi1jaGFuZ2VzLWV4cGVjdGVkLnR4dApAQCAt
MTQsMTEgKzE0LDEzIEBAIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUsIDIpCiBvblVw
Z3JhZGVOZWVkZWQoKToKIGRiID0gcmVxdWVzdC5yZXN1bHQKIFBBU1MgZGIudmVyc2lvbiBpcyAy
Cit0cmFuc2FjdGlvbiA9IHJlcXVlc3QudHJhbnNhY3Rpb24KIHJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbihkYm5hbWUsIDMpCit0cmFuc2FjdGlvbi5hYm9ydCgpCiBkYi5jbG9zZSgpCiAKIG9uRXJy
b3IoKToKLUZBSUwgZGIudmVyc2lvbiBzaG91bGQgYmUgMC4gV2FzIDIuCitQQVNTIGRiLnZlcnNp
b24gaXMgMAogCiBvblVwZ3JhZGVOZWVkZWQyKCk6CiBkYiA9IHJlcXVlc3QucmVzdWx0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>