<?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>90001</bug_id>
          
          <creation_ts>2012-06-26 11:46:09 -0700</creation_ts>
          <short_desc>IndexedDB: Hook up render-side key ASSERTing for get()</short_desc>
          <delta_ts>2012-06-28 15:57:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89377</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>657806</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-26 11:46:09 -0700</bug_when>
    <thetext>IndexedDB: Hook up render-side key ASSERTing for get()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657963</commentid>
    <comment_count>1</comment_count>
      <attachid>149603</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-26 14:02:58 -0700</bug_when>
    <thetext>Created attachment 149603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657966</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-26 14:05:18 -0700</bug_when>
    <thetext>Attachment 149603 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657967</commentid>
    <comment_count>3</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-26 14:06:32 -0700</bug_when>
    <thetext>jsbell@ - mind a once-over? this is dependent on (and the patch is based on top of) the patch in https://bugs.webkit.org/show_bug.cgi?id=89377 - this won&apos;t land cleanly until that bug is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657969</commentid>
    <comment_count>4</comment_count>
      <attachid>149604</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-26 14:07:34 -0700</bug_when>
    <thetext>Created attachment 149604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658036</commentid>
    <comment_count>5</comment_count>
      <attachid>149604</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-26 15:20:34 -0700</bug_when>
    <thetext>Comment on attachment 149604
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:273
&gt; +        // FIXME: Assert until we can actually inject the right value.

This FIXME just describes the current state; change it to describe the desired change.

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:277
&gt; +            if (!keyPath.isNull()) {

This check is redundant.

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:278
&gt; +                RefPtr&lt;IDBKey&gt; expectedKey =

Unnecessary line break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658781</commentid>
    <comment_count>6</comment_count>
      <attachid>149784</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-27 12:33:21 -0700</bug_when>
    <thetext>Created attachment 149784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658784</commentid>
    <comment_count>7</comment_count>
      <attachid>149786</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-27 12:37:46 -0700</bug_when>
    <thetext>Created attachment 149786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658789</commentid>
    <comment_count>8</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-27 12:39:57 -0700</bug_when>
    <thetext>Hey tony@ - another one here, continuing some refactoring work with some chromium plumbing. r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658846</commentid>
    <comment_count>9</comment_count>
      <attachid>149786</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-27 13:53:18 -0700</bug_when>
    <thetext>Comment on attachment 149786
Patch

Might be nice to have a clean ews run before landing.

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

&gt; Source/WebCore/ChangeLog:28
&gt; +        (WebCore):
&gt; +
&gt; +2012-06-26  Joshua Bell  &lt;jsbell@chromium.org&gt;
&gt; +

Looks like a merge conflict?

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:115
&gt;      virtual void onSuccess(PassRefPtr&lt;IDBTransactionBackendInterface&gt;) { }
&gt;      virtual void onSuccess(PassRefPtr&lt;SerializedScriptValue&gt;) { }
&gt; +    virtual void onSuccess(PassRefPtr&lt;SerializedScriptValue&gt;, PassRefPtr&lt;IDBKey&gt;, const IDBKeyPath&amp;) { }

Nit: Should these all have OVERRIDE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658891</commentid>
    <comment_count>10</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-27 14:43:32 -0700</bug_when>
    <thetext>hmm... somehow my git repository got stuck on a day-old chrome version, which means my webkit diff was broken. new patch coming up (almost identical, but with nits addressed, changelog fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658898</commentid>
    <comment_count>11</comment_count>
      <attachid>149801</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-27 14:55:34 -0700</bug_when>
    <thetext>Created attachment 149801
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659868</commentid>
    <comment_count>12</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-28 15:14:27 -0700</bug_when>
    <thetext>jsbell@ - cq? (you reviewed this earlier...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659906</commentid>
    <comment_count>13</comment_count>
      <attachid>149801</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 15:57:23 -0700</bug_when>
    <thetext>Comment on attachment 149801
Patch for landing

Clearing flags on attachment: 149801

Committed r121477: &lt;http://trac.webkit.org/changeset/121477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659907</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 15:57:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149603</attachid>
            <date>2012-06-26 14:02:58 -0700</date>
            <delta_ts>2012-06-26 14:07:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90001-20120626140258.patch</filename>
            <type>text/plain</type>
            <size>12843</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkxOGE5NDhhMDQxZTU3
MGFkZjA0NjAwY2Q5MjhhMGZhZWVhYzBhMy4uNGRiMGU0M2MwNDAwOWMxN2ZhZGY5NWIyYTlhZGMy
NGQ2YjQzNzJjZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTI2ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEhv
b2sgdXAgcmVuZGVyLXNpZGUga2V5IEFTU0VSVGluZyBmb3IgZ2V0KCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMDAxCisKKwlSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIHRoZSBuZXcgb25TdWNjZXNzIGFuZCBh
ZGQgaXQgdG8gdGhlIGludGVyZmFjZS4gRm9yIG5vdywKKyAgICAgICAgc2ltcGx5IGFzc2VydCB0
aGF0IHRoZSByaWdodCB2YWx1ZSBpcyBzZXQuIEFkZCB0aGUgc2FtZSBhc3NlcnRpb24KKyAgICAg
ICAgbG9naWMgaW4gdGhlIHZhbHVlLWNvbnN0cnVjdGlvbiBsb2dpYyB3aGVuIHRoZSBjdXJzb3Ig
YWR2YW5jZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyB2ZXJpZnkg
dGhpcyByZWZhY3RvciBpcyBjb3JyZWN0LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChJREJDYWxsYmFja3MpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktleUZyb21TZXJp
YWxpemVkVmFsdWVBbmRLZXlQYXRoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDYtMjYgIEpvc2h1
YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IE1vdmUg
bWV0aG9kIHByZWNvbmRpdGlvbiBjaGVja3MgdG8gZnJvbnQgZW5kIG9iamVjdHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggOGQzNTg5ODNiODNmMzhiYTgyMGI4MzExZDI1MTJmM2VkNmIw
YjJmZC4uOGU4MmI0N2M3NmQwZTczZWRiOTg0ZTNhOTA5ZDQwOWMzZTIwNmFhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNi0yNiAgQWxlYyBGbGV0
dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBIb29rIHVw
IHJlbmRlci1zaWRlIGtleSBBU1NFUlRpbmcgZm9yIGdldCgpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDAwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgQ2hyb21pdW0gV2ViS2l0IEFQSSB0
byBuZXcgb25TdWNjZXNzIGhhbmRsZXIuCisKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vz
cyk6CisgICAgICAgICogdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uU3VjY2Vzcyk6CisgICAgICAgICogdGVzdHMv
SURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6CisKIDIwMTItMDYtMjYgIEp1biBNdWthaSAgPG11
a2FpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBbGxvdyB1c2luZyA8aW5wdXQgdHlwZT0iY29s
b3IiPiBVSSBpbiBDaHJvbWVPUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggN2RlZTU1MDBmNDBiNmU2NDM0MjY0ZDk5MzdiZDFhZDk1
MjRkMmUyZS4uMGIzNGI2ODg2ZDVlMWFhNDNkMTk1M2Y5YWQ4MDNhMWUyYTcyODkyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVk
ZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3Qg
SURCS2V5UGF0aCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVh
dGlvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0
IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktl
eT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiA+JiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXgg
YWYxYzUwNDQ0NzM1ZWI5NDYyM2ZjYjg4NmE2NDZmMDRiY2E2NTgwOS4uYjc2MDI4NjYxYWU3ZGI3
Yjc2Nzc5YjVkYzU0MDI5YzEwZmU1MzBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0yNjYsNyArMjY2LDI0IEBAIHZvaWQgSURCQ3Vy
c29yOjpzZXRWYWx1ZVJlYWR5KCkKIHsKICAgICBtX2N1cnJlbnRLZXkgPSBtX2JhY2tlbmQtPmtl
eSgpOwogICAgIG1fY3VycmVudFByaW1hcnlLZXkgPSBtX2JhY2tlbmQtPnByaW1hcnlLZXkoKTsK
LSAgICBtX2N1cnJlbnRWYWx1ZSA9IElEQkFueTo6Y3JlYXRlKG1fYmFja2VuZC0+dmFsdWUoKSk7
CisKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IG1fYmFja2VuZC0+
dmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgaWYgKCFpc0tleUN1cnNvcigpKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBBc3NlcnQgdW50aWwgd2UgY2FuIGFjdHVhbGx5IGluamVjdCB0aGUgcmln
aHQgdmFsdWUuCisgICAgICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBl
ZmZlY3RpdmVPYmplY3RTdG9yZSgpOworICAgICAgICBpZiAob2JqZWN0U3RvcmUtPmF1dG9JbmNy
ZW1lbnQoKSAmJiAhb2JqZWN0U3RvcmUtPm1ldGFkYXRhKCkua2V5UGF0aC5pc051bGwoKSkgewor
ICAgICAgICAgICAgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCA9IG9iamVjdFN0b3JlLT5tZXRh
ZGF0YSgpLmtleVBhdGg7CisgICAgICAgICAgICBpZiAoIWtleVBhdGguaXNOdWxsKCkpIHsKKyAg
ICAgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtleSA9CisgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1
ZSwga2V5UGF0aCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGV4cGVjdGVkS2V5LT5pc0VxdWFs
KG1fY3VycmVudFByaW1hcnlLZXkuZ2V0KCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyNlbmRpZgorICAgIG1fY3VycmVudFZhbHVlID0gSURCQW55OjpjcmVhdGUodmFsdWUu
cmVsZWFzZSgpKTsKKwogICAgIG1fZ290VmFsdWUgPSB0cnVlOwogICAgIG1fdmFsdWVJc0RpcnR5
ID0gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggYWYzMGVmMzcxMTVh
NTExMzljNTIwMWIwOWFjYmI0OTQyNzJhMjM0Yi4uNDc0Y2RlYjViNWEyYzg4NDFhMWZjYWRmOThm
ZjYyMzIyZmRmMDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTExMiw2ICsx
MTIsMTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIGlmIChvYmplY3RTdG9yZS0+YXV0b0luY3JlbWVudCgpICYmICFvYmplY3RTdG9yZS0+
a2V5UGF0aCgpLmlzTnVsbCgpKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUod2lyZURhdGEpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrZXksIG9iamVjdFN0b3JlLT5rZXlQYXRoKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlRnJvbVdpcmUod2lyZURhdGEpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA3NjYyMTViYjljMDA1ZGFl
OWEzYjAxN2Y1YmU5N2I3MmI5MzJkYTE0Li4zMzkyMmU2YTg4ZmUyNTYwOWI2NTdhY2QyN2I5Y2Zm
NDIzODFmZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgorI2luY2x1
ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJDdXJzb3JXaXRoVmFsdWUu
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkV2ZW50RGlzcGF0Y2hl
ci5oIgpAQCAtMzA0LDYgKzMwNSwyMSBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbAogICAgIGVu
cXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKKwordm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgpCit7CisgICAgTE9HX0VSUk9SKCJDSEVDS0lORzogb25TdWNjZXNz
KHZhbHVlLCBrZXksIGtleXBhdGgpIik7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlID0gcHJwU2VyaWFsaXplZFNjcmlwdFZhbHVlOworI2lm
bmRlZiBOREVCVUcKKyAgICAvLyBGSVhNRTogQXNzZXJ0IHVudGlsIHdlIGNhbiBhY3R1YWxseSBp
bmplY3QgdGhlIHJpZ2h0IHZhbHVlLgorICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBw
cnBQcmltYXJ5S2V5OworICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5ID0KKyAgICAgICAg
ICAgICAgY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBrZXlQYXRoKTsKKyAgICBBU1NFUlQoZXhwZWN0ZWRLZXktPmlzRXF1YWwo
cHJpbWFyeUtleS5nZXQoKSkpOworI2VuZGlmCisgICAgb25TdWNjZXNzKHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5yZWxlYXNlKCkpOworfQorCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc1dpdGhD
b250aW51YXRpb24oKQogewogICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzV2l0
aENvbnRpbnVhdGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oCmluZGV4IGUxMDRkOGYxZTgxNWNiNWM0NTdmNjNlMTNkODQ5NDNiYjJjZjliZmQu
Ljg4YTdlNjBmMWU3MWY4NTE2MDNkY2Y0MTQzMjRiODkyZTY0NzZmNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTg3LDYgKzg3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KTsK
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElE
QktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJl
ZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JikgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfSAvLyBOb3QgaW1wbGVtZW50ZWQuIENhbGxiYWNrIHNob3VsZCBub3QgcmVhY2ggdGhl
IHJlbmRlcmVyIHNpZGUuCiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBl
ZTc2ZWUyOWEwMDFkNmNkNzZjNWYxN2FkMzVlY2I3ZmNjNjc0YzI5Li42NjFmZjAxNTk1ZGYwNTUw
MGQ3ZjZjYWMzMTBlOGJjNzEzNDRiM2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTU0LDEzICsxNTQsMTUgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiYgcm9vdFZhbHVlLAogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotc3RhdGlj
IFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5
UGF0aChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCkKK3N0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNl
cmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHBycFZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
a2V5UGF0aEVsZW1lbnRzOwogICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOwogICAgIElE
QlBhcnNlS2V5UGF0aChrZXlQYXRoLCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKICAgICBBU1NF
UlQoZXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3JOb25lKTsKIAorICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CisKICAgICBWOEF1eGlsaWFyeUNv
bnRleHQgY29udGV4dDsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhWYWx1ZSh2YWx1ZS0+
ZGVzZXJpYWxpemUoKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4S2V5KGdldE50aFZh
bHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNp
emUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKaW5kZXggZDRlZGUyMWE3YzUwOWEwYjEyZTJkZDIyMWYyMjcxMjI3MjA5
MzEyOC4uZmZlNjJjMDdlOGJmNTNjY2NlYzU2MjVhNGE1YzBlNTk3YjNlMjNlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
CkBAIC0xMTIsNiArMTEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJLZXk+KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25z
dCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiA+JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNw
cAppbmRleCAzMTI2NmIxYTMxOGEyNDFjYmI1NDQ5ZjMxYmQwYjk2NDIwN2M3YzMwLi41YjVhZWRm
N2NjYjM3ZTI0OWM1M2MxYWY5ZThlYzhlZDliMGU2ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcApAQCAtOTIsOSArOTIsNyBA
QCB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTYwogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9u
U3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwgY29uc3QgV2ViSURCS2V5JiBrZXksIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgp
CiB7Ci0gICAgLy8gRklYTUU6IHByb3h5IHRvIHRoZSAzLXBhcmFtZXRlciB2ZXJzaW9uIHdoZW4g
aW50ZXJmYWNlIGxhbmRzOgotICAgIC8vIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBrZXksIGtleVBhdGgpOyk7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGtleSwg
a2V5UGF0aCk7CiB9CiAKIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzV2l0aENv
bnRpbnVhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QkFib3J0T25Db3JydXB0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QkFib3J0T25Db3JydXB0VGVzdC5jcHAKaW5kZXggNmM3OGFhNTNjNTIyYjYwYjIwYWRiNjc3OTBi
ZDk0MDA1YjRiN2ZkMi4uZjUzYWQ1MGQxZDY3OGJlMjY0MTBlZDg0MGUzZjdhNTJhNzc2ODcxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVw
dFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNv
cnJ1cHRUZXN0LmNwcApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PikgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3QgSURCS2V5UGF0aCYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktl
eT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25CbG9j
a2VkKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRh
dGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJE
YXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCAxN2RkMjRiYzZjMzA0ZmRmYmE4OGU3M2I0NmQ4
MzhkYjVkNzRkZGI0Li5lYjNjODVhYmNmZDVmOTU5NTQyNDVmMDEwZjQ2ZmI3MWE1ODVkNWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2Vu
ZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VC
YWNrZW5kVGVzdC5jcHAKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktl
eT4sIGNvbnN0IElEQktleVBhdGgmKSBPVkVSUklERSB7IH07CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29u
c3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiYpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2Nr
ZWQoKSBPVkVSUklERSB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149604</attachid>
            <date>2012-06-26 14:07:34 -0700</date>
            <delta_ts>2012-06-27 12:33:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90001-20120626140734.patch</filename>
            <type>text/plain</type>
            <size>12850</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkxOGE5NDhhMDQxZTU3
MGFkZjA0NjAwY2Q5MjhhMGZhZWVhYzBhMy4uZmZkNjM2YzNkMzE1YWI1MWQ4MDIwODNhYzk0ODY5
ZmM4NmYzZWQ1NSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTI2ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEhv
b2sgdXAgcmVuZGVyLXNpZGUga2V5IEFTU0VSVGluZyBmb3IgZ2V0KCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMDAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayB1cCB0aGUgbmV3IG9uU3VjY2Vz
cyBhbmQgYWRkIGl0IHRvIHRoZSBpbnRlcmZhY2UuIEZvciBub3csCisgICAgICAgIHNpbXBseSBh
c3NlcnQgdGhhdCB0aGUgcmlnaHQgdmFsdWUgaXMgc2V0LiBBZGQgdGhlIHNhbWUgYXNzZXJ0aW9u
CisgICAgICAgIGxvZ2ljIGluIHRoZSB2YWx1ZS1jb25zdHJ1Y3Rpb24gbG9naWMgd2hlbiB0aGUg
Y3Vyc29yIGFkdmFuY2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZXhpc3RpbmcgdGVzdHMg
dmVyaWZ5IHRoaXMgcmVmYWN0b3IgaXMgY29ycmVjdC4KKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkNhbGxiYWNrcy5oOgorICAgICAgICAoSURCQ2FsbGJhY2tzKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvdjgv
SURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJREJLZXlG
cm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA2LTI2
ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERC
OiBNb3ZlIG1ldGhvZCBwcmVjb25kaXRpb24gY2hlY2tzIHRvIGZyb250IGVuZCBvYmplY3RzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhkMzU4OTgzYjgzZjM4YmE4MjBiODMxMWQyNTEy
ZjNlZDZiMGIyZmQuLjhlODJiNDdjNzZkMGU3M2VkYjk4NGUzYTkwOWQ0MDljM2UyMDZhYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDYtMjYgIEFs
ZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjog
SG9vayB1cCByZW5kZXItc2lkZSBrZXkgQVNTRVJUaW5nIGZvciBnZXQoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAwMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29rIHVwIENocm9taXVtIFdlYktp
dCBBUEkgdG8gbmV3IG9uU3VjY2VzcyBoYW5kbGVyLgorCisgICAgICAgICogc3JjL1dlYklEQkNh
bGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFja3NJbXBsOjpv
blN1Y2Nlc3MpOgorICAgICAgICAqIHRlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3MpOgorICAgICAgICAq
IHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOgorCiAyMDEyLTA2LTI2ICBKdW4gTXVr
YWkgIDxtdWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWxsb3cgdXNpbmcgPGlucHV0IHR5
cGU9ImNvbG9yIj4gVUkgaW4gQ2hyb21lT1MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCmluZGV4IDdkZWU1NTAwZjQwYjZlNjQzNDI2NGQ5OTM3
YmQxYWQ5NTI0ZDJlMmUuLjBiMzRiNjg4NmQ1ZTFhYTQzZDE5NTNmOWFkODAzYTFlMmE3Mjg5MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNr
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQktleS5oIgor
I2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKQEAgLTU1LDYgKzU2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4s
IGNvbnN0IElEQktleVBhdGgmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhD
b250aW51YXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRj
aChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0
cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CmluZGV4IGFmMWM1MDQ0NDczNWViOTQ2MjNmY2I4ODZhNjQ2ZjA0YmNhNjU4MDkuLmI3NjAyODY2
MWFlN2RiN2I3Njc3OWI1ZGM1NDAyOWMxMGZlNTMwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMjY2LDcgKzI2NiwyNCBAQCB2b2lk
IElEQkN1cnNvcjo6c2V0VmFsdWVSZWFkeSgpCiB7CiAgICAgbV9jdXJyZW50S2V5ID0gbV9iYWNr
ZW5kLT5rZXkoKTsKICAgICBtX2N1cnJlbnRQcmltYXJ5S2V5ID0gbV9iYWNrZW5kLT5wcmltYXJ5
S2V5KCk7Ci0gICAgbV9jdXJyZW50VmFsdWUgPSBJREJBbnk6OmNyZWF0ZShtX2JhY2tlbmQtPnZh
bHVlKCkpOworCisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBtX2Jh
Y2tlbmQtPnZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIGlmICghaXNLZXlDdXJzb3IoKSkg
eworICAgICAgICAvLyBGSVhNRTogQXNzZXJ0IHVudGlsIHdlIGNhbiBhY3R1YWxseSBpbmplY3Qg
dGhlIHJpZ2h0IHZhbHVlLgorICAgICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0
b3JlID0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKTsKKyAgICAgICAgaWYgKG9iamVjdFN0b3JlLT5h
dXRvSW5jcmVtZW50KCkgJiYgIW9iamVjdFN0b3JlLT5tZXRhZGF0YSgpLmtleVBhdGguaXNOdWxs
KCkpIHsKKyAgICAgICAgICAgIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGggPSBvYmplY3RTdG9y
ZS0+bWV0YWRhdGEoKS5rZXlQYXRoOworICAgICAgICAgICAgaWYgKCFrZXlQYXRoLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPElEQktleT4gZXhwZWN0ZWRLZXkgPQorICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBh
dGgodmFsdWUsIGtleVBhdGgpOworICAgICAgICAgICAgICAgIEFTU0VSVChleHBlY3RlZEtleS0+
aXNFcXVhbChtX2N1cnJlbnRQcmltYXJ5S2V5LmdldCgpKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICBtX2N1cnJlbnRWYWx1ZSA9IElEQkFueTo6Y3JlYXRl
KHZhbHVlLnJlbGVhc2UoKSk7CisKICAgICBtX2dvdFZhbHVlID0gdHJ1ZTsKICAgICBtX3ZhbHVl
SXNEaXJ0eSA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IGFmMzBl
ZjM3MTE1YTUxMTM5YzUyMDFiMDlhY2JiNDk0MjcyYTIzNGIuLjQ3NGNkZWI1YjVhMmM4ODQxYTFm
Y2FkZjk4ZmY2MjMyMmZkZjA0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC0x
MTIsNiArMTEyLDExIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBpZiAob2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKSAmJiAhb2JqZWN0
U3RvcmUtPmtleVBhdGgoKS5pc051bGwoKSkgeworICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2Vz
cyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKHdpcmVEYXRhKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga2V5LCBvYmplY3RTdG9yZS0+a2V5UGF0aCgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKHdpcmVEYXRhKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggNzY2MjE1YmI5
YzAwNWRhZTlhM2IwMTdmNWJlOTdiNzJiOTMyZGExNC4uMzM5MjJlNmE4OGZlMjU2MDliNjU3YWNk
MjdiOWNmZjQyMzgxZmQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUmVxdWVzdC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3Rl
bmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIK
KyNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0
aFZhbHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJFdmVudERp
c3BhdGNoZXIuaCIKQEAgLTMwNCw2ICszMDUsMjEgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nl
c3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWwK
ICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQogCisKK3ZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQoreworICAgIExPR19FUlJPUigiQ0hFQ0tJTkc6IG9u
U3VjY2Vzcyh2YWx1ZSwga2V5LCBrZXlwYXRoKSIpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9IHBycFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKKyNpZm5kZWYgTkRFQlVHCisgICAgLy8gRklYTUU6IEFzc2VydCB1bnRpbCB3ZSBjYW4gYWN0
dWFsbHkgaW5qZWN0IHRoZSByaWdodCB2YWx1ZS4KKyAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5ID0gcHJwUHJpbWFyeUtleTsKKyAgICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtleSA9Cisg
ICAgICAgICAgICAgIGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5UGF0aCk7CisgICAgQVNTRVJUKGV4cGVjdGVkS2V5LT5p
c0VxdWFsKHByaW1hcnlLZXkuZ2V0KCkpKTsKKyNlbmRpZgorICAgIG9uU3VjY2VzcyhzZXJpYWxp
emVkU2NyaXB0VmFsdWUucmVsZWFzZSgpKTsKK30KKwogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nl
c3NXaXRoQ29udGludWF0aW9uKCkKIHsKICAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3Vj
Y2Vzc1dpdGhDb250aW51YXRpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaAppbmRleCBlMTA0ZDhmMWU4MTVjYjVjNDU3ZjYzZTEzZDg0OTQzYmIy
Y2Y5YmZkLi44OGE3ZTYwZjFlNzFmODUxNjAzZGNmNDE0MzI0Yjg5MmU2NDc2ZjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC04Nyw2ICs4
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
S2V5Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBj
b25zdCBJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51
YXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBj
b25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxlbWVudGVkLiBDYWxsYmFjayBzaG91bGQgbm90IHJl
YWNoIHRoZSByZW5kZXJlciBzaWRlLgogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
aW5kZXggZWU3NmVlMjlhMDAxZDZjZDc2YzVmMTdhZDM1ZWNiN2ZjYzY3NGMyOS4uNjYxZmYwMTU5
NWRmMDU1MDBkN2Y2Y2FjMzEwZThiYzcxMzQ0YjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE1NCwxMyArMTU0LDE1
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAK
LXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1
ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25z
dCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktl
eUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBwcnBWYWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewogICAgIFZlY3RvcjxT
dHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJLZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsK
ICAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwga2V5UGF0aEVsZW1lbnRzLCBlcnJvcik7CiAg
ICAgQVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSk7CiAKKyAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOworCiAgICAgVjhBdXhp
bGlhcnlDb250ZXh0IGNvbnRleHQ7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUo
dmFsdWUtPmRlc2VyaWFsaXplKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEtleShn
ZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoRWxlbWVudHMsIGtleVBhdGhFbGVt
ZW50cy5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGQ0ZWRlMjFhN2M1MDlhMGIxMmUyZGQyMjFmMjI3
MTIyNzIwOTMxMjguLmZmZTYyYzA3ZThiZjUzY2NjZWM1NjI1YTRhNWMwZTU5N2IzZTIzZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+
JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQo
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tz
SW1wbC5jcHAKaW5kZXggMzEyNjZiMWEzMThhMjQxY2JiNTQ0OWYzMWJkMGI5NjQyMDdjN2MzMC4u
NWI1YWVkZjdjY2IzN2UyNDljNTNjMWFmOWU4ZWM4ZWQ5YjBlNmUxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTkyLDkg
KzkyLDcgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2MKIAogdm9pZCBXZWJJREJDYWxsYmFja3NJ
bXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJJREJLZXlQYXRoJiBr
ZXlQYXRoKQogewotICAgIC8vIEZJWE1FOiBwcm94eSB0byB0aGUgMy1wYXJhbWV0ZXIgdmVyc2lv
biB3aGVuIGludGVyZmFjZSBsYW5kczoKLSAgICAvLyBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5LCBrZXlQYXRoKTspOwotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVl
LCBrZXksIGtleVBhdGgpOwogfQogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vz
c1dpdGhDb250aW51YXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmluZGV4IDZjNzhhYTUzYzUyMmI2MGIyMGFk
YjY3NzkwYmQ5NDAwNWI0YjdmZDIuLmY1M2FkNTBkMWQ2NzhiZTI2NDEwZWQ4NDBlM2Y3YTUyYTc3
Njg3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCQWJvcnRP
bkNvcnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFi
b3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0IElEQktleVBhdGgm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0
cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IG9uQmxvY2tlZCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggMTdkZDI0YmM2YzMwNGZkZmJhODhl
NzNiNDZkODM4ZGI1ZDc0ZGRiNC4uZWIzYzg1YWJjZmQ1Zjk1OTU0MjQ1ZjAxMGY0NmZiNzFhNTg1
ZDVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFz
ZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRh
dGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgT1ZFUlJJREUgeyB9CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0
cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9OwogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
b25CbG9ja2VkKCkgT1ZFUlJJREUgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149784</attachid>
            <date>2012-06-27 12:33:21 -0700</date>
            <delta_ts>2012-06-27 12:37:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90001-20120627123320.patch</filename>
            <type>text/plain</type>
            <size>46321</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODVlNDI3OGIyOWMyMDEw
N2NjZDdjNjU1MTRkOTc1ZGE4OGY4NWIxNS4uM2Y0YTM4ZGY1ZWRiNDE4ZGM1YTliODBlZmM1NDdh
YmViNmVkZjJjMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wNi0yNiAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBI
b29rIHVwIHJlbmRlci1zaWRlIGtleSBBU1NFUlRpbmcgZm9yIGdldCgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDAwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgdGhlIG5ldyBvblN1Y2Nl
c3MgYW5kIGFkZCBpdCB0byB0aGUgaW50ZXJmYWNlLiBGb3Igbm93LAorICAgICAgICBzaW1wbHkg
YXNzZXJ0IHRoYXQgdGhlIHJpZ2h0IHZhbHVlIGlzIHNldC4gQWRkIHRoZSBzYW1lIGFzc2VydGlv
bgorICAgICAgICBsb2dpYyBpbiB0aGUgdmFsdWUtY29uc3RydWN0aW9uIGxvZ2ljIHdoZW4gdGhl
IGN1cnNvciBhZHZhbmNlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIHRlc3Rz
IHZlcmlmeSB0aGlzIHJlZmFjdG9yIGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKElEQkNhbGxiYWNrcyk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5
RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKworMjAxMi0wNi0y
NiAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWRE
QjogTW92ZSBtZXRob2QgcHJlY29uZGl0aW9uIGNoZWNrcyB0byBmcm9udCBlbmQgb2JqZWN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkzNzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCBt
ZXRhZGF0YSBleGlzdHMgb24gdGhlIGZyb250IGVuZCwgbW9zdCBvZiB0aGUgcHJlLWNvbmRpdGlv
biB2YWxpZGF0aW9uIGNoZWNrcworICAgICAgICBkb25lIG9uIElEQiBtZXRob2QgY2FsbHMgZnJv
bSBzY3JpcHQgY2FuIGJlIG1vdmVkIHRvIHRoZSBmcm9udCBlbmQgd2hpY2ggc2ltcGxpZmllcyB0
aGUKKyAgICAgICAgY29kZSBzaWduaWZpY2FudGx5IGluIHRoZSBjYXNlIG9mIGNvbXBsZXggbWV0
aG9kcyBsaWtlIElEQk9iamVjdFN0b3JlOjpwdXQoKS4KKworICAgICAgICBBZGRzIGFuIGludGVy
bmFsICJhY3RpdmUiIGZsYWcgZm9yIHRyYW5zYWN0aW9ucywgYWx0aG91Z2ggdGhlIGJlaGF2aW9y
IGlzIG5vdCBhY2N1cmF0ZQorICAgICAgICB0byB0aGUgc3BlYyAoaXQgc2hvdWxkIG9ubHkgYmUg
dHJ1ZSBkdXJpbmcgZXZlbnQgY2FsbGJhY2tzIC0gaHR0cDovL3dlYmtpdC5vcmcvYi84OTM3OSku
CisgICAgICAgIFRoZSBiYWNrLWVuZCBtZXRob2RzIGNhbiB0aGVuIGJlIHNpbXBsaWZlZCB0byBq
dXN0IGFkZGluZyBhc3luYyB0YXNrcyB0byB0aGUgdHJhbnNhY3Rpb24sCisgICAgICAgIGFuZCB0
aGUgZnJvbnQgZW5kIG1ldGhvZHMgY2FuIHRha2UgY2FyZSBvZiBhbGwgZXhjZXB0aW9uIGNhc2Vz
IGV4Y2VwdCBmb3IgYXN5bmNocm9ub3VzCisgICAgICAgIHRyYW5zYWN0aW9uIGFib3J0IHdoaWNo
IHN0aWxsIHJlcXVpcmVzIHBsdW1iaW5nIGJhY2sgdG8gdGhlIGZyb250IGVuZC4KKworICAgICAg
ICBObyBmdW5jdGlvbmFsIGNoYW5nZXMgLSBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
Ojp1cGRhdGUpOiBNaWdyYXRlIGZyb20gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0Lgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjphZHZhbmNlKTogQWRkIG1vcmUgZXhwbGljaXQg
dHJhbnNhY3Rpb24taXMtYWN0aXZlIGNoZWNrLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
Ojpjb250aW51ZUZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRlbGV0ZUZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmVm
ZmVjdGl2ZU9iamVjdFN0b3JlKTogQ29udmVuaWVuY2UgZnVuY3Rpb24gKHNvdXJjZSBtYXkgYmUg
c3RvcmUgb3IgaW5kZXgpLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmlzS2V5
Q3Vyc29yKTogRGlzdGluZ3Vpc2ggZnJvbSBJREJDdXJzb3JXaXRoVmFsdWUuCisgICAgICAgIChJ
REJDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjp1cGRhdGUp
OiBSZW1vdmUgbWlncmF0ZWQgY2hlY2suCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yV2l0aFZhbHVlLmg6CisgICAgICAgIChJREJDdXJzb3JXaXRoVmFsdWUpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDogTWlncmF0ZSBjaGVja3MuCisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDogUmVwbGFjZSBjaGVj
a3Mgd2l0aCBhc3NlcnRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmNwcDogQWRkIHRyYW5zYWN0aW9uLWlzLWFjdGl2ZSBjaGVja3MuCisgICAg
ICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHA6IE1pZ3JhdGUgY2VoY2tzLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YWRkKTogRGVs
ZWdhdGVzIHRvIHB1dChQdXRNb2RlKQorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OnB1dCk6IERlbGVnYXRlcyB0byBwdXQoUHV0TW9kZSkKKyAgICAgICAgKFdlYkNvcmUpOiBBZGRz
IHB1dChQdXRNb2RlKSB3aGljaCBoYXMgdGhlIHVuaWZpZWQgY2hlY2tzIG1pZ3JhdGVkIGZyb20K
KyAgICAgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0LgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDogQWRkcyBwdXQoUHV0TW9kZSkuCisgICAgICAg
IChJREJPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpnZXRJbnRlcm5hbCk6IEZpeCB0cmFjZSBzeW1ib2wuCisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQpOiBSZW1vdmUgbWlncmF0ZWQgY2hl
Y2tzLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
SW5kZXgpOiBSZW1vdmUgbWlncmF0ZWQgY2hlY2tzLgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXgpOiBSZW1vdmUgbWlncmF0ZWQgY2hlY2tz
LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDogQWRkIGFj
dGl2ZSBmbGFnIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjphYm9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjppc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXNSZWFk
T25seSk6IEdyb3VwIElETC9ub24tSURMIG1ldGhvZHMuCisgICAgICAgIChJREJUcmFuc2FjdGlv
bik6CisKIDIwMTItMDYtMjYgIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBtZW1vcnkgc25hcHNob3RzIGNyYXNo
IGluIGRlYnVnIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNkZDM2ODk3Y2Q1
N2NkZmU5YmRmZDFkODI0MjY1Y2JkMWFlODk5MTguLjY5YjM5MTdjNGYzNTMzOWEyZmQ3NGQ5YWMx
NDEyNTQwNDJkNDNlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMDYtMjYgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogSG9vayB1cCByZW5kZXItc2lkZSBrZXkgQVNTRVJUaW5nIGZvciBn
ZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAw
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29r
IHVwIENocm9taXVtIFdlYktpdCBBUEkgdG8gbmV3IG9uU3VjY2VzcyBoYW5kbGVyLgorCisgICAg
ICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHRlc3RzL0lEQkFib3J0T25D
b3JydXB0VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1
Y2Nlc3MpOgorICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOgorCiAy
MDEyLTA2LTI2ICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gRml4IGluY29ycmVjdCAjaWZkZWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
IHN0YXRlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2Fs
bGJhY2tzLmgKaW5kZXggN2RlZTU1MDBmNDBiNmU2NDM0MjY0ZDk5MzdiZDFhZDk1MjRkMmUyZS4u
MGIzNGI2ODg2ZDVlMWFhNDNkMTk1M2Y5YWQ4MDNhMWUyYTcyODkyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5
UGF0aC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3QgSURCS2V5UGF0
aCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJp
bWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2
YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMjc1OTUxNGVm
Zjc0MjI0YzYxNzk5Y2Y1ZjYwNzc5ZmRjZTRkMjQyMy4uYTVjYTVjNzllYTQxOGNhNjZkZWVmNGUw
NDYxNDkzYTU0OGViYjFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuY3BwCkBAIC0yOSw5ICsyOSwxMSBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQW55LmgiCisjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxp
dGllcy5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJPYmpl
Y3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJUcmFjaW5n
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKQEAgLTEyNSwyNCArMTI3LDM3IEBAIElE
QkFueSogSURCQ3Vyc29yOjpzb3VyY2UoKSBjb25zdAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjp1cGRhdGUiKTsKKyAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwogCi0gICAgaWYgKCFtX2dvdFZhbHVl
KSB7CisgICAgaWYgKCFtX2dvdFZhbHVlIHx8IGlzS2V5Q3Vyc29yKCkpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0KKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlz
UmVhZE9ubHkoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09O
TFlfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0KLSAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwogICAgIGlmICh2YWx1ZS0+YmxvYlVSTHMo
KS5zaXplKCkgPiAwKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgQmxvYi9GaWxlL0ZpbGVMaXN0
IHN1cHBvcnQKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0RBVEFfQ0xP
TkVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSZWZQdHI8SURCT2JqZWN0
U3RvcmU+IG9iamVjdFN0b3JlID0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKTsKKyAgICBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoID0gb2JqZWN0U3RvcmUtPm1ldGFkYXRhKCkua2V5UGF0aDsKKyAg
ICBjb25zdCBib29sIHVzZXNJbkxpbmVLZXlzID0gIWtleVBhdGguaXNOdWxsKCk7CisgICAgaWYg
KHVzZXNJbkxpbmVLZXlzKSB7CisgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhLZXkgPSBj
cmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwga2V5UGF0aCk7
CisgICAgICAgIGlmICgha2V5UGF0aEtleSB8fCAha2V5UGF0aEtleS0+aXNFcXVhbChtX2N1cnJl
bnRQcmltYXJ5S2V5LmdldCgpKSkgeworICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNv
bnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBt
X2JhY2tlbmQtPnVwZGF0ZSh2YWx1ZSwgcmVxdWVzdCwgZWMpOwogICAgIGlmIChlYykgewpAQCAt
MTYwLDcgKzE3NSw3IEBAIHZvaWQgSURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KCFtX3JlcXVlc3QpIHsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTg4LDcgKzIwMyw3IEBAIHZvaWQgSURCQ3Vy
c29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX3JlcXVlc3QpIHsK
KyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjEzLDYgKzIyOCwxMCBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkN1cnNvcjo6ZGVsZXRlIik7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgp
KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmIChtX3RyYW5zYWN0aW9u
LT5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVB
RF9PTkxZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNDcsMTEgKzI2NiwzMyBAQCB2b2lk
IElEQkN1cnNvcjo6c2V0VmFsdWVSZWFkeSgpCiB7CiAgICAgbV9jdXJyZW50S2V5ID0gbV9iYWNr
ZW5kLT5rZXkoKTsKICAgICBtX2N1cnJlbnRQcmltYXJ5S2V5ID0gbV9iYWNrZW5kLT5wcmltYXJ5
S2V5KCk7Ci0gICAgbV9jdXJyZW50VmFsdWUgPSBJREJBbnk6OmNyZWF0ZShtX2JhY2tlbmQtPnZh
bHVlKCkpOworCisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBtX2Jh
Y2tlbmQtPnZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIGlmICghaXNLZXlDdXJzb3IoKSkg
eworICAgICAgICAvLyBGSVhNRTogQWN0dWFsbHkgaW5qZWN0IHRoZSBwcmltYXJ5S2V5IGF0IHRo
ZSBrZXlQYXRoLgorICAgICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0g
ZWZmZWN0aXZlT2JqZWN0U3RvcmUoKTsKKyAgICAgICAgaWYgKG9iamVjdFN0b3JlLT5hdXRvSW5j
cmVtZW50KCkgJiYgIW9iamVjdFN0b3JlLT5tZXRhZGF0YSgpLmtleVBhdGguaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGggPSBvYmplY3RTdG9yZS0+bWV0
YWRhdGEoKS5rZXlQYXRoOworICAgICAgICAgICAgUmVmUHRyPElEQktleT4gZXhwZWN0ZWRLZXkg
PSBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwga2V5UGF0
aCk7CisgICAgICAgICAgICBBU1NFUlQoZXhwZWN0ZWRLZXktPmlzRXF1YWwobV9jdXJyZW50UHJp
bWFyeUtleS5nZXQoKSkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisgICAgbV9jdXJyZW50
VmFsdWUgPSBJREJBbnk6OmNyZWF0ZSh2YWx1ZS5yZWxlYXNlKCkpOworCiAgICAgbV9nb3RWYWx1
ZSA9IHRydWU7CiAgICAgbV92YWx1ZUlzRGlydHkgPSB0cnVlOwogfQogCitQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBJREJDdXJzb3I6OmVmZmVjdGl2ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBp
ZiAobV9zb3VyY2UtPnR5cGUoKSA9PSBJREJBbnk6OklEQk9iamVjdFN0b3JlVHlwZSkKKyAgICAg
ICAgcmV0dXJuIG1fc291cmNlLT5pZGJPYmplY3RTdG9yZSgpOworICAgIFJlZlB0cjxJREJJbmRl
eD4gaW5kZXggPSBtX3NvdXJjZS0+aWRiSW5kZXgoKTsKKyAgICByZXR1cm4gaW5kZXgtPm9iamVj
dFN0b3JlKCk7Cit9CisKIHVuc2lnbmVkIHNob3J0IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IDNmOWQ4
NGY5ODgxMTgxMmM2YmZjYjUzYzIzODgzMWVlM2ZiYjVlNmUuLjRmNDU2NGVlYjQyMTI3YWE4N2Iw
NjkzNmI1NGUwNDNmNGU3ZjU1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5oCkBAIC05MSw4ICs5MSwxMSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURC
UmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHZpcnR1YWwg
Ym9vbCBpc0tleUN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKKyAg
ICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBlZmZlY3RpdmVPYmplY3RTdG9yZSgpOworCiAg
ICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwCmluZGV4IGI2MjQ2ZTkxOWUwYjE4NzI3YzAzNTE0ZDdiODFhOTJiODk5
OGYyOTguLjBhMTRhNmYxYTFiNTkzMDBmOGJlOTg5ZDMyY2FlMWUwZmI5MzQzM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5jcHAKQEAgLTkzLDEwICs5Myw5IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6
OnVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSCiB7
CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6dXBkYXRlIik7CiAgICAgQVNT
RVJUKG1fdHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsK
LSAgICBpZiAoIW1fY3Vyc29yIHx8IG1fY3Vyc29yVHlwZSA9PSBJbmRleEtleUN1cnNvcikgewot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisKKyAgICBBU1NFUlQobV9jdXJzb3IpOworICAgIEFT
U0VSVChtX2N1cnNvclR5cGUgIT0gSW5kZXhLZXlDdXJzb3IpOwogCiAgICAgbV9vYmplY3RTdG9y
ZS0+cHV0KHZhbHVlLCBtX2N1cnNvci0+cHJpbWFyeUtleSgpLCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U6OkN1cnNvclVwZGF0ZSwgY2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uLmdldCgp
LCBlYyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JXaXRoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5oCmluZGV4IGExYmExNGY5NjFjNWEwYjg4Y2VkZWNjMzBhNTA5YTE1
NGE2MTc5ZTAuLjliMzk2YmEzNWFhMDZiMzkxNGUwNzJhNjgxZDcwNGUwNWNhZWY4Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhW
YWx1ZS5oCkBAIC00MSw2ICs0MSw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgdmFsdWUgYXR0cmli
dXRlIGRlZmluZWQgaW4gdGhlIElETCBpcyBzaW1wbHkgaW1wbGVtZW50ZWQgaW4gSURCQ3Vyc29y
IChidXQgbm90IGV4cG9zZWQgdmlhCiAgICAgLy8gaXRzIElETCkuIFRoaXMgaXMgdG8gbWFrZSB0
aGUgaW1wbGVtZW50YXRpb24gbW9yZSBzaW1wbGUgd2hpbGUgbWF0Y2hpbmcgd2hhdCB0aGUgc3Bl
YyBzYXlzLgogCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29sIGlzS2V5Q3Vyc29yKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJpdmF0ZToKICAgICBJREJDdXJzb3JX
aXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURCUmVxdWVz
dCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAwYTQ5NDAwYmI4
NjU1ZWFlOTA0ZmNlNjlkOWVkN2I0MDg2YmI3ZmNhLi5hYjEyM2MzZGNjOTQ4NjZkZWVhY2VhMDE3
ODljYTVmMjI4NDczOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xMTcsNiArMTE3LDEwIEBAIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NU
QVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlmICghbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CiAKICAgICBJREJLZXlQYXRoIGtleVBhdGg7CiAgICAgaWYgKCFvcHRpb25zLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKQEAgLTEyOCw2ICsxMzIsMTEgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y28KICAgICAgICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcpOwogICAg
IH0KIAorICAgIGlmIChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhuYW1lKSkgewor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCFrZXlQYXRoLmlzTnVsbCgpICYmICFrZXlQ
YXRoLmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
U1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjIsNiArMTcxLDE0IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZB
TElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoIW1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoIW1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9iYWNrZW5kLT5kZWxldGVPYmplY3RTdG9y
ZShuYW1lLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAg
aWYgKCFlYykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA1Y2NjYWEyOWE3ZmQ2YjU2OTA4
YjU2NzgzOGViMmMxMzFiZDczYzgzLi41MDViYTc1N2JlNDhmYzFhZmNhNDVjNTk2NmZmYmZhMDA0
ZDQ3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMTQ1LDEwICsxNDUsNyBAQCBJREJE
YXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QK
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
QVNTRVJUKHRyYW5zYWN0aW9uUHRyLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFKTsKLSAgICBpZiAobV9vYmplY3RTdG9yZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlI7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUp
KTsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBuYW1lLCBrZXlQYXRoLCBh
dXRvSW5jcmVtZW50KTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBuYW1lKTsK
QEAgLTE4NiwxMiArMTgzLDEwIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZShjCiB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uUHRyLT5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlcy5nZXQobmFtZSk7Ci0gICAgaWYg
KCFvYmplY3RTdG9yZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
Tk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQobV9vYmpl
Y3RTdG9yZXMuY29udGFpbnMobmFtZSkpOworCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+IGRhdGFiYXNlID0gdGhpczsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbD4gb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlcy5nZXQobmFtZSk7CiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlv
blB0cjsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsLCBk
YXRhYmFzZSwgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjphZGRPYmplY3RTdG9yZVRvTWFwLCBkYXRhYmFzZSwgb2JqZWN0U3RvcmUpKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IDMxZTdmNWQ0
ZTc2MmZjY2RiZGE0MzE2Nzk0OTlkYWJhYWFiYWQwZjQuLmZkOTM5NDk0NzQ5MjcyMjU1OTE5ZGMz
MDIyOGYzYzA1Yzk3OGQzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleC5jcHAKQEAgLTY1LDYgKzY1LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNB
Y3RpdmUoKSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICB1bnNpZ25lZCBz
aG9ydCBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0
cmluZywgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMTUsNiArMTE5
LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgeworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jb3VudChrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVjKSB7CkBAIC0xNDAsNiArMTQ4LDEwIEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAg
aWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQogCiAgICAgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJp
bmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGVjKTsKICAgICBpZiAoZWMpCkBAIC0yMDAs
NiArMjEyLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgeworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIz
MSw2ICsyNDcsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWYKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmICgha2V5UmFuZ2UpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CmluZGV4IDY4YmMxNzE2NWRmNzI1ZTcxNDFjODFjMTg4ZmM3NTZhNDFjNTI5MjYuLjZjMDY0MTU5
MjljZThiYjdjODU3YTExYWVmOGRkMWY4MWUzMzIxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKKyNp
bmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkluZGV4Lmgi
CkBAIC03OCw2ICs3OSwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgeworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5nZXQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rp
b24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAtOTYsNjUgKzEwMSw4MCBAQCBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzcwogICAgIHJldHVybiBnZXQoY29udGV4dCwga2V5UmFuZ2Uu
cmVsZWFzZSgpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6YWRkIik7CisgICAgcmV0dXJu
IHB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9ubHksIGNvbnRleHQsIHZh
bHVlLCBrZXksIGVjKTsKK30KKworUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6cHV0Iik7CisgICAg
cmV0dXJuIHB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9yVXBkYXRlLCBj
b250ZXh0LCB2YWx1ZSwga2V5LCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OnB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGUg
cHV0TW9kZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpwdXQi
KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwor
ICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBpZiAobV9kZWxldGVkKSB7CiAg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRP
bmx5KCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VS
UjsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0KLSAgICBpZiAoa2V5ICYmICFrZXktPmlzVmFsaWQoKSkgewotICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICBpZiAobV90cmFu
c2FjdGlvbi0+aXNSZWFkT25seSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLQotICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHZhbHVl
LT5ibG9iVVJMcygpLnNpemUoKSA+IDApIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0Zp
bGUvRmlsZUxpc3Qgc3VwcG9ydAogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
REJfREFUQV9DTE9ORV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0
cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKLSAgICBtX2JhY2tlbmQtPnB1
dCh2YWx1ZSwga2V5LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9ubHksIHJl
cXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykgewotICAg
ICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwotfQorICAgIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGggPSBtX21ldGFkYXRhLmtleVBhdGg7CisgICAgY29uc3QgYm9vbCB1c2VzSW5MaW5l
S2V5cyA9ICFrZXlQYXRoLmlzTnVsbCgpOworICAgIGNvbnN0IGJvb2wgaGFzS2V5R2VuZXJhdG9y
ID0gYXV0b0luY3JlbWVudCgpOwogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpwdXQiKTsK
LSAgICBpZiAobV9kZWxldGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICBpZiAodXNlc0luTGluZUtleXMgJiYga2V5KSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgIGlm
ICghdXNlc0luTGluZUtleXMgJiYgIWhhc0tleUdlbmVyYXRvciAmJiAha2V5KSB7CisgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9Ci0KKyAgICBpZiAodXNlc0luTGluZUtleXMpIHsKKyAgICAgICAgUmVmUHRyPElEQktl
eT4ga2V5UGF0aEtleSA9IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRo
KHZhbHVlLCBrZXlQYXRoKTsKKyAgICAgICAgaWYgKGtleVBhdGhLZXkgJiYgIWtleVBhdGhLZXkt
PmlzVmFsaWQoKSkgeworICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWhh
c0tleUdlbmVyYXRvciAmJiAha2V5UGF0aEtleSkgeworICAgICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
fQorICAgICAgICBpZiAoaGFzS2V5R2VuZXJhdG9yICYmICFrZXlQYXRoS2V5KSB7CisgICAgICAg
ICAgICBSZWZQdHI8SURCS2V5PiBkdW1teUtleSA9IElEQktleTo6Y3JlYXRlTnVtYmVyKC0xKTsK
KyAgICAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlQWZ0ZXJJbmpl
Y3Rpb24gPSBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGR1bW15S2V5LCB2YWx1ZSwg
a2V5UGF0aCk7CisgICAgICAgICAgICBpZiAoIXZhbHVlQWZ0ZXJJbmplY3Rpb24pIHsKKyAgICAg
ICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KICAgICBp
ZiAoa2V5ICYmICFrZXktPmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKLSAgICBpZiAodmFsdWUt
PmJsb2JVUkxzKCkuc2l6ZSgpID4gMCkgewotICAgICAgICAvLyBGSVhNRTogQWRkIEJsb2IvRmls
ZS9GaWxlTGlzdCBzdXBwb3J0Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklE
Ql9EQVRBX0NMT05FX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgUmVmUHRy
PElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIG1fYmFja2VuZC0+cHV0
KHZhbHVlLCBrZXksIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6QWRkT3JVcGRhdGUs
IHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOworICAgIC8vIEZJWE1FOiBQ
YXNzIHRocm91Z2gga2V5UGF0aEtleSBhcyBrZXkgdG8gc2ltcGxpZnkgYmFjayBlbmQgaW1wbGVt
ZW50YXRpb24uCisgICAgbV9iYWNrZW5kLT5wdXQodmFsdWUucmVsZWFzZSgpLCBrZXkucmVsZWFz
ZSgpLCBwdXRNb2RlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAg
ICBpZiAoZWMpIHsKICAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xNjksMTEgKzE4OSwxNCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwog
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0
aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKG1fdHJhbnNh
Y3Rpb24tPmlzUmVhZE9ubHkoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpSRUFEX09OTFlfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0KICAgICBpZiAoIWtl
eVJhbmdlKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKQEAgLTIwNCw2ICsyMjcsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRXgKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RB
VEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaWYgKCFtX3RyYW5zYWN0aW9u
LT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmICht
X3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzksMTEgKzI2
NiwyMiBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZQogICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KLQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgeworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleVBhdGguaXNWYWxpZCgpKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9TWU5UQVhfRVJSOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CisgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgaWYgKG1fbWV0YWRhdGEuaW5kZXhlcy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQogCiAgICAgYm9vbCB1bmlxdWUgPSBmYWxzZTsKICAgICBvcHRpb25zLmdldCgi
dW5pcXVlIiwgdW5pcXVlKTsKQEAgLTMwNCw2ICszNDIsMTQgQEAgdm9pZCBJREJPYmplY3RTdG9y
ZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUo
KSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFD
VElWRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFtX21ldGFkYXRhLmlu
ZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX05PVF9GT1VORF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX2Jh
Y2tlbmQtPmRlbGV0ZUluZGV4KG5hbWUsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwog
ICAgIGlmICghZWMpIHsKQEAgLTMyNSw2ICszNzEsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXgKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVf
RVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5p
c0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHVuc2lnbmVk
IHNob3J0IGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9u
U3RyaW5nLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKQEAgLTM3NSw2ICs0
MjUsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGEKICAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNvdW50KHJhbmdlLCByZXF1ZXN0LCBtX3RyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IDgxODFlYjkzMWZhNzBj
YzU5MDA0MmYyMjU2MmNmNzhkYzJjY2Y0YzEuLjY3YjM2Zjk5NTUxN2E5Yjg0ZDJhMWMyMjUyNDk1
OGZjZGFhNDg0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaApAQCAtOTUsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2Vw
dGlvbkNvZGUmKTsKIAorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsg
fQogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZCgpOwogCkBAIC0xMDMsNyArMTA0LDYgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEmLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4s
IElEQlRyYW5zYWN0aW9uKik7Ci0gICAgdm9pZCByZW1vdmVUcmFuc2FjdGlvbkZyb21QZW5kaW5n
TGlzdCgpOwogCiAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggYTQ2ODY1NGUwN2I4MTYyZjFhNTdiZDUwNTRlMDM1OWM4
ZTJjN2U0ZC4uNDc0Y2RlYjViNWEyYzg4NDFhMWZjYWRmOThmZjYyMzIyZmRmMDRkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJJREJL
ZXlQYXRoQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUg
IklEQlRyYWNpbmcuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uu
aCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmCiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewot
ICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0QnlSYW5nZUludGVy
bmFsIik7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRl
cm5hbCIpOwogICAgIFJlZlB0cjxJREJLZXk+IGtleTsKICAgICBpZiAoa2V5UmFuZ2UtPmlzT25s
eUtleSgpKQogICAgICAgICBrZXkgPSBrZXlSYW5nZS0+bG93ZXIoKTsKQEAgLTExMiw2ICsxMTIs
MTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmIChvYmplY3RTdG9yZS0+YXV0b0luY3JlbWVudCgpICYmICFvYmplY3RTdG9yZS0+a2V5
UGF0aCgpLmlzTnVsbCgpKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUod2lyZURhdGEpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrZXksIG9iamVjdFN0b3JlLT5rZXlQYXRoKCkpOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlRnJvbVdpcmUod2lyZURhdGEpKTsKIH0KIApAQCAtMTQ4LDUzICsxNTMsNiBAQCB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcHJwVmFsdWUsCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25QdHI7CiAKLSAgICBpZiAocHV0TW9kZSAhPSBD
dXJzb3JVcGRhdGUpIHsKLSAgICAgICAgY29uc3QgYm9vbCBhdXRvSW5jcmVtZW50ID0gb2JqZWN0
U3RvcmUtPmF1dG9JbmNyZW1lbnQoKTsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNLZXlQYXRoID0g
IW9iamVjdFN0b3JlLT5tX2tleVBhdGguaXNOdWxsKCk7Ci0KLSAgICAgICAgaWYgKGhhc0tleVBh
dGggJiYga2V5KSB7Ci0gICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRB
X0VSUjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWhhc0tl
eVBhdGggJiYgIWF1dG9JbmNyZW1lbnQgJiYgIWtleSkgewotICAgICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGhhc0tleVBhdGgpIHsKLSAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+
IGtleVBhdGhLZXkgPSBmZXRjaEtleUZyb21LZXlQYXRoKHZhbHVlLmdldCgpLCBvYmplY3RTdG9y
ZS0+bV9rZXlQYXRoKTsKLSAgICAgICAgICAgIGlmIChrZXlQYXRoS2V5ICYmICFrZXlQYXRoS2V5
LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpEQVRBX0VSUjsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoIWF1dG9JbmNyZW1lbnQgJiYgIWtleVBhdGhLZXkpIHsKLSAgICAgICAgICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYXV0b0luY3JlbWVudCAm
JiAha2V5UGF0aEtleSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGR1bW15S2V5
ID0gSURCS2V5OjpjcmVhdGVOdW1iZXIoLTEpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlQWZ0ZXJJbmplY3Rpb24gPSBpbmplY3RLZXlJbnRvS2V5
UGF0aChkdW1teUtleSwgdmFsdWUsIG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOwotICAgICAgICAg
ICAgICAgIGlmICghdmFsdWVBZnRlckluamVjdGlvbikgewotICAgICAgICAgICAgICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBpZiAoa2V5ICYmICFrZXktPmlzVmFsaWQoKSkgewotICAgICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoa2V5KTsKLSAgICAgICAgY29uc3QgYm9v
bCBoYXNLZXlQYXRoID0gIW9iamVjdFN0b3JlLT5tX2tleVBhdGguaXNOdWxsKCk7Ci0gICAgICAg
IGlmIChoYXNLZXlQYXRoKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5
ID0gZmV0Y2hLZXlGcm9tS2V5UGF0aCh2YWx1ZS5nZXQoKSwgb2JqZWN0U3RvcmUtPm1fa2V5UGF0
aCk7Ci0gICAgICAgICAgICBpZiAoIWtleVBhdGhLZXkgfHwgIWtleVBhdGhLZXktPmlzRXF1YWwo
a2V5LmdldCgpKSkgewotICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkRBVEFfRVJSOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwsIG9iamVjdFN0b3JlLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIHRy
YW5zYWN0aW9uKSwKICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmUgb2YgdGhlc2UgcGVyIHB1dCgp
IGlzIG92ZXJraWxsLCBzaW5jZSBpdCdzIHNpbXBseSBhIGNhY2hlIGludmFsaWRhdGlvbi4KQEAg
LTQ1OSwxOCArNDE3LDggQEAgYm9vbCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwb3B1bGF0
ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBpbnQKIAogUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG5hbWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJSOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1l
KSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9
IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgewotICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCghbV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKTsK
IAogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2Vu
ZEltcGw6OmNyZWF0ZShtX2RhdGFiYXNlLCB0aGlzLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11
bHRpRW50cnkpOwogICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwpAQCAtNTIwLDE4
ICs0NjgsMTEgQEAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OmluZGV4KGNvbnN0IFN0cmkKIAogdm9pZCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NI
QU5HRSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW1wbD4gaW5kZXggPSBtX2luZGV4ZXMuZ2V0KG5hbWUpOwotICAgIGlmICghaW5kZXgp
IHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX05PVF9GT1VORF9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkg
PT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQobV9pbmRleGVz
LmNvbnRhaW5zKG5hbWUpKTsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
PiBvYmplY3RTdG9yZSA9IHRoaXM7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGlu
ZGV4ID0gbV9pbmRleGVzLmdldChuYW1lKTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvblB0ciA9IHRyYW5zYWN0aW9uOwogICAgIGlmICghdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNr
KCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleEludGVybmFsLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA3NjYy
MTViYjljMDA1ZGFlOWEzYjAxN2Y1YmU5N2I3MmI5MzJkYTE0Li4zMzkyMmU2YTg4ZmUyNTYwOWI2
NTdhY2QyN2I5Y2ZmNDIzODFmZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1
ZS5oIgorI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJDdXJz
b3JXaXRoVmFsdWUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkV2
ZW50RGlzcGF0Y2hlci5oIgpAQCAtMzA0LDYgKzMwNSwyMSBAQCB2b2lkIElEQlJlcXVlc3Q6Om9u
U3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlw
dFZhbAogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKKwordm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHBycFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlL
ZXksIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCit7CisgICAgTE9HX0VSUk9SKCJDSEVDS0lO
Rzogb25TdWNjZXNzKHZhbHVlLCBrZXksIGtleXBhdGgpIik7CisgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlID0gcHJwU2VyaWFsaXplZFNjcmlw
dFZhbHVlOworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBGSVhNRTogQXNzZXJ0IHVudGlsIHdlIGNh
biBhY3R1YWxseSBpbmplY3QgdGhlIHJpZ2h0IHZhbHVlLgorICAgIFJlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5OworICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5
ID0KKyAgICAgICAgICAgICAgY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBh
dGgoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBrZXlQYXRoKTsKKyAgICBBU1NFUlQoZXhwZWN0ZWRL
ZXktPmlzRXF1YWwocHJpbWFyeUtleS5nZXQoKSkpOworI2VuZGlmCisgICAgb25TdWNjZXNzKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5yZWxlYXNlKCkpOworfQorCiB2b2lkIElEQlJlcXVlc3Q6Om9u
U3VjY2Vzc1dpdGhDb250aW51YXRpb24oKQogewogICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6
b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGUxMDRkOGYxZTgxNWNiNWM0NTdmNjNlMTNkODQ5
NDNiYjJjZjliZmQuLjg4YTdlNjBmMWU3MWY4NTE2MDNkY2Y0MTQzMjRiODkyZTY0NzZmNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTg3
LDYgKzg3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJLZXk+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktl
eT4sIGNvbnN0IElEQktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENv
bnRpbnVhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29u
c3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBOb3QgaW1wbGVtZW50ZWQuIENhbGxiYWNrIHNob3VsZCBu
b3QgcmVhY2ggdGhlIHJlbmRlcmVyIHNpZGUuCiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDcwODdjNjU3ZTA2Njg2YzE3ZDE1YjM2ZDg4YzY5MjQ5ZDIzZTliNTkuLjZh
ZDMwMDcyMzhlZjM2ZjY1OGY2YzIyYjVlYjljNmE3MzY3NzQ1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTg0LDYg
Kzg0LDcgQEAgSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHIKICAgICAsIG1fYmFja2VuZChiYWNrZW5k
KQogICAgICwgbV9kYXRhYmFzZShkYikKICAgICAsIG1fbW9kZShtb2RlKQorICAgICwgbV9hY3Rp
dmUodHJ1ZSkKICAgICAsIG1fdHJhbnNhY3Rpb25GaW5pc2hlZChmYWxzZSkKICAgICAsIG1fY29u
dGV4dFN0b3BwZWQoZmFsc2UpCiB7CkBAIC0xOTMsNiArMTk0LDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6YWJvcnQoKQogewogICAgIGlmIChtX3RyYW5zYWN0aW9uRmluaXNoZWQpCiAgICAgICAg
IHJldHVybjsKKyAgICBtX2FjdGl2ZSA9IGZhbHNlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bj4gc2VsZlJlZiA9IHRoaXM7CiAgICAgaWYgKG1fYmFja2VuZCkKICAgICAgICAgbV9iYWNrZW5k
LT5hYm9ydCgpOwpAQCAtMjQyLDYgKzI0NCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnVucmVn
aXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpv
bkFib3J0KCkKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAgbV9h
Y3RpdmUgPSBmYWxzZTsKICAgICB3aGlsZSAoIW1fY2hpbGRSZXF1ZXN0cy5pc0VtcHR5KCkpIHsK
ICAgICAgICAgSURCUmVxdWVzdCogcmVxdWVzdCA9ICptX2NoaWxkUmVxdWVzdHMuYmVnaW4oKTsK
ICAgICAgICAgbV9jaGlsZFJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0KTsKQEAgLTI2NSw2ICsyNjgs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKIHZvaWQgSURCVHJhbnNhY3Rpb246
Om9uQ29tcGxldGUoKQogewogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkZpbmlzaGVkKTsKKyAg
ICBtX2FjdGl2ZSA9IGZhbHNlOwogICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7
CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwogICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmlu
aXNoZWQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaAppbmRleCAwYjJkZWM2ZWMwOGYxZDFlMmI5NjBlZGIwMTE2ZmNmODlkMWNm
OTZkLi4yY2U4MmIxY2Y3N2FhZjIwZmQyMjQwZGExYjhmNjhjMWI5MWQyMmVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTY4
LDEyICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9k
ZVRvU3RyaW5nKE1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogYmFja2VuZCgpIGNvbnN0OworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2ZTsgfQogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0OworICAg
IGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBSRUFEX09OTFk7IH0K
ICAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBWRVJT
SU9OX0NIQU5HRTsgfQogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREJUcmFuc2FjdGlvbiBJREwK
ICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdDsKLSAgICBib29sIGlzUmVhZE9ubHkoKSBj
b25zdCB7IHJldHVybiBtX21vZGUgPT0gUkVBRF9PTkxZOyB9CiAgICAgSURCRGF0YWJhc2UqIGRi
KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IoRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwogICAgIHZvaWQgc2V0RXJyb3IoUGFzc1JlZlB0cjxET01FcnJvcj4pOwpAQCAtMTM1
LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsK
ICAgICBjb25zdCBNb2RlIG1fbW9kZTsKKyAgICBib29sIG1fYWN0aXZlOwogICAgIGJvb2wgbV90
cmFuc2FjdGlvbkZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUgYW55
IG1vcmUgZXZlbnRzIG9yIGFsbG93IGFueSBuZXcgcmVxdWVzdHM/IElmIG5vdCwgd2UncmUgZmlu
aXNoZWQuCiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFJlZlB0cjxET01FcnJvcj4g
bV9lcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKaW5kZXggZWU3NmVlMjlhMDAxZDZjZDc2YzVmMTdhZDM1ZWNiN2ZjYzY3NGMy
OS4uNjYxZmYwMTU5NWRmMDU1MDBkN2Y2Y2FjMzEwZThiYzcxMzQ0YjNlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE1
NCwxMyArMTU0LDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1ZU9uS2V5
UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKIAogfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNl
cmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewog
ICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJLZXlQYXRoUGFyc2VF
cnJvciBlcnJvcjsKICAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwga2V5UGF0aEVsZW1lbnRz
LCBlcnJvcik7CiAgICAgQVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSk7
CiAKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwor
CiAgICAgVjhBdXhpbGlhcnlDb250ZXh0IGNvbnRleHQ7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHY4VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2OEtleShnZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoRWxlbWVudHMs
IGtleVBhdGhFbGVtZW50cy5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGQ0ZWRlMjFhN2M1MDlhMGIx
MmUyZGQyMjFmMjI3MTIyNzIwOTMxMjguLmZmZTYyYzA3ZThiZjUzY2NjZWM1NjI1YTRhNWMwZTU5
N2IzZTIzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4p
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRo
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBvbkJsb2NrZWQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggMzEyNjZiMWEzMThhMjQxY2JiNTQ0OWYzMWJkMGI5
NjQyMDdjN2MzMC4uNWI1YWVkZjdjY2IzN2UyNDljNTNjMWFmOWU4ZWM4ZWQ5YjBlNmUxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5j
cHAKQEAgLTkyLDkgKzkyLDcgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3Mo
Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2MKIAogdm9pZCBXZWJJ
REJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJJ
REJLZXlQYXRoJiBrZXlQYXRoKQogewotICAgIC8vIEZJWE1FOiBwcm94eSB0byB0aGUgMy1wYXJh
bWV0ZXIgdmVyc2lvbiB3aGVuIGludGVyZmFjZSBsYW5kczoKLSAgICAvLyBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5LCBrZXlQYXRoKTspOwotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBrZXksIGtleVBhdGgpOwogfQogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0lt
cGw6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmluZGV4IDZjNzhhYTUz
YzUyMmI2MGIyMGFkYjY3NzkwYmQ5NDAwNWI0YjdmZDIuLmY1M2FkNTBkMWQ2NzhiZTI2NDEwZWQ4
NDBlM2Y3YTUyYTc3Njg3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0
IElEQktleVBhdGgmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVh
dGlvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3Qg
VmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggMTdkZDI0YmM2
YzMwNGZkZmJhODhlNzNiNDZkODM4ZGI1ZDc0ZGRiNC4uZWIzYzg1YWJjZmQ1Zjk1OTU0MjQ1ZjAx
MGY0NmZiNzFhNTg1ZDVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC04NCw2ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgT1ZFUlJJ
REUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9Owog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgT1ZFUlJJREUgeyB9
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVm
UHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mKSBPVkVSUklERSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgT1ZFUlJJREUgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149786</attachid>
            <date>2012-06-27 12:37:46 -0700</date>
            <delta_ts>2012-06-27 14:55:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90001-20120627123746.patch</filename>
            <type>text/plain</type>
            <size>46321</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODVlNDI3OGIyOWMyMDEw
N2NjZDdjNjU1MTRkOTc1ZGE4OGY4NWIxNS4uM2Y0YTM4ZGY1ZWRiNDE4ZGM1YTliODBlZmM1NDdh
YmViNmVkZjJjMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAxMi0wNi0yNiAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBI
b29rIHVwIHJlbmRlci1zaWRlIGtleSBBU1NFUlRpbmcgZm9yIGdldCgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDAwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhvb2sgdXAgdGhlIG5ldyBvblN1Y2Nl
c3MgYW5kIGFkZCBpdCB0byB0aGUgaW50ZXJmYWNlLiBGb3Igbm93LAorICAgICAgICBzaW1wbHkg
YXNzZXJ0IHRoYXQgdGhlIHJpZ2h0IHZhbHVlIGlzIHNldC4gQWRkIHRoZSBzYW1lIGFzc2VydGlv
bgorICAgICAgICBsb2dpYyBpbiB0aGUgdmFsdWUtY29uc3RydWN0aW9uIGxvZ2ljIHdoZW4gdGhl
IGN1cnNvciBhZHZhbmNlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIHRlc3Rz
IHZlcmlmeSB0aGlzIHJlZmFjdG9yIGlzIGNvcnJlY3QuCisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAgICAgICAgKElEQkNhbGxiYWNrcyk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5
RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKworMjAxMi0wNi0y
NiAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWRE
QjogTW92ZSBtZXRob2QgcHJlY29uZGl0aW9uIGNoZWNrcyB0byBmcm9udCBlbmQgb2JqZWN0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkzNzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCBt
ZXRhZGF0YSBleGlzdHMgb24gdGhlIGZyb250IGVuZCwgbW9zdCBvZiB0aGUgcHJlLWNvbmRpdGlv
biB2YWxpZGF0aW9uIGNoZWNrcworICAgICAgICBkb25lIG9uIElEQiBtZXRob2QgY2FsbHMgZnJv
bSBzY3JpcHQgY2FuIGJlIG1vdmVkIHRvIHRoZSBmcm9udCBlbmQgd2hpY2ggc2ltcGxpZmllcyB0
aGUKKyAgICAgICAgY29kZSBzaWduaWZpY2FudGx5IGluIHRoZSBjYXNlIG9mIGNvbXBsZXggbWV0
aG9kcyBsaWtlIElEQk9iamVjdFN0b3JlOjpwdXQoKS4KKworICAgICAgICBBZGRzIGFuIGludGVy
bmFsICJhY3RpdmUiIGZsYWcgZm9yIHRyYW5zYWN0aW9ucywgYWx0aG91Z2ggdGhlIGJlaGF2aW9y
IGlzIG5vdCBhY2N1cmF0ZQorICAgICAgICB0byB0aGUgc3BlYyAoaXQgc2hvdWxkIG9ubHkgYmUg
dHJ1ZSBkdXJpbmcgZXZlbnQgY2FsbGJhY2tzIC0gaHR0cDovL3dlYmtpdC5vcmcvYi84OTM3OSku
CisgICAgICAgIFRoZSBiYWNrLWVuZCBtZXRob2RzIGNhbiB0aGVuIGJlIHNpbXBsaWZlZCB0byBq
dXN0IGFkZGluZyBhc3luYyB0YXNrcyB0byB0aGUgdHJhbnNhY3Rpb24sCisgICAgICAgIGFuZCB0
aGUgZnJvbnQgZW5kIG1ldGhvZHMgY2FuIHRha2UgY2FyZSBvZiBhbGwgZXhjZXB0aW9uIGNhc2Vz
IGV4Y2VwdCBmb3IgYXN5bmNocm9ub3VzCisgICAgICAgIHRyYW5zYWN0aW9uIGFib3J0IHdoaWNo
IHN0aWxsIHJlcXVpcmVzIHBsdW1iaW5nIGJhY2sgdG8gdGhlIGZyb250IGVuZC4KKworICAgICAg
ICBObyBmdW5jdGlvbmFsIGNoYW5nZXMgLSBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
Ojp1cGRhdGUpOiBNaWdyYXRlIGZyb20gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0Lgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjphZHZhbmNlKTogQWRkIG1vcmUgZXhwbGljaXQg
dHJhbnNhY3Rpb24taXMtYWN0aXZlIGNoZWNrLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29y
Ojpjb250aW51ZUZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRlbGV0ZUZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmVm
ZmVjdGl2ZU9iamVjdFN0b3JlKTogQ29udmVuaWVuY2UgZnVuY3Rpb24gKHNvdXJjZSBtYXkgYmUg
c3RvcmUgb3IgaW5kZXgpLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmlzS2V5
Q3Vyc29yKTogRGlzdGluZ3Vpc2ggZnJvbSBJREJDdXJzb3JXaXRoVmFsdWUuCisgICAgICAgIChJ
REJDdXJzb3IpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjp1cGRhdGUp
OiBSZW1vdmUgbWlncmF0ZWQgY2hlY2suCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yV2l0aFZhbHVlLmg6CisgICAgICAgIChJREJDdXJzb3JXaXRoVmFsdWUpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDogTWlncmF0ZSBjaGVja3MuCisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDogUmVwbGFjZSBjaGVj
a3Mgd2l0aCBhc3NlcnRpb25zLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4LmNwcDogQWRkIHRyYW5zYWN0aW9uLWlzLWFjdGl2ZSBjaGVja3MuCisgICAg
ICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHA6IE1pZ3JhdGUgY2VoY2tzLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YWRkKTogRGVs
ZWdhdGVzIHRvIHB1dChQdXRNb2RlKQorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OnB1dCk6IERlbGVnYXRlcyB0byBwdXQoUHV0TW9kZSkKKyAgICAgICAgKFdlYkNvcmUpOiBBZGRz
IHB1dChQdXRNb2RlKSB3aGljaCBoYXMgdGhlIHVuaWZpZWQgY2hlY2tzIG1pZ3JhdGVkIGZyb20K
KyAgICAgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0LgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDogQWRkcyBwdXQoUHV0TW9kZSkuCisgICAgICAg
IChJREJPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpnZXRJbnRlcm5hbCk6IEZpeCB0cmFjZSBzeW1ib2wuCisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQpOiBSZW1vdmUgbWlncmF0ZWQgY2hl
Y2tzLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
SW5kZXgpOiBSZW1vdmUgbWlncmF0ZWQgY2hlY2tzLgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW5kZXgpOiBSZW1vdmUgbWlncmF0ZWQgY2hlY2tz
LgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDogQWRkIGFj
dGl2ZSBmbGFnIHRyYWNraW5nLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjphYm9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjppc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXNSZWFk
T25seSk6IEdyb3VwIElETC9ub24tSURMIG1ldGhvZHMuCisgICAgICAgIChJREJUcmFuc2FjdGlv
bik6CisKIDIwMTItMDYtMjYgIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5hdGl2ZSBtZW1vcnkgc25hcHNob3RzIGNyYXNo
IGluIGRlYnVnIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNkZDM2ODk3Y2Q1
N2NkZmU5YmRmZDFkODI0MjY1Y2JkMWFlODk5MTguLjY5YjM5MTdjNGYzNTMzOWEyZmQ3NGQ5YWMx
NDEyNTQwNDJkNDNlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMDYtMjYgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogSG9vayB1cCByZW5kZXItc2lkZSBrZXkgQVNTRVJUaW5nIGZvciBn
ZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAw
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIb29r
IHVwIENocm9taXVtIFdlYktpdCBBUEkgdG8gbmV3IG9uU3VjY2VzcyBoYW5kbGVyLgorCisgICAg
ICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHRlc3RzL0lEQkFib3J0T25D
b3JydXB0VGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpvblN1
Y2Nlc3MpOgorICAgICAgICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOgorCiAy
MDEyLTA2LTI2ICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gRml4IGluY29ycmVjdCAjaWZkZWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
IHN0YXRlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2Fs
bGJhY2tzLmgKaW5kZXggN2RlZTU1MDBmNDBiNmU2NDM0MjY0ZDk5MzdiZDFhZDk1MjRkMmUyZS4u
MGIzNGI2ODg2ZDVlMWFhNDNkMTk1M2Y5YWQ4MDNhMWUyYTcyODkyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCisjaW5jbHVkZSAiSURCS2V5
UGF0aC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3QgSURCS2V5UGF0
aCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJp
bWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiB2
YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMjc1OTUxNGVm
Zjc0MjI0YzYxNzk5Y2Y1ZjYwNzc5ZmRjZTRkMjQyMy4uYTVjYTVjNzllYTQxOGNhNjZkZWVmNGUw
NDYxNDkzYTU0OGViYjFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuY3BwCkBAIC0yOSw5ICsyOSwxMSBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQW55LmgiCisjaW5jbHVkZSAiSURCQmluZGluZ1V0aWxp
dGllcy5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKKyNpbmNsdWRlICJJREJPYmpl
Y3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJJREJUcmFjaW5n
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKQEAgLTEyNSwyNCArMTI3LDM3IEBAIElE
QkFueSogSURCQ3Vyc29yOjpzb3VyY2UoKSBjb25zdAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjp1cGRhdGUiKTsKKyAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwogCi0gICAgaWYgKCFtX2dvdFZhbHVl
KSB7CisgICAgaWYgKCFtX2dvdFZhbHVlIHx8IGlzS2V5Q3Vyc29yKCkpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0KKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVf
RVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlz
UmVhZE9ubHkoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09O
TFlfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0KLSAgICBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwogICAgIGlmICh2YWx1ZS0+YmxvYlVSTHMo
KS5zaXplKCkgPiAwKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgQmxvYi9GaWxlL0ZpbGVMaXN0
IHN1cHBvcnQKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0RBVEFfQ0xP
TkVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBSZWZQdHI8SURCT2JqZWN0
U3RvcmU+IG9iamVjdFN0b3JlID0gZWZmZWN0aXZlT2JqZWN0U3RvcmUoKTsKKyAgICBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoID0gb2JqZWN0U3RvcmUtPm1ldGFkYXRhKCkua2V5UGF0aDsKKyAg
ICBjb25zdCBib29sIHVzZXNJbkxpbmVLZXlzID0gIWtleVBhdGguaXNOdWxsKCk7CisgICAgaWYg
KHVzZXNJbkxpbmVLZXlzKSB7CisgICAgICAgIFJlZlB0cjxJREJLZXk+IGtleVBhdGhLZXkgPSBj
cmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwga2V5UGF0aCk7
CisgICAgICAgIGlmICgha2V5UGF0aEtleSB8fCAha2V5UGF0aEtleS0+aXNFcXVhbChtX2N1cnJl
bnRQcmltYXJ5S2V5LmdldCgpKSkgeworICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNv
bnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBt
X2JhY2tlbmQtPnVwZGF0ZSh2YWx1ZSwgcmVxdWVzdCwgZWMpOwogICAgIGlmIChlYykgewpAQCAt
MTYwLDcgKzE3NSw3IEBAIHZvaWQgSURCQ3Vyc29yOjphZHZhbmNlKHVuc2lnbmVkIGxvbmcgY291
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KCFtX3JlcXVlc3QpIHsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJS
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTg4LDcgKzIwMyw3IEBAIHZvaWQgSURCQ3Vy
c29yOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFtX3JlcXVlc3QpIHsK
KyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjEzLDYgKzIyOCwxMCBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkN1cnNvcjo6ZGVsZXRlIik7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgp
KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNU
SVZFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmIChtX3RyYW5zYWN0aW9u
LT5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVB
RF9PTkxZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNDcsMTEgKzI2NiwzMyBAQCB2b2lk
IElEQkN1cnNvcjo6c2V0VmFsdWVSZWFkeSgpCiB7CiAgICAgbV9jdXJyZW50S2V5ID0gbV9iYWNr
ZW5kLT5rZXkoKTsKICAgICBtX2N1cnJlbnRQcmltYXJ5S2V5ID0gbV9iYWNrZW5kLT5wcmltYXJ5
S2V5KCk7Ci0gICAgbV9jdXJyZW50VmFsdWUgPSBJREJBbnk6OmNyZWF0ZShtX2JhY2tlbmQtPnZh
bHVlKCkpOworCisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBtX2Jh
Y2tlbmQtPnZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIGlmICghaXNLZXlDdXJzb3IoKSkg
eworICAgICAgICAvLyBGSVhNRTogQWN0dWFsbHkgaW5qZWN0IHRoZSBwcmltYXJ5S2V5IGF0IHRo
ZSBrZXlQYXRoLgorICAgICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0g
ZWZmZWN0aXZlT2JqZWN0U3RvcmUoKTsKKyAgICAgICAgaWYgKG9iamVjdFN0b3JlLT5hdXRvSW5j
cmVtZW50KCkgJiYgIW9iamVjdFN0b3JlLT5tZXRhZGF0YSgpLmtleVBhdGguaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGggPSBvYmplY3RTdG9yZS0+bWV0
YWRhdGEoKS5rZXlQYXRoOworICAgICAgICAgICAgUmVmUHRyPElEQktleT4gZXhwZWN0ZWRLZXkg
PSBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwga2V5UGF0
aCk7CisgICAgICAgICAgICBBU1NFUlQoZXhwZWN0ZWRLZXktPmlzRXF1YWwobV9jdXJyZW50UHJp
bWFyeUtleS5nZXQoKSkpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisgICAgbV9jdXJyZW50
VmFsdWUgPSBJREJBbnk6OmNyZWF0ZSh2YWx1ZS5yZWxlYXNlKCkpOworCiAgICAgbV9nb3RWYWx1
ZSA9IHRydWU7CiAgICAgbV92YWx1ZUlzRGlydHkgPSB0cnVlOwogfQogCitQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBJREJDdXJzb3I6OmVmZmVjdGl2ZU9iamVjdFN0b3JlKCkKK3sKKyAgICBp
ZiAobV9zb3VyY2UtPnR5cGUoKSA9PSBJREJBbnk6OklEQk9iamVjdFN0b3JlVHlwZSkKKyAgICAg
ICAgcmV0dXJuIG1fc291cmNlLT5pZGJPYmplY3RTdG9yZSgpOworICAgIFJlZlB0cjxJREJJbmRl
eD4gaW5kZXggPSBtX3NvdXJjZS0+aWRiSW5kZXgoKTsKKyAgICByZXR1cm4gaW5kZXgtPm9iamVj
dFN0b3JlKCk7Cit9CisKIHVuc2lnbmVkIHNob3J0IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmIChkaXJlY3Rpb25TdHJpbmcgPT0gSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCmluZGV4IDNmOWQ4
NGY5ODgxMTgxMmM2YmZjYjUzYzIzODgzMWVlM2ZiYjVlNmUuLjRmNDU2NGVlYjQyMTI3YWE4N2Iw
NjkzNmI1NGUwNDNmNGU3ZjU1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5oCkBAIC05MSw4ICs5MSwxMSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoK
ICAgICBJREJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURC
UmVxdWVzdCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOworICAgIHZpcnR1YWwg
Ym9vbCBpc0tleUN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKKyAg
ICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBlZmZlY3RpdmVPYmplY3RTdG9yZSgpOworCiAg
ICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIFJlZlB0cjxJREJBbnk+IG1fc291cmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwCmluZGV4IGI2MjQ2ZTkxOWUwYjE4NzI3YzAzNTE0ZDdiODFhOTJiODk5
OGYyOTguLjBhMTRhNmYxYTFiNTkzMDBmOGJlOTg5ZDMyY2FlMWUwZmI5MzQzM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5jcHAKQEAgLTkzLDEwICs5Myw5IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6
OnVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSCiB7
CiAgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6dXBkYXRlIik7CiAgICAgQVNT
RVJUKG1fdHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKTsK
LSAgICBpZiAoIW1fY3Vyc29yIHx8IG1fY3Vyc29yVHlwZSA9PSBJbmRleEtleUN1cnNvcikgewot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisKKyAgICBBU1NFUlQobV9jdXJzb3IpOworICAgIEFT
U0VSVChtX2N1cnNvclR5cGUgIT0gSW5kZXhLZXlDdXJzb3IpOwogCiAgICAgbV9vYmplY3RTdG9y
ZS0+cHV0KHZhbHVlLCBtX2N1cnNvci0+cHJpbWFyeUtleSgpLCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U6OkN1cnNvclVwZGF0ZSwgY2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uLmdldCgp
LCBlYyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3JXaXRoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvcldpdGhWYWx1ZS5oCmluZGV4IGExYmExNGY5NjFjNWEwYjg4Y2VkZWNjMzBhNTA5YTE1
NGE2MTc5ZTAuLjliMzk2YmEzNWFhMDZiMzkxNGUwNzJhNjgxZDcwNGUwNWNhZWY4Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvcldpdGhW
YWx1ZS5oCkBAIC00MSw2ICs0MSw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgdmFsdWUgYXR0cmli
dXRlIGRlZmluZWQgaW4gdGhlIElETCBpcyBzaW1wbHkgaW1wbGVtZW50ZWQgaW4gSURCQ3Vyc29y
IChidXQgbm90IGV4cG9zZWQgdmlhCiAgICAgLy8gaXRzIElETCkuIFRoaXMgaXMgdG8gbWFrZSB0
aGUgaW1wbGVtZW50YXRpb24gbW9yZSBzaW1wbGUgd2hpbGUgbWF0Y2hpbmcgd2hhdCB0aGUgc3Bl
YyBzYXlzLgogCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29sIGlzS2V5Q3Vyc29yKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJpdmF0ZToKICAgICBJREJDdXJzb3JX
aXRoVmFsdWUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURCUmVxdWVz
dCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAwYTQ5NDAwYmI4
NjU1ZWFlOTA0ZmNlNjlkOWVkN2I0MDg2YmI3ZmNhLi5hYjEyM2MzZGNjOTQ4NjZkZWVhY2VhMDE3
ODljYTVmMjI4NDczOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xMTcsNiArMTE3LDEwIEBAIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NU
QVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlmICghbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CiAKICAgICBJREJLZXlQYXRoIGtleVBhdGg7CiAgICAgaWYgKCFvcHRpb25zLmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKQEAgLTEyOCw2ICsxMzIsMTEgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y28KICAgICAgICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKGtleVBhdGhTdHJpbmcpOwogICAg
IH0KIAorICAgIGlmIChtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5jb250YWlucyhuYW1lKSkgewor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCFrZXlQYXRoLmlzTnVsbCgpICYmICFrZXlQ
YXRoLmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
U1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjIsNiArMTcxLDE0IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZB
TElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoIW1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoIW1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUpKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9OT1RfRk9VTkRfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgbV9iYWNrZW5kLT5kZWxldGVPYmplY3RTdG9y
ZShuYW1lLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAg
aWYgKCFlYykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA1Y2NjYWEyOWE3ZmQ2YjU2OTA4
YjU2NzgzOGViMmMxMzFiZDczYzgzLi41MDViYTc1N2JlNDhmYzFhZmNhNDVjNTk2NmZmYmZhMDA0
ZDQ3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMTQ1LDEwICsxNDUsNyBAQCBJREJE
YXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QK
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
QVNTRVJUKHRyYW5zYWN0aW9uUHRyLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFKTsKLSAgICBpZiAobV9vYmplY3RTdG9yZXMuY29udGFpbnMobmFtZSkpIHsKLSAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlI7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KKyAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUp
KTsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBuYW1lLCBrZXlQYXRoLCBh
dXRvSW5jcmVtZW50KTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBuYW1lKTsK
QEAgLTE4NiwxMiArMTgzLDEwIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZShjCiB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uUHRyLT5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlcy5nZXQobmFtZSk7Ci0gICAgaWYg
KCFvYmplY3RTdG9yZSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
Tk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQobV9vYmpl
Y3RTdG9yZXMuY29udGFpbnMobmFtZSkpOworCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+IGRhdGFiYXNlID0gdGhpczsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbD4gb2JqZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlcy5nZXQobmFtZSk7CiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlv
blB0cjsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tU
YXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVPYmplY3RTdG9yZUludGVybmFsLCBk
YXRhYmFzZSwgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjphZGRPYmplY3RTdG9yZVRvTWFwLCBkYXRhYmFzZSwgb2JqZWN0U3RvcmUpKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IDMxZTdmNWQ0
ZTc2MmZjY2RiZGE0MzE2Nzk0OTlkYWJhYWFiYWQwZjQuLmZkOTM5NDk0NzQ5MjcyMjU1OTE5ZGMz
MDIyOGYzYzA1Yzk3OGQzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleC5jcHAKQEAgLTY1LDYgKzY1LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNB
Y3RpdmUoKSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICB1bnNpZ25lZCBz
aG9ydCBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0
cmluZywgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMTUsNiArMTE5
LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgeworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jb3VudChrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVjKSB7CkBAIC0xNDAsNiArMTQ4LDEwIEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAg
aWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQogCiAgICAgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJp
bmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGVjKTsKICAgICBpZiAoZWMpCkBAIC0yMDAs
NiArMjEyLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgeworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIz
MSw2ICsyNDcsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWYKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmICgha2V5UmFuZ2UpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3Bw
CmluZGV4IDY4YmMxNzE2NWRmNzI1ZTcxNDFjODFjMTg4ZmM3NTZhNDFjNTI5MjYuLjZjMDY0MTU5
MjljZThiYjdjODU3YTExYWVmOGRkMWY4MWUzMzIxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKKyNp
bmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkluZGV4Lmgi
CkBAIC03OCw2ICs3OSwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgeworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5nZXQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rp
b24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAtOTYsNjUgKzEwMSw4MCBAQCBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzcwogICAgIHJldHVybiBnZXQoY29udGV4dCwga2V5UmFuZ2Uu
cmVsZWFzZSgpLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6YWRkIik7CisgICAgcmV0dXJu
IHB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9ubHksIGNvbnRleHQsIHZh
bHVlLCBrZXksIGVjKTsKK30KKworUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6cHV0Iik7CisgICAg
cmV0dXJuIHB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9yVXBkYXRlLCBj
b250ZXh0LCB2YWx1ZSwga2V5LCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OnB1dChJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGUg
cHV0TW9kZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpwdXQi
KTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwor
ICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBpZiAobV9kZWxldGVkKSB7CiAg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc1JlYWRP
bmx5KCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VS
UjsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0KLSAgICBpZiAoa2V5ICYmICFrZXktPmlzVmFsaWQoKSkgewotICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICBpZiAobV90cmFu
c2FjdGlvbi0+aXNSZWFkT25seSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLQotICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgaWYgKHZhbHVl
LT5ibG9iVVJMcygpLnNpemUoKSA+IDApIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBCbG9iL0Zp
bGUvRmlsZUxpc3Qgc3VwcG9ydAogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJ
REJfREFUQV9DTE9ORV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0
cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKLSAgICBtX2JhY2tlbmQtPnB1
dCh2YWx1ZSwga2V5LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U6OkFkZE9ubHksIHJl
cXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmIChlYykgewotICAg
ICAgICByZXF1ZXN0LT5tYXJrRWFybHlEZWF0aCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0gICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwotfQorICAgIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGggPSBtX21ldGFkYXRhLmtleVBhdGg7CisgICAgY29uc3QgYm9vbCB1c2VzSW5MaW5l
S2V5cyA9ICFrZXlQYXRoLmlzTnVsbCgpOworICAgIGNvbnN0IGJvb2wgaGFzS2V5R2VuZXJhdG9y
ID0gYXV0b0luY3JlbWVudCgpOwogCi1QYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpwdXQiKTsK
LSAgICBpZiAobV9kZWxldGVkKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICBpZiAodXNlc0luTGluZUtleXMgJiYga2V5KSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewot
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOworICAgIGlm
ICghdXNlc0luTGluZUtleXMgJiYgIWhhc0tleUdlbmVyYXRvciAmJiAha2V5KSB7CisgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9Ci0KKyAgICBpZiAodXNlc0luTGluZUtleXMpIHsKKyAgICAgICAgUmVmUHRyPElEQktl
eT4ga2V5UGF0aEtleSA9IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRo
KHZhbHVlLCBrZXlQYXRoKTsKKyAgICAgICAgaWYgKGtleVBhdGhLZXkgJiYgIWtleVBhdGhLZXkt
PmlzVmFsaWQoKSkgeworICAgICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWhh
c0tleUdlbmVyYXRvciAmJiAha2V5UGF0aEtleSkgeworICAgICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
fQorICAgICAgICBpZiAoaGFzS2V5R2VuZXJhdG9yICYmICFrZXlQYXRoS2V5KSB7CisgICAgICAg
ICAgICBSZWZQdHI8SURCS2V5PiBkdW1teUtleSA9IElEQktleTo6Y3JlYXRlTnVtYmVyKC0xKTsK
KyAgICAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlQWZ0ZXJJbmpl
Y3Rpb24gPSBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGR1bW15S2V5LCB2YWx1ZSwg
a2V5UGF0aCk7CisgICAgICAgICAgICBpZiAoIXZhbHVlQWZ0ZXJJbmplY3Rpb24pIHsKKyAgICAg
ICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KICAgICBp
ZiAoa2V5ICYmICFrZXktPmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBwcnBWYWx1ZTsKLSAgICBpZiAodmFsdWUt
PmJsb2JVUkxzKCkuc2l6ZSgpID4gMCkgewotICAgICAgICAvLyBGSVhNRTogQWRkIEJsb2IvRmls
ZS9GaWxlTGlzdCBzdXBwb3J0Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklE
Ql9EQVRBX0NMT05FX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgUmVmUHRy
PElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55
OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwotICAgIG1fYmFja2VuZC0+cHV0
KHZhbHVlLCBrZXksIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6QWRkT3JVcGRhdGUs
IHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOworICAgIC8vIEZJWE1FOiBQ
YXNzIHRocm91Z2gga2V5UGF0aEtleSBhcyBrZXkgdG8gc2ltcGxpZnkgYmFjayBlbmQgaW1wbGVt
ZW50YXRpb24uCisgICAgbV9iYWNrZW5kLT5wdXQodmFsdWUucmVsZWFzZSgpLCBrZXkucmVsZWFz
ZSgpLCBwdXRNb2RlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAg
ICBpZiAoZWMpIHsKICAgICAgICAgcmVxdWVzdC0+bWFya0Vhcmx5RGVhdGgoKTsKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xNjksMTEgKzE4OSwxNCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwog
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0
aXZlKCkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VFJBTlNBQ1RJT05f
SU5BQ1RJVkVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKG1fdHJhbnNh
Y3Rpb24tPmlzUmVhZE9ubHkoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpSRUFEX09OTFlfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0KICAgICBpZiAoIWtl
eVJhbmdlKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKQEAgLTIwNCw2ICsyMjcsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgRXgKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RB
VEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaWYgKCFtX3RyYW5zYWN0aW9u
LT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5T
QUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmICht
X3RyYW5zYWN0aW9uLT5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzksMTEgKzI2
NiwyMiBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZQogICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KLQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUoKSkgeworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleVBhdGguaXNWYWxpZCgpKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9TWU5UQVhfRVJSOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CisgICAgaWYgKG5hbWUuaXNOdWxsKCkpIHsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgaWYgKG1fbWV0YWRhdGEuaW5kZXhlcy5jb250YWlucyhuYW1lKSkgeworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQogCiAgICAgYm9vbCB1bmlxdWUgPSBmYWxzZTsKICAgICBvcHRpb25zLmdldCgi
dW5pcXVlIiwgdW5pcXVlKTsKQEAgLTMwNCw2ICszNDIsMTQgQEAgdm9pZCBJREJPYmplY3RTdG9y
ZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNBY3RpdmUo
KSkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFD
VElWRV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFtX21ldGFkYXRhLmlu
ZGV4ZXMuY29udGFpbnMobmFtZSkpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX05PVF9GT1VORF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX2Jh
Y2tlbmQtPmRlbGV0ZUluZGV4KG5hbWUsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwog
ICAgIGlmICghZWMpIHsKQEAgLTMyNSw2ICszNzEsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXgKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVf
RVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5p
c0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNU
SU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHVuc2lnbmVk
IHNob3J0IGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9u
U3RyaW5nLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKQEAgLTM3NSw2ICs0
MjUsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGEKICAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNvdW50KHJhbmdlLCByZXF1ZXN0LCBtX3RyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmluZGV4IDgxODFlYjkzMWZhNzBj
YzU5MDA0MmYyMjU2MmNmNzhkYzJjY2Y0YzEuLjY3YjM2Zjk5NTUxN2E5Yjg0ZDJhMWMyMjUyNDk1
OGZjZGFhNDg0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaApAQCAtOTUsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2Vw
dGlvbkNvZGUmKTsKIAorICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsg
fQogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZCgpOwogCkBAIC0xMDMsNyArMTA0LDYgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIElEQk9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEmLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4s
IElEQlRyYW5zYWN0aW9uKik7Ci0gICAgdm9pZCByZW1vdmVUcmFuc2FjdGlvbkZyb21QZW5kaW5n
TGlzdCgpOwogCiAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggYTQ2ODY1NGUwN2I4MTYyZjFhNTdiZDUwNTRlMDM1OWM4
ZTJjN2U0ZC4uNDc0Y2RlYjViNWEyYzg4NDFhMWZjYWRmOThmZjYyMzIyZmRmMDRkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJJREJL
ZXlQYXRoQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUg
IklEQlRyYWNpbmcuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uu
aCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQYXNzUmVmCiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewot
ICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0QnlSYW5nZUludGVy
bmFsIik7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRl
cm5hbCIpOwogICAgIFJlZlB0cjxJREJLZXk+IGtleTsKICAgICBpZiAoa2V5UmFuZ2UtPmlzT25s
eUtleSgpKQogICAgICAgICBrZXkgPSBrZXlSYW5nZS0+bG93ZXIoKTsKQEAgLTExMiw2ICsxMTIs
MTEgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmIChvYmplY3RTdG9yZS0+YXV0b0luY3JlbWVudCgpICYmICFvYmplY3RTdG9yZS0+a2V5
UGF0aCgpLmlzTnVsbCgpKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUod2lyZURhdGEpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrZXksIG9iamVjdFN0b3JlLT5rZXlQYXRoKCkpOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlRnJvbVdpcmUod2lyZURhdGEpKTsKIH0KIApAQCAtMTQ4LDUzICsxNTMsNiBAQCB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gcHJwVmFsdWUsCiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gcHJwQ2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IHRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25QdHI7CiAKLSAgICBpZiAocHV0TW9kZSAhPSBD
dXJzb3JVcGRhdGUpIHsKLSAgICAgICAgY29uc3QgYm9vbCBhdXRvSW5jcmVtZW50ID0gb2JqZWN0
U3RvcmUtPmF1dG9JbmNyZW1lbnQoKTsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNLZXlQYXRoID0g
IW9iamVjdFN0b3JlLT5tX2tleVBhdGguaXNOdWxsKCk7Ci0KLSAgICAgICAgaWYgKGhhc0tleVBh
dGggJiYga2V5KSB7Ci0gICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRB
X0VSUjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWhhc0tl
eVBhdGggJiYgIWF1dG9JbmNyZW1lbnQgJiYgIWtleSkgewotICAgICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGhhc0tleVBhdGgpIHsKLSAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+
IGtleVBhdGhLZXkgPSBmZXRjaEtleUZyb21LZXlQYXRoKHZhbHVlLmdldCgpLCBvYmplY3RTdG9y
ZS0+bV9rZXlQYXRoKTsKLSAgICAgICAgICAgIGlmIChrZXlQYXRoS2V5ICYmICFrZXlQYXRoS2V5
LT5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpEQVRBX0VSUjsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoIWF1dG9JbmNyZW1lbnQgJiYgIWtleVBhdGhLZXkpIHsKLSAgICAgICAgICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYXV0b0luY3JlbWVudCAm
JiAha2V5UGF0aEtleSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxJREJLZXk+IGR1bW15S2V5
ID0gSURCS2V5OjpjcmVhdGVOdW1iZXIoLTEpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlQWZ0ZXJJbmplY3Rpb24gPSBpbmplY3RLZXlJbnRvS2V5
UGF0aChkdW1teUtleSwgdmFsdWUsIG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOwotICAgICAgICAg
ICAgICAgIGlmICghdmFsdWVBZnRlckluamVjdGlvbikgewotICAgICAgICAgICAgICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBpZiAoa2V5ICYmICFrZXktPmlzVmFsaWQoKSkgewotICAgICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoa2V5KTsKLSAgICAgICAgY29uc3QgYm9v
bCBoYXNLZXlQYXRoID0gIW9iamVjdFN0b3JlLT5tX2tleVBhdGguaXNOdWxsKCk7Ci0gICAgICAg
IGlmIChoYXNLZXlQYXRoKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBrZXlQYXRoS2V5
ID0gZmV0Y2hLZXlGcm9tS2V5UGF0aCh2YWx1ZS5nZXQoKSwgb2JqZWN0U3RvcmUtPm1fa2V5UGF0
aCk7Ci0gICAgICAgICAgICBpZiAoIWtleVBhdGhLZXkgfHwgIWtleVBhdGhLZXktPmlzRXF1YWwo
a2V5LmdldCgpKSkgewotICAgICAgICAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkRBVEFfRVJSOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAg
ICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwsIG9iamVjdFN0b3JlLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIHRy
YW5zYWN0aW9uKSwKICAgICAgICAgICAgIC8vIEZJWE1FOiBPbmUgb2YgdGhlc2UgcGVyIHB1dCgp
IGlzIG92ZXJraWxsLCBzaW5jZSBpdCdzIHNpbXBseSBhIGNhY2hlIGludmFsaWRhdGlvbi4KQEAg
LTQ1OSwxOCArNDE3LDggQEAgYm9vbCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwb3B1bGF0
ZUluZGV4KElEQkJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlLCBpbnQKIAogUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG5hbWUuaXNOdWxs
KCkpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1RZUEVfRVJSOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKG1faW5kZXhlcy5jb250YWlucyhuYW1l
KSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9
IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgewotICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KKyAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVCghbV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpKTsK
IAogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2Vu
ZEltcGw6OmNyZWF0ZShtX2RhdGFiYXNlLCB0aGlzLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11
bHRpRW50cnkpOwogICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwpAQCAtNTIwLDE4
ICs0NjgsMTEgQEAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OmluZGV4KGNvbnN0IFN0cmkKIAogdm9pZCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NI
QU5HRSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW1wbD4gaW5kZXggPSBtX2luZGV4ZXMuZ2V0KG5hbWUpOwotICAgIGlmICghaW5kZXgp
IHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX05PVF9GT1VORF9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkg
PT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQobV9pbmRleGVz
LmNvbnRhaW5zKG5hbWUpKTsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
PiBvYmplY3RTdG9yZSA9IHRoaXM7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGlu
ZGV4ID0gbV9pbmRleGVzLmdldChuYW1lKTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvblB0ciA9IHRyYW5zYWN0aW9uOwogICAgIGlmICghdHJh
bnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNr
KCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleEludGVybmFsLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA3NjYy
MTViYjljMDA1ZGFlOWEzYjAxN2Y1YmU5N2I3MmI5MzJkYTE0Li4zMzkyMmU2YTg4ZmUyNTYwOWI2
NTdhY2QyN2I5Y2ZmNDIzODFmZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1
ZS5oIgorI2luY2x1ZGUgIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJDdXJz
b3JXaXRoVmFsdWUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkV2
ZW50RGlzcGF0Y2hlci5oIgpAQCAtMzA0LDYgKzMwNSwyMSBAQCB2b2lkIElEQlJlcXVlc3Q6Om9u
U3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlw
dFZhbAogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CiB9CiAKKwordm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHBycFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlL
ZXksIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCit7CisgICAgTE9HX0VSUk9SKCJDSEVDS0lO
Rzogb25TdWNjZXNzKHZhbHVlLCBrZXksIGtleXBhdGgpIik7CisgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlID0gcHJwU2VyaWFsaXplZFNjcmlw
dFZhbHVlOworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBGSVhNRTogQXNzZXJ0IHVudGlsIHdlIGNh
biBhY3R1YWxseSBpbmplY3QgdGhlIHJpZ2h0IHZhbHVlLgorICAgIFJlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5OworICAgIFJlZlB0cjxJREJLZXk+IGV4cGVjdGVkS2V5
ID0KKyAgICAgICAgICAgICAgY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBh
dGgoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBrZXlQYXRoKTsKKyAgICBBU1NFUlQoZXhwZWN0ZWRL
ZXktPmlzRXF1YWwocHJpbWFyeUtleS5nZXQoKSkpOworI2VuZGlmCisgICAgb25TdWNjZXNzKHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5yZWxlYXNlKCkpOworfQorCiB2b2lkIElEQlJlcXVlc3Q6Om9u
U3VjY2Vzc1dpdGhDb250aW51YXRpb24oKQogewogICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6
b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGUxMDRkOGYxZTgxNWNiNWM0NTdmNjNlMTNkODQ5
NDNiYjJjZjliZmQuLjg4YTdlNjBmMWU3MWY4NTE2MDNkY2Y0MTQzMjRiODkyZTY0NzZmNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTg3
LDYgKzg3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJLZXk+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktl
eT4sIGNvbnN0IElEQktleVBhdGgmKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENv
bnRpbnVhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29u
c3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBOb3QgaW1wbGVtZW50ZWQuIENhbGxiYWNrIHNob3VsZCBu
b3QgcmVhY2ggdGhlIHJlbmRlcmVyIHNpZGUuCiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDcwODdjNjU3ZTA2Njg2YzE3ZDE1YjM2ZDg4YzY5MjQ5ZDIzZTliNTkuLjZh
ZDMwMDcyMzhlZjM2ZjY1OGY2YzIyYjVlYjljNmE3MzY3NzQ1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTg0LDYg
Kzg0LDcgQEAgSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHIKICAgICAsIG1fYmFja2VuZChiYWNrZW5k
KQogICAgICwgbV9kYXRhYmFzZShkYikKICAgICAsIG1fbW9kZShtb2RlKQorICAgICwgbV9hY3Rp
dmUodHJ1ZSkKICAgICAsIG1fdHJhbnNhY3Rpb25GaW5pc2hlZChmYWxzZSkKICAgICAsIG1fY29u
dGV4dFN0b3BwZWQoZmFsc2UpCiB7CkBAIC0xOTMsNiArMTk0LDcgQEAgdm9pZCBJREJUcmFuc2Fj
dGlvbjo6YWJvcnQoKQogewogICAgIGlmIChtX3RyYW5zYWN0aW9uRmluaXNoZWQpCiAgICAgICAg
IHJldHVybjsKKyAgICBtX2FjdGl2ZSA9IGZhbHNlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bj4gc2VsZlJlZiA9IHRoaXM7CiAgICAgaWYgKG1fYmFja2VuZCkKICAgICAgICAgbV9iYWNrZW5k
LT5hYm9ydCgpOwpAQCAtMjQyLDYgKzI0NCw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnVucmVn
aXN0ZXJSZXF1ZXN0KElEQlJlcXVlc3QqIHJlcXVlc3QpCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpv
bkFib3J0KCkKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAgbV9h
Y3RpdmUgPSBmYWxzZTsKICAgICB3aGlsZSAoIW1fY2hpbGRSZXF1ZXN0cy5pc0VtcHR5KCkpIHsK
ICAgICAgICAgSURCUmVxdWVzdCogcmVxdWVzdCA9ICptX2NoaWxkUmVxdWVzdHMuYmVnaW4oKTsK
ICAgICAgICAgbV9jaGlsZFJlcXVlc3RzLnJlbW92ZShyZXF1ZXN0KTsKQEAgLTI2NSw2ICsyNjgs
NyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKIHZvaWQgSURCVHJhbnNhY3Rpb246
Om9uQ29tcGxldGUoKQogewogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkZpbmlzaGVkKTsKKyAg
ICBtX2FjdGl2ZSA9IGZhbHNlOwogICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7
CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwogICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmlu
aXNoZWQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaAppbmRleCAwYjJkZWM2ZWMwOGYxZDFlMmI5NjBlZGIwMTE2ZmNmODlkMWNm
OTZkLi4yY2U4MmIxY2Y3N2FhZjIwZmQyMjQwZGExYjhmNjhjMWI5MWQyMmVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTY4
LDEyICs2OCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbW9k
ZVRvU3RyaW5nKE1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogYmFja2VuZCgpIGNvbnN0OworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25z
dCB7IHJldHVybiBtX2FjdGl2ZTsgfQogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0OworICAg
IGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBSRUFEX09OTFk7IH0K
ICAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBWRVJT
SU9OX0NIQU5HRTsgfQogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREJUcmFuc2FjdGlvbiBJREwK
ICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdDsKLSAgICBib29sIGlzUmVhZE9ubHkoKSBj
b25zdCB7IHJldHVybiBtX21vZGUgPT0gUkVBRF9PTkxZOyB9CiAgICAgSURCRGF0YWJhc2UqIGRi
KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IoRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwogICAgIHZvaWQgc2V0RXJyb3IoUGFzc1JlZlB0cjxET01FcnJvcj4pOwpAQCAtMTM1
LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gbV9kYXRhYmFzZTsK
ICAgICBjb25zdCBNb2RlIG1fbW9kZTsKKyAgICBib29sIG1fYWN0aXZlOwogICAgIGJvb2wgbV90
cmFuc2FjdGlvbkZpbmlzaGVkOyAvLyBJcyBpdCBwb3NzaWJsZSB0aGF0IHdlJ2xsIGZpcmUgYW55
IG1vcmUgZXZlbnRzIG9yIGFsbG93IGFueSBuZXcgcmVxdWVzdHM/IElmIG5vdCwgd2UncmUgZmlu
aXNoZWQuCiAgICAgYm9vbCBtX2NvbnRleHRTdG9wcGVkOwogICAgIFJlZlB0cjxET01FcnJvcj4g
bV9lcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRp
bmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKaW5kZXggZWU3NmVlMjlhMDAxZDZjZDc2YzVmMTdhZDM1ZWNiN2ZjYzY3NGMy
OS4uNjYxZmYwMTU5NWRmMDU1MDBkN2Y2Y2FjMzEwZThiYzcxMzQ0YjNlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE1
NCwxMyArMTU0LDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1ZU9uS2V5
UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKIAogfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNl
cmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+
IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogewog
ICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJLZXlQYXRoUGFyc2VF
cnJvciBlcnJvcjsKICAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwga2V5UGF0aEVsZW1lbnRz
LCBlcnJvcik7CiAgICAgQVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yTm9uZSk7
CiAKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBycFZhbHVlOwor
CiAgICAgVjhBdXhpbGlhcnlDb250ZXh0IGNvbnRleHQ7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHY4VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2OEtleShnZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoRWxlbWVudHMs
IGtleVBhdGhFbGVtZW50cy5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGQ0ZWRlMjFhN2M1MDlhMGIx
MmUyZGQyMjFmMjI3MTIyNzIwOTMxMjguLmZmZTYyYzA3ZThiZjUzY2NjZWM1NjI1YTRhNWMwZTU5
N2IzZTIzZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4p
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRo
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBvbkJsb2NrZWQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggMzEyNjZiMWEzMThhMjQxY2JiNTQ0OWYzMWJkMGI5
NjQyMDdjN2MzMC4uNWI1YWVkZjdjY2IzN2UyNDljNTNjMWFmOWU4ZWM4ZWQ5YjBlNmUxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5j
cHAKQEAgLTkyLDkgKzkyLDcgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3Mo
Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2MKIAogdm9pZCBXZWJJ
REJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJJ
REJLZXlQYXRoJiBrZXlQYXRoKQogewotICAgIC8vIEZJWE1FOiBwcm94eSB0byB0aGUgMy1wYXJh
bWV0ZXIgdmVyc2lvbiB3aGVuIGludGVyZmFjZSBsYW5kczoKLSAgICAvLyBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5LCBrZXlQYXRoKTspOwotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBrZXksIGtleVBhdGgpOwogfQogCiB2b2lkIFdlYklEQkNhbGxiYWNrc0lt
cGw6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmluZGV4IDZjNzhhYTUz
YzUyMmI2MGIyMGFkYjY3NzkwYmQ5NDAwNWI0YjdmZDIuLmY1M2FkNTBkMWQ2NzhiZTI2NDEwZWQ4
NDBlM2Y3YTUyYTc3Njg3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQktleT4sIGNvbnN0
IElEQktleVBhdGgmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVh
dGlvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3Qg
VmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggMTdkZDI0YmM2
YzMwNGZkZmJhODhlNzNiNDZkODM4ZGI1ZDc0ZGRiNC4uZWIzYzg1YWJjZmQ1Zjk1OTU0MjQ1ZjAx
MGY0NmZiNzFhNTg1ZDVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC04NCw2ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgT1ZFUlJJ
REUgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4pIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9Owog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgT1ZFUlJJREUgeyB9
CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVm
UHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mKSBPVkVSUklERSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgT1ZFUlJJREUgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149801</attachid>
            <date>2012-06-27 14:55:34 -0700</date>
            <delta_ts>2012-06-28 15:57:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-90001-20120627145534.patch</filename>
            <type>text/plain</type>
            <size>13991</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgxZGZkZGYyMDlmN2M1
ZTVkZjhiNjUyZTkzMTBhMjZiMTNhMmZjZS4uYWM5OGM5ZGNmNzk0NjEwYzUzNDM5NjJlNGMzY2E2
NmQyMjI2ODRlOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTI2ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEhv
b2sgdXAgcmVuZGVyLXNpZGUga2V5IEFTU0VSVGluZyBmb3IgZ2V0KCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMDAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBIb29rIHVwIHRoZSBuZXcgb25TdWNjZXNzIGFu
ZCBhZGQgaXQgdG8gdGhlIGludGVyZmFjZS4gRm9yIG5vdywKKyAgICAgICAgc2ltcGx5IGFzc2Vy
dCB0aGF0IHRoZSByaWdodCB2YWx1ZSBpcyBzZXQuIEFkZCB0aGUgc2FtZSBhc3NlcnRpb24KKyAg
ICAgICAgbG9naWMgaW4gdGhlIHZhbHVlLWNvbnN0cnVjdGlvbiBsb2dpYyB3aGVuIHRoZSBjdXJz
b3IgYWR2YW5jZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyB0ZXN0cyB2ZXJp
ZnkgdGhpcyByZWZhY3RvciBpcyBjb3JyZWN0LgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChJREJDYWxsYmFja3MpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktleUZyb21T
ZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDYtMjcgIEtl
bnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gUmVmYWN0
b3IgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKSBhbmQgVjhCaW5kaW5nUGVySXNv
bGF0ZURhdGE6OmdldCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDM2NWQwZWIzY2Nh
NTFmMmVmYmM1MjVhMjE3YzFhMzYwZWI5YzU5ZTguLmVjNWU4NWI3NGY1NDU0ZTU2MDliZDI4YThm
YTMzNmE3NDIxOWRiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTItMDYtMjYgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogSG9vayB1cCByZW5kZXItc2lkZSBrZXkgQVNTRVJUaW5nIGZvciBn
ZXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAw
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgIEhvb2sgdXAg
Q2hyb21pdW0gV2ViS2l0IEFQSSB0byBuZXcgb25TdWNjZXNzIGhhbmRsZXIuCisKKyAgICAgICAg
KiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNh
bGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyk6CisgICAgICAgICogdGVzdHMvSURCQWJvcnRPbkNvcnJ1
cHRUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6Om9uU3VjY2Vz
cyk6CisgICAgICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6CisKIDIwMTIt
MDYtMjYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggN2RlZTU1MDBmNDBiNmU2NDM0MjY0ZDk5
MzdiZDFhZDk1MjRkMmUyZS4uMGIzNGI2ODg2ZDVlMWFhNDNkMTk1M2Y5YWQ4MDNhMWUyYTcyODky
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJh
Y2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tz
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCiAjaW5jbHVkZSAiSURCS2V5Lmgi
CisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgpAQCAtNTUsNiArNTYsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5
PiwgY29uc3QgSURCS2V5UGF0aCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0
aENvbnRpbnVhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZl
dGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAKaW5kZXggYWYxYzUwNDQ0NzM1ZWI5NDYyM2ZjYjg4NmE2NDZmMDRiY2E2NTgwOS4uYTVjYTVj
NzllYTQxOGNhNjZkZWVmNGUwNDYxNDkzYTU0OGViYjFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC0yNjYsNyArMjY2LDIxIEBAIHZv
aWQgSURCQ3Vyc29yOjpzZXRWYWx1ZVJlYWR5KCkKIHsKICAgICBtX2N1cnJlbnRLZXkgPSBtX2Jh
Y2tlbmQtPmtleSgpOwogICAgIG1fY3VycmVudFByaW1hcnlLZXkgPSBtX2JhY2tlbmQtPnByaW1h
cnlLZXkoKTsKLSAgICBtX2N1cnJlbnRWYWx1ZSA9IElEQkFueTo6Y3JlYXRlKG1fYmFja2VuZC0+
dmFsdWUoKSk7CisKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IG1f
YmFja2VuZC0+dmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgaWYgKCFpc0tleUN1cnNvcigp
KSB7CisgICAgICAgIC8vIEZJWE1FOiBBY3R1YWxseSBpbmplY3QgdGhlIHByaW1hcnlLZXkgYXQg
dGhlIGtleVBhdGguCisgICAgICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUg
PSBlZmZlY3RpdmVPYmplY3RTdG9yZSgpOworICAgICAgICBpZiAob2JqZWN0U3RvcmUtPmF1dG9J
bmNyZW1lbnQoKSAmJiAhb2JqZWN0U3RvcmUtPm1ldGFkYXRhKCkua2V5UGF0aC5pc051bGwoKSkg
eworICAgICAgICAgICAgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCA9IG9iamVjdFN0b3JlLT5t
ZXRhZGF0YSgpLmtleVBhdGg7CisgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBleHBlY3RlZEtl
eSA9IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKHZhbHVlLCBrZXlQ
YXRoKTsKKyAgICAgICAgICAgIEFTU0VSVChleHBlY3RlZEtleS0+aXNFcXVhbChtX2N1cnJlbnRQ
cmltYXJ5S2V5LmdldCgpKSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKyAgICBtX2N1cnJl
bnRWYWx1ZSA9IElEQkFueTo6Y3JlYXRlKHZhbHVlLnJlbGVhc2UoKSk7CisKICAgICBtX2dvdFZh
bHVlID0gdHJ1ZTsKICAgICBtX3ZhbHVlSXNEaXJ0eSA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCmluZGV4IGFmMzBlZjM3MTE1YTUxMTM5YzUyMDFiMDlhY2JiNDk0MjcyYTIz
NGIuLjQ3NGNkZWI1YjVhMmM4ODQxYTFmY2FkZjk4ZmY2MjMyMmZkZjA0ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwCkBAIC0xMTIsNiArMTEyLDExIEBAIHZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAob2JqZWN0U3RvcmUtPmF1
dG9JbmNyZW1lbnQoKSAmJiAhb2JqZWN0U3RvcmUtPmtleVBhdGgoKS5pc051bGwoKSkgeworICAg
ICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZy
b21XaXJlKHdpcmVEYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LCBvYmpl
Y3RTdG9yZS0+a2V5UGF0aCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYWxsYmFj
a3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKHdpcmVE
YXRhKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5jcHAKaW5kZXggNzY2MjE1YmI5YzAwNWRhZTlhM2IwMTdmNWJlOTdiNzJiOTMyZGExNC4u
MzM5MjJlNmE4OGZlMjU2MDliNjU3YWNkMjdiOWNmZjQyMzgxZmQ0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgog
I2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKKyNpbmNsdWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKQEAgLTMwNCw2ICszMDUsMjEgQEAg
dm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWwKICAgICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2
ZW50KCkpOwogfQogCisKK3ZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBwcnBTZXJpYWxpemVkU2NyaXB0VmFsdWUsIFBhc3NSZWZQdHI8
SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQoreworICAg
IExPR19FUlJPUigiQ0hFQ0tJTkc6IG9uU3VjY2Vzcyh2YWx1ZSwga2V5LCBrZXlwYXRoKSIpOwor
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA9
IHBycFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKyNpZm5kZWYgTkRFQlVHCisgICAgLy8gRklYTUU6
IEFzc2VydCB1bnRpbCB3ZSBjYW4gYWN0dWFsbHkgaW5qZWN0IHRoZSByaWdodCB2YWx1ZS4KKyAg
ICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gcHJwUHJpbWFyeUtleTsKKyAgICBSZWZQdHI8
SURCS2V5PiBleHBlY3RlZEtleSA9CisgICAgICAgICAgICAgIGNyZWF0ZUlEQktleUZyb21TZXJp
YWxpemVkVmFsdWVBbmRLZXlQYXRoKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwga2V5UGF0aCk7Cisg
ICAgQVNTRVJUKGV4cGVjdGVkS2V5LT5pc0VxdWFsKHByaW1hcnlLZXkuZ2V0KCkpKTsKKyNlbmRp
ZgorICAgIG9uU3VjY2VzcyhzZXJpYWxpemVkU2NyaXB0VmFsdWUucmVsZWFzZSgpKTsKK30KKwog
dm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkKIHsKICAgICBJREJf
VFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCBlMTA0ZDhmMWU4
MTVjYjVjNDU3ZjYzZTEzZDg0OTQzYmIyY2Y5YmZkLi44OGE3ZTYwZjFlNzFmODUxNjAzZGNmNDE0
MzI0Yjg5MmU2NDc2ZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oCkBAIC04Nyw2ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRoJik7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gPiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxlbWVudGVk
LiBDYWxsYmFjayBzaG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgogICAgIHZpcnR1
YWwgdm9pZCBvbkJsb2NrZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
SURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggZWU3NmVlMjlhMDAxZDZjZDc2YzVmMTdhZDM1
ZWNiN2ZjYzY3NGMyOS4uNjYxZmYwMTU5NWRmMDU1MDBkN2Y2Y2FjMzEwZThiYzcxMzQ0YjNlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAKQEAgLTE1NCwxMyArMTU0LDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVO
dGhWYWx1ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKIAogfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLXN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gY3JlYXRl
SURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJL
ZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKICAgICBJREJQYXJzZUtleVBhdGgoa2V5UGF0aCwga2V5
UGF0aEVsZW1lbnRzLCBlcnJvcik7CiAgICAgQVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJz
ZUVycm9yTm9uZSk7CiAKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9
IHBycFZhbHVlOworCiAgICAgVjhBdXhpbGlhcnlDb250ZXh0IGNvbnRleHQ7CiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKCkpOwogICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2OEtleShnZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQ
YXRoRWxlbWVudHMsIGtleVBhdGhFbGVtZW50cy5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IGQ0ZWRl
MjFhN2M1MDlhMGIxMmUyZGQyMjFmMjI3MTIyNzIwOTMxMjguLjdiMTRiMjk3N2I5NThkYWRhOWI0
ZGI5NDhkMGFmNjMyZDg0ODUxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtMTA1LDE2ICsxMDUsMTcgQEAgY2xh
c3MgSW5zcGVjdG9ySURCQ2FsbGJhY2sgOiBwdWJsaWMgSURCQ2FsbGJhY2tzIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JJREJDYWxsYmFjaygpIHsgfQogCi0gICAgdmlydHVhbCB2
b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4p
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCS2V5PikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25z
dCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiA+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIE9W
RVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikg
T1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktl
eT4pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgT1ZFUlJJ
REUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3QgSURCS2V5UGF0aCYpIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgT1ZF
UlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBW
ZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+Jiwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mKSBPVkVSUklERSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgT1ZFUlJJREUgeyB9CiB9OwogCiBjbGFz
cyBJbnNwZWN0b3JJREJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxi
YWNrcyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxs
YmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwCmluZGV4IDMxMjY2YjFhMzE4YTI0MWNiYjU0NDlmMzFiZDBiOTY0MjA3YzdjMzAu
LjViNWFlZGY3Y2NiMzdlMjQ5YzUzYzFhZjllOGVjOGVkOWIwZTZlMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC05Miw5
ICs5Miw3IEBAIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjCiAKIHZvaWQgV2ViSURCQ2FsbGJhY2tz
SW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViSURCS2V5UGF0aCYg
a2V5UGF0aCkKIHsKLSAgICAvLyBGSVhNRTogcHJveHkgdG8gdGhlIDMtcGFyYW1ldGVyIHZlcnNp
b24gd2hlbiBpbnRlcmZhY2UgbGFuZHM6Ci0gICAgLy8gbV9jYWxsYmFja3MtPm9uU3VjY2Vzcyhz
ZXJpYWxpemVkU2NyaXB0VmFsdWUsIGtleSwga2V5UGF0aCk7KTsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwga2V5LCBrZXlQYXRoKTsKIH0KIAogdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nl
c3NXaXRoQ29udGludWF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAppbmRleCA2Yzc4YWE1M2M1MjJiNjBiMjBh
ZGI2Nzc5MGJkOTQwMDViNGI3ZmQyLi5mNTNhZDUwZDFkNjc4YmUyNjQxMGVkODQwZTNmN2E1MmE3
NzY4NzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0
T25Db3JydXB0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJB
Ym9ydE9uQ29ycnVwdFRlc3QuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4p
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBjb25zdCBJREJLZXlQYXRo
JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBvbkJsb2NrZWQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCmluZGV4IDE3ZGQyNGJjNmMzMDRmZGZiYTg4
ZTczYjQ2ZDgzOGRiNWQ3NGRkYjQuLmViM2M4NWFiY2ZkNWY5NTk1NDI0NWYwMTBmNDZmYjcxYTU4
NWQ1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJh
c2VCYWNrZW5kVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJE
YXRhYmFzZUJhY2tlbmRUZXN0LmNwcApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pIE9WRVJSSURFIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+KSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQ
dHI8SURCS2V5PiwgY29uc3QgSURCS2V5UGF0aCYpIE9WRVJSSURFIHsgfTsKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpIE9WRVJSSURFIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+
ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lk
IG9uQmxvY2tlZCgpIE9WRVJSSURFIHsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>