<?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>137923</bug_id>
          
          <creation_ts>2014-10-21 08:17:38 -0700</creation_ts>
          <short_desc>[EME][Mac] Update to match new AVStreamSession API and requirements.</short_desc>
          <delta_ts>2014-12-16 13:28:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1043178</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-21 08:17:38 -0700</bug_when>
    <thetext>[EME][Mac] Update to match new AVStreamSession API and requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043191</commentid>
    <comment_count>1</comment_count>
      <attachid>240208</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-21 09:06:50 -0700</bug_when>
    <thetext>Created attachment 240208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043280</commentid>
    <comment_count>2</comment_count>
      <attachid>240208</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-10-21 14:17:29 -0700</bug_when>
    <thetext>Comment on attachment 240208
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:285
&gt; +    if (m_streamSession) {

Minor nit: this could be an early return

&gt; Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:699
&gt; +    UNUSED_PARAM(trackID);

Nit: this could be in an &quot;#else&quot; block below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043281</commentid>
    <comment_count>3</comment_count>
      <attachid>240222</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-21 14:35:57 -0700</bug_when>
    <thetext>Created attachment 240222
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043291</commentid>
    <comment_count>4</comment_count>
      <attachid>240224</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-21 15:48:29 -0700</bug_when>
    <thetext>Created attachment 240224
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043293</commentid>
    <comment_count>5</comment_count>
      <attachid>240226</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-21 15:49:02 -0700</bug_when>
    <thetext>Created attachment 240226
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043299</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-21 16:07:00 -0700</bug_when>
    <thetext>Committed r175000: &lt;http://trac.webkit.org/changeset/175000&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056105</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-12-16 13:28:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/19269055&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240208</attachid>
            <date>2014-10-21 09:06:50 -0700</date>
            <delta_ts>2014-10-21 14:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137923-20141021090655.patch</filename>
            <type>text/plain</type>
            <size>26487</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU4ZTIyNGVmZWU5MDdk
MWQ2ZTcxNWJiNDU0ZTEwZjA4OTczNGFiMC4uY2E4NWU0ZTgxNTNhODUxYzcwOThkNGE2YTYwMWNm
NTgzM2UzOGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE0LTEwLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtFTUVdW01hY10gVXBkYXRl
IHRvIG1hdGNoIG5ldyBBVlN0cmVhbVNlc3Npb24gQVBJIGFuZCByZXF1aXJlbWVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc2Vzc2lvbiBp
ZGVudGlmaWVyIGhhcyBtb3ZlZCBmcm9tIEFWU3RyZWFtRGF0YVBhcnNlciB0byAtW0FWU3RyZWFt
U2Vzc2lvbiBjb250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyXQorICAgICAgICBhbmQg
dGhlIHByb3BlcnR5IGlzIG5vIGxvbmdlciBLVk9ic2VydmFibGUuIEEgbmV3IG5vdGlmaWNhdGlv
biBrZXkgaGFzIGJlZW4gYWRkZWQgaW4gcGxhY2Ugb2YgS1ZPLgorCisgICAgICAgIEFkZGl0aW9u
YWxseSwgdGhlIHJlcXVpcmVtZW50cyBmb3IgdXNpbmcgQVZTdHJlYW1EYXRhUGFyc2VyIHdpdGgg
QVZTdHJlYW1TZXNzaW9uIGhhdmUgY2hhbmdlZC4gSXQgaXMgbm93CisgICAgICAgIHJlcXVpcmVk
IHRoYXQgQVZTdHJlYW1EYXRhUGFyc2VycyBiZSBhZGRlZCB0byBhbiBBVlN0cmVhbVNlc3Npb24g
YmVmb3JlIHRoZSAKKyAgICAgICAgLXN0cmVhbVNlc3Npb246ZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQgZGVsZWdhdGUgbWV0aG9kIGlzIGNh
bGxlZC4gQQorICAgICAgICAtc3RyZWFtUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEIGRlbGVnYXRlIGhhcyBiZWVuIGFkZGVkLCBh
bmQKKyAgICAgICAgYW4gQVZTdHJlYW1TZXNzaW9uIG11c3QgYmUgY3JlYXRlZCBhbmQgdGhlIEFW
U3RyZWFtRGF0YVBhcnNlciBhZGRlZCB0byBpdCBkdXJpbmcgdGhlIHNjb3BlIG9mIHRoYXQgZGVs
ZWdhdGUKKyAgICAgICAgbWV0aG9kLgorCisgICAgICAgIFRvIGZhY2lsaXRhdGUgdGhpcywgdGhl
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyBvYmplY3Qgd2lsbCBsYXppbHkg
Y3JlYXRlIGFuZCBvd24gYSBBVlN0cmVhbVNlc3Npb24KKyAgICAgICAgb2JqZWN0IHdoZW4gcmVx
dWVzdGVkLiBUaGUgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMgb2JqZWN0IHdpbGwgbGlzdGVu
IGZvciB0aGUgLXdpbGxQcm92aWRlIGRlbGVnYXRlIGNhbGwKKyAgICAgICAgYW5kIHdpbGwgYWRk
IGl0cyBBVlN0cmVhbURhdGFQYXJzZXIgdG8gdGhhdCBBVlN0cmVhbVNlc3Npb24gd2hlbiBjYWxs
ZWQuCisKKyAgICAgICAgVGhlIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMgb2JqZWN0IGlz
IG5vIGxvbmdlciByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhlIEFWU3RyZWFtU2Vzc2lvbiwg
YW5kIGJlY2F1c2UKKyAgICAgICAgdGhlIHNlc3Npb24gaWRlbnRpZmllciBoYXMgbW92ZWQgZnJv
bSBtYW55IEFWU3RyZWFtRGF0YVBhcnNlcnMgdG8gYSBzaW5nbGUgQVZTdHJlYW1TZXNzaW9uLCB0
aGUKKyAgICAgICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIGNsYXNzIGNh
biBiZWNvbWUgbXVjaCBzaW1wbGVyLCBhcyBpdCBvbmx5IGhhcyB0byBvYnNlcnZlIGEgc2luZ2xl
IG9iamVjdC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgor
ICAgICAgICAoLVtDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDT2JzZXJ2ZXIgZGVhbGxvY10p
OiBEZWxldGVkLgorICAgICAgICAoLVtDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDT2JzZXJ2
ZXIgYmVnaW5PYnNlcnZpbmc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0NETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakNPYnNlcnZlciBzdG9wT2JzZXJ2aW5nOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDT2JzZXJ2ZXIgaW52YWxpZGF0ZV0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDT2JzZXJ2ZXIg
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIGNvbnRl
bnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkOl0pOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6On5DRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDKTogQ2FsbCBzZXRTdHJlYW1TZXNzaW9uKG51bGxwdHIpLgorICAgICAgICAo
V2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6cmVsZWFzZUtleXMpOiBUaGUg
c2Vzc2lvbklkIGlzIG5vdyBhIHZhbHVlIGluIHRoZSBkaWN0aW9uYXJ5LCBub3QgdGhlIGtleS4K
KyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZSk6
IE5vIGxvbmdlciBjcmVhdGUgYW4gQVZTdHJlYW1TZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6c2V0U3RyZWFtU2Vzc2lvbik6IEFkZCBhbmQg
cmVtb3ZlIG9ic2VydmVycyBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6IE5vIGxvbmdlciBhZGQg
b3IgcmVtb3ZlIHBhcnNlcnMgZnJvbSBBVlN0cmVhbVNlc3Npb25zLgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6cmVtb3ZlU291cmNlQnVmZmVyKTogRGl0
dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpoYXNTdHJlYW1TZXNzaW9uKTogU2ltcGxlIGdldHRlci4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3RyZWFtU2Vzc2lvbik6
IExhenkgaW5pdGlhbGl6aW5nIGdldHRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Q0RNU2Vzc2lvbik6IENhbGwgc2V0U3RyZWFt
U2Vzc2lvbigpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAg
ICAgICgtW1dlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyIHN0cmVhbVBhcnNlcldpbGxQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6Zm9yVHJhY2tJRDpdKTogU3lu
Y2hyb25vdXNseSBwYXNzIHRvIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKTogQWRkIHRoZSBwYXJzZXIgdG8g
YW4gQVZTdHJlYW1TZXNzaW9uLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZv
clRyYWNrSUQpOiBDaGVjayB0aGUgdHJhY2tJZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU29m
dExpbmtpbmcuaDoKKwogMjAxNC0xMC0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTcwODA4KTogVm9sdW1lIHNsaWRlciBpbiBidWls
dC1pbiBtZWRpYSBjb250cm9scyBvbmx5IGNoYW5nZXMgdm9sdW1lIHdoZW4gdGh1bWIgaXMgcmVs
ZWFzZWQsIG5vdCB3aGlsZSBkcmFnZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDI5YjUwM2M0NDBkMThlNjYz
OGQzMWEyYzAxOTZjYjgxZWEzNGM2ZDkuLjhhYjY1M2Q1MTQxNjgxMDUzODc4MTg5NWQ2MjZmNzMw
OTJiZWY4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBsYXllckRpZFJlY2VpdmVFcnJvcihBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciAq
LCBOU0Vycm9yICopOwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJlckRpZFJlY2VpdmVFcnJvcihB
VlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIgKiwgTlNFcnJvciAqKTsKIAorICAgIHZvaWQgc2V0
U3RyZWFtU2Vzc2lvbihBVlN0cmVhbVNlc3Npb24gKik7CisKICAgICB2b2lkIGFkZFNvdXJjZUJ1
ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyopOwogICAgIHZvaWQgcmVtb3ZlU291cmNl
QnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGRj
ZDYzNzA0NjdjYzM4YTViMjRhMTgzMDEwYzNlMmU0ZmY2OTI0NDcuLmIzN2I0MTJkODQzYTMxYmM0
MDc2ZDNkOWQyNGQ0OGM1Y2ZjMmIzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNDYsMjcgKzQ2LDI3IEBA
CiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19D
TEFTUyhBVkZvdW5kYXRpb24sIEFWU3RyZWFtRGF0YVBhcnNlcik7CiBTT0ZUX0xJTktfQ0xBU1Nf
T1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbVNlc3Npb24pOworU09GVF9MSU5LX0NPTlNU
QU5UX01BWV9GQUlMKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1TZXNzaW9uQ29udGVudFByb3RlY3Rp
b25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRpb24sIE5TU3RyaW5nICopOwogCiBA
aW50ZXJmYWNlIEFWU3RyZWFtRGF0YVBhcnNlciA6IE5TT2JqZWN0CiAtICh2b2lkKXByb2Nlc3ND
b250ZW50S2V5UmVzcG9uc2VEYXRhOihOU0RhdGEgKiljb250ZW50S2V5UmVzcG9uc2VEYXRhIGZv
clRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRDsKIC0gKHZvaWQpcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZUVycm9yOihOU0Vycm9yICopZXJyb3IgZm9yVHJhY2tJRDooQ01QZXJz
aXN0ZW50VHJhY2tJRCl0cmFja0lEOwogLSAodm9pZClyZW5ld0V4cGlyaW5nQ29udGVudEtleVJl
c3BvbnNlRGF0YUZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRDsKIC0gKE5T
RGF0YSAqKXN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDooTlNEYXRhICopYXBw
SWRlbnRpZmllciBjb250ZW50SWRlbnRpZmllcjooTlNEYXRhICopY29udGVudElkZW50aWZpZXIg
dHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEIG9wdGlvbnM6KE5TRGljdGlvbmFy
eSAqKW9wdGlvbnMgZXJyb3I6KE5TRXJyb3IgKiopb3V0RXJyb3I7Ci0tIChOU0RhdGEgKilzZXNz
aW9uSWRlbnRpZmllcjsKIEBlbmQKIAogQGludGVyZmFjZSBBVlN0cmVhbVNlc3Npb24gOiBOU09i
amVjdAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQXBwSWRlbnRpZmllcjooTlNEYXRhICopYXBw
SWRlbnRpZmllciBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6KE5TVVJMICopc3RvcmFnZVVSTCBlcnJv
cjooTlNFcnJvciAqKilvdXRFcnJvcjsKKy0gKEJPT0wpc2V0U3RvcmFnZURpcmVjdG9yeUF0VVJM
OihOU1VSTCAqKXN0b3JhZ2VVUkwgYXBwSWRlbnRpZmllcjooTlNEYXRhICopYXBwSWRlbnRpZmll
ciBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvcjsKIC0gKHZvaWQpYWRkU3RyZWFtRGF0YVBhcnNl
cjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlcjsKIC0gKHZvaWQpcmVtb3Zl
U3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlcjsK
IC0gKHZvaWQpZXhwaXJlOworLSAoTlNEYXRhICopY29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRl
bnRpZmllcjsKICsgKE5TQXJyYXkgKilwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFw
cElkZW50aWZpZXI6KE5TRGF0YSAqKWFwcElkZW50aWZpZXI7CiArICh2b2lkKXJlbW92ZVBlbmRp
bmdFeHBpcmVkU2Vzc2lvblJlcG9ydHM6KE5TQXJyYXkgKilleHBpcmVkU2Vzc2lvblJlcG9ydHMg
d2l0aEFwcElkZW50aWZpZXI6KE5TRGF0YSAqKWFwcElkZW50aWZpZXI7CiBAZW5kCiAKIEBpbnRl
cmZhY2UgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIDogTlNPYmplY3Qgewog
ICAgIFdlYkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMgKm1fcGFyZW50OwotICAg
IEhhc2hTZXQ8UmV0YWluUHRyPEFWU3RyZWFtRGF0YVBhcnNlcj4+IG1fcGFyc2VyczsKIH0KIEBl
bmQKIApAQCAtNzgsNTkgKzc4LDIwIEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5k
YXRpb24sIEFWU3RyZWFtU2Vzc2lvbik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQp
ZGVhbGxvYworLSAodm9pZCljb250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdl
ZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKLSAgICBbc2VsZiBpbnZhbGlkYXRl
XTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLS0gKHZvaWQpYmVnaW5PYnNlcnZpbmc6KEFW
U3RyZWFtRGF0YVBhcnNlciAqKXBhcnNlcgotewotICAgIEFTU0VSVCghbV9wYXJzZXJzLmNvbnRh
aW5zKHBhcnNlcikpOwotICAgIG1fcGFyc2Vycy5hZGQocGFyc2VyKTsKLSAgICBpZiAoW3BhcnNl
ciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNlc3Npb25JZGVudGlmaWVyKV0pCi0gICAg
ICAgIFtwYXJzZXIgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAic2Vzc2lvbklkZW50aWZp
ZXIiIG9wdGlvbnM6KE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXd8TlNLZXlWYWx1ZU9ic2Vy
dmluZ09wdGlvbkluaXRpYWwpIGNvbnRleHQ6bnVsbHB0cl07Ci19CisgICAgQVZTdHJlYW1TZXNz
aW9uKiBzdHJlYW1TZXNzaW9uID0gKEFWU3RyZWFtU2Vzc2lvbiopW25vdGlmaWNhdGlvbiBvYmpl
Y3RdOwogCi0tICh2b2lkKXN0b3BPYnNlcnZpbmc6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXBhcnNl
cgotewotICAgIEFTU0VSVChtX3BhcnNlcnMuY29udGFpbnMocGFyc2VyKSk7Ci0gICAgbV9wYXJz
ZXJzLnJlbW92ZShwYXJzZXIpOwotICAgIGlmIChbcGFyc2VyIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2Vzc2lvbklkZW50aWZpZXIpXSkKLSAgICAgICAgW3BhcnNlciByZW1vdmVPYnNl
cnZlcjpzZWxmIGZvcktleVBhdGg6QCJzZXNzaW9uSWRlbnRpZmllciIgY29udGV4dDpudWxscHRy
XTsKLX0KKyAgICBOU0RhdGEqIGlkZW50aWZpZXIgPSBbc3RyZWFtU2Vzc2lvbiBjb250ZW50UHJv
dGVjdGlvblNlc3Npb25JZGVudGlmaWVyXTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHNlc3Np
b25JZGVudGlmaWVyU3RyaW5nID0gaWRlbnRpZmllciA/IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxv
Y10gaW5pdFdpdGhEYXRhOmlkZW50aWZpZXIgZW5jb2Rpbmc6KE5TVVRGOFN0cmluZ0VuY29kaW5n
KV0pIDogbmlsOwogCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBtX3BhcmVudCA9IG51bGxw
dHI7Ci0gICAgZm9yIChhdXRvJiBwYXJzZXIgOiBtX3BhcnNlcnMpIHsKLSAgICAgICAgaWYgKFtw
YXJzZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXNzaW9uSWRlbnRpZmllcildKQot
ICAgICAgICAgICAgW3BhcnNlciByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzZXNz
aW9uSWRlbnRpZmllciIgY29udGV4dDpudWxscHRyXTsKLSAgICB9Ci0gICAgbV9wYXJzZXJzLmNs
ZWFyKCk7Ci19Ci0KLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilr
ZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2Ug
Y29udGV4dDoodm9pZCopY29udGV4dAotewotICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwotICAg
IFVOVVNFRF9QQVJBTShjaGFuZ2UpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLQotICAg
IGlmIChba2V5UGF0aCBpc0VxdWFsOkAic2Vzc2lvbklkZW50aWZpZXIiXSkgewotICAgICAgICBO
U0RhdGEqIGlkZW50aWZpZXIgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VO
ZXdLZXldOwotICAgICAgICBpZiAoW2lkZW50aWZpZXIgaXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNs
YXNzXV0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBzZXNzaW9uSWRlbnRpZmllclN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhEYXRhOmlkZW50aWZpZXIgZW5jb2Rpbmc6KE5TVVRGOFN0cmluZ0VuY29kaW5nKV0pOwot
ICAgICAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgICAgICBtX3BhcmVudC0+c2V0U2Vzc2lvbklk
KHNlc3Npb25JZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAg
bV9wYXJlbnQtPnNldFNlc3Npb25JZChzZXNzaW9uSWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiB9
CiBAZW5kCiAKK3N0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBA
IlBsYXliYWNrU2Vzc2lvbklEIjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKCkKQEAgLTE0
NSwxMiArMTA2LDkgQEAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6fkNETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMoKQogICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogbV9zb3Vy
Y2VCdWZmZXJzKSB7CiAgICAgICAgIGlmIChtX3N0cmVhbVNlc3Npb24pCiAgICAgICAgICAgICBb
bV9zdHJlYW1TZXNzaW9uIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6c291cmNlQnVmZmVyLT5wYXJz
ZXIoKV07Ci0KLSAgICAgICAgW3NvdXJjZUJ1ZmZlci0+cGFyc2VyKCkgcmVtb3ZlT2JzZXJ2ZXI6
bV9kYXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInNlc3Npb25JZGVudGlmaWVy
IiBjb250ZXh0Om51bGxwdHJdOwogICAgIH0KIAotICAgIG1fc3RyZWFtU2Vzc2lvbiA9IG5pbDsK
LSAgICBbbV9kYXRhUGFyc2VyT2JzZXJ2ZXIgaW52YWxpZGF0ZV07CisgICAgc2V0U3RyZWFtU2Vz
c2lvbihudWxscHRyKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVk
IHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCkBAIC0xODgsNyAr
MTQ2LDEyIEBAIHZvaWQgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6cmVsZWFzZUtleXMo
KQogICAgICAgICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbZ2V0QVZTdHJlYW1TZXNzaW9u
Q2xhc3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6Y2Vy
dGlmaWNhdGVEYXRhLmdldCgpXTsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9u
RGF0YSBpbiBleHBpcmVkU2Vzc2lvbnMpIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhw
aXJlZFNlc3Npb24gPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdp
dGhEYXRhOmV4cGlyZWRTZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJs
ZSBmb3JtYXQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXTsKLSAgICAgICAgICAgIGlmIChbZXhwaXJl
ZFNlc3Npb24gb2JqZWN0Rm9yS2V5Om1fc2Vzc2lvbklkXSkgeworICAgICAgICAgICAgTlNTdHJp
bmcgKnBsYXliYWNrU2Vzc2lvbklkVmFsdWUgPSAoTlNTdHJpbmcgKilbZXhwaXJlZFNlc3Npb24g
b2JqZWN0Rm9yS2V5OlBsYXliYWNrU2Vzc2lvbklkS2V5XTsKKyAgICAgICAgICAgIGlmICghW3Bs
YXliYWNrU2Vzc2lvbklkVmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09
IFN0cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgeworICAgICAgICAgICAgICAgIExPRyhN
ZWRpYSwgIkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbGVhc2VLZXlzKCVwKSAtIGZv
dW5kIHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlvbiBtZXNzYWdlIik7CiAgICAgICAgICAgICAg
ICAgbV9leHBpcmVkU2Vzc2lvbiA9IGV4cGlyZWRTZXNzaW9uRGF0YTsKICAgICAgICAgICAgICAg
ICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lv
biBsZW5ndGhdKS5nZXQoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0yMjksNiArMTkyLDggQEAgYm9vbCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1
cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG4KICAgICB9CiAKICAg
ICBpZiAoaXNFcXVhbChrZXksICJhY2tub3dsZWRnZWQiKSkgeworICAgICAgICBMT0coTWVkaWEs
ICJDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoJXApIC0gYWNrbm93bGVkaW5n
IHNlY3VyZSBzdG9wIG1lc3NhZ2UiLCB0aGlzKTsKKwogICAgICAgICBpZiAoIW1fZXhwaXJlZFNl
c3Npb24pIHsKICAgICAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxh
eWVyU3RhdGU7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzcsNiArMjAyLDcgQEAg
Ym9vbCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoVWludDhBcnJheSoga2V5
LCBSZWZQdHI8VWludDhBcnJheT4mIG4KICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY2VydGlm
aWNhdGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczptX2NlcnRp
ZmljYXRlLT5kYXRhKCkgbGVuZ3RoOm1fY2VydGlmaWNhdGUtPmxlbmd0aCgpXSk7CiAgICAgICAg
IFtnZXRBVlN0cmVhbVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJl
cG9ydHM6QFttX2V4cGlyZWRTZXNzaW9uLmdldCgpXSB3aXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZp
Y2F0ZURhdGEuZ2V0KCldOwogICAgICAgICBtX2V4cGlyZWRTZXNzaW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDPiBwcm90ZWN0ZWRTb3VyY2VCdWZmZXI7CkBAIC0yNDksMTMgKzIxNSwxMSBAQCBi
b29sIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZShVaW50OEFycmF5KiBrZXks
IFJlZlB0cjxVaW50OEFycmF5PiYgbgogCiAgICAgaWYgKHNob3VsZEdlbmVyYXRlS2V5UmVxdWVz
dCkgewogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjZXJ0aWZpY2F0ZURhdGEgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOm1fY2VydGlmaWNhdGUtPmRhdGEoKSBsZW5n
dGg6bV9jZXJ0aWZpY2F0ZS0+bGVuZ3RoKCldKTsKLSAgICAgICAgaWYgKGdldEFWU3RyZWFtU2Vz
c2lvbkNsYXNzKCkgJiYgW2dldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgaW5zdGFuY2VzUmVzcG9u
ZFRvU2VsZWN0b3I6QHNlbGVjdG9yKGluaXRXaXRoQXBwSWRlbnRpZmllcjpzdG9yYWdlRGlyZWN0
b3J5QXRVUkw6ZXJyb3I6KV0pIHsKKyAgICAgICAgaWYgKG1fc3RyZWFtU2Vzc2lvbiAmJiBbbV9z
dHJlYW1TZXNzaW9uIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0U3RvcmFnZURpcmVj
dG9yeUF0VVJMOnN0b3JhZ2VVUkw6YXBwSWRlbnRpZmllcjplcnJvcjopXSkgewogICAgICAgICAg
ICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkgPSBtX2NsaWVudC0+bWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOwogICAgICAgICAgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBtX2NsaWVu
dC0+c2VjdXJpdHlPcmlnaW5JZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBTdHJpbmcgc3RvcmFn
ZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgb3JpZ2lu
SWRlbnRpZmllciArICIubWVkaWFrZXlzIik7Ci0gICAgICAgICAgICBtX3N0cmVhbVNlc3Npb24g
PSBhZG9wdE5TKFtbZ2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhBcHBJ
ZGVudGlmaWVyOmNlcnRpZmljYXRlRGF0YS5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpzdG9yYWdlUGF0aF0gZXJyb3I6bmlsXSk7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6IG1fc291cmNlQnVmZmVycykKLSAgICAgICAgICAg
ICAgICBbbV9zdHJlYW1TZXNzaW9uIGFkZFN0cmVhbURhdGFQYXJzZXI6c291cmNlQnVmZmVyLT5w
YXJzZXIoKV07CisgICAgICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIHNldFN0b3JhZ2VEaXJlY3Rv
cnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXSBhcHBJZGVudGlmaWVy
OmNlcnRpZmljYXRlRGF0YS5nZXQoKSBlcnJvcjpuaWxdOwogICAgICAgICAgICAgTE9HKE1lZGlh
LCAiQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlKCVwKSAtIGNyZWF0ZWQgc3Ry
ZWFtIHNlc3Npb24gJXAiLCB0aGlzLCBtX3N0cmVhbVNlc3Npb24uZ2V0KCkpOwogICAgICAgICB9
CiAKQEAgLTI3MCw3ICsyMzQsNyBAQCBib29sIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6
OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbgogICAgICAgICBO
U0Vycm9yKiBlcnJvciA9IG5pbDsKICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gcmVxdWVzdCA9
IFtwcm90ZWN0ZWRTb3VyY2VCdWZmZXItPnBhcnNlcigpIHN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1
ZXN0RGF0YUZvckFwcDpjZXJ0aWZpY2F0ZURhdGEuZ2V0KCkgY29udGVudElkZW50aWZpZXI6aW5p
dERhdGEuZ2V0KCkgdHJhY2tJRDpwcm90ZWN0ZWRTb3VyY2VCdWZmZXItPnByb3RlY3RlZFRyYWNr
SUQoKSBvcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdOwogCi0gICAgICAgIGlmICghW3Byb3RlY3Rl
ZFNvdXJjZUJ1ZmZlci0+cGFyc2VyKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXNz
aW9uSWRlbnRpZmllcildKQorICAgICAgICBpZiAoIVtwcm90ZWN0ZWRTb3VyY2VCdWZmZXItPnBh
cnNlcigpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoY29udGVudFByb3RlY3Rpb25TZXNz
aW9uSWRlbnRpZmllcildKQogICAgICAgICAgICAgbV9zZXNzaW9uSWQgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CiAKICAgICAgICAgaWYgKGVycm9yKSB7CkBAIC0zMTEsNiArMjc1LDIz
IEBAIHZvaWQgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6cmVuZGVyZXJEaWRSZWNlaXZl
RXJyb3IoQVZTYW1wbGVCdWZmZXJBdWRpb1JlCiAgICAgbV9jbGllbnQtPnNlbmRFcnJvcihDRE1T
ZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yRG9tYWluLCBzdGQ6OmFicyhbZXJyb3IgY29kZV0p
KTsKIH0KIAordm9pZCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRTdHJlYW1TZXNz
aW9uKEFWU3RyZWFtU2Vzc2lvbiAqc3RyZWFtU2Vzc2lvbikKK3sKKyAgICBpZiAobV9zdHJlYW1T
ZXNzaW9uICYmIGNhbkxvYWRBVlN0cmVhbVNlc3Npb25Db250ZW50UHJvdGVjdGlvblNlc3Npb25J
ZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbigpKQorICAgICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fZGF0YVBhcnNlck9ic2VydmVy
LmdldCgpIG5hbWU6Z2V0QVZTdHJlYW1TZXNzaW9uQ29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRl
bnRpZmllckNoYW5nZWROb3RpZmljYXRpb24oKSBvYmplY3Q6bV9zdHJlYW1TZXNzaW9uLmdldCgp
XTsKKworICAgIG1fc3RyZWFtU2Vzc2lvbiA9IHN0cmVhbVNlc3Npb247CisKKyAgICBpZiAobV9z
dHJlYW1TZXNzaW9uKSB7CisgICAgICAgIGlmIChjYW5Mb2FkQVZTdHJlYW1TZXNzaW9uQ29udGVu
dFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRpb24oKSkKKyAgICAg
ICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6
bV9kYXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRQcm90
ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkOikgbmFtZTpnZXRBVlN0cmVhbVNlc3Npb25D
b250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbigpIG9i
amVjdDptX3N0cmVhbVNlc3Npb24uZ2V0KCldOworCisgICAgICAgIE5TRGF0YSogaWRlbnRpZmll
ciA9IFtzdHJlYW1TZXNzaW9uIGNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJdOwor
ICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHNlc3Npb25JZGVudGlmaWVyU3RyaW5nID0gaWRl
bnRpZmllciA/IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmlkZW50aWZp
ZXIgZW5jb2Rpbmc6KE5TVVRGOFN0cmluZ0VuY29kaW5nKV0pIDogbmlsOworICAgICAgICBzZXRT
ZXNzaW9uSWQoc2Vzc2lvbklkZW50aWZpZXJTdHJpbmcuZ2V0KCkpOworICAgIH0KK30KKwogdm9p
ZCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMqIHNvdXJjZUJ1ZmZlcikKIHsKICAgICBBU1NFUlQoIW1fc291cmNl
QnVmZmVycy5jb250YWlucyhzb3VyY2VCdWZmZXIpKTsKQEAgLTMxOCwxMSArMjk5LDYgQEAgdm9p
ZCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMqIHMKIAogICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoc291cmNl
QnVmZmVyKTsKICAgICBzb3VyY2VCdWZmZXItPnJlZ2lzdGVyRm9yRXJyb3JOb3RpZmljYXRpb25z
KHRoaXMpOwotCi0gICAgaWYgKG1fc3RyZWFtU2Vzc2lvbikKLSAgICAgICAgW21fc3RyZWFtU2Vz
c2lvbiBhZGRTdHJlYW1EYXRhUGFyc2VyOnNvdXJjZUJ1ZmZlci0+cGFyc2VyKCldOwotCi0gICAg
W21fZGF0YVBhcnNlck9ic2VydmVyIGJlZ2luT2JzZXJ2aW5nOnNvdXJjZUJ1ZmZlci0+cGFyc2Vy
KCldOwogfQogCiB2b2lkIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbW92ZVNvdXJj
ZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogc291cmNlQnVmZmVyKQpAQCAtMzM1
LDggKzMxMSw2IEBAIHZvaWQgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6cmVtb3ZlU291
cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDCiAKICAgICBzb3VyY2VCdWZmZXIt
PnVucmVnaXN0ZXJGb3JFcnJvck5vdGlmaWNhdGlvbnModGhpcyk7CiAgICAgbV9zb3VyY2VCdWZm
ZXJzLnJlbW92ZShtX3NvdXJjZUJ1ZmZlcnMuZmluZChzb3VyY2VCdWZmZXIpKTsKLQotICAgIFtt
X2RhdGFQYXJzZXJPYnNlcnZlciBzdG9wT2JzZXJ2aW5nOnNvdXJjZUJ1ZmZlci0+cGFyc2VyKCld
OwogfQogCiBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9i
akM6OmdlbmVyYXRlS2V5UmVsZWFzZU1lc3NhZ2UodW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXgg
OWM4OTZiNTEzODAwMDcxYjBmM2EwMmEyNDRjNTA0ODAzYjNiZmU1My4uMjNiYjcyYzU0NmQyNzNh
N2ZmZWMwM2MzN2I3ZDE2OTZjYTA1NjA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAg
LTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19DTEFTUyBBVlNhbXBsZUJ1
ZmZlckF1ZGlvUmVuZGVyZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
OwogT0JKQ19DTEFTUyBBVlNhbXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplcjsKK09CSkNfQ0xB
U1MgQVZTdHJlYW1TZXNzaW9uOwogCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDTVRpbWViYXNlKiBD
TVRpbWViYXNlUmVmOwogCkBAIC04Myw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoYXJh
Y3RlcmlzdGljc0NoYW5nZWQoKTsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisg
ICAgQVZTdHJlYW1TZXNzaW9uICpzdHJlYW1TZXNzaW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dENETVNlc3Npb24oQ0RNU2Vzc2lvbiopIG92ZXJyaWRlOwogICAgIHZvaWQga2V5TmVlZGVkKFVp
bnQ4QXJyYXkqKTsKICNlbmRpZgpAQCAtMTkxLDYgKzE5Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0
YWluUHRyPEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyPiBtX3N5bmNocm9uaXplcjsK
ICAgICBSZXRhaW5QdHI8aWQ+IG1fdGltZUp1bXBlZE9ic2VydmVyOwogICAgIFJldGFpblB0cjxp
ZD4gbV9kdXJhdGlvbk9ic2VydmVyOworICAgIFJldGFpblB0cjxBVlN0cmVhbVNlc3Npb24+IG1f
c3RyZWFtU2Vzc2lvbjsKICAgICBUaW1lcjxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM+IG1fc2Vla1RpbWVyOwogICAgIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMqIG1f
c2Vzc2lvbjsKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGNmN2FiMmZmMzA2YTdiNTg3YzIwZmQzZTAz
MjQ1NzYxMzg4MWZmMzMuLmYwZWI2MWNhYThlMDRmZTc3YjhhNzZkZjU1YjBjMGExODBlMjZiMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTU3LDYgKzU3LDcgQEAgU09GVF9MSU5L
X0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVy
KQogU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlNh
bXBsZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplcikKIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChB
VkZvdW5kYXRpb24sIEFWU3RyZWFtRGF0YVBhcnNlcikKK1NPRlRfTElOS19DTEFTU19PUFRJT05B
TChBVkZvdW5kYXRpb24sIEFWU3RyZWFtU2Vzc2lvbik7CiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9O
QUwoQVZGb3VuZGF0aW9uLCBBVlZpZGVvUGVyZm9ybWFuY2VNZXRyaWNzKQogCiB0eXBlZGVmIHN0
cnVjdCBvcGFxdWVDTU5vdGlmaWNhdGlvbkNlbnRlciAqQ01Ob3RpZmljYXRpb25DZW50ZXJSZWY7
CkBAIC02NjYsNiArNjY3LDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpzaXplQ2hhbmdlZCgpCiB9CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1Yy
KQorQVZTdHJlYW1TZXNzaW9uKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnN0cmVhbVNlc3Npb24oKQoreworICAgIGlmICghbV9zdHJlYW1TZXNzaW9uKQorICAgICAgICBt
X3N0cmVhbVNlc3Npb24gPSBhZG9wdE5TKFtbZ2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSBhbGxv
Y10gaW5pdF0pOworICAgIHJldHVybiBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7Cit9CisKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRDRE1TZXNzaW9uKENETVNl
c3Npb24qIHNlc3Npb24pCiB7CiAgICAgaWYgKG1fc2Vzc2lvbikgewpAQCAtNjc3LDYgKzY4NSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRDRE1TZXNz
aW9uKENETVNlc3Npb24qIHNlc3Npb24pCiAgICAgbV9zZXNzaW9uID0gdG9DRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDKHNlc3Npb24pOwogCiAgICAgaWYgKG1fc2Vzc2lvbikgeworICAgICAg
ICBtX3Nlc3Npb24tPnNldFN0cmVhbVNlc3Npb24obV9zdHJlYW1TZXNzaW9uLmdldCgpKTsKICAg
ICAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX21lZGlhU291cmNlUHJpdmF0ZS0+c291
cmNlQnVmZmVycygpKQogICAgICAgICAgICAgbV9zZXNzaW9uLT5hZGRTb3VyY2VCdWZmZXIoc291
cmNlQnVmZmVyLmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCAxZGM5ODY5ZDBhMzA0MWNmN2U5MmZm
M2RjMzE1MTZiOGEzN2MyM2E4Li40OGU0MjMwM2QzNWVmMWNmYWE1ODE1Yzc2YjM3OWM0Zjk1ZGQ1
YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLmgKQEAgLTgwLDYgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbFRv
UGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqKTsKICAgICB2b2lkIGRpZFByb3ZpZGVN
ZWRpYURhdGFGb3JUcmFja0lEKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3Qg
U3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKTsKICAgICB2b2lkIGRpZFJlYWNoRW5k
T2ZUcmFja1dpdGhUcmFja0lEKGludCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7
CisgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRChpbnQgdHJhY2tJRCk7CiAgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSosIGludCB0cmFja0lEKTsK
IAogICAgIGJvb2wgcHJvY2Vzc0NvZGVkRnJhbWUoaW50IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVy
UmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGZkZTEwY2UxNjNjZDFl
YjM5MjIzOTFiNmI4M2Q5YjlkNzNmNzdmNzkuLjE2MzY0ZmI1NDM2ODI5YjViMmU3ZjhiZjQxMzJk
YWRkNjI3YmQ3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCisjaW1wb3J0ICJCbG9ja0V4Y2VwdGlv
bnMuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiTWVkaWFEZXNjcmlwdGlvbi5oIgpAQCAtNjIsNiArNjMsNyBAQCBT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFzc2V0VHJhY2spCiBTT0ZUX0xJTktfQ0xB
U1MoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQYXJzZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIpCiBTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKK1NPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWU3RyZWFtU2Vzc2lvbikKIAogU09GVF9MSU5LX1BPSU5URVJfT1BU
SU9OQUwoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZVZpZGVvLCBOU1N0cmluZyAqKQogU09GVF9M
SU5LX1BPSU5URVJfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVk1lZGlhVHlwZUF1ZGlvLCBOU1N0
cmluZyAqKQpAQCAtMTE1LDYgKzExNywxNCBAQCBTT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVZpZGVv
Rm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1lbnNpb25zLCBDR1NpemUsCiAjZGVm
aW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUgZ2V0QVZNZWRpYUNoYXJhY3RlcmlzdGlj
TGVnaWJsZSgpCiAKICNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgQVZTdHJlYW1TZXNzaW9u
CisKK0BpbnRlcmZhY2UgQVZTdHJlYW1TZXNzaW9uIDogTlNPYmplY3QKKy0gKHZvaWQpYWRkU3Ry
ZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlcjsKKy0g
KHZvaWQpcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFt
RGF0YVBhcnNlcjsKK0BlbmQKKworI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBBVlN0cmVh
bURhdGFQYXJzZXIKIAogQGludGVyZmFjZSBBVlN0cmVhbURhdGFQYXJzZXIgOiBOU09iamVjdApA
QCAtMjY4LDYgKzI3OCwyNyBAQCBTT0ZUX0xJTksoQ29yZU1lZGlhLCBDTVZpZGVvRm9ybWF0RGVz
Y3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1lbnNpb25zLCBDR1NpemUsCiAgICAgfSk7CiB9CiAK
Ky0gKHZvaWQpc3RyZWFtUGFyc2VyV2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YTooQVZTdHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBmb3JUcmFj
a0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQKK3sKKyNpZiBBU1NFUlRfRElTQUJMRUQK
KyAgICBVTlVTRURfUEFSQU0oc3RyZWFtRGF0YVBhcnNlcik7CisjZW5kaWYKKyAgICBBU1NFUlQo
c3RyZWFtRGF0YVBhcnNlciA9PSBfcGFyc2VyKTsKKworICAgIGlmIChpc01haW5UaHJlYWQoKSkg
eworICAgICAgICBfcGFyZW50LT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIC8vIFdlIG11c3QgY2FsbCBzeW5jaHJvbm91c2x5IHRvIHRoZSBtYWluIHRocmVhZCwgYXMg
dGhlIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGFzc29jaWF0ZWQKKyAgICAvLyB3aXRoIHRoZSBz
dHJlYW1EYXRhUGFyc2VyIGJlZm9yZSB0aGUgZGVsZWdhdGUgbWV0aG9kIHJldHVybnMuCisgICAg
UmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBzdHJvbmdTZWxmID0gc2Vs
ZjsKKyAgICBkaXNwYXRjaF9zeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdT
ZWxmLCB0cmFja0lEXSgpIHsKKyAgICAgICAgaWYgKHN0cm9uZ1NlbGYtPl9wYXJlbnQpCisgICAg
ICAgICAgICBzdHJvbmdTZWxmLT5fcGFyZW50LT53aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh0cmFja0lEKTsKKyAgICB9KTsKK30KKwogLSAo
dm9pZClzdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFy
c2VyIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YTooTlNEYXRh
ICopaW5pdERhdGEgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lECiB7CiAj
aWYgQVNTRVJUX0RJU0FCTEVECkBAIC02NTgsNiArNjg5LDI0IEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFJlYWNoRW5kT2ZUcmFja1dpdGhUcmFja0lEKGludCB0cmFja0lE
LCBjb25zCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0
YUZvclRyYWNrSUQoaW50IHRyYWNrSUQpCit7CisgICAgaWYgKCFtX21lZGlhU291cmNlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9wYXJzZXIpOworCisgICAgVU5VU0VEX1BBUkFN
KHRyYWNrSUQpOworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCisgICAgTE9HKE1lZGlh
U291cmNlLCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKCVwKSAtIHRyYWNrOiVkIiwgdGhp
cywgdHJhY2tJRCk7CisgICAgbV9wcm90ZWN0ZWRUcmFja0lEID0gdHJhY2tJRDsKKworICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkt
PnN0cmVhbVNlc3Npb24oKSBhZGRTdHJlYW1EYXRhUGFyc2VyOm1fcGFyc2VyLmdldCgpXTsKKyAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOworI2VuZGlmCit9CisKIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBpbml0RGF0YSwgaW50IHRyYWNrSUQpCiB7CiAgICAg
aWYgKCFtX21lZGlhU291cmNlKQpAQCAtNjY2LDcgKzcxNSw3IEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9u
RGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKHRyYWNrSUQpOwogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCiAgICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQoJXApIC0gdHJhY2s6JWQiLCB0aGlzLCB0cmFja0lEKTsKLSAgICBtX3Byb3RlY3RlZFRyYWNr
SUQgPSB0cmFja0lEOworICAgIEFTU0VSVCh0cmFja0lEID09IG1fcHJvdGVjdGVkVHJhY2tJRCk7
CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVh
dGUoW2luaXREYXRhIGxlbmd0aF0pOwogICAgIFtpbml0RGF0YSBnZXRCeXRlczppbml0RGF0YUFy
cmF5LT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhQXJyYXktPmxlbmd0aCgpXTsKICAgICBtX21lZGlh
U291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQodGhpcywgaW5pdERhdGFBcnJheS5nZXQoKSk7
CkBAIC03MzMsNiArNzgyLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJv
cnQoKQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKCkK
IHsKKyAgICBpZiAobV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmhhc1N0cmVhbVNlc3Npb24oKSkK
KyAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1TZXNzaW9uKCkgcmVtb3Zl
U3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07CisKICAgICBbbV9kZWxlZ2F0ZSBpbnZh
bGlkYXRlXTsKICAgICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKICAgICBtX3BhcnNlciA9IG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU29mdExpbmtpbmcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oCmluZGV4IGRiZTU4
YjZmYzI4MzBhOTJhMzBjZWQ5NWJjNjdhMzlmNWE2MDgwNWMuLmU4MTExYzJlODU2MWZmODI4OGY1
MDBmZTIzM2U5NzdjYTZiZjA3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9Tb2Z0TGlua2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0
TGlua2luZy5oCkBAIC0yMzYsNyArMjM2LDYgQEAKICAgICAgICAgcmV0dXJuIGNvbnN0YW50IyNu
YW1lOyBcCiAgICAgfQogCi0jaWYgUExBVEZPUk0oSU9TKQogI2RlZmluZSBTT0ZUX0xJTktfQ09O
U1RBTlRfTUFZX0ZBSUwoZnJhbWV3b3JrLCBuYW1lLCB0eXBlKSBcCiAgICAgc3RhdGljIGJvb2wg
aW5pdCMjbmFtZSgpOyBcCiAgICAgc3RhdGljIHR5cGUgKCpnZXQjI25hbWUpKCkgPSAwOyBcCkBA
IC0yNjMsNCArMjYyLDMgQEAKICAgICAgICAgZ2V0IyNuYW1lID0gbmFtZSMjRnVuY3Rpb247IFwK
ICAgICAgICAgcmV0dXJuIHRydWU7IFwKICAgICB9Ci0jZW5kaWYK
</data>
<flag name="review"
          id="264973"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240222</attachid>
            <date>2014-10-21 14:35:57 -0700</date>
            <delta_ts>2014-10-21 15:48:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-137923-20141021143603.patch</filename>
            <type>text/plain</type>
            <size>26290</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRjZGNhNGE0ODNhNThl
MWFhYzk3ZDFhNTk2MjRmODJjYTk5ODYxMy4uNjYwN2RiN2M4ZjZjMjFiYzg2ZDZhOTA2Y2YxYWVm
NjFmMjkyZGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDE0LTEwLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtFTUVdW01hY10gVXBkYXRl
IHRvIG1hdGNoIG5ldyBBVlN0cmVhbVNlc3Npb24gQVBJIGFuZCByZXF1aXJlbWVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVGhlIHNlc3Npb24gaWRl
bnRpZmllciBoYXMgbW92ZWQgZnJvbSBBVlN0cmVhbURhdGFQYXJzZXIgdG8gLVtBVlN0cmVhbVNl
c3Npb24gY29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllcl0KKyAgICAgICAgYW5kIHRo
ZSBwcm9wZXJ0eSBpcyBubyBsb25nZXIgS1ZPYnNlcnZhYmxlLiBBIG5ldyBub3RpZmljYXRpb24g
a2V5IGhhcyBiZWVuIGFkZGVkIGluIHBsYWNlIG9mIEtWTy4KKworICAgICAgICBBZGRpdGlvbmFs
bHksIHRoZSByZXF1aXJlbWVudHMgZm9yIHVzaW5nIEFWU3RyZWFtRGF0YVBhcnNlciB3aXRoIEFW
U3RyZWFtU2Vzc2lvbiBoYXZlIGNoYW5nZWQuIEl0IGlzIG5vdworICAgICAgICByZXF1aXJlZCB0
aGF0IEFWU3RyZWFtRGF0YVBhcnNlcnMgYmUgYWRkZWQgdG8gYW4gQVZTdHJlYW1TZXNzaW9uIGJl
Zm9yZSB0aGUgCisgICAgICAgIC1zdHJlYW1TZXNzaW9uOmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEIGRlbGVnYXRlIG1ldGhvZCBpcyBjYWxs
ZWQuIEEKKyAgICAgICAgLXN0cmVhbVBhcnNlcldpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGE6Zm9yVHJhY2tJRCBkZWxlZ2F0ZSBoYXMgYmVlbiBhZGRlZCwgYW5k
CisgICAgICAgIGFuIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGNyZWF0ZWQgYW5kIHRoZSBBVlN0
cmVhbURhdGFQYXJzZXIgYWRkZWQgdG8gaXQgZHVyaW5nIHRoZSBzY29wZSBvZiB0aGF0IGRlbGVn
YXRlCisgICAgICAgIG1ldGhvZC4KKworICAgICAgICBUbyBmYWNpbGl0YXRlIHRoaXMsIHRoZSBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgb2JqZWN0IHdpbGwgbGF6aWx5IGNy
ZWF0ZSBhbmQgb3duIGEgQVZTdHJlYW1TZXNzaW9uCisgICAgICAgIG9iamVjdCB3aGVuIHJlcXVl
c3RlZC4gVGhlIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIG9iamVjdCB3aWxsIGxpc3RlbiBm
b3IgdGhlIC13aWxsUHJvdmlkZSBkZWxlZ2F0ZSBjYWxsCisgICAgICAgIGFuZCB3aWxsIGFkZCBp
dHMgQVZTdHJlYW1EYXRhUGFyc2VyIHRvIHRoYXQgQVZTdHJlYW1TZXNzaW9uIHdoZW4gY2FsbGVk
LgorCisgICAgICAgIFRoZSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDIG9iamVjdCBpcyBu
byBsb25nZXIgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSBBVlN0cmVhbVNlc3Npb24sIGFu
ZCBiZWNhdXNlCisgICAgICAgIHRoZSBzZXNzaW9uIGlkZW50aWZpZXIgaGFzIG1vdmVkIGZyb20g
bWFueSBBVlN0cmVhbURhdGFQYXJzZXJzIHRvIGEgc2luZ2xlIEFWU3RyZWFtU2Vzc2lvbiwgdGhl
CisgICAgICAgIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakNPYnNlcnZlciBjbGFzcyBjYW4g
YmVjb21lIG11Y2ggc2ltcGxlciwgYXMgaXQgb25seSBoYXMgdG8gb2JzZXJ2ZSBhIHNpbmdsZSBv
YmplY3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAg
ICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIGRlYWxsb2NdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVy
IGJlZ2luT2JzZXJ2aW5nOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDT2JzZXJ2ZXIgc3RvcE9ic2VydmluZzpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIGludmFsaWRhdGVdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakNPYnNlcnZlciBjb250ZW50
UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZDpdKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp+Q0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQyk6IENhbGwgc2V0U3RyZWFtU2Vzc2lvbihudWxscHRyKS4KKyAgICAgICAgKFdl
YkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbGVhc2VLZXlzKTogVGhlIHNl
c3Npb25JZCBpcyBub3cgYSB2YWx1ZSBpbiB0aGUgZGljdGlvbmFyeSwgbm90IHRoZSBrZXkuCisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUpOiBO
byBsb25nZXIgY3JlYXRlIGFuIEFWU3RyZWFtU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnNldFN0cmVhbVNlc3Npb24pOiBBZGQgYW5kIHJl
bW92ZSBvYnNlcnZlcnMgYXMgYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOiBObyBsb25nZXIgYWRkIG9y
IHJlbW92ZSBwYXJzZXJzIGZyb20gQVZTdHJlYW1TZXNzaW9ucy4KKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbW92ZVNvdXJjZUJ1ZmZlcik6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6aGFzU3RyZWFtU2Vzc2lvbik6IFNpbXBsZSBnZXR0ZXIuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN0cmVhbVNlc3Npb24pOiBM
YXp5IGluaXRpYWxpemluZyBnZXR0ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldENETVNlc3Npb24pOiBDYWxsIHNldFN0cmVhbVNl
c3Npb24oKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1QYXJzZXJXaWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6IFN5bmNo
cm9ub3VzbHkgcGFzcyB0byBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy4KKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6IEFkZCB0aGUgcGFyc2VyIHRvIGFu
IEFWU3RyZWFtU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEKTogQ2hlY2sgdGhlIHRyYWNrSWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NvZnRM
aW5raW5nLmg6CisKKzIwMTQtMTAtMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKICAgICAgICAgUkVHUkVTU0lPTiAocjE3MDgwOCk6IFZvbHVtZSBzbGlkZXIgaW4gYnVpbHQt
aW4gbWVkaWEgY29udHJvbHMgb25seSBjaGFuZ2VzIHZvbHVtZSB3aGVuIHRodW1iIGlzIHJlbGVh
c2VkLCBub3Qgd2hpbGUgZHJhZ2dpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzgwNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjliNTAzYzQ0MGQxOGU2NjM4
ZDMxYTJjMDE5NmNiODFlYTM0YzZkOS4uOGFiNjUzZDUxNDE2ODEwNTM4NzgxODk1ZDYyNmY3MzA5
MmJlZjgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGxheWVyRGlkUmVjZWl2ZUVycm9yKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICos
IE5TRXJyb3IgKik7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmVyRGlkUmVjZWl2ZUVycm9yKEFW
U2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqLCBOU0Vycm9yICopOwogCisgICAgdm9pZCBzZXRT
dHJlYW1TZXNzaW9uKEFWU3RyZWFtU2Vzc2lvbiAqKTsKKwogICAgIHZvaWQgYWRkU291cmNlQnVm
ZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKik7CiAgICAgdm9pZCByZW1vdmVTb3VyY2VC
dWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggYTNl
Mzk4ODIyMjA1NGJjZGYzOTg2YTVkMTYwNGU5MzJiNmYzZmZjYy4uZDlkZTI2YTgxMTJlZTBlYjEx
NmUzMWYyZTI1ZjcxNjc2Yjc5YTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC00NSwyNyArNDUsMjcgQEAK
IFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQogU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1EYXRhUGFyc2VyKTsKIFNPRlRfTElOS19DTEFTU19P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWU3RyZWFtU2Vzc2lvbik7CitTT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbVNlc3Npb25Db250ZW50UHJvdGVjdGlv
blNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKik7CiAKIEBp
bnRlcmZhY2UgQVZTdHJlYW1EYXRhUGFyc2VyIDogTlNPYmplY3QKIC0gKHZvaWQpcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZURhdGE6KE5TRGF0YSAqKWNvbnRlbnRLZXlSZXNwb25zZURhdGEgZm9y
VHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEOwogLSAodm9pZClwcm9jZXNzQ29u
dGVudEtleVJlc3BvbnNlRXJyb3I6KE5TRXJyb3IgKillcnJvciBmb3JUcmFja0lEOihDTVBlcnNp
c3RlbnRUcmFja0lEKXRyYWNrSUQ7CiAtICh2b2lkKXJlbmV3RXhwaXJpbmdDb250ZW50S2V5UmVz
cG9uc2VEYXRhRm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEOwogLSAoTlNE
YXRhICopc3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOihOU0RhdGEgKilhcHBJ
ZGVudGlmaWVyIGNvbnRlbnRJZGVudGlmaWVyOihOU0RhdGEgKiljb250ZW50SWRlbnRpZmllciB0
cmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgb3B0aW9uczooTlNEaWN0aW9uYXJ5
ICopb3B0aW9ucyBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvcjsKLS0gKE5TRGF0YSAqKXNlc3Np
b25JZGVudGlmaWVyOwogQGVuZAogCiBAaW50ZXJmYWNlIEFWU3RyZWFtU2Vzc2lvbiA6IE5TT2Jq
ZWN0Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBcHBJZGVudGlmaWVyOihOU0RhdGEgKilhcHBJ
ZGVudGlmaWVyIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDooTlNVUkwgKilzdG9yYWdlVVJMIGVycm9y
OihOU0Vycm9yICoqKW91dEVycm9yOworLSAoQk9PTClzZXRTdG9yYWdlRGlyZWN0b3J5QXRVUkw6
KE5TVVJMICopc3RvcmFnZVVSTCBhcHBJZGVudGlmaWVyOihOU0RhdGEgKilhcHBJZGVudGlmaWVy
IGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yOwogLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogLSAodm9pZClyZW1vdmVT
dHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwog
LSAodm9pZClleHBpcmU7CistIChOU0RhdGEgKiljb250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVu
dGlmaWVyOwogKyAoTlNBcnJheSAqKXBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBw
SWRlbnRpZmllcjooTlNEYXRhICopYXBwSWRlbnRpZmllcjsKICsgKHZvaWQpcmVtb3ZlUGVuZGlu
Z0V4cGlyZWRTZXNzaW9uUmVwb3J0czooTlNBcnJheSAqKWV4cGlyZWRTZXNzaW9uUmVwb3J0cyB3
aXRoQXBwSWRlbnRpZmllcjooTlNEYXRhICopYXBwSWRlbnRpZmllcjsKIEBlbmQKIAogQGludGVy
ZmFjZSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDT2JzZXJ2ZXIgOiBOU09iamVjdCB7CiAg
ICAgV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyAqbV9wYXJlbnQ7Ci0gICAg
SGFzaFNldDxSZXRhaW5QdHI8QVZTdHJlYW1EYXRhUGFyc2VyPj4gbV9wYXJzZXJzOwogfQogQGVu
ZAogCkBAIC03Nyw1OSArNzcsMjAgQEAgU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZTdHJlYW1TZXNzaW9uKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClk
ZWFsbG9jCistICh2b2lkKWNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2Vk
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotICAgIFtzZWxmIGludmFsaWRhdGVd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZCliZWdpbk9ic2VydmluZzooQVZT
dHJlYW1EYXRhUGFyc2VyICopcGFyc2VyCi17Ci0gICAgQVNTRVJUKCFtX3BhcnNlcnMuY29udGFp
bnMocGFyc2VyKSk7Ci0gICAgbV9wYXJzZXJzLmFkZChwYXJzZXIpOwotICAgIGlmIChbcGFyc2Vy
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2Vzc2lvbklkZW50aWZpZXIpXSkKLSAgICAg
ICAgW3BhcnNlciBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzZXNzaW9uSWRlbnRpZmll
ciIgb3B0aW9uczooTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ld3xOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpudWxscHRyXTsKLX0KKyAgICBBVlN0cmVhbVNlc3Np
b24qIHN0cmVhbVNlc3Npb24gPSAoQVZTdHJlYW1TZXNzaW9uKilbbm90aWZpY2F0aW9uIG9iamVj
dF07CiAKLS0gKHZvaWQpc3RvcE9ic2VydmluZzooQVZTdHJlYW1EYXRhUGFyc2VyICopcGFyc2Vy
Ci17Ci0gICAgQVNTRVJUKG1fcGFyc2Vycy5jb250YWlucyhwYXJzZXIpKTsKLSAgICBtX3BhcnNl
cnMucmVtb3ZlKHBhcnNlcik7Ci0gICAgaWYgKFtwYXJzZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXNzaW9uSWRlbnRpZmllcildKQotICAgICAgICBbcGFyc2VyIHJlbW92ZU9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpAInNlc3Npb25JZGVudGlmaWVyIiBjb250ZXh0Om51bGxwdHJd
OwotfQorICAgIE5TRGF0YSogaWRlbnRpZmllciA9IFtzdHJlYW1TZXNzaW9uIGNvbnRlbnRQcm90
ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJdOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc2Vzc2lv
bklkZW50aWZpZXJTdHJpbmcgPSBpZGVudGlmaWVyID8gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6aWRlbnRpZmllciBlbmNvZGluZzooTlNVVEY4U3RyaW5nRW5jb2Rpbmcp
XSkgOiBuaWw7CiAKLS0gKHZvaWQpaW52YWxpZGF0ZQotewotICAgIG1fcGFyZW50ID0gbnVsbHB0
cjsKLSAgICBmb3IgKGF1dG8mIHBhcnNlciA6IG1fcGFyc2VycykgewotICAgICAgICBpZiAoW3Bh
cnNlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNlc3Npb25JZGVudGlmaWVyKV0pCi0g
ICAgICAgICAgICBbcGFyc2VyIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInNlc3Np
b25JZGVudGlmaWVyIiBjb250ZXh0Om51bGxwdHJdOwotICAgIH0KLSAgICBtX3BhcnNlcnMuY2xl
YXIoKTsKLX0KLQotLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtl
eVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBj
b250ZXh0Oih2b2lkKiljb250ZXh0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKG9iamVjdCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGNoYW5nZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwotCi0gICAg
aWYgKFtrZXlQYXRoIGlzRXF1YWw6QCJzZXNzaW9uSWRlbnRpZmllciJdKSB7Ci0gICAgICAgIE5T
RGF0YSogaWRlbnRpZmllciA9IFtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5l
d0tleV07Ci0gICAgICAgIGlmIChbaWRlbnRpZmllciBpc0tpbmRPZkNsYXNzOltOU051bGwgY2xh
c3NdXSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IHNlc3Npb25JZGVudGlmaWVyU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0
V2l0aERhdGE6aWRlbnRpZmllciBlbmNvZGluZzooTlNVVEY4U3RyaW5nRW5jb2RpbmcpXSk7Ci0g
ICAgICAgIGlmIChtX3BhcmVudCkKLSAgICAgICAgICAgIG1fcGFyZW50LT5zZXRTZXNzaW9uSWQo
c2Vzc2lvbklkZW50aWZpZXJTdHJpbmcuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYgKG1fcGFyZW50KQorICAgICAgICBt
X3BhcmVudC0+c2V0U2Vzc2lvbklkKHNlc3Npb25JZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKIH0K
IEBlbmQKIAorc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAi
UGxheWJhY2tTZXNzaW9uSUQiOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakM6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoKQpAQCAtMTQ0
LDEyICsxMDUsOSBAQCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp+Q0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQygpCiAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJj
ZUJ1ZmZlcnMpIHsKICAgICAgICAgaWYgKG1fc3RyZWFtU2Vzc2lvbikKICAgICAgICAgICAgIFtt
X3N0cmVhbVNlc3Npb24gcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjpzb3VyY2VCdWZmZXItPnBhcnNl
cigpXTsKLQotICAgICAgICBbc291cmNlQnVmZmVyLT5wYXJzZXIoKSByZW1vdmVPYnNlcnZlcjpt
X2RhdGFQYXJzZXJPYnNlcnZlci5nZXQoKSBmb3JLZXlQYXRoOkAic2Vzc2lvbklkZW50aWZpZXIi
IGNvbnRleHQ6bnVsbHB0cl07CiAgICAgfQogCi0gICAgbV9zdHJlYW1TZXNzaW9uID0gbmlsOwot
ICAgIFttX2RhdGFQYXJzZXJPYnNlcnZlciBpbnZhbGlkYXRlXTsKKyAgICBzZXRTdHJlYW1TZXNz
aW9uKG51bGxwdHIpOwogfQogCiBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQg
c2hvcnQmIGVycm9yQ29kZSwgdW5zaWduZWQgbG9uZyYgc3lzdGVtQ29kZSkKQEAgLTE4Nyw3ICsx
NDUsMTIgQEAgdm9pZCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjpyZWxlYXNlS2V5cygp
CiAgICAgICAgIE5TQXJyYXkqIGV4cGlyZWRTZXNzaW9ucyA9IFtnZXRBVlN0cmVhbVNlc3Npb25D
bGFzcygpIHBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBwSWRlbnRpZmllcjpjZXJ0
aWZpY2F0ZURhdGEuZ2V0KCldOwogICAgICAgICBmb3IgKE5TRGF0YSogZXhwaXJlZFNlc3Npb25E
YXRhIGluIGV4cGlyZWRTZXNzaW9ucykgewogICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICpleHBp
cmVkU2Vzc2lvbiA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlMaXN0V2l0
aERhdGE6ZXhwaXJlZFNlc3Npb25EYXRhIG9wdGlvbnM6a0NGUHJvcGVydHlMaXN0SW1tdXRhYmxl
IGZvcm1hdDpudWxscHRyIGVycm9yOm51bGxwdHJdOwotICAgICAgICAgICAgaWYgKFtleHBpcmVk
U2Vzc2lvbiBvYmplY3RGb3JLZXk6bV9zZXNzaW9uSWRdKSB7CisgICAgICAgICAgICBOU1N0cmlu
ZyAqcGxheWJhY2tTZXNzaW9uSWRWYWx1ZSA9IChOU1N0cmluZyAqKVtleHBpcmVkU2Vzc2lvbiBv
YmplY3RGb3JLZXk6UGxheWJhY2tTZXNzaW9uSWRLZXldOworICAgICAgICAgICAgaWYgKCFbcGxh
eWJhY2tTZXNzaW9uSWRWYWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAobV9zZXNzaW9uSWQgPT0g
U3RyaW5nKHBsYXliYWNrU2Vzc2lvbklkVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6cmVsZWFzZUtleXMoJXApIC0gZm91
bmQgc2Vzc2lvbiwgc2VuZGluZyBleHBpcmF0aW9uIG1lc3NhZ2UiKTsKICAgICAgICAgICAgICAg
ICBtX2V4cGlyZWRTZXNzaW9uID0gZXhwaXJlZFNlc3Npb25EYXRhOwogICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5zZW5kTWVzc2FnZShVaW50OEFycmF5OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCo+KFttX2V4cGlyZWRTZXNzaW9uIGJ5dGVzXSksIFttX2V4cGlyZWRTZXNzaW9u
IGxlbmd0aF0pLmdldCgpLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTI0MSw2ICsyMDQsOCBAQCBib29sIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnVw
ZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbgogICAgIH0KIAogICAg
IGlmIChpc0VxdWFsKGtleSwgImFja25vd2xlZGdlZCIpKSB7CisgICAgICAgIExPRyhNZWRpYSwg
IkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZSglcCkgLSBhY2tub3dsZWRpbmcg
c2VjdXJlIHN0b3AgbWVzc2FnZSIsIHRoaXMpOworCiAgICAgICAgIGlmICghbV9leHBpcmVkU2Vz
c2lvbikgewogICAgICAgICAgICAgZXJyb3JDb2RlID0gTWVkaWFQbGF5ZXI6OkludmFsaWRQbGF5
ZXJTdGF0ZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0OSw2ICsyMTQsNyBAQCBi
b29sIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZShVaW50OEFycmF5KiBrZXks
IFJlZlB0cjxVaW50OEFycmF5PiYgbgogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjZXJ0aWZp
Y2F0ZURhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOm1fY2VydGlm
aWNhdGUtPmRhdGEoKSBsZW5ndGg6bV9jZXJ0aWZpY2F0ZS0+bGVuZ3RoKCldKTsKICAgICAgICAg
W2dldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgcmVtb3ZlUGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVw
b3J0czpAW21fZXhwaXJlZFNlc3Npb24uZ2V0KCldIHdpdGhBcHBJZGVudGlmaWVyOmNlcnRpZmlj
YXRlRGF0YS5nZXQoKV07CiAgICAgICAgIG1fZXhwaXJlZFNlc3Npb24gPSBudWxscHRyOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+IHByb3RlY3RlZFNvdXJjZUJ1ZmZlcjsKQEAgLTI2MSw4ICsyMjcsOCBAQCBib29s
IENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJl
ZlB0cjxVaW50OEFycmF5PiYgbgogCiAgICAgaWYgKHNob3VsZEdlbmVyYXRlS2V5UmVxdWVzdCkg
ewogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjZXJ0aWZpY2F0ZURhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOm1fY2VydGlmaWNhdGUtPmRhdGEoKSBsZW5ndGg6
bV9jZXJ0aWZpY2F0ZS0+bGVuZ3RoKCldKTsKLSAgICAgICAgaWYgKGdldEFWU3RyZWFtU2Vzc2lv
bkNsYXNzKCkgJiYgW2dldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgaW5zdGFuY2VzUmVzcG9uZFRv
U2VsZWN0b3I6QHNlbGVjdG9yKGluaXRXaXRoQXBwSWRlbnRpZmllcjpzdG9yYWdlRGlyZWN0b3J5
QXRVUkw6ZXJyb3I6KV0pIHsKLSAgICAgICAgICAgIG1fc3RyZWFtU2Vzc2lvbiA9IGFkb3B0TlMo
W1tnZXRBVlN0cmVhbVNlc3Npb25DbGFzcygpIGFsbG9jXSBpbml0V2l0aEFwcElkZW50aWZpZXI6
Y2VydGlmaWNhdGVEYXRhLmdldCgpIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOnNlc3Npb25TdG9yYWdlRGlyZWN0b3J5KCldIGVycm9yOm5pbF0pOworICAgICAg
ICBpZiAobV9zdHJlYW1TZXNzaW9uICYmIFttX3N0cmVhbVNlc3Npb24gcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzZXRTdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3RvcmFnZVVSTDphcHBJZGVu
dGlmaWVyOmVycm9yOildKSB7CisgICAgICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIHNldFN0b3Jh
Z2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnNlc3Npb25TdG9yYWdlRGly
ZWN0b3J5KCldIGFwcElkZW50aWZpZXI6Y2VydGlmaWNhdGVEYXRhLmdldCgpIGVycm9yOm5pbF07
CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6IG1fc291cmNlQnVmZmVycykK
ICAgICAgICAgICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIGFkZFN0cmVhbURhdGFQYXJzZXI6c291
cmNlQnVmZmVyLT5wYXJzZXIoKV07CiAgICAgICAgICAgICBMT0coTWVkaWEsICJDRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoJXApIC0gY3JlYXRlZCBzdHJlYW0gc2Vzc2lvbiAl
cCIsIHRoaXMsIG1fc3RyZWFtU2Vzc2lvbi5nZXQoKSk7CkBAIC0yNzksNyArMjQ1LDcgQEAgYm9v
bCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBS
ZWZQdHI8VWludDhBcnJheT4mIG4KICAgICAgICAgTlNFcnJvciogZXJyb3IgPSBuaWw7CiAgICAg
ICAgIFJldGFpblB0cjxOU0RhdGE+IHJlcXVlc3QgPSBbcHJvdGVjdGVkU291cmNlQnVmZmVyLT5w
YXJzZXIoKSBzdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6Y2VydGlmaWNhdGVE
YXRhLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmluaXREYXRhLmdldCgpIHRyYWNrSUQ6cHJvdGVj
dGVkU291cmNlQnVmZmVyLT5wcm90ZWN0ZWRUcmFja0lEKCkgb3B0aW9uczpuaWwgZXJyb3I6JmVy
cm9yXTsKIAotICAgICAgICBpZiAoIVtwcm90ZWN0ZWRTb3VyY2VCdWZmZXItPnBhcnNlcigpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2Vzc2lvbklkZW50aWZpZXIpXSkKKyAgICAgICAg
aWYgKCFbcHJvdGVjdGVkU291cmNlQnVmZmVyLT5wYXJzZXIoKSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXIpXSkKICAgICAgICAg
ICAgIG1fc2Vzc2lvbklkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwogCiAgICAgICAg
IGlmIChlcnJvcikgewpAQCAtMzIwLDYgKzI4NiwyMyBAQCB2b2lkIENETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakM6OnJlbmRlcmVyRGlkUmVjZWl2ZUVycm9yKEFWU2FtcGxlQnVmZmVyQXVkaW9S
ZQogICAgIG1fY2xpZW50LT5zZW5kRXJyb3IoQ0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJv
ckRvbWFpbiwgc3RkOjphYnMoW2Vycm9yIGNvZGVdKSk7CiB9CiAKK3ZvaWQgQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQzo6c2V0U3RyZWFtU2Vzc2lvbihBVlN0cmVhbVNlc3Npb24gKnN0cmVh
bVNlc3Npb24pCit7CisgICAgaWYgKG1fc3RyZWFtU2Vzc2lvbiAmJiBjYW5Mb2FkQVZTdHJlYW1T
ZXNzaW9uQ29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllckNoYW5nZWROb3RpZmljYXRp
b24oKSkKKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1v
dmVPYnNlcnZlcjptX2RhdGFQYXJzZXJPYnNlcnZlci5nZXQoKSBuYW1lOmdldEFWU3RyZWFtU2Vz
c2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9u
KCkgb2JqZWN0Om1fc3RyZWFtU2Vzc2lvbi5nZXQoKV07CisKKyAgICBtX3N0cmVhbVNlc3Npb24g
PSBzdHJlYW1TZXNzaW9uOworCisgICAgaWYgKG1fc3RyZWFtU2Vzc2lvbikgeworICAgICAgICBp
ZiAoY2FuTG9hZEFWU3RyZWFtU2Vzc2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZp
ZXJDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCisgICAgICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fZGF0YVBhcnNlck9ic2VydmVyLmdldCgp
IHNlbGVjdG9yOkBzZWxlY3Rvcihjb250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hh
bmdlZDopIG5hbWU6Z2V0QVZTdHJlYW1TZXNzaW9uQ29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRl
bnRpZmllckNoYW5nZWROb3RpZmljYXRpb24oKSBvYmplY3Q6bV9zdHJlYW1TZXNzaW9uLmdldCgp
XTsKKworICAgICAgICBOU0RhdGEqIGlkZW50aWZpZXIgPSBbc3RyZWFtU2Vzc2lvbiBjb250ZW50
UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyXTsKKyAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBzZXNzaW9uSWRlbnRpZmllclN0cmluZyA9IGlkZW50aWZpZXIgPyBhZG9wdE5TKFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoRGF0YTppZGVudGlmaWVyIGVuY29kaW5nOihOU1VURjhTdHJpbmdF
bmNvZGluZyldKSA6IG5pbDsKKyAgICAgICAgc2V0U2Vzc2lvbklkKHNlc3Npb25JZGVudGlmaWVy
U3RyaW5nLmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQzo6YWRkU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBzb3VyY2VC
dWZmZXIpCiB7CiAgICAgQVNTRVJUKCFtX3NvdXJjZUJ1ZmZlcnMuY29udGFpbnMoc291cmNlQnVm
ZmVyKSk7CkBAIC0zMjcsMTEgKzMxMCw2IEBAIHZvaWQgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQzo6YWRkU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBzCiAKICAg
ICBtX3NvdXJjZUJ1ZmZlcnMuYXBwZW5kKHNvdXJjZUJ1ZmZlcik7CiAgICAgc291cmNlQnVmZmVy
LT5yZWdpc3RlckZvckVycm9yTm90aWZpY2F0aW9ucyh0aGlzKTsKLQotICAgIGlmIChtX3N0cmVh
bVNlc3Npb24pCi0gICAgICAgIFttX3N0cmVhbVNlc3Npb24gYWRkU3RyZWFtRGF0YVBhcnNlcjpz
b3VyY2VCdWZmZXItPnBhcnNlcigpXTsKLQotICAgIFttX2RhdGFQYXJzZXJPYnNlcnZlciBiZWdp
bk9ic2VydmluZzpzb3VyY2VCdWZmZXItPnBhcnNlcigpXTsKIH0KIAogdm9pZCBDRE1TZXNzaW9u
TWVkaWFTb3VyY2VBVkZPYmpDOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMqIHNvdXJjZUJ1ZmZlcikKQEAgLTM0NCw4ICszMjIsNiBAQCB2b2lkIENETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQwogCiAgICAgc291cmNlQnVmZmVyLT51bnJlZ2lzdGVyRm9yRXJyb3JOb3RpZmlj
YXRpb25zKHRoaXMpOwogICAgIG1fc291cmNlQnVmZmVycy5yZW1vdmUobV9zb3VyY2VCdWZmZXJz
LmZpbmQoc291cmNlQnVmZmVyKSk7Ci0KLSAgICBbbV9kYXRhUGFyc2VyT2JzZXJ2ZXIgc3RvcE9i
c2VydmluZzpzb3VyY2VCdWZmZXItPnBhcnNlcigpXTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OEFy
cmF5PiBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjpnZW5lcmF0ZUtleVJlbGVhc2VNZXNz
YWdlKHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDljODk2YjUxMzgwMDA3MWIwZjNhMDJhMjQ0
YzUwNDgwM2IzYmZlNTMuLjIzYmI3MmM1NDZkMjczYTdmZmVjMDNjMzdiN2QxNjk2Y2EwNTYwNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCkBAIC0zOCw2ICszOCw3IEBAIE9CSkNfQ0xBU1Mg
QVZBc3NldDsKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZmZXJBdWRpb1JlbmRlcmVyOwogT0JKQ19D
TEFTUyBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjsKIE9CSkNfQ0xBU1MgQVZTYW1wbGVCdWZm
ZXJSZW5kZXJTeW5jaHJvbml6ZXI7CitPQkpDX0NMQVNTIEFWU3RyZWFtU2Vzc2lvbjsKIAogdHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlQ01UaW1lYmFzZSogQ01UaW1lYmFzZVJlZjsKIApAQCAtODMsNiAr
ODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCk7CiAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIEFWU3RyZWFtU2Vzc2lvbiAqc3RyZWFt
U2Vzc2lvbigpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDRE1TZXNzaW9uKENETVNlc3Npb24qKSBv
dmVycmlkZTsKICAgICB2b2lkIGtleU5lZWRlZChVaW50OEFycmF5Kik7CiAjZW5kaWYKQEAgLTE5
MSw2ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlclJlbmRl
clN5bmNocm9uaXplcj4gbV9zeW5jaHJvbml6ZXI7CiAgICAgUmV0YWluUHRyPGlkPiBtX3RpbWVK
dW1wZWRPYnNlcnZlcjsKICAgICBSZXRhaW5QdHI8aWQ+IG1fZHVyYXRpb25PYnNlcnZlcjsKKyAg
ICBSZXRhaW5QdHI8QVZTdHJlYW1TZXNzaW9uPiBtX3N0cmVhbVNlc3Npb247CiAgICAgVGltZXI8
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDPiBtX3NlZWtUaW1lcjsKICAgICBD
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKiBtX3Nlc3Npb247CiAgICAgTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpp
bmRleCBjZjdhYjJmZjMwNmE3YjU4N2MyMGZkM2UwMzI0NTc2MTM4ODFmZjMzLi5mMGViNjFjYWE4
ZTA0ZmU3N2I4YTc2ZGY1NWIwYzBhMTgwZTI2YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
Lm1tCkBAIC01Nyw2ICs1Nyw3IEBAIFNPRlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRp
b24sIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcikKIFNPRlRfTElOS19DTEFTU19PUFRJT05B
TChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogU09GVF9MSU5LX0NM
QVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6
ZXIpCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbURhdGFQ
YXJzZXIpCitTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbVNl
c3Npb24pOwogU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZWaWRlb1Bl
cmZvcm1hbmNlTWV0cmljcykKIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01Ob3RpZmljYXRpb25D
ZW50ZXIgKkNNTm90aWZpY2F0aW9uQ2VudGVyUmVmOwpAQCAtNjY2LDYgKzY2NywxMyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2l6ZUNoYW5nZWQoKQogfQog
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKK0FWU3RyZWFtU2Vzc2lvbiogTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdHJlYW1TZXNzaW9uKCkKK3sKKyAgICBp
ZiAoIW1fc3RyZWFtU2Vzc2lvbikKKyAgICAgICAgbV9zdHJlYW1TZXNzaW9uID0gYWRvcHROUyhb
W2dldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICByZXR1cm4gbV9z
dHJlYW1TZXNzaW9uLmdldCgpOworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQzo6c2V0Q0RNU2Vzc2lvbihDRE1TZXNzaW9uKiBzZXNzaW9uKQogewogICAgIGlm
IChtX3Nlc3Npb24pIHsKQEAgLTY3Nyw2ICs2ODUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0Q0RNU2Vzc2lvbihDRE1TZXNzaW9uKiBzZXNzaW9uKQog
ICAgIG1fc2Vzc2lvbiA9IHRvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyhzZXNzaW9uKTsK
IAogICAgIGlmIChtX3Nlc3Npb24pIHsKKyAgICAgICAgbV9zZXNzaW9uLT5zZXRTdHJlYW1TZXNz
aW9uKG1fc3RyZWFtU2Vzc2lvbi5nZXQoKSk7CiAgICAgICAgIGZvciAoYXV0byYgc291cmNlQnVm
ZmVyIDogbV9tZWRpYVNvdXJjZVByaXZhdGUtPnNvdXJjZUJ1ZmZlcnMoKSkKICAgICAgICAgICAg
IG1fc2Vzc2lvbi0+YWRkU291cmNlQnVmZmVyKHNvdXJjZUJ1ZmZlci5nZXQoKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKaW5kZXggMWRjOTg2OWQwYTMwNDFjZjdlOTJmZjNkYzMxNTE2YjhhMzdjMjNhOC4uNDhlNDIz
MDNkMzVlZjFjZmFhNTgxNWM3NmIzNzljNGY5NWRkNWMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC04MCw2ICs4MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihO
U0Vycm9yKik7CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChpbnQgdHJh
Y2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25l
ZCBmbGFncyk7CiAgICAgdm9pZCBkaWRSZWFjaEVuZE9mVHJhY2tXaXRoVHJhY2tJRChpbnQgdHJh
Y2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOworICAgIHZvaWQgd2lsbFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQpOwog
ICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRChOU0RhdGEqLCBpbnQgdHJhY2tJRCk7CiAKICAgICBib29sIHByb2Nlc3NDb2RlZEZy
YW1lKGludCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiwgY29uc3QgU3RyaW5nJiBtZWRpYVR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5tbQppbmRleCBmZGUxMGNlMTYzY2QxZWIzOTIyMzkxYjZiODNkOWI5ZDczZjc3Zjc5
Li4xNjM2NGZiNTQzNjgyOWI1YjJlN2Y4YmY0MTMyZGFkZDYyN2JkN2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNFKEFWRk9VTkRB
VElPTikKIAorI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25D
b2RlUGxhY2Vob2xkZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhRGVz
Y3JpcHRpb24uaCIKQEAgLTYyLDYgKzYzLDcgQEAgU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlv
biwgQVZBc3NldFRyYWNrKQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1E
YXRhUGFyc2VyKQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZmZXJB
dWRpb1JlbmRlcmVyKQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIpCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbVNl
c3Npb24pCiAKIFNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZNZWRp
YVR5cGVWaWRlbywgTlNTdHJpbmcgKikKIFNPRlRfTElOS19QT0lOVEVSX09QVElPTkFMKEFWRm91
bmRhdGlvbiwgQVZNZWRpYVR5cGVBdWRpbywgTlNTdHJpbmcgKikKQEAgLTExNSw2ICsxMTcsMTQg
QEAgU09GVF9MSU5LKENvcmVNZWRpYSwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2Vu
dGF0aW9uRGltZW5zaW9ucywgQ0dTaXplLAogI2RlZmluZSBBVk1lZGlhQ2hhcmFjdGVyaXN0aWNM
ZWdpYmxlIGdldEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUoKQogCiAjcHJhZ21hIG1hcmsg
LQorI3ByYWdtYSBtYXJrIEFWU3RyZWFtU2Vzc2lvbgorCitAaW50ZXJmYWNlIEFWU3RyZWFtU2Vz
c2lvbiA6IE5TT2JqZWN0CistICh2b2lkKWFkZFN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0
YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CistICh2b2lkKXJlbW92ZVN0cmVhbURhdGFQYXJz
ZXI6KEFWU3RyZWFtRGF0YVBhcnNlciAqKXN0cmVhbURhdGFQYXJzZXI7CitAZW5kCisKKyNwcmFn
bWEgbWFyayAtCiAjcHJhZ21hIG1hcmsgQVZTdHJlYW1EYXRhUGFyc2VyCiAKIEBpbnRlcmZhY2Ug
QVZTdHJlYW1EYXRhUGFyc2VyIDogTlNPYmplY3QKQEAgLTI2OCw2ICsyNzgsMjcgQEAgU09GVF9M
SU5LKENvcmVNZWRpYSwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2VudGF0aW9uRGlt
ZW5zaW9ucywgQ0dTaXplLAogICAgIH0pOwogfQogCistICh2b2lkKXN0cmVhbVBhcnNlcldpbGxQ
cm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KEFWU3RyZWFtRGF0YVBh
cnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0
cmFja0lECit7CisjaWYgQVNTRVJUX0RJU0FCTEVECisgICAgVU5VU0VEX1BBUkFNKHN0cmVhbURh
dGFQYXJzZXIpOworI2VuZGlmCisgICAgQVNTRVJUKHN0cmVhbURhdGFQYXJzZXIgPT0gX3BhcnNl
cik7CisKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgX3BhcmVudC0+d2lsbFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQodHJhY2tJ
RCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSBtdXN0IGNhbGwgc3luY2hy
b25vdXNseSB0byB0aGUgbWFpbiB0aHJlYWQsIGFzIHRoZSBBVlN0cmVhbVNlc3Npb24gbXVzdCBi
ZSBhc3NvY2lhdGVkCisgICAgLy8gd2l0aCB0aGUgc3RyZWFtRGF0YVBhcnNlciBiZWZvcmUgdGhl
IGRlbGVnYXRlIG1ldGhvZCByZXR1cm5zLgorICAgIFJldGFpblB0cjxXZWJBVlN0cmVhbURhdGFQ
YXJzZXJMaXN0ZW5lcj4gc3Ryb25nU2VsZiA9IHNlbGY7CisgICAgZGlzcGF0Y2hfc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nU2VsZiwgdHJhY2tJRF0oKSB7CisgICAgICAg
IGlmIChzdHJvbmdTZWxmLT5fcGFyZW50KQorICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3BhcmVu
dC0+d2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNr
SUQodHJhY2tJRCk7CisgICAgfSk7Cit9CisKIC0gKHZvaWQpc3RyZWFtRGF0YVBhcnNlcjooQVZT
dHJlYW1EYXRhUGFyc2VyICopc3RyZWFtRGF0YVBhcnNlciBkaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGE6KE5TRGF0YSAqKWluaXREYXRhIGZvclRyYWNrSUQ6KENN
UGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAogewogI2lmIEFTU0VSVF9ESVNBQkxFRApAQCAtNjU4
LDYgKzY4OSwyNCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRSZWFjaEVu
ZE9mVHJhY2tXaXRoVHJhY2tJRChpbnQgdHJhY2tJRCwgY29ucwogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxQcm92aWRlQ29u
dGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludCB0cmFja0lEKQor
eworICAgIGlmICghbV9tZWRpYVNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJU
KG1fcGFyc2VyKTsKKworICAgIFVOVVNFRF9QQVJBTSh0cmFja0lEKTsKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQorICAgIExPRyhNZWRpYVNvdXJjZSwgIlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCglcCkgLSB0cmFjazolZCIsIHRoaXMsIHRyYWNrSUQpOworICAgIG1fcHJvdGVj
dGVkVHJhY2tJRCA9IHRyYWNrSUQ7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CisgICAgW21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1TZXNzaW9uKCkgYWRkU3RyZWFt
RGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKKyNlbmRpZgorfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKE5TRGF0YSog
aW5pdERhdGEsIGludCB0cmFja0lEKQogewogICAgIGlmICghbV9tZWRpYVNvdXJjZSkKQEAgLTY2
Niw3ICs3MTUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGbwogICAgIFVOVVNFRF9QQVJBTSh0
cmFja0lEKTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogICAgIExPRyhNZWRpYVNv
dXJjZSwgIlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJl
cXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKCVwKSAtIHRyYWNrOiVkIiwgdGhpcywg
dHJhY2tJRCk7Ci0gICAgbV9wcm90ZWN0ZWRUcmFja0lEID0gdHJhY2tJRDsKKyAgICBBU1NFUlQo
dHJhY2tJRCA9PSBtX3Byb3RlY3RlZFRyYWNrSUQpOwogICAgIFJlZlB0cjxVaW50OEFycmF5PiBp
bml0RGF0YUFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKFtpbml0RGF0YSBsZW5ndGhdKTsKICAg
ICBbaW5pdERhdGEgZ2V0Qnl0ZXM6aW5pdERhdGFBcnJheS0+ZGF0YSgpIGxlbmd0aDppbml0RGF0
YUFycmF5LT5sZW5ndGgoKV07CiAgICAgbV9tZWRpYVNvdXJjZS0+c291cmNlQnVmZmVyS2V5TmVl
ZGVkKHRoaXMsIGluaXREYXRhQXJyYXkuZ2V0KCkpOwpAQCAtNzMzLDYgKzc4Miw5IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KCkKIAogdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6ZGVzdHJveVBhcnNlcigpCiB7CisgICAgaWYgKG1fbWVkaWFTb3VyY2Ut
PnBsYXllcigpLT5oYXNTdHJlYW1TZXNzaW9uKCkpCisgICAgICAgIFttX21lZGlhU291cmNlLT5w
bGF5ZXIoKS0+c3RyZWFtU2Vzc2lvbigpIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6bV9wYXJzZXIu
Z2V0KCldOworCiAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07CiAgICAgbV9kZWxlZ2F0ZSA9
IG51bGxwdHI7CiAgICAgbV9wYXJzZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1NvZnRMaW5raW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU29mdExpbmtpbmcuaAppbmRleCBkYmU1OGI2ZmMyODMwYTkyYTMwY2VkOTViYzY3YTM5
ZjVhNjA4MDVjLi5lODExMWMyZTg1NjFmZjgyODhmNTAwZmUyMzNlOTc3Y2E2YmYwNzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU29mdExpbmtpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU29mdExpbmtpbmcuaApAQCAtMjM2LDcgKzIzNiw2
IEBACiAgICAgICAgIHJldHVybiBjb25zdGFudCMjbmFtZTsgXAogICAgIH0KIAotI2lmIFBMQVRG
T1JNKElPUykKICNkZWZpbmUgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKGZyYW1ld29yaywg
bmFtZSwgdHlwZSkgXAogICAgIHN0YXRpYyBib29sIGluaXQjI25hbWUoKTsgXAogICAgIHN0YXRp
YyB0eXBlICgqZ2V0IyNuYW1lKSgpID0gMDsgXApAQCAtMjYzLDQgKzI2MiwzIEBACiAgICAgICAg
IGdldCMjbmFtZSA9IG5hbWUjI0Z1bmN0aW9uOyBcCiAgICAgICAgIHJldHVybiB0cnVlOyBcCiAg
ICAgfQotI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240224</attachid>
            <date>2014-10-21 15:48:29 -0700</date>
            <delta_ts>2014-10-21 15:49:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-137923-20141021154835.patch</filename>
            <type>text/plain</type>
            <size>26343</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRjZGNhNGE0ODNhNThl
MWFhYzk3ZDFhNTk2MjRmODJjYTk5ODYxMy4uNjYwN2RiN2M4ZjZjMjFiYzg2ZDZhOTA2Y2YxYWVm
NjFmMjkyZGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDE0LTEwLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtFTUVdW01hY10gVXBkYXRl
IHRvIG1hdGNoIG5ldyBBVlN0cmVhbVNlc3Npb24gQVBJIGFuZCByZXF1aXJlbWVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVGhlIHNlc3Npb24gaWRl
bnRpZmllciBoYXMgbW92ZWQgZnJvbSBBVlN0cmVhbURhdGFQYXJzZXIgdG8gLVtBVlN0cmVhbVNl
c3Npb24gY29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllcl0KKyAgICAgICAgYW5kIHRo
ZSBwcm9wZXJ0eSBpcyBubyBsb25nZXIgS1ZPYnNlcnZhYmxlLiBBIG5ldyBub3RpZmljYXRpb24g
a2V5IGhhcyBiZWVuIGFkZGVkIGluIHBsYWNlIG9mIEtWTy4KKworICAgICAgICBBZGRpdGlvbmFs
bHksIHRoZSByZXF1aXJlbWVudHMgZm9yIHVzaW5nIEFWU3RyZWFtRGF0YVBhcnNlciB3aXRoIEFW
U3RyZWFtU2Vzc2lvbiBoYXZlIGNoYW5nZWQuIEl0IGlzIG5vdworICAgICAgICByZXF1aXJlZCB0
aGF0IEFWU3RyZWFtRGF0YVBhcnNlcnMgYmUgYWRkZWQgdG8gYW4gQVZTdHJlYW1TZXNzaW9uIGJl
Zm9yZSB0aGUgCisgICAgICAgIC1zdHJlYW1TZXNzaW9uOmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEIGRlbGVnYXRlIG1ldGhvZCBpcyBjYWxs
ZWQuIEEKKyAgICAgICAgLXN0cmVhbVBhcnNlcldpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGE6Zm9yVHJhY2tJRCBkZWxlZ2F0ZSBoYXMgYmVlbiBhZGRlZCwgYW5k
CisgICAgICAgIGFuIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGNyZWF0ZWQgYW5kIHRoZSBBVlN0
cmVhbURhdGFQYXJzZXIgYWRkZWQgdG8gaXQgZHVyaW5nIHRoZSBzY29wZSBvZiB0aGF0IGRlbGVn
YXRlCisgICAgICAgIG1ldGhvZC4KKworICAgICAgICBUbyBmYWNpbGl0YXRlIHRoaXMsIHRoZSBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgb2JqZWN0IHdpbGwgbGF6aWx5IGNy
ZWF0ZSBhbmQgb3duIGEgQVZTdHJlYW1TZXNzaW9uCisgICAgICAgIG9iamVjdCB3aGVuIHJlcXVl
c3RlZC4gVGhlIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIG9iamVjdCB3aWxsIGxpc3RlbiBm
b3IgdGhlIC13aWxsUHJvdmlkZSBkZWxlZ2F0ZSBjYWxsCisgICAgICAgIGFuZCB3aWxsIGFkZCBp
dHMgQVZTdHJlYW1EYXRhUGFyc2VyIHRvIHRoYXQgQVZTdHJlYW1TZXNzaW9uIHdoZW4gY2FsbGVk
LgorCisgICAgICAgIFRoZSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDIG9iamVjdCBpcyBu
byBsb25nZXIgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSBBVlN0cmVhbVNlc3Npb24sIGFu
ZCBiZWNhdXNlCisgICAgICAgIHRoZSBzZXNzaW9uIGlkZW50aWZpZXIgaGFzIG1vdmVkIGZyb20g
bWFueSBBVlN0cmVhbURhdGFQYXJzZXJzIHRvIGEgc2luZ2xlIEFWU3RyZWFtU2Vzc2lvbiwgdGhl
CisgICAgICAgIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakNPYnNlcnZlciBjbGFzcyBjYW4g
YmVjb21lIG11Y2ggc2ltcGxlciwgYXMgaXQgb25seSBoYXMgdG8gb2JzZXJ2ZSBhIHNpbmdsZSBv
YmplY3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAg
ICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIGRlYWxsb2NdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVy
IGJlZ2luT2JzZXJ2aW5nOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDT2JzZXJ2ZXIgc3RvcE9ic2VydmluZzpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIGludmFsaWRhdGVdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakNPYnNlcnZlciBjb250ZW50
UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZDpdKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp+Q0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQyk6IENhbGwgc2V0U3RyZWFtU2Vzc2lvbihudWxscHRyKS4KKyAgICAgICAgKFdl
YkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbGVhc2VLZXlzKTogVGhlIHNl
c3Npb25JZCBpcyBub3cgYSB2YWx1ZSBpbiB0aGUgZGljdGlvbmFyeSwgbm90IHRoZSBrZXkuCisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUpOiBO
byBsb25nZXIgY3JlYXRlIGFuIEFWU3RyZWFtU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnNldFN0cmVhbVNlc3Npb24pOiBBZGQgYW5kIHJl
bW92ZSBvYnNlcnZlcnMgYXMgYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOiBObyBsb25nZXIgYWRkIG9y
IHJlbW92ZSBwYXJzZXJzIGZyb20gQVZTdHJlYW1TZXNzaW9ucy4KKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbW92ZVNvdXJjZUJ1ZmZlcik6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6aGFzU3RyZWFtU2Vzc2lvbik6IFNpbXBsZSBnZXR0ZXIuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN0cmVhbVNlc3Npb24pOiBM
YXp5IGluaXRpYWxpemluZyBnZXR0ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldENETVNlc3Npb24pOiBDYWxsIHNldFN0cmVhbVNl
c3Npb24oKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1QYXJzZXJXaWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6IFN5bmNo
cm9ub3VzbHkgcGFzcyB0byBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy4KKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6IEFkZCB0aGUgcGFyc2VyIHRvIGFu
IEFWU3RyZWFtU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEKTogQ2hlY2sgdGhlIHRyYWNrSWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NvZnRM
aW5raW5nLmg6CisKKzIwMTQtMTAtMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKICAgICAgICAgUkVHUkVTU0lPTiAocjE3MDgwOCk6IFZvbHVtZSBzbGlkZXIgaW4gYnVpbHQt
aW4gbWVkaWEgY29udHJvbHMgb25seSBjaGFuZ2VzIHZvbHVtZSB3aGVuIHRodW1iIGlzIHJlbGVh
c2VkLCBub3Qgd2hpbGUgZHJhZ2dpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzgwNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjliNTAzYzQ0MGQxOGU2NjM4
ZDMxYTJjMDE5NmNiODFlYTM0YzZkOS4uOGFiNjUzZDUxNDE2ODEwNTM4NzgxODk1ZDYyNmY3MzA5
MmJlZjgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGxheWVyRGlkUmVjZWl2ZUVycm9yKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICos
IE5TRXJyb3IgKik7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmVyRGlkUmVjZWl2ZUVycm9yKEFW
U2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqLCBOU0Vycm9yICopOwogCisgICAgdm9pZCBzZXRT
dHJlYW1TZXNzaW9uKEFWU3RyZWFtU2Vzc2lvbiAqKTsKKwogICAgIHZvaWQgYWRkU291cmNlQnVm
ZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKik7CiAgICAgdm9pZCByZW1vdmVTb3VyY2VC
dWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggYTNl
Mzk4ODIyMjA1NGJjZGYzOTg2YTVkMTYwNGU5MzJiNmYzZmZjYy4uNDEwMGZkMTc4NjE1NzM2YjI0
ZTc4ODc4MTU4Yzg3NjhiZWY3NTlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC00NSwyNyArNDUsMjcgQEAK
IFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQogU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1EYXRhUGFyc2VyKTsKIFNPRlRfTElOS19DTEFTU19P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWU3RyZWFtU2Vzc2lvbik7CitTT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbVNlc3Npb25Db250ZW50UHJvdGVjdGlv
blNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKik7CiAKIEBp
bnRlcmZhY2UgQVZTdHJlYW1EYXRhUGFyc2VyIDogTlNPYmplY3QKIC0gKHZvaWQpcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZURhdGE6KE5TRGF0YSAqKWNvbnRlbnRLZXlSZXNwb25zZURhdGEgZm9y
VHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEOwogLSAodm9pZClwcm9jZXNzQ29u
dGVudEtleVJlc3BvbnNlRXJyb3I6KE5TRXJyb3IgKillcnJvciBmb3JUcmFja0lEOihDTVBlcnNp
c3RlbnRUcmFja0lEKXRyYWNrSUQ7CiAtICh2b2lkKXJlbmV3RXhwaXJpbmdDb250ZW50S2V5UmVz
cG9uc2VEYXRhRm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEOwogLSAoTlNE
YXRhICopc3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOihOU0RhdGEgKilhcHBJ
ZGVudGlmaWVyIGNvbnRlbnRJZGVudGlmaWVyOihOU0RhdGEgKiljb250ZW50SWRlbnRpZmllciB0
cmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgb3B0aW9uczooTlNEaWN0aW9uYXJ5
ICopb3B0aW9ucyBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvcjsKLS0gKE5TRGF0YSAqKXNlc3Np
b25JZGVudGlmaWVyOwogQGVuZAogCiBAaW50ZXJmYWNlIEFWU3RyZWFtU2Vzc2lvbiA6IE5TT2Jq
ZWN0Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBcHBJZGVudGlmaWVyOihOU0RhdGEgKilhcHBJ
ZGVudGlmaWVyIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDooTlNVUkwgKilzdG9yYWdlVVJMIGVycm9y
OihOU0Vycm9yICoqKW91dEVycm9yOworLSAoQk9PTClzZXRTdG9yYWdlRGlyZWN0b3J5QXRVUkw6
KE5TVVJMICopc3RvcmFnZVVSTCBhcHBJZGVudGlmaWVyOihOU0RhdGEgKilhcHBJZGVudGlmaWVy
IGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yOwogLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogLSAodm9pZClyZW1vdmVT
dHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwog
LSAodm9pZClleHBpcmU7CistIChOU0RhdGEgKiljb250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVu
dGlmaWVyOwogKyAoTlNBcnJheSAqKXBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBw
SWRlbnRpZmllcjooTlNEYXRhICopYXBwSWRlbnRpZmllcjsKICsgKHZvaWQpcmVtb3ZlUGVuZGlu
Z0V4cGlyZWRTZXNzaW9uUmVwb3J0czooTlNBcnJheSAqKWV4cGlyZWRTZXNzaW9uUmVwb3J0cyB3
aXRoQXBwSWRlbnRpZmllcjooTlNEYXRhICopYXBwSWRlbnRpZmllcjsKIEBlbmQKIAogQGludGVy
ZmFjZSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDT2JzZXJ2ZXIgOiBOU09iamVjdCB7CiAg
ICAgV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyAqbV9wYXJlbnQ7Ci0gICAg
SGFzaFNldDxSZXRhaW5QdHI8QVZTdHJlYW1EYXRhUGFyc2VyPj4gbV9wYXJzZXJzOwogfQogQGVu
ZAogCkBAIC03Nyw1OSArNzcsMjAgQEAgU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZTdHJlYW1TZXNzaW9uKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClk
ZWFsbG9jCistICh2b2lkKWNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2Vk
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotICAgIFtzZWxmIGludmFsaWRhdGVd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZCliZWdpbk9ic2VydmluZzooQVZT
dHJlYW1EYXRhUGFyc2VyICopcGFyc2VyCi17Ci0gICAgQVNTRVJUKCFtX3BhcnNlcnMuY29udGFp
bnMocGFyc2VyKSk7Ci0gICAgbV9wYXJzZXJzLmFkZChwYXJzZXIpOwotICAgIGlmIChbcGFyc2Vy
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2Vzc2lvbklkZW50aWZpZXIpXSkKLSAgICAg
ICAgW3BhcnNlciBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzZXNzaW9uSWRlbnRpZmll
ciIgb3B0aW9uczooTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ld3xOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpudWxscHRyXTsKLX0KKyAgICBBVlN0cmVhbVNlc3Np
b24qIHN0cmVhbVNlc3Npb24gPSAoQVZTdHJlYW1TZXNzaW9uKilbbm90aWZpY2F0aW9uIG9iamVj
dF07CiAKLS0gKHZvaWQpc3RvcE9ic2VydmluZzooQVZTdHJlYW1EYXRhUGFyc2VyICopcGFyc2Vy
Ci17Ci0gICAgQVNTRVJUKG1fcGFyc2Vycy5jb250YWlucyhwYXJzZXIpKTsKLSAgICBtX3BhcnNl
cnMucmVtb3ZlKHBhcnNlcik7Ci0gICAgaWYgKFtwYXJzZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXNzaW9uSWRlbnRpZmllcildKQotICAgICAgICBbcGFyc2VyIHJlbW92ZU9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpAInNlc3Npb25JZGVudGlmaWVyIiBjb250ZXh0Om51bGxwdHJd
OwotfQorICAgIE5TRGF0YSogaWRlbnRpZmllciA9IFtzdHJlYW1TZXNzaW9uIGNvbnRlbnRQcm90
ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJdOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc2Vzc2lv
bklkZW50aWZpZXJTdHJpbmcgPSBpZGVudGlmaWVyID8gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6aWRlbnRpZmllciBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
IDogbmlsOwogCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBtX3BhcmVudCA9IG51bGxwdHI7
Ci0gICAgZm9yIChhdXRvJiBwYXJzZXIgOiBtX3BhcnNlcnMpIHsKLSAgICAgICAgaWYgKFtwYXJz
ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXNzaW9uSWRlbnRpZmllcildKQotICAg
ICAgICAgICAgW3BhcnNlciByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzZXNzaW9u
SWRlbnRpZmllciIgY29udGV4dDpudWxscHRyXTsKLSAgICB9Ci0gICAgbV9wYXJzZXJzLmNsZWFy
KCk7Ci19Ci0KLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQ
YXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29u
dGV4dDoodm9pZCopY29udGV4dAotewotICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwotICAgIFVO
VVNFRF9QQVJBTShjaGFuZ2UpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLQotICAgIGlm
IChba2V5UGF0aCBpc0VxdWFsOkAic2Vzc2lvbklkZW50aWZpZXIiXSkgewotICAgICAgICBOU0Rh
dGEqIGlkZW50aWZpZXIgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdL
ZXldOwotICAgICAgICBpZiAoW2lkZW50aWZpZXIgaXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNsYXNz
XV0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBz
ZXNzaW9uSWRlbnRpZmllclN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhEYXRhOmlkZW50aWZpZXIgZW5jb2Rpbmc6KE5TVVRGOFN0cmluZ0VuY29kaW5nKV0pOwotICAg
ICAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgICAgICBtX3BhcmVudC0+c2V0U2Vzc2lvbklkKHNl
c3Npb25JZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAgbV9w
YXJlbnQtPnNldFNlc3Npb25JZChzZXNzaW9uSWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiB9CiBA
ZW5kCiAKK3N0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBs
YXliYWNrU2Vzc2lvbklEIjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKCkKQEAgLTE0NCwx
MiArMTA1LDkgQEAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6fkNETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMoKQogICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogbV9zb3VyY2VC
dWZmZXJzKSB7CiAgICAgICAgIGlmIChtX3N0cmVhbVNlc3Npb24pCiAgICAgICAgICAgICBbbV9z
dHJlYW1TZXNzaW9uIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6c291cmNlQnVmZmVyLT5wYXJzZXIo
KV07Ci0KLSAgICAgICAgW3NvdXJjZUJ1ZmZlci0+cGFyc2VyKCkgcmVtb3ZlT2JzZXJ2ZXI6bV9k
YXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInNlc3Npb25JZGVudGlmaWVyIiBj
b250ZXh0Om51bGxwdHJdOwogICAgIH0KIAotICAgIG1fc3RyZWFtU2Vzc2lvbiA9IG5pbDsKLSAg
ICBbbV9kYXRhUGFyc2VyT2JzZXJ2ZXIgaW52YWxpZGF0ZV07CisgICAgc2V0U3RyZWFtU2Vzc2lv
bihudWxscHRyKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
VWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNo
b3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCkBAIC0xODcsNyArMTQ1
LDEyIEBAIHZvaWQgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6cmVsZWFzZUtleXMoKQog
ICAgICAgICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbZ2V0QVZTdHJlYW1TZXNzaW9uQ2xh
c3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6Y2VydGlm
aWNhdGVEYXRhLmdldCgpXTsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0
YSBpbiBleHBpcmVkU2Vzc2lvbnMpIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhwaXJl
ZFNlc3Npb24gPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhE
YXRhOmV4cGlyZWRTZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSBm
b3JtYXQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXTsKLSAgICAgICAgICAgIGlmIChbZXhwaXJlZFNl
c3Npb24gb2JqZWN0Rm9yS2V5Om1fc2Vzc2lvbklkXSkgeworICAgICAgICAgICAgTlNTdHJpbmcg
KnBsYXliYWNrU2Vzc2lvbklkVmFsdWUgPSAoTlNTdHJpbmcgKilbZXhwaXJlZFNlc3Npb24gb2Jq
ZWN0Rm9yS2V5OlBsYXliYWNrU2Vzc2lvbklkS2V5XTsKKyAgICAgICAgICAgIGlmICghW3BsYXli
YWNrU2Vzc2lvbklkVmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0
cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgeworICAgICAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbGVhc2VLZXlzKCVwKSAtIGZvdW5k
IHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlvbiBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAg
bV9leHBpcmVkU2Vzc2lvbiA9IGV4cGlyZWRTZXNzaW9uRGF0YTsKICAgICAgICAgICAgICAgICBt
X2NsaWVudC0+c2VuZE1lc3NhZ2UoVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBs
ZW5ndGhdKS5nZXQoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0yNDEsNiArMjA0LDggQEAgYm9vbCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRh
dGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG4KICAgICB9CiAKICAgICBp
ZiAoaXNFcXVhbChrZXksICJhY2tub3dsZWRnZWQiKSkgeworICAgICAgICBMT0coTWVkaWEsICJD
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoJXApIC0gYWNrbm93bGVkaW5nIHNl
Y3VyZSBzdG9wIG1lc3NhZ2UiLCB0aGlzKTsKKwogICAgICAgICBpZiAoIW1fZXhwaXJlZFNlc3Np
b24pIHsKICAgICAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVy
U3RhdGU7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDksNiArMjE0LDcgQEAgYm9v
bCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBS
ZWZQdHI8VWludDhBcnJheT4mIG4KICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY2VydGlmaWNh
dGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczptX2NlcnRpZmlj
YXRlLT5kYXRhKCkgbGVuZ3RoOm1fY2VydGlmaWNhdGUtPmxlbmd0aCgpXSk7CiAgICAgICAgIFtn
ZXRBVlN0cmVhbVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHM6QFttX2V4cGlyZWRTZXNzaW9uLmdldCgpXSB3aXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZpY2F0
ZURhdGEuZ2V0KCldOwogICAgICAgICBtX2V4cGlyZWRTZXNzaW9uID0gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDPiBwcm90ZWN0ZWRTb3VyY2VCdWZmZXI7CkBAIC0yNjEsOCArMjI3LDggQEAgYm9vbCBD
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQ
dHI8VWludDhBcnJheT4mIG4KIAogICAgIGlmIChzaG91bGRHZW5lcmF0ZUtleVJlcXVlc3QpIHsK
ICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY2VydGlmaWNhdGVEYXRhID0gYWRvcHROUyhbW05T
RGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczptX2NlcnRpZmljYXRlLT5kYXRhKCkgbGVuZ3RoOm1f
Y2VydGlmaWNhdGUtPmxlbmd0aCgpXSk7Ci0gICAgICAgIGlmIChnZXRBVlN0cmVhbVNlc3Npb25D
bGFzcygpICYmIFtnZXRBVlN0cmVhbVNlc3Npb25DbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihpbml0V2l0aEFwcElkZW50aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0
VVJMOmVycm9yOildKSB7Ci0gICAgICAgICAgICBtX3N0cmVhbVNlc3Npb24gPSBhZG9wdE5TKFtb
Z2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhBcHBJZGVudGlmaWVyOmNl
cnRpZmljYXRlRGF0YS5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpzZXNzaW9uU3RvcmFnZURpcmVjdG9yeSgpXSBlcnJvcjpuaWxdKTsKKyAgICAgICAg
aWYgKG1fc3RyZWFtU2Vzc2lvbiAmJiBbbV9zdHJlYW1TZXNzaW9uIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc2V0U3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkw6YXBwSWRlbnRp
ZmllcjplcnJvcjopXSkgeworICAgICAgICAgICAgW21fc3RyZWFtU2Vzc2lvbiBzZXRTdG9yYWdl
RGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzZXNzaW9uU3RvcmFnZURpcmVj
dG9yeSgpXSBhcHBJZGVudGlmaWVyOmNlcnRpZmljYXRlRGF0YS5nZXQoKSBlcnJvcjpuaWxdOwog
ICAgICAgICAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZlcnMpCiAg
ICAgICAgICAgICAgICAgW21fc3RyZWFtU2Vzc2lvbiBhZGRTdHJlYW1EYXRhUGFyc2VyOnNvdXJj
ZUJ1ZmZlci0+cGFyc2VyKCldOwogICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlKCVwKSAtIGNyZWF0ZWQgc3RyZWFtIHNlc3Npb24gJXAi
LCB0aGlzLCBtX3N0cmVhbVNlc3Npb24uZ2V0KCkpOwpAQCAtMjc5LDcgKzI0NSw3IEBAIGJvb2wg
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuCiAgICAgICAgIE5TRXJyb3IqIGVycm9yID0gbmlsOwogICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiByZXF1ZXN0ID0gW3Byb3RlY3RlZFNvdXJjZUJ1ZmZlci0+cGFy
c2VyKCkgc3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmNlcnRpZmljYXRlRGF0
YS5nZXQoKSBjb250ZW50SWRlbnRpZmllcjppbml0RGF0YS5nZXQoKSB0cmFja0lEOnByb3RlY3Rl
ZFNvdXJjZUJ1ZmZlci0+cHJvdGVjdGVkVHJhY2tJRCgpIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJv
cl07CiAKLSAgICAgICAgaWYgKCFbcHJvdGVjdGVkU291cmNlQnVmZmVyLT5wYXJzZXIoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNlc3Npb25JZGVudGlmaWVyKV0pCisgICAgICAgIGlm
ICghW3Byb3RlY3RlZFNvdXJjZUJ1ZmZlci0+cGFyc2VyKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihjb250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyKV0pCiAgICAgICAgICAg
ICBtX3Nlc3Npb25JZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAogICAgICAgICBp
ZiAoZXJyb3IpIHsKQEAgLTMyMCw2ICsyODYsMjQgQEAgdm9pZCBDRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZW5kZXJlckRpZFJlY2VpdmVFcnJvcihBVlNhbXBsZUJ1ZmZlckF1ZGlvUmUK
ICAgICBtX2NsaWVudC0+c2VuZEVycm9yKENETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JE
b21haW4sIHN0ZDo6YWJzKFtlcnJvciBjb2RlXSkpOwogfQogCit2b2lkIENETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakM6OnNldFN0cmVhbVNlc3Npb24oQVZTdHJlYW1TZXNzaW9uICpzdHJlYW1T
ZXNzaW9uKQoreworICAgIGlmIChtX3N0cmVhbVNlc3Npb24gJiYgY2FuTG9hZEFWU3RyZWFtU2Vz
c2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9u
KCkpCisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3Zl
T2JzZXJ2ZXI6bV9kYXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgbmFtZTpnZXRBVlN0cmVhbVNlc3Np
b25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbigp
IG9iamVjdDptX3N0cmVhbVNlc3Npb24uZ2V0KCldOworCisgICAgbV9zdHJlYW1TZXNzaW9uID0g
c3RyZWFtU2Vzc2lvbjsKKworICAgIGlmICghbV9zdHJlYW1TZXNzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoY2FuTG9hZEFWU3RyZWFtU2Vzc2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vz
c2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCisgICAgICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9kYXRhUGFyc2VyT2JzZXJ2
ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50
aWZpZXJDaGFuZ2VkOikgbmFtZTpnZXRBVlN0cmVhbVNlc3Npb25Db250ZW50UHJvdGVjdGlvblNl
c3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbigpIG9iamVjdDptX3N0cmVhbVNlc3Np
b24uZ2V0KCldOworCisgICAgTlNEYXRhKiBpZGVudGlmaWVyID0gW3N0cmVhbVNlc3Npb24gY29u
dGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllcl07CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBzZXNzaW9uSWRlbnRpZmllclN0cmluZyA9IGlkZW50aWZpZXIgPyBhZG9wdE5TKFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoRGF0YTppZGVudGlmaWVyIGVuY29kaW5nOihOU1VURjhTdHJpbmdF
bmNvZGluZyldKSA6IG5pbDsKKyAgICBzZXRTZXNzaW9uSWQoc2Vzc2lvbklkZW50aWZpZXJTdHJp
bmcuZ2V0KCkpOworfQorCiB2b2lkIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OmFkZFNv
dXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogc291cmNlQnVmZmVyKQogewog
ICAgIEFTU0VSVCghbV9zb3VyY2VCdWZmZXJzLmNvbnRhaW5zKHNvdXJjZUJ1ZmZlcikpOwpAQCAt
MzI3LDExICszMTEsNiBAQCB2b2lkIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OmFkZFNv
dXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcwogCiAgICAgbV9zb3VyY2VC
dWZmZXJzLmFwcGVuZChzb3VyY2VCdWZmZXIpOwogICAgIHNvdXJjZUJ1ZmZlci0+cmVnaXN0ZXJG
b3JFcnJvck5vdGlmaWNhdGlvbnModGhpcyk7Ci0KLSAgICBpZiAobV9zdHJlYW1TZXNzaW9uKQot
ICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIGFkZFN0cmVhbURhdGFQYXJzZXI6c291cmNlQnVmZmVy
LT5wYXJzZXIoKV07Ci0KLSAgICBbbV9kYXRhUGFyc2VyT2JzZXJ2ZXIgYmVnaW5PYnNlcnZpbmc6
c291cmNlQnVmZmVyLT5wYXJzZXIoKV07CiB9CiAKIHZvaWQgQ0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQzo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBz
b3VyY2VCdWZmZXIpCkBAIC0zNDQsOCArMzIzLDYgQEAgdm9pZCBDRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMK
IAogICAgIHNvdXJjZUJ1ZmZlci0+dW5yZWdpc3RlckZvckVycm9yTm90aWZpY2F0aW9ucyh0aGlz
KTsKICAgICBtX3NvdXJjZUJ1ZmZlcnMucmVtb3ZlKG1fc291cmNlQnVmZmVycy5maW5kKHNvdXJj
ZUJ1ZmZlcikpOwotCi0gICAgW21fZGF0YVBhcnNlck9ic2VydmVyIHN0b3BPYnNlcnZpbmc6c291
cmNlQnVmZmVyLT5wYXJzZXIoKV07CiB9CiAKIFBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQzo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25l
ZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAppbmRleCA5Yzg5NmI1MTM4MDAwNzFiMGYzYTAyYTI0NGM1MDQ4MDNiM2Jm
ZTUzLi4wNzdhYzJlMzJjMzhlYjdiZDI1MjM5YTAyNGIzZjc3NTEwNjk1N2IxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIEFWQXNzZXQ7CiBP
QkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcjsKIE9CSkNfQ0xBU1MgQVZTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3lu
Y2hyb25pemVyOworT0JKQ19DTEFTUyBBVlN0cmVhbVNlc3Npb247CiAKIHR5cGVkZWYgc3RydWN0
IE9wYXF1ZUNNVGltZWJhc2UqIENNVGltZWJhc2VSZWY7CiAKQEAgLTgzLDYgKzg0LDggQEAgcHVi
bGljOgogICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKKyAgICBib29sIGhhc1N0cmVhbVNlc3Npb24oKSB7IHJldHVybiBt
X3N0cmVhbVNlc3Npb247IH0KKyAgICBBVlN0cmVhbVNlc3Npb24gKnN0cmVhbVNlc3Npb24oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q0RNU2Vzc2lvbihDRE1TZXNzaW9uKikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBrZXlOZWVkZWQoVWludDhBcnJheSopOwogI2VuZGlmCkBAIC0xOTEsNiArMTk0LDcg
QEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6
ZXI+IG1fc3luY2hyb25pemVyOwogICAgIFJldGFpblB0cjxpZD4gbV90aW1lSnVtcGVkT2JzZXJ2
ZXI7CiAgICAgUmV0YWluUHRyPGlkPiBtX2R1cmF0aW9uT2JzZXJ2ZXI7CisgICAgUmV0YWluUHRy
PEFWU3RyZWFtU2Vzc2lvbj4gbV9zdHJlYW1TZXNzaW9uOwogICAgIFRpbWVyPE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gbV9zZWVrVGltZXI7CiAgICAgQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQyogbV9zZXNzaW9uOwogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGUgbV9uZXR3b3JrU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggY2Y3YWIy
ZmYzMDZhN2I1ODdjMjBmZDNlMDMyNDU3NjEzODgxZmYzMy4uZjBlYjYxY2FhOGUwNGZlNzdiOGE3
NmRmNTViMGMwYTE4MGUyNmIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNTcs
NiArNTcsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlNhbXBs
ZUJ1ZmZlckF1ZGlvUmVuZGVyZXIpCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0
aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKIFNPRlRfTElOS19DTEFTU19PUFRJT05B
TChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyKQogU09GVF9M
SU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1EYXRhUGFyc2VyKQorU09G
VF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1TZXNzaW9uKTsKIFNP
RlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWVmlkZW9QZXJmb3JtYW5jZU1l
dHJpY3MpCiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNTm90aWZpY2F0aW9uQ2VudGVyICpDTU5v
dGlmaWNhdGlvbkNlbnRlclJlZjsKQEAgLTY2Niw2ICs2NjcsMTMgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNpemVDaGFuZ2VkKCkKIH0KIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCitBVlN0cmVhbVNlc3Npb24qIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c3RyZWFtU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX3N0cmVh
bVNlc3Npb24pCisgICAgICAgIG1fc3RyZWFtU2Vzc2lvbiA9IGFkb3B0TlMoW1tnZXRBVlN0cmVh
bVNlc3Npb25DbGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJuIG1fc3RyZWFtU2Vzc2lv
bi5nZXQoKTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbiogc2Vzc2lvbikKIHsKICAgICBpZiAobV9zZXNzaW9u
KSB7CkBAIC02NzcsNiArNjg1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbiogc2Vzc2lvbikKICAgICBtX3Nlc3Np
b24gPSB0b0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoc2Vzc2lvbik7CiAKICAgICBpZiAo
bV9zZXNzaW9uKSB7CisgICAgICAgIG1fc2Vzc2lvbi0+c2V0U3RyZWFtU2Vzc2lvbihtX3N0cmVh
bVNlc3Npb24uZ2V0KCkpOwogICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6IG1fbWVk
aWFTb3VyY2VQcml2YXRlLT5zb3VyY2VCdWZmZXJzKCkpCiAgICAgICAgICAgICBtX3Nlc3Npb24t
PmFkZFNvdXJjZUJ1ZmZlcihzb3VyY2VCdWZmZXIuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDFk
Yzk4NjlkMGEzMDQxY2Y3ZTkyZmYzZGMzMTUxNmI4YTM3YzIzYTguLjQ4ZTQyMzAzZDM1ZWYxY2Zh
YTU4MTVjNzZiMzc5YzRmOTVkZDVjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtODAsNiArODAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciopOwog
ICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2Ft
cGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwog
ICAgIHZvaWQgZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKTsKKyAgICB2b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludCB0cmFja0lEKTsKICAgICB2b2lkIGRp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNE
YXRhKiwgaW50IHRyYWNrSUQpOwogCiAgICAgYm9vbCBwcm9jZXNzQ29kZWRGcmFtZShpbnQgdHJh
Y2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0K
aW5kZXggZmRlMTBjZTE2M2NkMWViMzkyMjM5MWI2YjgzZDliOWQ3M2Y3N2Y3OS4uYmYxMDIyZDY0
MDk2Mjg3NmY3YmEyNmE4ZDk0ZWU4NTVkZTkzMDM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShBVkZPVU5EQVRJT04pCiAKKyNp
bXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRXhjZXB0aW9uQ29kZVBsYWNlaG9s
ZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYURlc2NyaXB0aW9uLmgi
CkBAIC02Miw2ICs2Myw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRU
cmFjaykKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWU3RyZWFtRGF0YVBhcnNlcikK
IFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJl
cikKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1TZXNzaW9uKQogCiBT
T0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlVmlkZW8s
IE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFW
TWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCkBAIC0xMTUsNiArMTE3LDE0IEBAIFNPRlRfTElO
SyhDb3JlTWVkaWEsIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldFByZXNlbnRhdGlvbkRpbWVu
c2lvbnMsIENHU2l6ZSwKICNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKIAogI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEg
bWFyayBBVlN0cmVhbVNlc3Npb24KKworQGludGVyZmFjZSBBVlN0cmVhbVNlc3Npb24gOiBOU09i
amVjdAorLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyOworLSAodm9pZClyZW1vdmVTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVh
bURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOworQGVuZAorCisjcHJhZ21hIG1hcmsgLQog
I3ByYWdtYSBtYXJrIEFWU3RyZWFtRGF0YVBhcnNlcgogCiBAaW50ZXJmYWNlIEFWU3RyZWFtRGF0
YVBhcnNlciA6IE5TT2JqZWN0CkBAIC0yNjgsNiArMjc4LDI3IEBAIFNPRlRfTElOSyhDb3JlTWVk
aWEsIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldFByZXNlbnRhdGlvbkRpbWVuc2lvbnMsIENH
U2l6ZSwKICAgICB9KTsKIH0KIAorLSAodm9pZClzdHJlYW1QYXJzZXJXaWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAorewor
I2lmIEFTU0VSVF9ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTShzdHJlYW1EYXRhUGFyc2VyKTsK
KyNlbmRpZgorICAgIEFTU0VSVChzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworCisgICAg
aWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIF9wYXJlbnQtPndpbGxQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgbXVzdCBjYWxsIHN5bmNocm9ub3VzbHkgdG8g
dGhlIG1haW4gdGhyZWFkLCBhcyB0aGUgQVZTdHJlYW1TZXNzaW9uIG11c3QgYmUgYXNzb2NpYXRl
ZAorICAgIC8vIHdpdGggdGhlIHN0cmVhbURhdGFQYXJzZXIgYmVmb3JlIHRoZSBkZWxlZ2F0ZSBt
ZXRob2QgcmV0dXJucy4KKyAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVu
ZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOworICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3N0cm9uZ1NlbGYsIHRyYWNrSURdKCkgeworICAgICAgICBpZiAoc3Ryb25n
U2VsZi0+X3BhcmVudCkKKyAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPndpbGxQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQp
OworICAgIH0pOworfQorCiAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBh
cnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhOihOU0RhdGEgKilpbml0RGF0YSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRU
cmFja0lEKXRyYWNrSUQKIHsKICNpZiBBU1NFUlRfRElTQUJMRUQKQEAgLTY1OCw2ICs2ODksMjUg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUmVhY2hFbmRPZlRyYWNrV2l0
aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCkKK3sKKyAgICBpZiAo
IW1fbWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3BhcnNlcik7
CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIExPRyhNZWRpYVNvdXJjZSwg
IlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCglcCkgLSB0cmFjazolZCIsIHRoaXMsIHRyYWNr
SUQpOworICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CisKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgW21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1T
ZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07CisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHRyYWNrSUQpOwor
I2VuZGlmCit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBpbml0
RGF0YSwgaW50IHRyYWNrSUQpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQpAQCAtNjY2LDcg
KzcxNiw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKHRyYWNr
SUQpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgTE9HKE1lZGlhU291cmNl
LCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoJXApIC0gdHJhY2s6JWQiLCB0aGlzLCB0cmFj
a0lEKTsKLSAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOworICAgIEFTU0VSVCh0cmFj
a0lEID09IG1fcHJvdGVjdGVkVHJhY2tJRCk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXRE
YXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoW2luaXREYXRhIGxlbmd0aF0pOwogICAgIFtp
bml0RGF0YSBnZXRCeXRlczppbml0RGF0YUFycmF5LT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhQXJy
YXktPmxlbmd0aCgpXTsKICAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQo
dGhpcywgaW5pdERhdGFBcnJheS5nZXQoKSk7CkBAIC03MzMsNiArNzgzLDkgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKCkKIHsKKyAgICBpZiAobV9tZWRpYVNvdXJjZS0+cGxh
eWVyKCktPmhhc1N0cmVhbVNlc3Npb24oKSkKKyAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXll
cigpLT5zdHJlYW1TZXNzaW9uKCkgcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQo
KV07CisKICAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKICAgICBtX2RlbGVnYXRlID0gbnVs
bHB0cjsKICAgICBtX3BhcnNlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU29mdExpbmtpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Tb2Z0TGlua2luZy5oCmluZGV4IGRiZTU4YjZmYzI4MzBhOTJhMzBjZWQ5NWJjNjdhMzlmNWE2
MDgwNWMuLmU4MTExYzJlODU2MWZmODI4OGY1MDBmZTIzM2U5NzdjYTZiZjA3NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oCkBAIC0yMzYsNyArMjM2LDYgQEAK
ICAgICAgICAgcmV0dXJuIGNvbnN0YW50IyNuYW1lOyBcCiAgICAgfQogCi0jaWYgUExBVEZPUk0o
SU9TKQogI2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoZnJhbWV3b3JrLCBuYW1l
LCB0eXBlKSBcCiAgICAgc3RhdGljIGJvb2wgaW5pdCMjbmFtZSgpOyBcCiAgICAgc3RhdGljIHR5
cGUgKCpnZXQjI25hbWUpKCkgPSAwOyBcCkBAIC0yNjMsNCArMjYyLDMgQEAKICAgICAgICAgZ2V0
IyNuYW1lID0gbmFtZSMjRnVuY3Rpb247IFwKICAgICAgICAgcmV0dXJuIHRydWU7IFwKICAgICB9
Ci0jZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240226</attachid>
            <date>2014-10-21 15:49:02 -0700</date>
            <delta_ts>2014-10-21 15:49:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-137923-20141021154908.patch</filename>
            <type>text/plain</type>
            <size>26343</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRjZGNhNGE0ODNhNThl
MWFhYzk3ZDFhNTk2MjRmODJjYTk5ODYxMy4uNjYwN2RiN2M4ZjZjMjFiYzg2ZDZhOTA2Y2YxYWVm
NjFmMjkyZGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDE0LTEwLTIxICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtFTUVdW01hY10gVXBkYXRl
IHRvIG1hdGNoIG5ldyBBVlN0cmVhbVNlc3Npb24gQVBJIGFuZCByZXF1aXJlbWVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc5MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVGhlIHNlc3Npb24gaWRl
bnRpZmllciBoYXMgbW92ZWQgZnJvbSBBVlN0cmVhbURhdGFQYXJzZXIgdG8gLVtBVlN0cmVhbVNl
c3Npb24gY29udGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllcl0KKyAgICAgICAgYW5kIHRo
ZSBwcm9wZXJ0eSBpcyBubyBsb25nZXIgS1ZPYnNlcnZhYmxlLiBBIG5ldyBub3RpZmljYXRpb24g
a2V5IGhhcyBiZWVuIGFkZGVkIGluIHBsYWNlIG9mIEtWTy4KKworICAgICAgICBBZGRpdGlvbmFs
bHksIHRoZSByZXF1aXJlbWVudHMgZm9yIHVzaW5nIEFWU3RyZWFtRGF0YVBhcnNlciB3aXRoIEFW
U3RyZWFtU2Vzc2lvbiBoYXZlIGNoYW5nZWQuIEl0IGlzIG5vdworICAgICAgICByZXF1aXJlZCB0
aGF0IEFWU3RyZWFtRGF0YVBhcnNlcnMgYmUgYWRkZWQgdG8gYW4gQVZTdHJlYW1TZXNzaW9uIGJl
Zm9yZSB0aGUgCisgICAgICAgIC1zdHJlYW1TZXNzaW9uOmRpZFByb3ZpZGVDb250ZW50S2V5UmVx
dWVzdEluaXRpYWxpemF0aW9uRGF0YTpmb3JUcmFja0lEIGRlbGVnYXRlIG1ldGhvZCBpcyBjYWxs
ZWQuIEEKKyAgICAgICAgLXN0cmVhbVBhcnNlcldpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJ
bml0aWFsaXphdGlvbkRhdGE6Zm9yVHJhY2tJRCBkZWxlZ2F0ZSBoYXMgYmVlbiBhZGRlZCwgYW5k
CisgICAgICAgIGFuIEFWU3RyZWFtU2Vzc2lvbiBtdXN0IGJlIGNyZWF0ZWQgYW5kIHRoZSBBVlN0
cmVhbURhdGFQYXJzZXIgYWRkZWQgdG8gaXQgZHVyaW5nIHRoZSBzY29wZSBvZiB0aGF0IGRlbGVn
YXRlCisgICAgICAgIG1ldGhvZC4KKworICAgICAgICBUbyBmYWNpbGl0YXRlIHRoaXMsIHRoZSBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMgb2JqZWN0IHdpbGwgbGF6aWx5IGNy
ZWF0ZSBhbmQgb3duIGEgQVZTdHJlYW1TZXNzaW9uCisgICAgICAgIG9iamVjdCB3aGVuIHJlcXVl
c3RlZC4gVGhlIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDIG9iamVjdCB3aWxsIGxpc3RlbiBm
b3IgdGhlIC13aWxsUHJvdmlkZSBkZWxlZ2F0ZSBjYWxsCisgICAgICAgIGFuZCB3aWxsIGFkZCBp
dHMgQVZTdHJlYW1EYXRhUGFyc2VyIHRvIHRoYXQgQVZTdHJlYW1TZXNzaW9uIHdoZW4gY2FsbGVk
LgorCisgICAgICAgIFRoZSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDIG9iamVjdCBpcyBu
byBsb25nZXIgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSBBVlN0cmVhbVNlc3Npb24sIGFu
ZCBiZWNhdXNlCisgICAgICAgIHRoZSBzZXNzaW9uIGlkZW50aWZpZXIgaGFzIG1vdmVkIGZyb20g
bWFueSBBVlN0cmVhbURhdGFQYXJzZXJzIHRvIGEgc2luZ2xlIEFWU3RyZWFtU2Vzc2lvbiwgdGhl
CisgICAgICAgIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakNPYnNlcnZlciBjbGFzcyBjYW4g
YmVjb21lIG11Y2ggc2ltcGxlciwgYXMgaXQgb25seSBoYXMgdG8gb2JzZXJ2ZSBhIHNpbmdsZSBv
YmplY3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAg
ICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIGRlYWxsb2NdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVy
IGJlZ2luT2JzZXJ2aW5nOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDT2JzZXJ2ZXIgc3RvcE9ic2VydmluZzpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIGludmFsaWRhdGVdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQ09ic2VydmVyIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakNPYnNlcnZlciBjb250ZW50
UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZDpdKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp+Q0RNU2Vzc2lvbk1lZGlhU291
cmNlQVZGT2JqQyk6IENhbGwgc2V0U3RyZWFtU2Vzc2lvbihudWxscHRyKS4KKyAgICAgICAgKFdl
YkNvcmU6OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbGVhc2VLZXlzKTogVGhlIHNl
c3Npb25JZCBpcyBub3cgYSB2YWx1ZSBpbiB0aGUgZGljdGlvbmFyeSwgbm90IHRoZSBrZXkuCisg
ICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUpOiBO
byBsb25nZXIgY3JlYXRlIGFuIEFWU3RyZWFtU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnNldFN0cmVhbVNlc3Npb24pOiBBZGQgYW5kIHJl
bW92ZSBvYnNlcnZlcnMgYXMgYXBwcm9wcmlhdGUuCisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIpOiBObyBsb25nZXIgYWRkIG9y
IHJlbW92ZSBwYXJzZXJzIGZyb20gQVZTdHJlYW1TZXNzaW9ucy4KKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbW92ZVNvdXJjZUJ1ZmZlcik6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6aGFzU3RyZWFtU2Vzc2lvbik6IFNpbXBsZSBnZXR0ZXIuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN0cmVhbVNlc3Npb24pOiBM
YXp5IGluaXRpYWxpemluZyBnZXR0ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNldENETVNlc3Npb24pOiBDYWxsIHNldFN0cmVhbVNl
c3Npb24oKS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoLVtXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBzdHJlYW1QYXJzZXJXaWxsUHJvdmlk
ZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOmZvclRyYWNrSUQ6XSk6IFN5bmNo
cm9ub3VzbHkgcGFzcyB0byBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy4KKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCk6IEFkZCB0aGUgcGFyc2VyIHRvIGFu
IEFWU3RyZWFtU2Vzc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEKTogQ2hlY2sgdGhlIHRyYWNrSWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1NvZnRM
aW5raW5nLmg6CisKKzIwMTQtMTAtMjEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CisKICAgICAgICAgUkVHUkVTU0lPTiAocjE3MDgwOCk6IFZvbHVtZSBzbGlkZXIgaW4gYnVpbHQt
aW4gbWVkaWEgY29udHJvbHMgb25seSBjaGFuZ2VzIHZvbHVtZSB3aGVuIHRodW1iIGlzIHJlbGVh
c2VkLCBub3Qgd2hpbGUgZHJhZ2dpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzNzgwNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggMjliNTAzYzQ0MGQxOGU2NjM4
ZDMxYTJjMDE5NmNiODFlYTM0YzZkOS4uOGFiNjUzZDUxNDE2ODEwNTM4NzgxODk1ZDYyNmY3MzA5
MmJlZjgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25N
ZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGxheWVyRGlkUmVjZWl2ZUVycm9yKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyICos
IE5TRXJyb3IgKik7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmVyRGlkUmVjZWl2ZUVycm9yKEFW
U2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciAqLCBOU0Vycm9yICopOwogCisgICAgdm9pZCBzZXRT
dHJlYW1TZXNzaW9uKEFWU3RyZWFtU2Vzc2lvbiAqKTsKKwogICAgIHZvaWQgYWRkU291cmNlQnVm
ZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKik7CiAgICAgdm9pZCByZW1vdmVTb3VyY2VC
dWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggYTNl
Mzk4ODIyMjA1NGJjZGYzOTg2YTVkMTYwNGU5MzJiNmYzZmZjYy4uNDEwMGZkMTc4NjE1NzM2YjI0
ZTc4ODc4MTU4Yzg3NjhiZWY3NTlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2Jq
Qy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC00NSwyNyArNDUsMjcgQEAK
IFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQogU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1EYXRhUGFyc2VyKTsKIFNPRlRfTElOS19DTEFTU19P
UFRJT05BTChBVkZvdW5kYXRpb24sIEFWU3RyZWFtU2Vzc2lvbik7CitTT0ZUX0xJTktfQ09OU1RB
TlRfTUFZX0ZBSUwoQVZGb3VuZGF0aW9uLCBBVlN0cmVhbVNlc3Npb25Db250ZW50UHJvdGVjdGlv
blNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbiwgTlNTdHJpbmcgKik7CiAKIEBp
bnRlcmZhY2UgQVZTdHJlYW1EYXRhUGFyc2VyIDogTlNPYmplY3QKIC0gKHZvaWQpcHJvY2Vzc0Nv
bnRlbnRLZXlSZXNwb25zZURhdGE6KE5TRGF0YSAqKWNvbnRlbnRLZXlSZXNwb25zZURhdGEgZm9y
VHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEOwogLSAodm9pZClwcm9jZXNzQ29u
dGVudEtleVJlc3BvbnNlRXJyb3I6KE5TRXJyb3IgKillcnJvciBmb3JUcmFja0lEOihDTVBlcnNp
c3RlbnRUcmFja0lEKXRyYWNrSUQ7CiAtICh2b2lkKXJlbmV3RXhwaXJpbmdDb250ZW50S2V5UmVz
cG9uc2VEYXRhRm9yVHJhY2tJRDooQ01QZXJzaXN0ZW50VHJhY2tJRCl0cmFja0lEOwogLSAoTlNE
YXRhICopc3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOihOU0RhdGEgKilhcHBJ
ZGVudGlmaWVyIGNvbnRlbnRJZGVudGlmaWVyOihOU0RhdGEgKiljb250ZW50SWRlbnRpZmllciB0
cmFja0lEOihDTVBlcnNpc3RlbnRUcmFja0lEKXRyYWNrSUQgb3B0aW9uczooTlNEaWN0aW9uYXJ5
ICopb3B0aW9ucyBlcnJvcjooTlNFcnJvciAqKilvdXRFcnJvcjsKLS0gKE5TRGF0YSAqKXNlc3Np
b25JZGVudGlmaWVyOwogQGVuZAogCiBAaW50ZXJmYWNlIEFWU3RyZWFtU2Vzc2lvbiA6IE5TT2Jq
ZWN0Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhBcHBJZGVudGlmaWVyOihOU0RhdGEgKilhcHBJ
ZGVudGlmaWVyIHN0b3JhZ2VEaXJlY3RvcnlBdFVSTDooTlNVUkwgKilzdG9yYWdlVVJMIGVycm9y
OihOU0Vycm9yICoqKW91dEVycm9yOworLSAoQk9PTClzZXRTdG9yYWdlRGlyZWN0b3J5QXRVUkw6
KE5TVVJMICopc3RvcmFnZVVSTCBhcHBJZGVudGlmaWVyOihOU0RhdGEgKilhcHBJZGVudGlmaWVy
IGVycm9yOihOU0Vycm9yICoqKW91dEVycm9yOwogLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2Vy
OihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwogLSAodm9pZClyZW1vdmVT
dHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOwog
LSAodm9pZClleHBpcmU7CistIChOU0RhdGEgKiljb250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVu
dGlmaWVyOwogKyAoTlNBcnJheSAqKXBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9ydHNXaXRoQXBw
SWRlbnRpZmllcjooTlNEYXRhICopYXBwSWRlbnRpZmllcjsKICsgKHZvaWQpcmVtb3ZlUGVuZGlu
Z0V4cGlyZWRTZXNzaW9uUmVwb3J0czooTlNBcnJheSAqKWV4cGlyZWRTZXNzaW9uUmVwb3J0cyB3
aXRoQXBwSWRlbnRpZmllcjooTlNEYXRhICopYXBwSWRlbnRpZmllcjsKIEBlbmQKIAogQGludGVy
ZmFjZSBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDT2JzZXJ2ZXIgOiBOU09iamVjdCB7CiAg
ICAgV2ViQ29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyAqbV9wYXJlbnQ7Ci0gICAg
SGFzaFNldDxSZXRhaW5QdHI8QVZTdHJlYW1EYXRhUGFyc2VyPj4gbV9wYXJzZXJzOwogfQogQGVu
ZAogCkBAIC03Nyw1OSArNzcsMjAgQEAgU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZTdHJlYW1TZXNzaW9uKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAodm9pZClk
ZWFsbG9jCistICh2b2lkKWNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2Vk
OihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgogewotICAgIFtzZWxmIGludmFsaWRhdGVd
OwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZCliZWdpbk9ic2VydmluZzooQVZT
dHJlYW1EYXRhUGFyc2VyICopcGFyc2VyCi17Ci0gICAgQVNTRVJUKCFtX3BhcnNlcnMuY29udGFp
bnMocGFyc2VyKSk7Ci0gICAgbV9wYXJzZXJzLmFkZChwYXJzZXIpOwotICAgIGlmIChbcGFyc2Vy
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2Vzc2lvbklkZW50aWZpZXIpXSkKLSAgICAg
ICAgW3BhcnNlciBhZGRPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzZXNzaW9uSWRlbnRpZmll
ciIgb3B0aW9uczooTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ld3xOU0tleVZhbHVlT2JzZXJ2
aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpudWxscHRyXTsKLX0KKyAgICBBVlN0cmVhbVNlc3Np
b24qIHN0cmVhbVNlc3Npb24gPSAoQVZTdHJlYW1TZXNzaW9uKilbbm90aWZpY2F0aW9uIG9iamVj
dF07CiAKLS0gKHZvaWQpc3RvcE9ic2VydmluZzooQVZTdHJlYW1EYXRhUGFyc2VyICopcGFyc2Vy
Ci17Ci0gICAgQVNTRVJUKG1fcGFyc2Vycy5jb250YWlucyhwYXJzZXIpKTsKLSAgICBtX3BhcnNl
cnMucmVtb3ZlKHBhcnNlcik7Ci0gICAgaWYgKFtwYXJzZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXNzaW9uSWRlbnRpZmllcildKQotICAgICAgICBbcGFyc2VyIHJlbW92ZU9ic2Vy
dmVyOnNlbGYgZm9yS2V5UGF0aDpAInNlc3Npb25JZGVudGlmaWVyIiBjb250ZXh0Om51bGxwdHJd
OwotfQorICAgIE5TRGF0YSogaWRlbnRpZmllciA9IFtzdHJlYW1TZXNzaW9uIGNvbnRlbnRQcm90
ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJdOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc2Vzc2lv
bklkZW50aWZpZXJTdHJpbmcgPSBpZGVudGlmaWVyID8gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9j
XSBpbml0V2l0aERhdGE6aWRlbnRpZmllciBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10p
IDogbmlsOwogCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBtX3BhcmVudCA9IG51bGxwdHI7
Ci0gICAgZm9yIChhdXRvJiBwYXJzZXIgOiBtX3BhcnNlcnMpIHsKLSAgICAgICAgaWYgKFtwYXJz
ZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXNzaW9uSWRlbnRpZmllcildKQotICAg
ICAgICAgICAgW3BhcnNlciByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJzZXNzaW9u
SWRlbnRpZmllciIgY29udGV4dDpudWxscHRyXTsKLSAgICB9Ci0gICAgbV9wYXJzZXJzLmNsZWFy
KCk7Ci19Ci0KLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQ
YXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29u
dGV4dDoodm9pZCopY29udGV4dAotewotICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOwotICAgIFVO
VVNFRF9QQVJBTShjaGFuZ2UpOwotICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKLQotICAgIGlm
IChba2V5UGF0aCBpc0VxdWFsOkAic2Vzc2lvbklkZW50aWZpZXIiXSkgewotICAgICAgICBOU0Rh
dGEqIGlkZW50aWZpZXIgPSBbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdL
ZXldOwotICAgICAgICBpZiAoW2lkZW50aWZpZXIgaXNLaW5kT2ZDbGFzczpbTlNOdWxsIGNsYXNz
XV0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBz
ZXNzaW9uSWRlbnRpZmllclN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdp
dGhEYXRhOmlkZW50aWZpZXIgZW5jb2Rpbmc6KE5TVVRGOFN0cmluZ0VuY29kaW5nKV0pOwotICAg
ICAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgICAgICBtX3BhcmVudC0+c2V0U2Vzc2lvbklkKHNl
c3Npb25JZGVudGlmaWVyU3RyaW5nLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChtX3BhcmVudCkKKyAgICAgICAgbV9w
YXJlbnQtPnNldFNlc3Npb25JZChzZXNzaW9uSWRlbnRpZmllclN0cmluZy5nZXQoKSk7CiB9CiBA
ZW5kCiAKK3N0YXRpYyBjb25zdCBOU1N0cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBs
YXliYWNrU2Vzc2lvbklEIjsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDOjpDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDKCkKQEAgLTE0NCwx
MiArMTA1LDkgQEAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6fkNETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMoKQogICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogbV9zb3VyY2VC
dWZmZXJzKSB7CiAgICAgICAgIGlmIChtX3N0cmVhbVNlc3Npb24pCiAgICAgICAgICAgICBbbV9z
dHJlYW1TZXNzaW9uIHJlbW92ZVN0cmVhbURhdGFQYXJzZXI6c291cmNlQnVmZmVyLT5wYXJzZXIo
KV07Ci0KLSAgICAgICAgW3NvdXJjZUJ1ZmZlci0+cGFyc2VyKCkgcmVtb3ZlT2JzZXJ2ZXI6bV9k
YXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgZm9yS2V5UGF0aDpAInNlc3Npb25JZGVudGlmaWVyIiBj
b250ZXh0Om51bGxwdHJdOwogICAgIH0KIAotICAgIG1fc3RyZWFtU2Vzc2lvbiA9IG5pbDsKLSAg
ICBbbV9kYXRhUGFyc2VyT2JzZXJ2ZXIgaW52YWxpZGF0ZV07CisgICAgc2V0U3RyZWFtU2Vzc2lv
bihudWxscHRyKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
VWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNo
b3J0JiBlcnJvckNvZGUsIHVuc2lnbmVkIGxvbmcmIHN5c3RlbUNvZGUpCkBAIC0xODcsNyArMTQ1
LDEyIEBAIHZvaWQgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6cmVsZWFzZUtleXMoKQog
ICAgICAgICBOU0FycmF5KiBleHBpcmVkU2Vzc2lvbnMgPSBbZ2V0QVZTdHJlYW1TZXNzaW9uQ2xh
c3MoKSBwZW5kaW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6Y2VydGlm
aWNhdGVEYXRhLmdldCgpXTsKICAgICAgICAgZm9yIChOU0RhdGEqIGV4cGlyZWRTZXNzaW9uRGF0
YSBpbiBleHBpcmVkU2Vzc2lvbnMpIHsKICAgICAgICAgICAgIE5TRGljdGlvbmFyeSAqZXhwaXJl
ZFNlc3Npb24gPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhE
YXRhOmV4cGlyZWRTZXNzaW9uRGF0YSBvcHRpb25zOmtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSBm
b3JtYXQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXTsKLSAgICAgICAgICAgIGlmIChbZXhwaXJlZFNl
c3Npb24gb2JqZWN0Rm9yS2V5Om1fc2Vzc2lvbklkXSkgeworICAgICAgICAgICAgTlNTdHJpbmcg
KnBsYXliYWNrU2Vzc2lvbklkVmFsdWUgPSAoTlNTdHJpbmcgKilbZXhwaXJlZFNlc3Npb24gb2Jq
ZWN0Rm9yS2V5OlBsYXliYWNrU2Vzc2lvbklkS2V5XTsKKyAgICAgICAgICAgIGlmICghW3BsYXli
YWNrU2Vzc2lvbklkVmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKG1fc2Vzc2lvbklkID09IFN0
cmluZyhwbGF5YmFja1Nlc3Npb25JZFZhbHVlKSkgeworICAgICAgICAgICAgICAgIExPRyhNZWRp
YSwgIkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnJlbGVhc2VLZXlzKCVwKSAtIGZvdW5k
IHNlc3Npb24sIHNlbmRpbmcgZXhwaXJhdGlvbiBtZXNzYWdlIik7CiAgICAgICAgICAgICAgICAg
bV9leHBpcmVkU2Vzc2lvbiA9IGV4cGlyZWRTZXNzaW9uRGF0YTsKICAgICAgICAgICAgICAgICBt
X2NsaWVudC0+c2VuZE1lc3NhZ2UoVWludDhBcnJheTo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihbbV9leHBpcmVkU2Vzc2lvbiBieXRlc10pLCBbbV9leHBpcmVkU2Vzc2lvbiBs
ZW5ndGhdKS5nZXQoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0yNDEsNiArMjA0LDggQEAgYm9vbCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRh
dGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG4KICAgICB9CiAKICAgICBp
ZiAoaXNFcXVhbChrZXksICJhY2tub3dsZWRnZWQiKSkgeworICAgICAgICBMT0coTWVkaWEsICJD
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoJXApIC0gYWNrbm93bGVkaW5nIHNl
Y3VyZSBzdG9wIG1lc3NhZ2UiLCB0aGlzKTsKKwogICAgICAgICBpZiAoIW1fZXhwaXJlZFNlc3Np
b24pIHsKICAgICAgICAgICAgIGVycm9yQ29kZSA9IE1lZGlhUGxheWVyOjpJbnZhbGlkUGxheWVy
U3RhdGU7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDksNiArMjE0LDcgQEAgYm9v
bCBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBS
ZWZQdHI8VWludDhBcnJheT4mIG4KICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY2VydGlmaWNh
dGVEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczptX2NlcnRpZmlj
YXRlLT5kYXRhKCkgbGVuZ3RoOm1fY2VydGlmaWNhdGUtPmxlbmd0aCgpXSk7CiAgICAgICAgIFtn
ZXRBVlN0cmVhbVNlc3Npb25DbGFzcygpIHJlbW92ZVBlbmRpbmdFeHBpcmVkU2Vzc2lvblJlcG9y
dHM6QFttX2V4cGlyZWRTZXNzaW9uLmdldCgpXSB3aXRoQXBwSWRlbnRpZmllcjpjZXJ0aWZpY2F0
ZURhdGEuZ2V0KCldOwogICAgICAgICBtX2V4cGlyZWRTZXNzaW9uID0gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDPiBwcm90ZWN0ZWRTb3VyY2VCdWZmZXI7CkBAIC0yNjEsOCArMjI3LDggQEAgYm9vbCBD
RE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjp1cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQ
dHI8VWludDhBcnJheT4mIG4KIAogICAgIGlmIChzaG91bGRHZW5lcmF0ZUtleVJlcXVlc3QpIHsK
ICAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gY2VydGlmaWNhdGVEYXRhID0gYWRvcHROUyhbW05T
RGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczptX2NlcnRpZmljYXRlLT5kYXRhKCkgbGVuZ3RoOm1f
Y2VydGlmaWNhdGUtPmxlbmd0aCgpXSk7Ci0gICAgICAgIGlmIChnZXRBVlN0cmVhbVNlc3Npb25D
bGFzcygpICYmIFtnZXRBVlN0cmVhbVNlc3Npb25DbGFzcygpIGluc3RhbmNlc1Jlc3BvbmRUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihpbml0V2l0aEFwcElkZW50aWZpZXI6c3RvcmFnZURpcmVjdG9yeUF0
VVJMOmVycm9yOildKSB7Ci0gICAgICAgICAgICBtX3N0cmVhbVNlc3Npb24gPSBhZG9wdE5TKFtb
Z2V0QVZTdHJlYW1TZXNzaW9uQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhBcHBJZGVudGlmaWVyOmNl
cnRpZmljYXRlRGF0YS5nZXQoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpzZXNzaW9uU3RvcmFnZURpcmVjdG9yeSgpXSBlcnJvcjpuaWxdKTsKKyAgICAgICAg
aWYgKG1fc3RyZWFtU2Vzc2lvbiAmJiBbbV9zdHJlYW1TZXNzaW9uIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc2V0U3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VVUkw6YXBwSWRlbnRp
ZmllcjplcnJvcjopXSkgeworICAgICAgICAgICAgW21fc3RyZWFtU2Vzc2lvbiBzZXRTdG9yYWdl
RGlyZWN0b3J5QXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpzZXNzaW9uU3RvcmFnZURpcmVj
dG9yeSgpXSBhcHBJZGVudGlmaWVyOmNlcnRpZmljYXRlRGF0YS5nZXQoKSBlcnJvcjpuaWxdOwog
ICAgICAgICAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZlcnMpCiAg
ICAgICAgICAgICAgICAgW21fc3RyZWFtU2Vzc2lvbiBhZGRTdHJlYW1EYXRhUGFyc2VyOnNvdXJj
ZUJ1ZmZlci0+cGFyc2VyKCldOwogICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlKCVwKSAtIGNyZWF0ZWQgc3RyZWFtIHNlc3Npb24gJXAi
LCB0aGlzLCBtX3N0cmVhbVNlc3Npb24uZ2V0KCkpOwpAQCAtMjc5LDcgKzI0NSw3IEBAIGJvb2wg
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuCiAgICAgICAgIE5TRXJyb3IqIGVycm9yID0gbmlsOwogICAgICAg
ICBSZXRhaW5QdHI8TlNEYXRhPiByZXF1ZXN0ID0gW3Byb3RlY3RlZFNvdXJjZUJ1ZmZlci0+cGFy
c2VyKCkgc3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwOmNlcnRpZmljYXRlRGF0
YS5nZXQoKSBjb250ZW50SWRlbnRpZmllcjppbml0RGF0YS5nZXQoKSB0cmFja0lEOnByb3RlY3Rl
ZFNvdXJjZUJ1ZmZlci0+cHJvdGVjdGVkVHJhY2tJRCgpIG9wdGlvbnM6bmlsIGVycm9yOiZlcnJv
cl07CiAKLSAgICAgICAgaWYgKCFbcHJvdGVjdGVkU291cmNlQnVmZmVyLT5wYXJzZXIoKSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNlc3Npb25JZGVudGlmaWVyKV0pCisgICAgICAgIGlm
ICghW3Byb3RlY3RlZFNvdXJjZUJ1ZmZlci0+cGFyc2VyKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihjb250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyKV0pCiAgICAgICAgICAg
ICBtX3Nlc3Npb25JZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKIAogICAgICAgICBp
ZiAoZXJyb3IpIHsKQEAgLTMyMCw2ICsyODYsMjQgQEAgdm9pZCBDRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZW5kZXJlckRpZFJlY2VpdmVFcnJvcihBVlNhbXBsZUJ1ZmZlckF1ZGlvUmUK
ICAgICBtX2NsaWVudC0+c2VuZEVycm9yKENETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JE
b21haW4sIHN0ZDo6YWJzKFtlcnJvciBjb2RlXSkpOwogfQogCit2b2lkIENETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakM6OnNldFN0cmVhbVNlc3Npb24oQVZTdHJlYW1TZXNzaW9uICpzdHJlYW1T
ZXNzaW9uKQoreworICAgIGlmIChtX3N0cmVhbVNlc3Npb24gJiYgY2FuTG9hZEFWU3RyZWFtU2Vz
c2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9u
KCkpCisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3Zl
T2JzZXJ2ZXI6bV9kYXRhUGFyc2VyT2JzZXJ2ZXIuZ2V0KCkgbmFtZTpnZXRBVlN0cmVhbVNlc3Np
b25Db250ZW50UHJvdGVjdGlvblNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbigp
IG9iamVjdDptX3N0cmVhbVNlc3Npb24uZ2V0KCldOworCisgICAgbV9zdHJlYW1TZXNzaW9uID0g
c3RyZWFtU2Vzc2lvbjsKKworICAgIGlmICghbV9zdHJlYW1TZXNzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoY2FuTG9hZEFWU3RyZWFtU2Vzc2lvbkNvbnRlbnRQcm90ZWN0aW9uU2Vz
c2lvbklkZW50aWZpZXJDaGFuZ2VkTm90aWZpY2F0aW9uKCkpCisgICAgICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9kYXRhUGFyc2VyT2JzZXJ2
ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGNvbnRlbnRQcm90ZWN0aW9uU2Vzc2lvbklkZW50
aWZpZXJDaGFuZ2VkOikgbmFtZTpnZXRBVlN0cmVhbVNlc3Npb25Db250ZW50UHJvdGVjdGlvblNl
c3Npb25JZGVudGlmaWVyQ2hhbmdlZE5vdGlmaWNhdGlvbigpIG9iamVjdDptX3N0cmVhbVNlc3Np
b24uZ2V0KCldOworCisgICAgTlNEYXRhKiBpZGVudGlmaWVyID0gW3N0cmVhbVNlc3Npb24gY29u
dGVudFByb3RlY3Rpb25TZXNzaW9uSWRlbnRpZmllcl07CisgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBzZXNzaW9uSWRlbnRpZmllclN0cmluZyA9IGlkZW50aWZpZXIgPyBhZG9wdE5TKFtbTlNTdHJp
bmcgYWxsb2NdIGluaXRXaXRoRGF0YTppZGVudGlmaWVyIGVuY29kaW5nOihOU1VURjhTdHJpbmdF
bmNvZGluZyldKSA6IG5pbDsKKyAgICBzZXRTZXNzaW9uSWQoc2Vzc2lvbklkZW50aWZpZXJTdHJp
bmcuZ2V0KCkpOworfQorCiB2b2lkIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OmFkZFNv
dXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogc291cmNlQnVmZmVyKQogewog
ICAgIEFTU0VSVCghbV9zb3VyY2VCdWZmZXJzLmNvbnRhaW5zKHNvdXJjZUJ1ZmZlcikpOwpAQCAt
MzI3LDExICszMTEsNiBAQCB2b2lkIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OmFkZFNv
dXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogcwogCiAgICAgbV9zb3VyY2VC
dWZmZXJzLmFwcGVuZChzb3VyY2VCdWZmZXIpOwogICAgIHNvdXJjZUJ1ZmZlci0+cmVnaXN0ZXJG
b3JFcnJvck5vdGlmaWNhdGlvbnModGhpcyk7Ci0KLSAgICBpZiAobV9zdHJlYW1TZXNzaW9uKQot
ICAgICAgICBbbV9zdHJlYW1TZXNzaW9uIGFkZFN0cmVhbURhdGFQYXJzZXI6c291cmNlQnVmZmVy
LT5wYXJzZXIoKV07Ci0KLSAgICBbbV9kYXRhUGFyc2VyT2JzZXJ2ZXIgYmVnaW5PYnNlcnZpbmc6
c291cmNlQnVmZmVyLT5wYXJzZXIoKV07CiB9CiAKIHZvaWQgQ0RNU2Vzc2lvbk1lZGlhU291cmNl
QVZGT2JqQzo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBz
b3VyY2VCdWZmZXIpCkBAIC0zNDQsOCArMzIzLDYgQEAgdm9pZCBDRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMK
IAogICAgIHNvdXJjZUJ1ZmZlci0+dW5yZWdpc3RlckZvckVycm9yTm90aWZpY2F0aW9ucyh0aGlz
KTsKICAgICBtX3NvdXJjZUJ1ZmZlcnMucmVtb3ZlKG1fc291cmNlQnVmZmVycy5maW5kKHNvdXJj
ZUJ1ZmZlcikpOwotCi0gICAgW21fZGF0YVBhcnNlck9ic2VydmVyIHN0b3BPYnNlcnZpbmc6c291
cmNlQnVmZmVyLT5wYXJzZXIoKV07CiB9CiAKIFBhc3NSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vz
c2lvbk1lZGlhU291cmNlQVZGT2JqQzo6Z2VuZXJhdGVLZXlSZWxlYXNlTWVzc2FnZSh1bnNpZ25l
ZCBzaG9ydCYgZXJyb3JDb2RlLCB1bnNpZ25lZCBsb25nJiBzeXN0ZW1Db2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAppbmRleCA5Yzg5NmI1MTM4MDAwNzFiMGYzYTAyYTI0NGM1MDQ4MDNiM2Jm
ZTUzLi4wNzdhYzJlMzJjMzhlYjdiZDI1MjM5YTAyNGIzZjc3NTEwNjk1N2IxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIEFWQXNzZXQ7CiBP
QkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlcjsKIE9CSkNfQ0xBU1MgQVZTYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXI7CiBPQkpDX0NMQVNTIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3lu
Y2hyb25pemVyOworT0JKQ19DTEFTUyBBVlN0cmVhbVNlc3Npb247CiAKIHR5cGVkZWYgc3RydWN0
IE9wYXF1ZUNNVGltZWJhc2UqIENNVGltZWJhc2VSZWY7CiAKQEAgLTgzLDYgKzg0LDggQEAgcHVi
bGljOgogICAgIHZvaWQgY2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQV9WMikKKyAgICBib29sIGhhc1N0cmVhbVNlc3Npb24oKSB7IHJldHVybiBt
X3N0cmVhbVNlc3Npb247IH0KKyAgICBBVlN0cmVhbVNlc3Npb24gKnN0cmVhbVNlc3Npb24oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q0RNU2Vzc2lvbihDRE1TZXNzaW9uKikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBrZXlOZWVkZWQoVWludDhBcnJheSopOwogI2VuZGlmCkBAIC0xOTEsNiArMTk0LDcg
QEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8QVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6
ZXI+IG1fc3luY2hyb25pemVyOwogICAgIFJldGFpblB0cjxpZD4gbV90aW1lSnVtcGVkT2JzZXJ2
ZXI7CiAgICAgUmV0YWluUHRyPGlkPiBtX2R1cmF0aW9uT2JzZXJ2ZXI7CisgICAgUmV0YWluUHRy
PEFWU3RyZWFtU2Vzc2lvbj4gbV9zdHJlYW1TZXNzaW9uOwogICAgIFRpbWVyPE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gbV9zZWVrVGltZXI7CiAgICAgQ0RNU2Vzc2lvbk1l
ZGlhU291cmNlQVZGT2JqQyogbV9zZXNzaW9uOwogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGUgbV9uZXR3b3JrU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggY2Y3YWIy
ZmYzMDZhN2I1ODdjMjBmZDNlMDMyNDU3NjEzODgxZmYzMy4uZjBlYjYxY2FhOGUwNGZlNzdiOGE3
NmRmNTViMGMwYTE4MGUyNmIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtNTcs
NiArNTcsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlNhbXBs
ZUJ1ZmZlckF1ZGlvUmVuZGVyZXIpCiBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0
aW9uLCBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKIFNPRlRfTElOS19DTEFTU19PUFRJT05B
TChBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyUmVuZGVyU3luY2hyb25pemVyKQogU09GVF9M
SU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1EYXRhUGFyc2VyKQorU09G
VF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1TZXNzaW9uKTsKIFNP
RlRfTElOS19DTEFTU19PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWVmlkZW9QZXJmb3JtYW5jZU1l
dHJpY3MpCiAKIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNTm90aWZpY2F0aW9uQ2VudGVyICpDTU5v
dGlmaWNhdGlvbkNlbnRlclJlZjsKQEAgLTY2Niw2ICs2NjcsMTMgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNpemVDaGFuZ2VkKCkKIH0KIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCitBVlN0cmVhbVNlc3Npb24qIE1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c3RyZWFtU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX3N0cmVh
bVNlc3Npb24pCisgICAgICAgIG1fc3RyZWFtU2Vzc2lvbiA9IGFkb3B0TlMoW1tnZXRBVlN0cmVh
bVNlc3Npb25DbGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgcmV0dXJuIG1fc3RyZWFtU2Vzc2lv
bi5nZXQoKTsKK30KKwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbiogc2Vzc2lvbikKIHsKICAgICBpZiAobV9zZXNzaW9u
KSB7CkBAIC02NzcsNiArNjg1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnNldENETVNlc3Npb24oQ0RNU2Vzc2lvbiogc2Vzc2lvbikKICAgICBtX3Nlc3Np
b24gPSB0b0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMoc2Vzc2lvbik7CiAKICAgICBpZiAo
bV9zZXNzaW9uKSB7CisgICAgICAgIG1fc2Vzc2lvbi0+c2V0U3RyZWFtU2Vzc2lvbihtX3N0cmVh
bVNlc3Npb24uZ2V0KCkpOwogICAgICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6IG1fbWVk
aWFTb3VyY2VQcml2YXRlLT5zb3VyY2VCdWZmZXJzKCkpCiAgICAgICAgICAgICBtX3Nlc3Npb24t
PmFkZFNvdXJjZUJ1ZmZlcihzb3VyY2VCdWZmZXIuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDFk
Yzk4NjlkMGEzMDQxY2Y3ZTkyZmYzZGMzMTUxNmI4YTM3YzIzYTguLjQ4ZTQyMzAzZDM1ZWYxY2Zh
YTU4MTVjNzZiMzc5YzRmOTVkZDVjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtODAsNiArODAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciopOwog
ICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoaW50IHRyYWNrSUQsIENNU2Ft
cGxlQnVmZmVyUmVmLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpOwog
ICAgIHZvaWQgZGlkUmVhY2hFbmRPZlRyYWNrV2l0aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKTsKKyAgICB2b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVl
c3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKGludCB0cmFja0lEKTsKICAgICB2b2lkIGRp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNE
YXRhKiwgaW50IHRyYWNrSUQpOwogCiAgICAgYm9vbCBwcm9jZXNzQ29kZWRGcmFtZShpbnQgdHJh
Y2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0K
aW5kZXggZmRlMTBjZTE2M2NkMWViMzkyMjM5MWI2YjgzZDliOWQ3M2Y3N2Y3OS4uYmYxMDIyZDY0
MDk2Mjg3NmY3YmEyNmE4ZDk0ZWU4NTVkZTkzMDM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpICYmIFVTRShBVkZPVU5EQVRJT04pCiAKKyNp
bXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiRXhjZXB0aW9uQ29kZVBsYWNlaG9s
ZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYURlc2NyaXB0aW9uLmgi
CkBAIC02Miw2ICs2Myw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRU
cmFjaykKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWU3RyZWFtRGF0YVBhcnNlcikK
IFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJl
cikKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZTdHJlYW1TZXNzaW9uKQogCiBT
T0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFWTWVkaWFUeXBlVmlkZW8s
IE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChBVkZvdW5kYXRpb24sIEFW
TWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCkBAIC0xMTUsNiArMTE3LDE0IEBAIFNPRlRfTElO
SyhDb3JlTWVkaWEsIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldFByZXNlbnRhdGlvbkRpbWVu
c2lvbnMsIENHU2l6ZSwKICNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdpYmxlKCkKIAogI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEg
bWFyayBBVlN0cmVhbVNlc3Npb24KKworQGludGVyZmFjZSBBVlN0cmVhbVNlc3Npb24gOiBOU09i
amVjdAorLSAodm9pZClhZGRTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVhbURhdGFQYXJzZXIgKilz
dHJlYW1EYXRhUGFyc2VyOworLSAodm9pZClyZW1vdmVTdHJlYW1EYXRhUGFyc2VyOihBVlN0cmVh
bURhdGFQYXJzZXIgKilzdHJlYW1EYXRhUGFyc2VyOworQGVuZAorCisjcHJhZ21hIG1hcmsgLQog
I3ByYWdtYSBtYXJrIEFWU3RyZWFtRGF0YVBhcnNlcgogCiBAaW50ZXJmYWNlIEFWU3RyZWFtRGF0
YVBhcnNlciA6IE5TT2JqZWN0CkBAIC0yNjgsNiArMjc4LDI3IEBAIFNPRlRfTElOSyhDb3JlTWVk
aWEsIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldFByZXNlbnRhdGlvbkRpbWVuc2lvbnMsIENH
U2l6ZSwKICAgICB9KTsKIH0KIAorLSAodm9pZClzdHJlYW1QYXJzZXJXaWxsUHJvdmlkZUNvbnRl
bnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhOihBVlN0cmVhbURhdGFQYXJzZXIgKilzdHJl
YW1EYXRhUGFyc2VyIGZvclRyYWNrSUQ6KENNUGVyc2lzdGVudFRyYWNrSUQpdHJhY2tJRAorewor
I2lmIEFTU0VSVF9ESVNBQkxFRAorICAgIFVOVVNFRF9QQVJBTShzdHJlYW1EYXRhUGFyc2VyKTsK
KyNlbmRpZgorICAgIEFTU0VSVChzdHJlYW1EYXRhUGFyc2VyID09IF9wYXJzZXIpOworCisgICAg
aWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIF9wYXJlbnQtPndpbGxQcm92aWRlQ29udGVu
dEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgbXVzdCBjYWxsIHN5bmNocm9ub3VzbHkgdG8g
dGhlIG1haW4gdGhyZWFkLCBhcyB0aGUgQVZTdHJlYW1TZXNzaW9uIG11c3QgYmUgYXNzb2NpYXRl
ZAorICAgIC8vIHdpdGggdGhlIHN0cmVhbURhdGFQYXJzZXIgYmVmb3JlIHRoZSBkZWxlZ2F0ZSBt
ZXRob2QgcmV0dXJucy4KKyAgICBSZXRhaW5QdHI8V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVu
ZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOworICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3N0cm9uZ1NlbGYsIHRyYWNrSURdKCkgeworICAgICAgICBpZiAoc3Ryb25n
U2VsZi0+X3BhcmVudCkKKyAgICAgICAgICAgIHN0cm9uZ1NlbGYtPl9wYXJlbnQtPndpbGxQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHRyYWNrSUQp
OworICAgIH0pOworfQorCiAtICh2b2lkKXN0cmVhbURhdGFQYXJzZXI6KEFWU3RyZWFtRGF0YVBh
cnNlciAqKXN0cmVhbURhdGFQYXJzZXIgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlh
bGl6YXRpb25EYXRhOihOU0RhdGEgKilpbml0RGF0YSBmb3JUcmFja0lEOihDTVBlcnNpc3RlbnRU
cmFja0lEKXRyYWNrSUQKIHsKICNpZiBBU1NFUlRfRElTQUJMRUQKQEAgLTY1OCw2ICs2ODksMjUg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUmVhY2hFbmRPZlRyYWNrV2l0
aFRyYWNrSUQoaW50IHRyYWNrSUQsIGNvbnMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1
ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChpbnQgdHJhY2tJRCkKK3sKKyAgICBpZiAo
IW1fbWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3BhcnNlcik7
CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIExPRyhNZWRpYVNvdXJjZSwg
IlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0
SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCglcCkgLSB0cmFjazolZCIsIHRoaXMsIHRyYWNr
SUQpOworICAgIG1fcHJvdGVjdGVkVHJhY2tJRCA9IHRyYWNrSUQ7CisKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisgICAgW21fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zdHJlYW1T
ZXNzaW9uKCkgYWRkU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQoKV07CisgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHRyYWNrSUQpOwor
I2VuZGlmCit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoTlNEYXRhKiBpbml0
RGF0YSwgaW50IHRyYWNrSUQpCiB7CiAgICAgaWYgKCFtX21lZGlhU291cmNlKQpAQCAtNjY2LDcg
KzcxNiw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250
ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAgICAgVU5VU0VEX1BBUkFNKHRyYWNr
SUQpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgTE9HKE1lZGlhU291cmNl
LCAiU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVz
dEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoJXApIC0gdHJhY2s6JWQiLCB0aGlzLCB0cmFj
a0lEKTsKLSAgICBtX3Byb3RlY3RlZFRyYWNrSUQgPSB0cmFja0lEOworICAgIEFTU0VSVCh0cmFj
a0lEID09IG1fcHJvdGVjdGVkVHJhY2tJRCk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXRE
YXRhQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoW2luaXREYXRhIGxlbmd0aF0pOwogICAgIFtp
bml0RGF0YSBnZXRCeXRlczppbml0RGF0YUFycmF5LT5kYXRhKCkgbGVuZ3RoOmluaXREYXRhQXJy
YXktPmxlbmd0aCgpXTsKICAgICBtX21lZGlhU291cmNlLT5zb3VyY2VCdWZmZXJLZXlOZWVkZWQo
dGhpcywgaW5pdERhdGFBcnJheS5nZXQoKSk7CkBAIC03MzMsNiArNzgzLDkgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpkZXN0cm95UGFyc2VyKCkKIHsKKyAgICBpZiAobV9tZWRpYVNvdXJjZS0+cGxh
eWVyKCktPmhhc1N0cmVhbVNlc3Npb24oKSkKKyAgICAgICAgW21fbWVkaWFTb3VyY2UtPnBsYXll
cigpLT5zdHJlYW1TZXNzaW9uKCkgcmVtb3ZlU3RyZWFtRGF0YVBhcnNlcjptX3BhcnNlci5nZXQo
KV07CisKICAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKICAgICBtX2RlbGVnYXRlID0gbnVs
bHB0cjsKICAgICBtX3BhcnNlciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU29mdExpbmtpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Tb2Z0TGlua2luZy5oCmluZGV4IGRiZTU4YjZmYzI4MzBhOTJhMzBjZWQ5NWJjNjdhMzlmNWE2
MDgwNWMuLmU4MTExYzJlODU2MWZmODI4OGY1MDBmZTIzM2U5NzdjYTZiZjA3NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oCkBAIC0yMzYsNyArMjM2LDYgQEAK
ICAgICAgICAgcmV0dXJuIGNvbnN0YW50IyNuYW1lOyBcCiAgICAgfQogCi0jaWYgUExBVEZPUk0o
SU9TKQogI2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUwoZnJhbWV3b3JrLCBuYW1l
LCB0eXBlKSBcCiAgICAgc3RhdGljIGJvb2wgaW5pdCMjbmFtZSgpOyBcCiAgICAgc3RhdGljIHR5
cGUgKCpnZXQjI25hbWUpKCkgPSAwOyBcCkBAIC0yNjMsNCArMjYyLDMgQEAKICAgICAgICAgZ2V0
IyNuYW1lID0gbmFtZSMjRnVuY3Rpb247IFwKICAgICAgICAgcmV0dXJuIHRydWU7IFwKICAgICB9
Ci0jZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>