<?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>169643</bug_id>
          
          <creation_ts>2017-03-14 16:31:32 -0700</creation_ts>
          <short_desc>Compiled content extensions should include the JSON source</short_desc>
          <delta_ts>2017-03-15 10:59:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1287868</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-14 16:31:32 -0700</bug_when>
    <thetext>This way we can do things like validation of compiled binaries and automatic migrations from old versions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287871</commentid>
    <comment_count>1</comment_count>
      <attachid>304441</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-14 16:37:20 -0700</bug_when>
    <thetext>Created attachment 304441
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287872</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-14 16:39:13 -0700</bug_when>
    <thetext>Attachment 304441 did not pass style-queue:


ERROR: Source/WebKit2/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
ERROR: Tools/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 2 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287898</commentid>
    <comment_count>3</comment_count>
      <attachid>304448</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-14 17:17:58 -0700</bug_when>
    <thetext>Created attachment 304448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287906</commentid>
    <comment_count>4</comment_count>
      <attachid>304450</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-14 17:31:30 -0700</bug_when>
    <thetext>Created attachment 304450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288105</commentid>
    <comment_count>5</comment_count>
      <attachid>304450</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-03-15 10:17:50 -0700</bug_when>
    <thetext>Comment on attachment 304450
Patch

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

r=me

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKContentExtensionStore.mm:38
&gt; +    switch (error.value()) {

I think it&apos;s better to cast error.value() to API::ContentExtensionStore::Error instead of casting API::ContentExtensionStore::Error to int. That way, the switch can enforce checking for all enumerated values at compile time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288130</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-03-15 10:59:24 -0700</bug_when>
    <thetext>http://trac.webkit.org/r213988</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304441</attachid>
            <date>2017-03-14 16:37:20 -0700</date>
            <delta_ts>2017-03-14 17:17:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29085</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzg3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAzLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29tcGlsZWQg
Y29udGVudCBleHRlbnNpb25zIHNob3VsZCBpbmNsdWRlIHRoZSBKU09OIHNvdXJjZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NjQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VyaWFsaXppbmcgdGhl
IEpTT04gc3RyaW5nIGZyb20gd2hpY2ggYSBjb250ZW50IGV4dGVuc2lvbiB3YXMgY29tcGlsZWQK
KyAgICAgICAgdG8gZGlzayB3aXRoIHRoZSBjb21waWxlZCBjb250ZW50IGV4dGVuc2lvbiB3aWxs
IGFsbG93IHVzIHRvIHZhbGlkYXRlIGNvbnRlbnQKKyAgICAgICAgZXh0ZW5zaW9ucyBhbmQgYXV0
b21hdGljYWxseSBtaWdyYXRlIG9sZGVyIGNvbnRlbnQgZXh0ZW5zaW9ucyB0byBuZXcgdmVyc2lv
bnMuCisgICAgICAgIEl0IGxlc3MgdGhhbiBkb3VibGVzIHRoZSBzaXplIG9mIHRoZSBjb21waWxl
ZCBjb250ZW50IGV4dGVuc2lvbiBvbiBkaXNrLCBhbmQgd2hlbgorICAgICAgICBpbnRlcnByZXRp
bmcgdGhlIGJ5dGVjb2RlIHRoYXQgbWVtb3J5IGlzIG5ldmVyIHJlYWQsIHNvIGl0IGRvZXNuJ3Qg
aW5jcmVhc2Ugb3VyCisgICAgICAgIGRpcnR5IG1lbW9yeSB1c2FnZS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmg6CisKIDIwMTctMDMtMTMgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFdLV2ViVmlldyBwcm92aWRlcyBubyBhY2Nlc3Mg
dG8gY29va2llcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25Db21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcAkocmV2aXNpb24gMjEz
ODc4KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bkNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDYgKzMwNiw4IEBACiAjaWYgQ09O
VEVOVF9FWFRFTlNJT05TX1BFUkZPUk1BTkNFX1JFUE9SVElORwogICAgIGRvdWJsZSBwYXR0ZXJu
UGFydGl0aW9uaW5nU3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICNlbmRp
ZgorICAgIAorICAgIGNsaWVudC53cml0ZVNvdXJjZShydWxlSlNPTik7CiAKICAgICBWZWN0b3I8
U2VyaWFsaXplZEFjdGlvbkJ5dGU+IGFjdGlvbnM7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBhY3Rp
b25Mb2NhdGlvbnMgPSBzZXJpYWxpemVBY3Rpb25zKHBhcnNlZFJ1bGVMaXN0LCBhY3Rpb25zKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25D
b21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25Db21waWxlci5oCShyZXZpc2lvbiAyMTM4NzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogICAgIHZpcnR1YWwgfkNvbnRlbnRFeHRlbnNp
b25Db21waWxhdGlvbkNsaWVudCgpIHsgfQogICAgIAogICAgIC8vIEZ1bmN0aW9ucyBzaG91bGQg
YmUgY2FsbGVkIGluIHRoaXMgb3JkZXIuIEFsbCBleGNlcHQgd3JpdGVBY3Rpb25zIGFuZCBmaW5h
bGl6ZSBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCB0aG91Z2guCisgICAgdmlydHVhbCB2
b2lkIHdyaXRlU291cmNlKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVBY3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mJiwgYm9vbCBjb25kaXRpb25z
QXBwbHlPbmx5VG9Eb21haW4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0
aG91dENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZB
Qnl0ZWNvZGU+JiYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzg3OCkKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisy
MDE3LTAzLTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAgICAgIE5lZWQg
dGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmNw
cDoKKyAgICAgICAgKEFQSTo6Q29udGVudEV4dGVuc2lvblN0b3JlOjpDb250ZW50RXh0ZW5zaW9u
U3RvcmUpOgorICAgICAgICAoQVBJOjpDb250ZW50RXh0ZW5zaW9uTWV0YURhdGE6OmZpbGVTaXpl
KToKKyAgICAgICAgKEFQSTo6ZW5jb2RlQ29udGVudEV4dGVuc2lvbk1ldGFEYXRhKToKKyAgICAg
ICAgKEFQSTo6ZGVjb2RlQ29udGVudEV4dGVuc2lvbk1ldGFEYXRhKToKKyAgICAgICAgKEFQSTo6
Y29tcGlsZWRUb0ZpbGUpOgorICAgICAgICAoQVBJOjpjcmVhdGVFeHRlbnNpb24pOgorICAgICAg
ICAoQVBJOjpDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmdldENvbnRlbnRFeHRlbnNpb25Tb3VyY2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbToK
KyAgICAgICAgKHRvV0tFcnJvckNvZGUpOgorICAgICAgICAoLVtXS0NvbnRlbnRFeHRlbnNpb25T
dG9yZSBsb29rdXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgcmVtb3ZlQ29udGVudEV4
dGVuc2lvbkZvcklkZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
Q29udGVudEV4dGVuc2lvblN0b3JlIF9nZXRDb250ZW50RXh0ZW5zaW9uU291cmNlRm9ySWRlbnRp
Zmllcjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tFcnJvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNl
ckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbToKKyAgICAgICAgKHRvVXNlckNvbnRlbnRF
eHRlbnNpb25TdG9yZUVycm9yKToKKyAgICAgICAgKC1bX1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6ZW5jb2RlZENvbnRlbnRF
eHRlbnNpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmUgbG9va3VwQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUg
cmVtb3ZlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisKIDIwMTctMDMtMTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdLV2ViVmlldyBwcm92aWRlcyBubyBhY2Nlc3MgdG8gY29va2llcy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRFeHRlbnNp
b25TdG9yZS5jcHAJKHJldmlzaW9uIDIxMzg3OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NiArNjgsNyBAQAogICAgICwgbV9yZWFkUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkNvbnRlbnRF
eHRlbnNpb25TdG9yZSBSZWFkIFF1ZXVlIikpCiAgICAgLCBtX3JlbW92ZVF1ZXVlKFdvcmtRdWV1
ZTo6Y3JlYXRlKCJDb250ZW50RXh0ZW5zaW9uU3RvcmUgUmVtb3ZlIFF1ZXVlIikpCiB7CisgICAg
V2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JlUGF0aCk7CiB9CiAKIENvbnRlbnRFeHRl
bnNpb25TdG9yZTo6fkNvbnRlbnRFeHRlbnNpb25TdG9yZSgpCkBAIC04MSwxMSArODIsMTIgQEAK
IAogLy8gVGhlIHNpemUgYW5kIG9mZnNldCBvZiB0aGUgZGVuc2VseSBwYWNrZWQgYnl0ZXMgaW4g
dGhlIGZpbGUsIG5vdCBzaXplb2YgYW5kIG9mZnNldG9mLCB3aGljaCB3b3VsZAogLy8gcmVwcmVz
ZW50IHRoZSBzaXplIGFuZCBvZmZzZXQgb2YgdGhlIHN0cnVjdHVyZSBpbiBtZW1vcnksIHBvc3Np
Ymx5IHdpdGggY29tcGlsZXItYWRkZWQgcGFkZGluZy4KLWNvbnN0IHNpemVfdCBDb250ZW50RXh0
ZW5zaW9uRmlsZUhlYWRlclNpemUgPSAyICogc2l6ZW9mKHVpbnQzMl90KSArIDQgKiBzaXplb2Yo
dWludDY0X3QpOwotY29uc3Qgc2l6ZV90IENvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNl
dCA9IHNpemVvZih1aW50MzJfdCkgKyA0ICogc2l6ZW9mKHVpbnQ2NF90KTsKK2NvbnN0IHNpemVf
dCBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRlclNpemUgPSAyICogc2l6ZW9mKHVpbnQzMl90KSAr
IDUgKiBzaXplb2YodWludDY0X3QpOworY29uc3Qgc2l6ZV90IENvbmRpdGlvbnNBcHBseU9ubHlU
b0RvbWFpbk9mZnNldCA9IHNpemVvZih1aW50MzJfdCkgKyA1ICogc2l6ZW9mKHVpbnQ2NF90KTsK
IAogc3RydWN0IENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSB7CiAgICAgdWludDMyX3QgdmVyc2lv
biB7IENvbnRlbnRFeHRlbnNpb25TdG9yZTo6Q3VycmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVy
c2lvbiB9OworICAgIHVpbnQ2NF90IHNvdXJjZVNpemUgeyAwIH07CiAgICAgdWludDY0X3QgYWN0
aW9uc1NpemUgeyAwIH07CiAgICAgdWludDY0X3QgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0
ZWNvZGVTaXplIHsgMCB9OwogICAgIHVpbnQ2NF90IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVj
b2RlU2l6ZSB7IDAgfTsKQEAgLTk1LDYgKzk3LDcgQEAKICAgICBzaXplX3QgZmlsZVNpemUoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25GaWxlSGVhZGVyU2l6
ZQorICAgICAgICAgICAgKyBzb3VyY2VTaXplCiAgICAgICAgICAgICArIGFjdGlvbnNTaXplCiAg
ICAgICAgICAgICArIGZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZQogICAgICAg
ICAgICAgKyBmaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUKQEAgLTEwNyw2ICsxMTAs
NyBAQAogICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKIAogICAgIGVuY29k
ZXIgPDwgbWV0YURhdGEudmVyc2lvbjsKKyAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnNvdXJjZVNp
emU7CiAgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5hY3Rpb25zU2l6ZTsKICAgICBlbmNvZGVyIDw8
IG1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBlbmNv
ZGVyIDw8IG1ldGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKQEAgLTEy
OSw2ICsxMzMsOCBAQAogICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGRlY29kZXIo
ZGF0YSwgc2l6ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEudmVyc2lv
bikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobWV0YURhdGEuc291cmNlU2l6ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEuYWN0aW9uc1NpemUpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRhLmZp
bHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSkpCkBAIC0xODEsNiArMTg3LDcgQEAK
ICAgICAgICAgICAgIDogbV9maWxlSGFuZGxlKGZpbGVIYW5kbGUpCiAgICAgICAgICAgICAsIG1f
bWV0YURhdGEobWV0YURhdGEpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghbWV0YURh
dGEuc291cmNlU2l6ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmFjdGlvbnNTaXpl
KTsKICAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25z
Qnl0ZWNvZGVTaXplKTsKICAgICAgICAgICAgIEFTU0VSVCghbWV0YURhdGEuZmlsdGVyc1dpdGhD
b25kaXRpb25zQnl0ZWNvZGVTaXplKTsKQEAgLTE4OCw2ICsxOTUsMjUgQEAKICAgICAgICAgICAg
IEFTU0VSVCghbWV0YURhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKTsKICAgICAgICAg
fQogICAgICAgICAKKyAgICAgICAgdm9pZCB3cml0ZVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJj
ZUpTT04pIGZpbmFsIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNXaXRo
Q29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9jb25kaXRp
b25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9hY3Rpb25z
V3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fc291cmNlV3JpdHRlbik7CisgICAgICAg
ICAgICB3cml0ZVRvRmlsZShzb3VyY2VKU09OLmlzOEJpdCgpKTsKKyAgICAgICAgICAgIG1fc291
cmNlV3JpdHRlbiArPSBzaXplb2YoYm9vbCk7CisgICAgICAgICAgICBpZiAoc291cmNlSlNPTi5p
czhCaXQoKSkgeworICAgICAgICAgICAgICAgIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoID0gc291
cmNlSlNPTi5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcik7CisgICAgICAgICAgICAgICAgd3JpdGVU
b0ZpbGUoRGF0YShzb3VyY2VKU09OLmNoYXJhY3RlcnM4KCksIHNlcmlhbGl6ZWRMZW5ndGgpKTsK
KyAgICAgICAgICAgICAgICBtX3NvdXJjZVdyaXR0ZW4gKz0gc2VyaWFsaXplZExlbmd0aDsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNlcmlhbGl6ZWRMZW5n
dGggPSBzb3VyY2VKU09OLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgICAgICAg
ICB3cml0ZVRvRmlsZShEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJj
ZUpTT04uY2hhcmFjdGVyczE2KCkpLCBzZXJpYWxpemVkTGVuZ3RoKSk7CisgICAgICAgICAgICAg
ICAgbV9zb3VyY2VXcml0dGVuICs9IHNlcmlhbGl6ZWRMZW5ndGg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENvbmRp
dGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2Rl
V3JpdHRlbik7CkBAIC0yMjIsNiArMjQ4LDcgQEAKICAgICAgICAgCiAgICAgICAgIHZvaWQgZmlu
YWxpemUoKSBmaW5hbAogICAgICAgICB7CisgICAgICAgICAgICBtX21ldGFEYXRhLnNvdXJjZVNp
emUgPSBtX3NvdXJjZVdyaXR0ZW47CiAgICAgICAgICAgICBtX21ldGFEYXRhLmFjdGlvbnNTaXpl
ID0gbV9hY3Rpb25zV3JpdHRlbjsKICAgICAgICAgICAgIG1fbWV0YURhdGEuZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGVTaXplID0gbV9maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRl
Y29kZVdyaXR0ZW47CiAgICAgICAgICAgICBtX21ldGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9u
c0J5dGVjb2RlU2l6ZSA9IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW47CkBA
IC0yMzksNiArMjY2LDEwIEBACiAgICAgICAgIGJvb2wgaGFkRXJyb3JXaGlsZVdyaXRpbmdUb0Zp
bGUoKSB7IHJldHVybiBtX2ZpbGVFcnJvcjsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgdm9p
ZCB3cml0ZVRvRmlsZShib29sIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICB3cml0ZVRv
RmlsZShEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSksIHNpemVv
Zih2YWx1ZSkpKTsKKyAgICAgICAgfQogICAgICAgICB2b2lkIHdyaXRlVG9GaWxlKGNvbnN0IERh
dGEmIGRhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3IgJiYgIXdy
aXRlRGF0YVRvRmlsZShkYXRhLCBtX2ZpbGVIYW5kbGUpKSB7CkBAIC0yNTMsNiArMjg0LDcgQEAK
ICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4geyAw
IH07CiAgICAgICAgIHNpemVfdCBtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4geyAw
IH07CiAgICAgICAgIHNpemVfdCBtX2FjdGlvbnNXcml0dGVuIHsgMCB9OworICAgICAgICBzaXpl
X3QgbV9zb3VyY2VXcml0dGVuIHsgMCB9OwogICAgICAgICBib29sIG1fY29uZGl0aW9uc0FwcGx5
T25seVRvRG9tYWluIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2ZpbGVFcnJvciB7IGZhbHNl
IH07CiAgICAgfTsKQEAgLTI5NCwyMCArMzI2LDIxIEBACiBzdGF0aWMgUmVmUHRyPEFQSTo6Q29u
dGVudEV4dGVuc2lvbj4gY3JlYXRlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgQ29udGVudEV4dGVuc2lvbk1ldGFEYXRhJiBtZXRhRGF0YSwgY29uc3QgRGF0YSYgZmls
ZURhdGEpCiB7CiAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKGNvbnN0X2Nhc3Q8dWludDhfdCo+KGZpbGVEYXRhLmRhdGEoKSksIGZpbGVEYXRhLnNp
emUoKSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBj
b25zdCBzaXplX3QgaGVhZGVyQW5kU291cmNlU2l6ZSA9IENvbnRlbnRFeHRlbnNpb25GaWxlSGVh
ZGVyU2l6ZSArIG1ldGFEYXRhLnNvdXJjZVNpemU7CiAgICAgYXV0byBjb21waWxlZENvbnRlbnRF
eHRlbnNpb25EYXRhID0gV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhKAog
ICAgICAgICBXVEZNb3ZlKHNoYXJlZE1lbW9yeSksCiAgICAgICAgIGZpbGVEYXRhLAogICAgICAg
ICBDb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQsCi0gICAgICAgIENvbnRlbnRFeHRl
bnNpb25GaWxlSGVhZGVyU2l6ZSwKKyAgICAgICAgaGVhZGVyQW5kU291cmNlU2l6ZSwKICAgICAg
ICAgbWV0YURhdGEuYWN0aW9uc1NpemUsCi0gICAgICAgIENvbnRlbnRFeHRlbnNpb25GaWxlSGVh
ZGVyU2l6ZQorICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplCiAgICAgICAgICAgICArIG1ldGFE
YXRhLmFjdGlvbnNTaXplLAogICAgICAgICBtZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlv
bnNCeXRlY29kZVNpemUsCi0gICAgICAgIENvbnRlbnRFeHRlbnNpb25GaWxlSGVhZGVyU2l6ZQor
ICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplCiAgICAgICAgICAgICArIG1ldGFEYXRhLmFjdGlv
bnNTaXplCiAgICAgICAgICAgICArIG1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlU2l6ZSwKICAgICAgICAgbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNv
ZGVTaXplLAotICAgICAgICBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRlclNpemUKKyAgICAgICAg
aGVhZGVyQW5kU291cmNlU2l6ZQogICAgICAgICAgICAgKyBtZXRhRGF0YS5hY3Rpb25zU2l6ZQog
ICAgICAgICAgICAgKyBtZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNp
emUKICAgICAgICAgICAgICsgbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVT
aXplLApAQCAtNDAxLDcgKzQzNCw0OCBAQAogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZXNXcml0dGVu
LCBieXRlc1dyaXR0ZW4gPT0gc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKICAgICBXZWJDb3JlOjpj
bG9zZUZpbGUoZmlsZSk7CiB9Ci0gICAgCisKK3ZvaWQgQ29udGVudEV4dGVuc2lvblN0b3JlOjpn
ZXRDb250ZW50RXh0ZW5zaW9uU291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBG
dW5jdGlvbjx2b2lkKFdURjo6U3RyaW5nKT4gY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9y
ZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50
aWZpZXIgPSBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0
aC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRo
KHN0b3JlUGF0aCwgaWRlbnRpZmllcik7CisgICAgICAgIAorICAgICAgICBhdXRvIGNvbXBsZXRl
ID0gW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTdHJpbmcgc291cmNlKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIHNvdXJjZSA9IHNvdXJjZS5pc29sYXRlZENvcHkoKV0geworICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNvdXJjZSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSBtZXRh
RGF0YTsKKyAgICAgICAgRGF0YSBmaWxlRGF0YTsKKyAgICAgICAgaWYgKCFvcGVuQW5kTWFwQ29u
dGVudEV4dGVuc2lvbihwYXRoLCBtZXRhRGF0YSwgZmlsZURhdGEpKSB7CisgICAgICAgICAgICBj
b21wbGV0ZSh7IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBzd2l0Y2ggKG1ldGFEYXRhLnZlcnNpb24pIHsKKyAgICAgICAgY2FzZSA5OgorICAg
ICAgICAgICAgaWYgKCFtZXRhRGF0YS5zb3VyY2VTaXplKSB7CisgICAgICAgICAgICAgICAgY29t
cGxldGUoeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBib29sIGlzOEJpdCA9IGZpbGVEYXRhLmRhdGEoKVtDb250ZW50RXh0ZW5zaW9uRmls
ZUhlYWRlclNpemVdOworICAgICAgICAgICAgc2l6ZV90IHN0YXJ0ID0gQ29udGVudEV4dGVuc2lv
bkZpbGVIZWFkZXJTaXplICsgc2l6ZW9mKGJvb2wpOworICAgICAgICAgICAgc2l6ZV90IGxlbmd0
aCA9IG1ldGFEYXRhLnNvdXJjZVNpemUgLSBzaXplb2YoYm9vbCk7CisgICAgICAgICAgICBpZiAo
aXM4Qml0KQorICAgICAgICAgICAgICAgIGNvbXBsZXRlKFN0cmluZyhmaWxlRGF0YS5kYXRhKCkg
KyBzdGFydCwgbGVuZ3RoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoIShsZW5ndGggJSBzaXplb2YoVUNoYXIpKSk7CisgICAgICAgICAgICAgICAgY29tcGxl
dGUoU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihmaWxlRGF0YS5kYXRhKCkg
KyBzdGFydCksIGxlbmd0aCAvIHNpemVvZihVQ2hhcikpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE9sZGVyIHZlcnNpb25zIGNh
bm5vdCByZWNvdmVyIHRoZSBvcmlnaW5hbCBKU09OIHNvdXJjZSBmcm9tIGRpc2suCisgICAgICAg
IGNvbXBsZXRlKHsgfSk7CisgICAgfSk7Cit9CisKIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkm
IGNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yQ2F0ZWdvcnkoKQogewogICAgIGNsYXNzIENvbnRl
bnRFeHRlbnNpb25TdG9yZUVycm9yQ2F0ZWdvcnkgOiBwdWJsaWMgc3RkOjplcnJvcl9jYXRlZ29y
eSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRFeHRlbnNp
b25TdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudEV4dGVuc2lvblN0b3JlLmgJKHJldmlzaW9uIDIxMzg3OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDcgKzQyLDcgQEAKIGNsYXNzIENvbnRlbnRFeHRlbnNpb25TdG9yZSBmaW5hbCA6
IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6Q29udGVudEV4dGVuc2lvblN0b3JlPiB7
CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBFcnJvciB7Ci0gICAgICAgIExvb2t1cEZhaWxlZCA9
IDYsIC8vIE1pcnJvcnMgdmFsdWUgb2YgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZUxvb2t1
cEZhaWxlZAorICAgICAgICBMb29rdXBGYWlsZWQgPSAxLAogICAgICAgICBWZXJzaW9uTWlzbWF0
Y2gsCiAgICAgICAgIENvbXBpbGVGYWlsZWQsCiAgICAgICAgIFJlbW92ZUZhaWxlZApAQCAtNTAs
NyArNTAsOSBAQAogICAgIAogICAgIC8vIFRoaXMgc2hvdWxkIGJlIGluY3JlbWVudGVkIGV2ZXJ5
IHRpbWUgYSBmdW5jdGlvbmFsIGNoYW5nZSBpcyBtYWRlIHRvIHRoZSBieXRlY29kZSwgZmlsZSBm
b3JtYXQsIGV0Yy4KICAgICAvLyB0byBwcmV2ZW50IGNyYXNoaW5nIHdoaWxlIGxvYWRpbmcgb2xk
IGRhdGEuCi0gICAgY29uc3Qgc3RhdGljIHVpbnQzMl90IEN1cnJlbnRDb250ZW50RXh0ZW5zaW9u
RmlsZVZlcnNpb24gPSA4OworICAgIC8vIEFsc28gdXBkYXRlIENvbnRlbnRFeHRlbnNpb25TdG9y
ZTo6Z2V0Q29udGVudEV4dGVuc2lvblNvdXJjZSB0byBiZSBhYmxlIHRvIGZpbmQgdGhlIG9yaWdp
bmFsIEpTT04KKyAgICAvLyBzb3VyY2UgZnJvbSBvbGQgdmVyc2lvbnMuCisgICAgY29uc3Qgc3Rh
dGljIHVpbnQzMl90IEN1cnJlbnRDb250ZW50RXh0ZW5zaW9uRmlsZVZlcnNpb24gPSA5OwogCiAg
ICAgc3RhdGljIENvbnRlbnRFeHRlbnNpb25TdG9yZSYgZGVmYXVsdFN0b3JlKCk7CiAgICAgc3Rh
dGljIFJlZjxDb250ZW50RXh0ZW5zaW9uU3RvcmU+IHN0b3JlV2l0aFBhdGgoY29uc3QgV1RGOjpT
dHJpbmcmIHN0b3JlUGF0aCk7CkBAIC02Niw2ICs2OCw3IEBACiAgICAgLy8gRm9yIHRlc3Rpbmcg
b25seS4KICAgICB2b2lkIHN5bmNocm9ub3VzUmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnMoKTsK
ICAgICB2b2lkIGludmFsaWRhdGVDb250ZW50RXh0ZW5zaW9uVmVyc2lvbihjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllcik7CisgICAgdm9pZCBnZXRDb250ZW50RXh0ZW5zaW9uU291cmNlKGNv
bnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKFdURjo6U3RyaW5nKT4p
OwogCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIGRlZmF1bHRTdG9yZVBhdGgoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3Rv
cmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQkocmV2aXNpb24gMjEzODc4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjksOCArMjksMjcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNp
bXBvcnQgIkFQSUNvbnRlbnRFeHRlbnNpb25TdG9yZS5oIgogI2ltcG9ydCAiV0tFcnJvckludGVy
bmFsLmgiCiAKK3N0YXRpYyBXS0Vycm9yQ29kZSB0b1dLRXJyb3JDb2RlKGNvbnN0IHN0ZDo6ZXJy
b3JfY29kZSYgZXJyb3IpCit7CisgICAgQVNTRVJUKGVycm9yLmNhdGVnb3J5KCkgPT0gQVBJOjpj
b250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvckNhdGVnb3J5KCkpOworICAgIHN3aXRjaCAoZXJyb3Iu
dmFsdWUoKSkgeworICAgIGNhc2Ugc3RhdGljX2Nhc3Q8aW50PihBUEk6OkNvbnRlbnRFeHRlbnNp
b25TdG9yZTo6RXJyb3I6Okxvb2t1cEZhaWxlZCk6CisgICAgICAgIHJldHVybiBXS0Vycm9yQ29u
dGVudEV4dGVuc2lvblN0b3JlTG9va3VwRmFpbGVkOworICAgIGNhc2Ugc3RhdGljX2Nhc3Q8aW50
PihBUEk6OkNvbnRlbnRFeHRlbnNpb25TdG9yZTo6RXJyb3I6OlZlcnNpb25NaXNtYXRjaCk6Cisg
ICAgICAgIHJldHVybiBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3JlVmVyc2lvbk1pc21hdGNo
OworICAgIGNhc2Ugc3RhdGljX2Nhc3Q8aW50PihBUEk6OkNvbnRlbnRFeHRlbnNpb25TdG9yZTo6
RXJyb3I6OkNvbXBpbGVGYWlsZWQpOgorICAgICAgICByZXR1cm4gV0tFcnJvckNvbnRlbnRFeHRl
bnNpb25TdG9yZUNvbXBpbGVGYWlsZWQ7CisgICAgY2FzZSBzdGF0aWNfY2FzdDxpbnQ+KEFQSTo6
Q29udGVudEV4dGVuc2lvblN0b3JlOjpFcnJvcjo6UmVtb3ZlRmFpbGVkKToKKyAgICAgICAgcmV0
dXJuIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVSZW1vdmVGYWlsZWQ7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXS0Vycm9y
VW5rbm93bjsKKyAgICB9Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBXS0NvbnRlbnRFeHRlbnNpb25T
dG9yZQogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTkyLDggKzExMSw5IEBACiAgICAgICAgICAgICBh
dXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoV0tDb250ZW50RXh0ZW5zaW9uICosIE5TRXJyb3Ig
KikpaGFuZGxlci5nZXQoKTsKIAogICAgICAgICAgICAgYXV0byB1c2VySW5mbyA9IEB7TlNIZWxw
QW5jaG9yRXJyb3JLZXk6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXh0ZW5zaW9uIGxv
b2t1cCBmYWlsZWQ6ICVzIiwgZXJyb3IubWVzc2FnZSgpLmNfc3RyKCldfTsKLSAgICAgICAgICAg
IEFTU0VSVChlcnJvci52YWx1ZSgpID09IFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVMb29r
dXBGYWlsZWQgfHwgZXJyb3IudmFsdWUoKSA9PSBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3Jl
VmVyc2lvbk1pc21hdGNoKTsKLSAgICAgICAgICAgIHJhd0hhbmRsZXIobmlsLCBbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOmVycm9yLnZhbHVlKCkgdXNlckluZm86
dXNlckluZm9dKTsKKyAgICAgICAgICAgIGF1dG8gd2tFcnJvciA9IHRvV0tFcnJvckNvZGUoZXJy
b3IpOworICAgICAgICAgICAgQVNTRVJUKHdrRXJyb3IgPT0gV0tFcnJvckNvbnRlbnRFeHRlbnNp
b25TdG9yZUxvb2t1cEZhaWxlZCB8fCB3a0Vycm9yID09IFdLRXJyb3JDb250ZW50RXh0ZW5zaW9u
U3RvcmVWZXJzaW9uTWlzbWF0Y2gpOworICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwsIFtOU0Vy
cm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6d2tFcnJvciB1c2VySW5mbzp1
c2VySW5mb10pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMSw3ICsx
MzEsOCBAQAogICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TRXJyb3Ig
KikpaGFuZGxlci5nZXQoKTsKIAogICAgICAgICAgICAgYXV0byB1c2VySW5mbyA9IEB7TlNIZWxw
QW5jaG9yRXJyb3JLZXk6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXh0ZW5zaW9uIHJl
bW92YWwgZmFpbGVkOiAlcyIsIGVycm9yLm1lc3NhZ2UoKS5jX3N0cigpXX07Ci0gICAgICAgICAg
ICBBU1NFUlQoZXJyb3IudmFsdWUoKSA9PSBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3JlUmVt
b3ZlRmFpbGVkKTsKKyAgICAgICAgICAgIGF1dG8gd2tFcnJvciA9IHRvV0tFcnJvckNvZGUoZXJy
b3IpOworICAgICAgICAgICAgQVNTRVJUKHdrRXJyb3IgPT0gV0tFcnJvckNvbnRlbnRFeHRlbnNp
b25TdG9yZVJlbW92ZUZhaWxlZCk7CiAgICAgICAgICAgICByYXdIYW5kbGVyKFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckNvbnRlbnRFeHRlbnNpb25T
dG9yZVJlbW92ZUZhaWxlZCB1c2VySW5mbzp1c2VySW5mb10pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0xNDQsNiArMTY1LDE4IEBACiAgICAgX2NvbnRlbnRFeHRlbnNpb25T
dG9yZS0+aW52YWxpZGF0ZUNvbnRlbnRFeHRlbnNpb25WZXJzaW9uKGlkZW50aWZpZXIpOwogfQog
CistICh2b2lkKV9nZXRDb250ZW50RXh0ZW5zaW9uU291cmNlRm9ySWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyopKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlv
bkhhbmRsZXIgY29weV0pOworICAgIF9jb250ZW50RXh0ZW5zaW9uU3RvcmUtPmdldENvbnRlbnRF
eHRlbnNpb25Tb3VyY2UoaWRlbnRpZmllciwgW2hhbmRsZXJdKFN0cmluZyBzb3VyY2UpIHsKKyAg
ICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TU3RyaW5nICopKWhhbmRsZXIuZ2V0
KCk7CisgICAgICAgIGlmIChzb3VyY2UuaXNOdWxsKCkpCisgICAgICAgICAgICByYXdIYW5kbGVy
KG5pbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhd0hhbmRsZXIoc291cmNlKTsKKyAg
ICB9KTsKK30KKwogLy8gTlNfUkVMRUFTRVNfQVJHVU1FTlQgdG8ga2VlcCBwZWFrIG1lbW9yeSB1
c2FnZSBsb3cuCiAKIC0gKHZvaWQpX2NvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOihOU1N0cmlu
ZyAqKWVuY29kZWRDb250ZW50RXh0ZW5zaW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShX
S0NvbnRlbnRFeHRlbnNpb24gKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9y
ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMTM4NzgpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4dGVuc2lvblN0
b3JlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAvLyBGb3IgdGVz
dGluZyBvbmx5LgogLSAodm9pZClfcmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnM7CiAtICh2b2lk
KV9pbnZhbGlkYXRlQ29udGVudEV4dGVuc2lvblZlcnNpb25Gb3JJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXI7CistICh2b2lkKV9nZXRDb250ZW50RXh0ZW5zaW9uU291cmNlRm9ySWRl
bnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1N0cmluZyopKWNvbXBsZXRpb25IYW5kbGVyOwogCiAvLyBOU19SRUxFQVNFU19BUkdVTUVO
VCB0byBrZWVwIHBlYWsgbWVtb3J5IHVzYWdlIGxvdy4KIC0gKHZvaWQpX2NvbXBpbGVDb250ZW50
RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250
ZW50RXh0ZW5zaW9uOihOU1N0cmluZyAqKSBOU19SRUxFQVNFU19BUkdVTUVOVCBlbmNvZGVkQ29u
dGVudEV4dGVuc2lvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250ZW50RXh0ZW5z
aW9uICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaAkocmV2aXNpb24gMjEzODc4KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDcgKzQyLDcgQEAKICBAY29uc3RhbnQgV0tFcnJvckphdmFTY3JpcHRFeGNlcHRp
b25PY2N1cnJlZCAgICAgICAgICBJbmRpY2F0ZXMgdGhhdCBhIEphdmFTY3JpcHQgZXhjZXB0aW9u
IG9jY3VycmVkLgogIEBjb25zdGFudCBXS0Vycm9ySmF2YVNjcmlwdFJlc3VsdFR5cGVJc1Vuc3Vw
cG9ydGVkICAgIEluZGljYXRlcyB0aGF0IHRoZSByZXN1bHQgb2YgSmF2YVNjcmlwdCBleGVjdXRp
b24gY291bGQgbm90IGJlIHJldHVybmVkLgogIEBjb25zdGFudCBXS0Vycm9yQ29udGVudEV4dGVu
c2lvblN0b3JlTG9va3VwRmFpbGVkICAgIEluZGljYXRlcyB0aGF0IGxvb2tpbmcgdXAgYSBXS1Vz
ZXJDb250ZW50RXh0ZW5zaW9uIGZhaWxlZC4KLSBAY29uc3RhbnQgV0tFcnJvckNvbnRlbnRFeHRl
bnNpb25TdG9yZVZlcnNpb25NaXNtYXRjaCBJbmRpY2F0ZXMgdGhhdCBsb29raW5nIHVwIGEgV0tV
c2VyQ29udGVudEV4dGVuc2lvbiBmb3VuZCBhbiBleHRlbnNpb24gd2l0aCBhbiBpbmNvbXBhdGli
bGUgYmluYXJ5IHZlcnNpb24uCisgQGNvbnN0YW50IFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3Rv
cmVWZXJzaW9uTWlzbWF0Y2ggSW5kaWNhdGVzIHRoYXQgV0tVc2VyQ29udGVudEV4dGVuc2lvbiB2
ZXJzaW9uIGRpZCBub3QgbWF0Y2ggdGhlIGxhdGVzdC4KICBAY29uc3RhbnQgV0tFcnJvckNvbnRl
bnRFeHRlbnNpb25TdG9yZUNvbXBpbGVGYWlsZWQgICBJbmRpY2F0ZXMgdGhhdCBjb21waWxpbmcg
YSBXS1VzZXJDb250ZW50RXh0ZW5zaW9uIGZhaWxlZC4KICBAY29uc3RhbnQgV0tFcnJvckNvbnRl
bnRFeHRlbnNpb25TdG9yZVJlbW92ZUZhaWxlZCAgICBJbmRpY2F0ZXMgdGhhdCByZW1vdmluZyBh
IFdLVXNlckNvbnRlbnRFeHRlbnNpb24gZmFpbGVkLgogICovCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmUuaAkocmV2aXNpb24gMjEzODc4KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9X
S1VzZXJDb250ZW50RXh0ZW5zaW9uc0RvbWFpbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MiksIGlvcygxMC4wKSk7CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmVFcnJvckNvZGUpIHsKLSAgICBfV0tVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlRXJyb3JMb29rdXBGYWlsZWQgPSA2LCAvLyBNaXJyb3JzIHZhbHVlIG9mIFdLRXJyb3JD
b250ZW50RXh0ZW5zaW9uU3RvcmVMb29rdXBGYWlsZWQKKyAgICBfV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlRXJyb3JMb29rdXBGYWlsZWQsCiAgICAgX1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZUVycm9yVmVyc2lvbk1pc21hdGNoLAogICAgIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmVFcnJvckNvbXBpbGVGYWlsZWQsCiAgICAgX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVy
cm9yUmVtb3ZlRmFpbGVkLApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5t
bQkocmV2aXNpb24gMjEzODc4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2
ICszOCwyNiBAQAogCiBOU1N0cmluZyAqIGNvbnN0IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uc0Rv
bWFpbiA9IEAiV0tFcnJvckRvbWFpbiI7CiAKK3N0YXRpYyBOU0Vycm9yICp0b1VzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmVFcnJvcihjb25zdCBOU0Vycm9yICplcnJvcikKK3sKKyAgICBpZiAoIWVy
cm9yKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVNTRVJUKGVycm9yLmRvbWFpbiA9PSBX
S0Vycm9yRG9tYWluKTsKKyAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAgICBjYXNlIFdLRXJy
b3JDb250ZW50RXh0ZW5zaW9uU3RvcmVMb29rdXBGYWlsZWQ6CisgICAgICAgIHJldHVybiBbTlNF
cnJvciBlcnJvcldpdGhEb21haW46X1dLVXNlckNvbnRlbnRFeHRlbnNpb25zRG9tYWluIGNvZGU6
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yTG9va3VwRmFpbGVkIHVzZXJJbmZvOmVy
cm9yLnVzZXJJbmZvXTsKKyAgICBjYXNlIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVWZXJz
aW9uTWlzbWF0Y2g6CisgICAgICAgIHJldHVybiBbTlNFcnJvciBlcnJvcldpdGhEb21haW46X1dL
VXNlckNvbnRlbnRFeHRlbnNpb25zRG9tYWluIGNvZGU6X1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZUVycm9yVmVyc2lvbk1pc21hdGNoIHVzZXJJbmZvOmVycm9yLnVzZXJJbmZvXTsKKyAgICBj
YXNlIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVDb21waWxlRmFpbGVkOgorICAgICAgICBy
ZXR1cm4gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOl9XS1VzZXJDb250ZW50RXh0ZW5zaW9uc0Rv
bWFpbiBjb2RlOl9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvckNvbXBpbGVGYWlsZWQg
dXNlckluZm86ZXJyb3IudXNlckluZm9dOworICAgIGNhc2UgV0tFcnJvckNvbnRlbnRFeHRlbnNp
b25TdG9yZVJlbW92ZUZhaWxlZDoKKyAgICAgICAgcmV0dXJuIFtOU0Vycm9yIGVycm9yV2l0aERv
bWFpbjpfV0tVc2VyQ29udGVudEV4dGVuc2lvbnNEb21haW4gY29kZTpfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlRXJyb3JSZW1vdmVGYWlsZWQgdXNlckluZm86ZXJyb3IudXNlckluZm9dOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorfQorCiBAaW1wbGVtZW50YXRpb24gX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZQogCiAr
IChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3JlCkBAIC01NCw3ICs3NCw3IEBACiB7CiAgICAgW19j
b250ZW50RXh0ZW5zaW9uU3RvcmUgX2NvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmll
cjppZGVudGlmaWVyIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmVuY29kZWRDb250ZW50RXh0ZW5z
aW9uIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5zaW9uICpjb250ZW50RXh0ZW5z
aW9uLCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBfV0tVc2VyQ29udGVudEZpbHRlciAqY29u
dGVudEZpbHRlciA9IGNvbnRlbnRFeHRlbnNpb24gPyBbW1tfV0tVc2VyQ29udGVudEZpbHRlciBh
bGxvY10gX2luaXRXaXRoV0tDb250ZW50RXh0ZW5zaW9uOmNvbnRlbnRFeHRlbnNpb25dIGF1dG9y
ZWxlYXNlXSA6IG5pbDsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGVudEZpbHRlciwg
ZXJyb3IpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZW50RmlsdGVyLCB0b1VzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvcihlcnJvcikpOwogICAgIH1dOwogfQogCkBAIC02Miwx
MyArODIsMTUgQEAKIHsKICAgICBbX2NvbnRlbnRFeHRlbnNpb25TdG9yZSBsb29rdXBDb250ZW50
RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tD
b250ZW50RXh0ZW5zaW9uICpjb250ZW50RXh0ZW5zaW9uLCBOU0Vycm9yICplcnJvcikgewogICAg
ICAgICBfV0tVc2VyQ29udGVudEZpbHRlciAqY29udGVudEZpbHRlciA9IGNvbnRlbnRFeHRlbnNp
b24gPyBbW1tfV0tVc2VyQ29udGVudEZpbHRlciBhbGxvY10gX2luaXRXaXRoV0tDb250ZW50RXh0
ZW5zaW9uOmNvbnRlbnRFeHRlbnNpb25dIGF1dG9yZWxlYXNlXSA6IG5pbDsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoY29udGVudEZpbHRlciwgZXJyb3IpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihjb250ZW50RmlsdGVyLCB0b1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvcihl
cnJvcikpOwogICAgIH1dOwogfQogCiAtICh2b2lkKXJlbW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBbX2NvbnRlbnRFeHRlbnNp
b25TdG9yZSByZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbX2NvbnRlbnRFeHRlbnNp
b25TdG9yZSByZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNv
bXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIodG9Vc2VyQ29udGVudEV4dGVuc2lvblN0b3JlRXJyb3IoZXJyb3IpKTsKKyAgICB9XTsK
IH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMTM5NTQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAxNy0wMy0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAg
ICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVu
dEV4dGVuc2lvbnMuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbToKKyAgICAgICAgKFRFU1RfRik6CisK
IDIwMTctMDMtMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBXS0hUVFBDb29raWVTdG9yYWdlIHRvIFdLSFRUUENvb2tpZVN0b3JlLgpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4
dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAyMTM4NzgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAs
NiArMTAwLDggQEAKICAgICAgICAgRVhQRUNUX0VRKGRhdGEudG9wVVJMRmlsdGVycy5zaXplKCks
IDB1bGwpOwogICAgIH0KIAorICAgIHZvaWQgd3JpdGVTb3VyY2UoY29uc3QgU3RyaW5nJikgZmlu
YWwgeyB9CisKICAgICB2b2lkIHdyaXRlQWN0aW9ucyhWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6
OlNlcmlhbGl6ZWRBY3Rpb25CeXRlPiYmIGFjdGlvbnMsIGJvb2wgY29uZGl0aW9uc0FwcGx5T25s
eVRvRG9tYWluKSBmaW5hbAogICAgIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbmFsaXplZCk7
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCShyZXZpc2lv
biAyMTM4NzgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1Vz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYs
MTMgQEAKICAgICAgICAgZG9uZUxvb2tpbmdVcCA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lTG9va2luZ1VwKTsKKworICAgIF9fYmxvY2sgYm9vbCBk
b25lR2V0dGluZ1NvdXJjZSA9IGZhbHNlOworICAgIFtbV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUg
ZGVmYXVsdFN0b3JlXSBfZ2V0Q29udGVudEV4dGVuc2lvblNvdXJjZUZvcklkZW50aWZpZXI6QCJU
ZXN0RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nKiBzb3VyY2UpIHsKKyAg
ICAgICAgRVhQRUNUX05VTEwoc291cmNlKTsKKyAgICAgICAgZG9uZUdldHRpbmdTb3VyY2UgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUdldHRpbmdT
b3VyY2UpOwogfQogCiBURVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBSZW1vdmFs
KQpAQCAtMTgzLDQgKzE5MCw2OSBAQAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZVJlbW92aW5nKTsKIH0KIAorVEVTVF9GKFdLQ29udGVudEV4dGVuc2lvblN0b3JlVGVzdCwgTm9u
RGVmYXVsdFN0b3JlKQoreworICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJDb250ZW50RXh0ZW5zaW9uVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CisgICAgV0tDb250
ZW50RXh0ZW5zaW9uU3RvcmUgKnN0b3JlID0gW1dLQ29udGVudEV4dGVuc2lvblN0b3JlIHN0b3Jl
V2l0aFVSTDp0ZW1wRGlyXTsKKyAgICBOU1N0cmluZyAqaWRlbnRpZmllciA9IEAiVGVzdEV4dGVu
c2lvbiI7CisgICAgTlNTdHJpbmcgKmZpbGVOYW1lID0gQCJDb250ZW50RXh0ZW5zaW9uLVRlc3RF
eHRlbnNpb24iOworCisgICAgX19ibG9jayBib29sIGRvbmVDb21waWxpbmcgPSBmYWxzZTsKKyAg
ICBbc3RvcmUgY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOmlkZW50aWZpZXIg
ZW5jb2RlZENvbnRlbnRFeHRlbnNpb246YmFzaWNGaWx0ZXIgY29tcGxldGlvbkhhbmRsZXI6XihX
S0NvbnRlbnRFeHRlbnNpb24gKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05PVF9OVUxMKGZpbHRlcik7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAg
ICAgZG9uZUNvbXBpbGluZyA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lQ29tcGlsaW5nKTsKKworICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0
YVdpdGhDb250ZW50c09mVVJMOlt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpm
aWxlTmFtZV1dOworICAgIEVYUEVDVF9OT1RfTlVMTChkYXRhKTsKKyAgICBFWFBFQ1RfRVEoZGF0
YS5sZW5ndGgsIDIyOHUpOworICAgIAorICAgIF9fYmxvY2sgYm9vbCBkb25lQ2hlY2tpbmdTb3Vy
Y2UgPSBmYWxzZTsKKyAgICBbc3RvcmUgX2dldENvbnRlbnRFeHRlbnNpb25Tb3VyY2VGb3JJZGVu
dGlmaWVyOmlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqc291cmNlKSB7
CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChzb3VyY2UpOworICAgICAgICBFWFBFQ1RfU1RSRVEo
YmFzaWNGaWx0ZXIuVVRGOFN0cmluZywgc291cmNlLlVURjhTdHJpbmcpOworICAgICAgICBkb25l
Q2hlY2tpbmdTb3VyY2UgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZUNoZWNraW5nU291cmNlKTsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZVJl
bW92aW5nID0gZmFsc2U7CisgICAgW3N0b3JlIHJlbW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVu
dGlmaWVyOmlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGRvbmVSZW1vdmluZyA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lUmVtb3ZpbmcpOwor
CisgICAgTlNEYXRhICpkYXRhQWZ0ZXJSZW1vdmluZyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mVVJMOlt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlTmFtZV1dOwor
ICAgIEVYUEVDVF9OVUxMKGRhdGFBZnRlclJlbW92aW5nKTsKK30KKworVEVTVF9GKFdLQ29udGVu
dEV4dGVuc2lvblN0b3JlVGVzdCwgTm9uQVNDSUlTb3VyY2UpCit7CisgICAgc3RhdGljIE5TU3Ry
aW5nICpub25BU0NJSUZpbHRlciA9IEAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImJsb2NrXCJ9
LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4qd2Via2l0Lm9yZ1wifSwgXCJ1bnVzZWRc
IjpcIvCfkqlcIn1dIjsKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiQ29udGVudEV4dGVuc2lvblRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworICAgIFdLQ29udGVu
dEV4dGVuc2lvblN0b3JlICpzdG9yZSA9IFtXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBzdG9yZVdp
dGhVUkw6dGVtcERpcl07CisgICAgTlNTdHJpbmcgKmlkZW50aWZpZXIgPSBAIlRlc3RFeHRlbnNp
b24iOworICAgIE5TU3RyaW5nICpmaWxlTmFtZSA9IEAiQ29udGVudEV4dGVuc2lvbi1UZXN0RXh0
ZW5zaW9uIjsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtzdG9y
ZSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6aWRlbnRpZmllciBlbmNvZGVk
Q29udGVudEV4dGVuc2lvbjpub25BU0NJSUZpbHRlciBjb21wbGV0aW9uSGFuZGxlcjpeKFdLQ29u
dGVudEV4dGVuc2lvbiAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1Rf
Tk9UX05VTEwoZmlsdGVyKTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworCisgICAgICAg
IFtzdG9yZSBfZ2V0Q29udGVudEV4dGVuc2lvblNvdXJjZUZvcklkZW50aWZpZXI6aWRlbnRpZmll
ciBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpzb3VyY2UpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9OT1RfTlVMTChzb3VyY2UpOworICAgICAgICAgICAgRVhQRUNUX1NUUkVRKG5vbkFTQ0lJ
RmlsdGVyLlVURjhTdHJpbmcsIHNvdXJjZS5VVEY4U3RyaW5nKTsKKworICAgICAgICAgICAgW3N0
b3JlIF9yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9uc107CisgICAgICAgICAgICBOU0RhdGEgKmRh
dGFBZnRlclJlbW92aW5nID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6W3RlbXBEaXIg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVOYW1lXV07CisgICAgICAgICAgICBFWFBF
Q1RfTlVMTChkYXRhQWZ0ZXJSZW1vdmluZyk7CisKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworfQorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304448</attachid>
            <date>2017-03-14 17:17:58 -0700</date>
            <delta_ts>2017-03-14 17:31:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169643-20170314171758.patch</filename>
            <type>text/plain</type>
            <size>30187</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzk2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAzLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29tcGlsZWQg
Y29udGVudCBleHRlbnNpb25zIHNob3VsZCBpbmNsdWRlIHRoZSBKU09OIHNvdXJjZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NjQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VyaWFsaXppbmcgdGhl
IEpTT04gc3RyaW5nIGZyb20gd2hpY2ggYSBjb250ZW50IGV4dGVuc2lvbiB3YXMgY29tcGlsZWQK
KyAgICAgICAgdG8gZGlzayB3aXRoIHRoZSBjb21waWxlZCBjb250ZW50IGV4dGVuc2lvbiB3aWxs
IGFsbG93IHVzIHRvIHZhbGlkYXRlIGNvbnRlbnQKKyAgICAgICAgZXh0ZW5zaW9ucyBhbmQgYXV0
b21hdGljYWxseSBtaWdyYXRlIG9sZGVyIGNvbnRlbnQgZXh0ZW5zaW9ucyB0byBuZXcgdmVyc2lv
bnMuCisgICAgICAgIEl0IGxlc3MgdGhhbiBkb3VibGVzIHRoZSBzaXplIG9mIHRoZSBjb21waWxl
ZCBjb250ZW50IGV4dGVuc2lvbiBvbiBkaXNrLCBhbmQgd2hlbgorICAgICAgICBpbnRlcnByZXRp
bmcgdGhlIGJ5dGVjb2RlIHRoYXQgbWVtb3J5IGlzIG5ldmVyIHJlYWQsIHNvIGl0IGRvZXNuJ3Qg
aW5jcmVhc2Ugb3VyCisgICAgICAgIGRpcnR5IG1lbW9yeSB1c2FnZS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmg6CisKIDIwMTctMDMtMTQgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDk3NjApOiBBcHBsZSBQYXkg
ZG9lc24ndCB3b3JrIG9uIHNpdGVzIHRoYXQgc3BlY2lmeSBlbXB0eSBjb250YWN0IGZpZWxkcwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMTM5NjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDYsNiArMzA2LDggQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBp
bGVSdWxlTGlzdChDb250ZW50RQogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9S
RVBPUlRJTkcKICAgICBkb3VibGUgcGF0dGVyblBhcnRpdGlvbmluZ1N0YXJ0ID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CiAjZW5kaWYKKyAgICAKKyAgICBjbGllbnQud3JpdGVTb3Vy
Y2UocnVsZUpTT04pOwogCiAgICAgVmVjdG9yPFNlcmlhbGl6ZWRBY3Rpb25CeXRlPiBhY3Rpb25z
OwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWN0aW9uTG9jYXRpb25zID0gc2VyaWFsaXplQWN0aW9u
cyhwYXJzZWRSdWxlTGlzdCwgYWN0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAko
cmV2aXNpb24gMjEzOTYwKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCgp
IHsgfQogICAgIAogICAgIC8vIEZ1bmN0aW9ucyBzaG91bGQgYmUgY2FsbGVkIGluIHRoaXMgb3Jk
ZXIuIEFsbCBleGNlcHQgd3JpdGVBY3Rpb25zIGFuZCBmaW5hbGl6ZSBjYW4gYmUgY2FsbGVkIG11
bHRpcGxlIHRpbWVzLCB0aG91Z2guCisgICAgdmlydHVhbCB2b2lkIHdyaXRlU291cmNlKGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVBY3Rpb25zKFZlY3RvcjxTZXJp
YWxpemVkQWN0aW9uQnl0ZT4mJiwgYm9vbCBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29k
ZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0
ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzk2MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTAzLTE0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29tcGlsZWQgY29u
dGVudCBleHRlbnNpb25zIHNob3VsZCBpbmNsdWRlIHRoZSBKU09OIHNvdXJjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NjQzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRFeHRlbnNp
b25TdG9yZTo6Q29udGVudEV4dGVuc2lvblN0b3JlKToKKyAgICAgICAgKEFQSTo6Q29udGVudEV4
dGVuc2lvbk1ldGFEYXRhOjpmaWxlU2l6ZSk6CisgICAgICAgIChBUEk6OmVuY29kZUNvbnRlbnRF
eHRlbnNpb25NZXRhRGF0YSk6CisgICAgICAgIChBUEk6OmRlY29kZUNvbnRlbnRFeHRlbnNpb25N
ZXRhRGF0YSk6CisgICAgICAgIChBUEk6OmNvbXBpbGVkVG9GaWxlKToKKyAgICAgICAgKEFQSTo6
Y3JlYXRlRXh0ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6Q29udGVudEV4dGVuc2lvblN0b3JlOjpn
ZXRDb250ZW50RXh0ZW5zaW9uU291cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRFeHRlbnNpb25TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b250ZW50RXh0ZW5zaW9uU3RvcmUubW06CisgICAgICAgICh0b1dLRXJyb3JDb2RlKToKKyAgICAg
ICAgKC1bV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgbG9va3VwQ29udGVudEV4dGVuc2lvbkZvcklk
ZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudEV4dGVu
c2lvblN0b3JlIHJlbW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBfZ2V0Q29udGVu
dEV4dGVuc2lvblNvdXJjZUZvcklkZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW06
CisgICAgICAgICh0b1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvcik6CisgICAgICAgICgt
W19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJ
ZGVudGlmaWVyOmVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIGxvb2t1cENvbnRlbnRFeHRl
bnNpb25Gb3JJZGVudGlmaWVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHJlbW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlm
aWVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCiAyMDE3LTAzLTE0ICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIExldCBQREZMYXllckNvbnRyb2xsZXIg
ZHJpdmUgY3Vyc29yIHVwZGF0ZXMgc28gdGhhdCBpdCdzIGNvcnJlY3QgbW9yZSBvZnRlbgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dEV4dGVuc2lvblN0b3JlLmNwcAkocmV2aXNpb24gMjEzOTYwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCw3IEBAIENvbnRlbnRFeHRlbnNpb25TdG9yZTo6Q29udGVudEV4dGVuc2lv
blMKICAgICAsIG1fcmVhZFF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJDb250ZW50RXh0ZW5zaW9u
U3RvcmUgUmVhZCBRdWV1ZSIpKQogICAgICwgbV9yZW1vdmVRdWV1ZShXb3JrUXVldWU6OmNyZWF0
ZSgiQ29udGVudEV4dGVuc2lvblN0b3JlIFJlbW92ZSBRdWV1ZSIpKQogeworICAgIFdlYkNvcmU6
Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQogCiBDb250ZW50RXh0ZW5zaW9uU3Rv
cmU6On5Db250ZW50RXh0ZW5zaW9uU3RvcmUoKQpAQCAtODEsMTEgKzgyLDEyIEBAIHN0YXRpYyBT
dHJpbmcgY29uc3RydWN0ZWRQYXRoKGNvbnN0IFN0cmkKIAogLy8gVGhlIHNpemUgYW5kIG9mZnNl
dCBvZiB0aGUgZGVuc2VseSBwYWNrZWQgYnl0ZXMgaW4gdGhlIGZpbGUsIG5vdCBzaXplb2YgYW5k
IG9mZnNldG9mLCB3aGljaCB3b3VsZAogLy8gcmVwcmVzZW50IHRoZSBzaXplIGFuZCBvZmZzZXQg
b2YgdGhlIHN0cnVjdHVyZSBpbiBtZW1vcnksIHBvc3NpYmx5IHdpdGggY29tcGlsZXItYWRkZWQg
cGFkZGluZy4KLWNvbnN0IHNpemVfdCBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRlclNpemUgPSAy
ICogc2l6ZW9mKHVpbnQzMl90KSArIDQgKiBzaXplb2YodWludDY0X3QpOwotY29uc3Qgc2l6ZV90
IENvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCA9IHNpemVvZih1aW50MzJfdCkgKyA0
ICogc2l6ZW9mKHVpbnQ2NF90KTsKK2NvbnN0IHNpemVfdCBDb250ZW50RXh0ZW5zaW9uRmlsZUhl
YWRlclNpemUgPSAyICogc2l6ZW9mKHVpbnQzMl90KSArIDUgKiBzaXplb2YodWludDY0X3QpOwor
Y29uc3Qgc2l6ZV90IENvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCA9IHNpemVvZih1
aW50MzJfdCkgKyA1ICogc2l6ZW9mKHVpbnQ2NF90KTsKIAogc3RydWN0IENvbnRlbnRFeHRlbnNp
b25NZXRhRGF0YSB7CiAgICAgdWludDMyX3QgdmVyc2lvbiB7IENvbnRlbnRFeHRlbnNpb25TdG9y
ZTo6Q3VycmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lvbiB9OworICAgIHVpbnQ2NF90IHNv
dXJjZVNpemUgeyAwIH07CiAgICAgdWludDY0X3QgYWN0aW9uc1NpemUgeyAwIH07CiAgICAgdWlu
dDY0X3QgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplIHsgMCB9OwogICAgIHVp
bnQ2NF90IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSB7IDAgfTsKQEAgLTk1LDYg
Kzk3LDcgQEAgc3RydWN0IENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSB7CiAgICAgc2l6ZV90IGZp
bGVTaXplKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uRmls
ZUhlYWRlclNpemUKKyAgICAgICAgICAgICsgc291cmNlU2l6ZQogICAgICAgICAgICAgKyBhY3Rp
b25zU2l6ZQogICAgICAgICAgICAgKyBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNp
emUKICAgICAgICAgICAgICsgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplCkBAIC0x
MDcsNiArMTEwLDcgQEAgc3RhdGljIERhdGEgZW5jb2RlQ29udGVudEV4dGVuc2lvbk1ldGFEYQog
ICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKIAogICAgIGVuY29kZXIgPDwg
bWV0YURhdGEudmVyc2lvbjsKKyAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnNvdXJjZVNpemU7CiAg
ICAgZW5jb2RlciA8PCBtZXRhRGF0YS5hY3Rpb25zU2l6ZTsKICAgICBlbmNvZGVyIDw8IG1ldGFE
YXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBlbmNvZGVyIDw8
IG1ldGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKQEAgLTEyOSw2ICsx
MzMsOCBAQCBzdGF0aWMgYm9vbCBkZWNvZGVDb250ZW50RXh0ZW5zaW9uTWV0YURhCiAgICAgICAg
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLCBzaXplKTsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0YS52ZXJzaW9uKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0YS5zb3VyY2VTaXpl
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShtZXRhRGF0YS5hY3Rpb25zU2l6ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25z
Qnl0ZWNvZGVTaXplKSkKQEAgLTE4MSw2ICsxODcsNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2Rl
IGNvbXBpbGVkVG9GaWxlKFN0CiAgICAgICAgICAgICA6IG1fZmlsZUhhbmRsZShmaWxlSGFuZGxl
KQogICAgICAgICAgICAgLCBtX21ldGFEYXRhKG1ldGFEYXRhKQogICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQoIW1ldGFEYXRhLnNvdXJjZVNpemUpOwogICAgICAgICAgICAgQVNTRVJUKCFt
ZXRhRGF0YS5hY3Rpb25zU2l6ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmZpbHRl
cnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1l
dGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSk7CkBAIC0xODgsNiArMTk1
LDI1IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3QKICAgICAgICAg
ICAgIEFTU0VSVCghbWV0YURhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKTsKICAgICAg
ICAgfQogICAgICAgICAKKyAgICAgICAgdm9pZCB3cml0ZVNvdXJjZShjb25zdCBTdHJpbmcmIHNv
dXJjZUpTT04pIGZpbmFsIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNX
aXRoQ29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9jb25k
aXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9hY3Rp
b25zV3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fc291cmNlV3JpdHRlbik7CisgICAg
ICAgICAgICB3cml0ZVRvRmlsZShzb3VyY2VKU09OLmlzOEJpdCgpKTsKKyAgICAgICAgICAgIG1f
c291cmNlV3JpdHRlbiArPSBzaXplb2YoYm9vbCk7CisgICAgICAgICAgICBpZiAoc291cmNlSlNP
Ti5pczhCaXQoKSkgeworICAgICAgICAgICAgICAgIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoID0g
c291cmNlSlNPTi5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcik7CisgICAgICAgICAgICAgICAgd3Jp
dGVUb0ZpbGUoRGF0YShzb3VyY2VKU09OLmNoYXJhY3RlcnM4KCksIHNlcmlhbGl6ZWRMZW5ndGgp
KTsKKyAgICAgICAgICAgICAgICBtX3NvdXJjZVdyaXR0ZW4gKz0gc2VyaWFsaXplZExlbmd0aDsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNlcmlhbGl6ZWRM
ZW5ndGggPSBzb3VyY2VKU09OLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgICAg
ICAgICB3cml0ZVRvRmlsZShEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNv
dXJjZUpTT04uY2hhcmFjdGVyczE2KCkpLCBzZXJpYWxpemVkTGVuZ3RoKSk7CisgICAgICAgICAg
ICAgICAgbV9zb3VyY2VXcml0dGVuICs9IHNlcmlhbGl6ZWRMZW5ndGg7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVj
b2RlV3JpdHRlbik7CkBAIC0yMjIsNiArMjQ4LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBj
b21waWxlZFRvRmlsZShTdAogICAgICAgICAKICAgICAgICAgdm9pZCBmaW5hbGl6ZSgpIGZpbmFs
CiAgICAgICAgIHsKKyAgICAgICAgICAgIG1fbWV0YURhdGEuc291cmNlU2l6ZSA9IG1fc291cmNl
V3JpdHRlbjsKICAgICAgICAgICAgIG1fbWV0YURhdGEuYWN0aW9uc1NpemUgPSBtX2FjdGlvbnNX
cml0dGVuOwogICAgICAgICAgICAgbV9tZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZVNpemUgPSBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbjsK
ICAgICAgICAgICAgIG1fbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXpl
ID0gbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbjsKQEAgLTIzOSw2ICsyNjYs
MTAgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdAogICAgICAgICBi
b29sIGhhZEVycm9yV2hpbGVXcml0aW5nVG9GaWxlKCkgeyByZXR1cm4gbV9maWxlRXJyb3I7IH0K
IAogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgd3JpdGVUb0ZpbGUoYm9vbCB2YWx1ZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKSk7CisgICAgICAgIH0KICAgICAg
ICAgdm9pZCB3cml0ZVRvRmlsZShjb25zdCBEYXRhJiBkYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fZmlsZUVycm9yICYmICF3cml0ZURhdGFUb0ZpbGUoZGF0YSwgbV9maWxlSGFu
ZGxlKSkgewpAQCAtMjUzLDYgKzI4NCw3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGls
ZWRUb0ZpbGUoU3QKICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29k
ZVdyaXR0ZW4geyAwIH07CiAgICAgICAgIHNpemVfdCBtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29k
ZVdyaXR0ZW4geyAwIH07CiAgICAgICAgIHNpemVfdCBtX2FjdGlvbnNXcml0dGVuIHsgMCB9Owor
ICAgICAgICBzaXplX3QgbV9zb3VyY2VXcml0dGVuIHsgMCB9OwogICAgICAgICBib29sIG1fY29u
ZGl0aW9uc0FwcGx5T25seVRvRG9tYWluIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2ZpbGVF
cnJvciB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTI5NCwyMCArMzI2LDIxIEBAIHN0YXRpYyBzdGQ6
OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3QKIHN0YXRpYyBSZWZQdHI8QVBJOjpDb250ZW50
RXh0ZW5zaW9uPiBjcmVhdGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEmIG1ldGFEYXRhLCBjb25zdCBEYXRhJiBmaWxlRGF0
YSkKIHsKICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVh
dGUoY29uc3RfY2FzdDx1aW50OF90Kj4oZmlsZURhdGEuZGF0YSgpKSwgZmlsZURhdGEuc2l6ZSgp
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGNvbnN0
IHNpemVfdCBoZWFkZXJBbmRTb3VyY2VTaXplID0gQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJT
aXplICsgbWV0YURhdGEuc291cmNlU2l6ZTsKICAgICBhdXRvIGNvbXBpbGVkQ29udGVudEV4dGVu
c2lvbkRhdGEgPSBXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEoCiAgICAg
ICAgIFdURk1vdmUoc2hhcmVkTWVtb3J5KSwKICAgICAgICAgZmlsZURhdGEsCiAgICAgICAgIENv
bmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCwKLSAgICAgICAgQ29udGVudEV4dGVuc2lv
bkZpbGVIZWFkZXJTaXplLAorICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplLAogICAgICAgICBt
ZXRhRGF0YS5hY3Rpb25zU2l6ZSwKLSAgICAgICAgQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJT
aXplCisgICAgICAgIGhlYWRlckFuZFNvdXJjZVNpemUKICAgICAgICAgICAgICsgbWV0YURhdGEu
YWN0aW9uc1NpemUsCiAgICAgICAgIG1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlU2l6ZSwKLSAgICAgICAgQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJTaXplCisgICAg
ICAgIGhlYWRlckFuZFNvdXJjZVNpemUKICAgICAgICAgICAgICsgbWV0YURhdGEuYWN0aW9uc1Np
emUKICAgICAgICAgICAgICsgbWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNv
ZGVTaXplLAogICAgICAgICBtZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNp
emUsCi0gICAgICAgIENvbnRlbnRFeHRlbnNpb25GaWxlSGVhZGVyU2l6ZQorICAgICAgICBoZWFk
ZXJBbmRTb3VyY2VTaXplCiAgICAgICAgICAgICArIG1ldGFEYXRhLmFjdGlvbnNTaXplCiAgICAg
ICAgICAgICArIG1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZQog
ICAgICAgICAgICAgKyBtZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUs
CkBAIC00MDEsNyArNDM0LDQ4IEBAIHZvaWQgQ29udGVudEV4dGVuc2lvblN0b3JlOjppbnZhbGlk
YXRlQ28KICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNp
emVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKGZpbGUpOwogfQot
ICAgIAorCit2b2lkIENvbnRlbnRFeHRlbnNpb25TdG9yZTo6Z2V0Q29udGVudEV4dGVuc2lvblNv
dXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChXVEY6OlN0
cmluZyk+IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5p
c29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZp
ZXIpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb21wbGV0ZSA9IFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oU3RyaW5nIHNvdXJjZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzb3Vy
Y2UgPSBzb3VyY2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzb3VyY2UpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEgbWV0YURhdGE7CisgICAgICAgIERhdGEg
ZmlsZURhdGE7CisgICAgICAgIGlmICghb3BlbkFuZE1hcENvbnRlbnRFeHRlbnNpb24ocGF0aCwg
bWV0YURhdGEsIGZpbGVEYXRhKSkgeworICAgICAgICAgICAgY29tcGxldGUoeyB9KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3dpdGNoIChtZXRh
RGF0YS52ZXJzaW9uKSB7CisgICAgICAgIGNhc2UgOToKKyAgICAgICAgICAgIGlmICghbWV0YURh
dGEuc291cmNlU2l6ZSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRlKHsgfSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYm9vbCBpczhCaXQg
PSBmaWxlRGF0YS5kYXRhKClbQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJTaXplXTsKKyAgICAg
ICAgICAgIHNpemVfdCBzdGFydCA9IENvbnRlbnRFeHRlbnNpb25GaWxlSGVhZGVyU2l6ZSArIHNp
emVvZihib29sKTsKKyAgICAgICAgICAgIHNpemVfdCBsZW5ndGggPSBtZXRhRGF0YS5zb3VyY2VT
aXplIC0gc2l6ZW9mKGJvb2wpOworICAgICAgICAgICAgaWYgKGlzOEJpdCkKKyAgICAgICAgICAg
ICAgICBjb21wbGV0ZShTdHJpbmcoZmlsZURhdGEuZGF0YSgpICsgc3RhcnQsIGxlbmd0aCkpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCEobGVuZ3RoICUgc2l6
ZW9mKFVDaGFyKSkpOworICAgICAgICAgICAgICAgIGNvbXBsZXRlKFN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IFVDaGFyKj4oZmlsZURhdGEuZGF0YSgpICsgc3RhcnQpLCBsZW5ndGggLyBz
aXplb2YoVUNoYXIpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICAvLyBPbGRlciB2ZXJzaW9ucyBjYW5ub3QgcmVjb3ZlciB0aGUgb3Jp
Z2luYWwgSlNPTiBzb3VyY2UgZnJvbSBkaXNrLgorICAgICAgICBjb21wbGV0ZSh7IH0pOworICAg
IH0pOworfQorCiBjb25zdCBzdGQ6OmVycm9yX2NhdGVnb3J5JiBjb250ZW50RXh0ZW5zaW9uU3Rv
cmVFcnJvckNhdGVnb3J5KCkKIHsKICAgICBjbGFzcyBDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJv
ckNhdGVnb3J5IDogcHVibGljIHN0ZDo6ZXJyb3JfY2F0ZWdvcnkgewpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRFeHRlbnNpb25TdG9y
ZS5oCShyZXZpc2lvbiAyMTM5NjApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBA
IGNsYXNzIENvbnRlbnRFeHRlbnNpb247CiBjbGFzcyBDb250ZW50RXh0ZW5zaW9uU3RvcmUgZmlu
YWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OkNvbnRlbnRFeHRlbnNpb25TdG9y
ZT4gewogcHVibGljOgogICAgIGVudW0gY2xhc3MgRXJyb3IgewotICAgICAgICBMb29rdXBGYWls
ZWQgPSA2LCAvLyBNaXJyb3JzIHZhbHVlIG9mIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVM
b29rdXBGYWlsZWQKKyAgICAgICAgTG9va3VwRmFpbGVkID0gMSwKICAgICAgICAgVmVyc2lvbk1p
c21hdGNoLAogICAgICAgICBDb21waWxlRmFpbGVkLAogICAgICAgICBSZW1vdmVGYWlsZWQKQEAg
LTUwLDcgKzUwLDkgQEAgcHVibGljOgogICAgIAogICAgIC8vIFRoaXMgc2hvdWxkIGJlIGluY3Jl
bWVudGVkIGV2ZXJ5IHRpbWUgYSBmdW5jdGlvbmFsIGNoYW5nZSBpcyBtYWRlIHRvIHRoZSBieXRl
Y29kZSwgZmlsZSBmb3JtYXQsIGV0Yy4KICAgICAvLyB0byBwcmV2ZW50IGNyYXNoaW5nIHdoaWxl
IGxvYWRpbmcgb2xkIGRhdGEuCi0gICAgY29uc3Qgc3RhdGljIHVpbnQzMl90IEN1cnJlbnRDb250
ZW50RXh0ZW5zaW9uRmlsZVZlcnNpb24gPSA4OworICAgIC8vIEFsc28gdXBkYXRlIENvbnRlbnRF
eHRlbnNpb25TdG9yZTo6Z2V0Q29udGVudEV4dGVuc2lvblNvdXJjZSB0byBiZSBhYmxlIHRvIGZp
bmQgdGhlIG9yaWdpbmFsIEpTT04KKyAgICAvLyBzb3VyY2UgZnJvbSBvbGQgdmVyc2lvbnMuCisg
ICAgY29uc3Qgc3RhdGljIHVpbnQzMl90IEN1cnJlbnRDb250ZW50RXh0ZW5zaW9uRmlsZVZlcnNp
b24gPSA5OwogCiAgICAgc3RhdGljIENvbnRlbnRFeHRlbnNpb25TdG9yZSYgZGVmYXVsdFN0b3Jl
KCk7CiAgICAgc3RhdGljIFJlZjxDb250ZW50RXh0ZW5zaW9uU3RvcmU+IHN0b3JlV2l0aFBhdGgo
Y29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCk7CkBAIC02Niw2ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBGb3IgdGVzdGluZyBvbmx5LgogICAgIHZvaWQgc3luY2hyb25vdXNSZW1vdmVBbGxD
b250ZW50RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRFeHRlbnNpb25W
ZXJzaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGdldENvbnRl
bnRFeHRlbnNpb25Tb3VyY2UoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9u
PHZvaWQoV1RGOjpTdHJpbmcpPik7CiAKIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgZGVmYXVs
dFN0b3JlUGF0aCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCShyZXZpc2lvbiAy
MTM5NjApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4
dGVuc2lvblN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSwyNyBAQAogCiAjaWYg
V0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCAiQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmgiCiAj
aW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKIAorc3RhdGljIFdLRXJyb3JDb2RlIHRvV0tFcnJv
ckNvZGUoY29uc3Qgc3RkOjplcnJvcl9jb2RlJiBlcnJvcikKK3sKKyAgICBBU1NFUlQoZXJyb3Iu
Y2F0ZWdvcnkoKSA9PSBBUEk6OmNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yQ2F0ZWdvcnkoKSk7
CisgICAgc3dpdGNoIChlcnJvci52YWx1ZSgpKSB7CisgICAgY2FzZSBzdGF0aWNfY2FzdDxpbnQ+
KEFQSTo6Q29udGVudEV4dGVuc2lvblN0b3JlOjpFcnJvcjo6TG9va3VwRmFpbGVkKToKKyAgICAg
ICAgcmV0dXJuIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVMb29rdXBGYWlsZWQ7CisgICAg
Y2FzZSBzdGF0aWNfY2FzdDxpbnQ+KEFQSTo6Q29udGVudEV4dGVuc2lvblN0b3JlOjpFcnJvcjo6
VmVyc2lvbk1pc21hdGNoKToKKyAgICAgICAgcmV0dXJuIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9u
U3RvcmVWZXJzaW9uTWlzbWF0Y2g7CisgICAgY2FzZSBzdGF0aWNfY2FzdDxpbnQ+KEFQSTo6Q29u
dGVudEV4dGVuc2lvblN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZCk6CisgICAgICAgIHJldHVy
biBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3JlQ29tcGlsZUZhaWxlZDsKKyAgICBjYXNlIHN0
YXRpY19jYXN0PGludD4oQVBJOjpDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkVycm9yOjpSZW1vdmVG
YWlsZWQpOgorICAgICAgICByZXR1cm4gV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlbW92
ZUZhaWxlZDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFdLRXJyb3JVbmtub3duOworICAgIH0KK30KKwogQGltcGxlbWVudGF0aW9u
IFdLQ29udGVudEV4dGVuc2lvblN0b3JlCiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtOTIsOCArMTEx
LDkgQEAgLSAodm9pZClsb29rdXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZgogICAgICAgICAg
ICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKFdLQ29udGVudEV4dGVuc2lvbiAqLCBOU0Vy
cm9yICopKWhhbmRsZXIuZ2V0KCk7CiAKICAgICAgICAgICAgIGF1dG8gdXNlckluZm8gPSBAe05T
SGVscEFuY2hvckVycm9yS2V5OiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4dGVuc2lv
biBsb29rdXAgZmFpbGVkOiAlcyIsIGVycm9yLm1lc3NhZ2UoKS5jX3N0cigpXX07Ci0gICAgICAg
ICAgICBBU1NFUlQoZXJyb3IudmFsdWUoKSA9PSBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3Jl
TG9va3VwRmFpbGVkIHx8IGVycm9yLnZhbHVlKCkgPT0gV0tFcnJvckNvbnRlbnRFeHRlbnNpb25T
dG9yZVZlcnNpb25NaXNtYXRjaCk7Ci0gICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTplcnJvci52YWx1ZSgpIHVzZXJJ
bmZvOnVzZXJJbmZvXSk7CisgICAgICAgICAgICBhdXRvIHdrRXJyb3IgPSB0b1dLRXJyb3JDb2Rl
KGVycm9yKTsKKyAgICAgICAgICAgIEFTU0VSVCh3a0Vycm9yID09IFdLRXJyb3JDb250ZW50RXh0
ZW5zaW9uU3RvcmVMb29rdXBGYWlsZWQgfHwgd2tFcnJvciA9PSBXS0Vycm9yQ29udGVudEV4dGVu
c2lvblN0b3JlVmVyc2lvbk1pc21hdGNoKTsKKyAgICAgICAgICAgIHJhd0hhbmRsZXIobmlsLCBb
TlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOndrRXJyb3IgdXNlcklu
Zm86dXNlckluZm9dKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTEs
NyArMTMxLDcgQEAgLSAodm9pZClyZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZgogICAg
ICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TRXJyb3IgKikpaGFuZGxlci5n
ZXQoKTsKIAogICAgICAgICAgICAgYXV0byB1c2VySW5mbyA9IEB7TlNIZWxwQW5jaG9yRXJyb3JL
ZXk6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXh0ZW5zaW9uIHJlbW92YWwgZmFpbGVk
OiAlcyIsIGVycm9yLm1lc3NhZ2UoKS5jX3N0cigpXX07Ci0gICAgICAgICAgICBBU1NFUlQoZXJy
b3IudmFsdWUoKSA9PSBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3JlUmVtb3ZlRmFpbGVkKTsK
KyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodG9XS0Vycm9yQ29kZShlcnJvcikgPT0gV0tFcnJv
ckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlbW92ZUZhaWxlZCk7CiAgICAgICAgICAgICByYXdIYW5k
bGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckNv
bnRlbnRFeHRlbnNpb25TdG9yZVJlbW92ZUZhaWxlZCB1c2VySW5mbzp1c2VySW5mb10pOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNDQsNiArMTY0LDE4IEBAIC0gKHZvaWQp
X2ludmFsaWRhdGVDb250ZW50RXh0ZW5zaW9uVmVyc2kKICAgICBfY29udGVudEV4dGVuc2lvblN0
b3JlLT5pbnZhbGlkYXRlQ29udGVudEV4dGVuc2lvblZlcnNpb24oaWRlbnRpZmllcik7CiB9CiAK
Ky0gKHZvaWQpX2dldENvbnRlbnRFeHRlbnNpb25Tb3VyY2VGb3JJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nKikpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9u
SGFuZGxlciBjb3B5XSk7CisgICAgX2NvbnRlbnRFeHRlbnNpb25TdG9yZS0+Z2V0Q29udGVudEV4
dGVuc2lvblNvdXJjZShpZGVudGlmaWVyLCBbaGFuZGxlcl0oU3RyaW5nIHNvdXJjZSkgeworICAg
ICAgICBhdXRvIHJhd0hhbmRsZXIgPSAodm9pZCAoXikoTlNTdHJpbmcgKikpaGFuZGxlci5nZXQo
KTsKKyAgICAgICAgaWYgKHNvdXJjZS5pc051bGwoKSkKKyAgICAgICAgICAgIHJhd0hhbmRsZXIo
bmlsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmF3SGFuZGxlcihzb3VyY2UpOworICAg
IH0pOworfQorCiAvLyBOU19SRUxFQVNFU19BUkdVTUVOVCB0byBrZWVwIHBlYWsgbWVtb3J5IHVz
YWdlIGxvdy4KIAogLSAodm9pZClfY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVy
OihOU1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246KE5TU3RyaW5n
ICopZW5jb2RlZENvbnRlbnRFeHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
Q29udGVudEV4dGVuc2lvbiAqLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4dGVuc2lvblN0b3Jl
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDIxMzk2MCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3Rv
cmVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIC8vIEZvciB0ZXN0
aW5nIG9ubHkuCiAtICh2b2lkKV9yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9uczsKIC0gKHZvaWQp
X2ludmFsaWRhdGVDb250ZW50RXh0ZW5zaW9uVmVyc2lvbkZvcklkZW50aWZpZXI6KE5TU3RyaW5n
ICopaWRlbnRpZmllcjsKKy0gKHZvaWQpX2dldENvbnRlbnRFeHRlbnNpb25Tb3VyY2VGb3JJZGVu
dGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TU3RyaW5nKikpY29tcGxldGlvbkhhbmRsZXI7CiAKIC8vIE5TX1JFTEVBU0VTX0FSR1VNRU5U
IHRvIGtlZXAgcGVhayBtZW1vcnkgdXNhZ2UgbG93LgogLSAodm9pZClfY29tcGlsZUNvbnRlbnRF
eHRlbnNpb25Gb3JJZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgZW5jb2RlZENvbnRl
bnRFeHRlbnNpb246KE5TU3RyaW5nICopIE5TX1JFTEVBU0VTX0FSR1VNRU5UIGVuY29kZWRDb250
ZW50RXh0ZW5zaW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0NvbnRlbnRFeHRlbnNp
b24gKiwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5oCShyZXZpc2lvbiAyMTM5NjApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNyArNDIsNyBAQCBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBXS0Vycm9yRG9t
YWluCiAgQGNvbnN0YW50IFdLRXJyb3JKYXZhU2NyaXB0RXhjZXB0aW9uT2NjdXJyZWQgICAgICAg
ICAgSW5kaWNhdGVzIHRoYXQgYSBKYXZhU2NyaXB0IGV4Y2VwdGlvbiBvY2N1cnJlZC4KICBAY29u
c3RhbnQgV0tFcnJvckphdmFTY3JpcHRSZXN1bHRUeXBlSXNVbnN1cHBvcnRlZCAgICBJbmRpY2F0
ZXMgdGhhdCB0aGUgcmVzdWx0IG9mIEphdmFTY3JpcHQgZXhlY3V0aW9uIGNvdWxkIG5vdCBiZSBy
ZXR1cm5lZC4KICBAY29uc3RhbnQgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZUxvb2t1cEZh
aWxlZCAgICBJbmRpY2F0ZXMgdGhhdCBsb29raW5nIHVwIGEgV0tVc2VyQ29udGVudEV4dGVuc2lv
biBmYWlsZWQuCi0gQGNvbnN0YW50IFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVWZXJzaW9u
TWlzbWF0Y2ggSW5kaWNhdGVzIHRoYXQgbG9va2luZyB1cCBhIFdLVXNlckNvbnRlbnRFeHRlbnNp
b24gZm91bmQgYW4gZXh0ZW5zaW9uIHdpdGggYW4gaW5jb21wYXRpYmxlIGJpbmFyeSB2ZXJzaW9u
LgorIEBjb25zdGFudCBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3JlVmVyc2lvbk1pc21hdGNo
IEluZGljYXRlcyB0aGF0IFdLVXNlckNvbnRlbnRFeHRlbnNpb24gdmVyc2lvbiBkaWQgbm90IG1h
dGNoIHRoZSBsYXRlc3QuCiAgQGNvbnN0YW50IFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVD
b21waWxlRmFpbGVkICAgSW5kaWNhdGVzIHRoYXQgY29tcGlsaW5nIGEgV0tVc2VyQ29udGVudEV4
dGVuc2lvbiBmYWlsZWQuCiAgQGNvbnN0YW50IFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVS
ZW1vdmVGYWlsZWQgICAgSW5kaWNhdGVzIHRoYXQgcmVtb3ZpbmcgYSBXS1VzZXJDb250ZW50RXh0
ZW5zaW9uIGZhaWxlZC4KICAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3Jl
LmgJKHJldmlzaW9uIDIxMzk2MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3
ICs0NCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4KIFdLX0VY
VEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uc0RvbWFpbiBXS19B
UElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMiksIGlvcygxMC4wKSk7CiAKIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIF9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvckNvZGUpIHsKLSAg
ICBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlRXJyb3JMb29rdXBGYWlsZWQgPSA2LCAvLyBN
aXJyb3JzIHZhbHVlIG9mIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVMb29rdXBGYWlsZWQK
KyAgICBfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlRXJyb3JMb29rdXBGYWlsZWQsCiAgICAg
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yVmVyc2lvbk1pc21hdGNoLAogICAgIF9X
S1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvckNvbXBpbGVGYWlsZWQsCiAgICAgX1dLVXNl
ckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yUmVtb3ZlRmFpbGVkLApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNl
ckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQkocmV2aXNpb24gMjEzOTYwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwyNiBAQAogCiBOU1N0cmluZyAqIGNvbnN0IF9X
S1VzZXJDb250ZW50RXh0ZW5zaW9uc0RvbWFpbiA9IEAiV0tFcnJvckRvbWFpbiI7CiAKK3N0YXRp
YyBOU0Vycm9yICp0b1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvcihjb25zdCBOU0Vycm9y
ICplcnJvcikKK3sKKyAgICBpZiAoIWVycm9yKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAg
QVNTRVJUKGVycm9yLmRvbWFpbiA9PSBXS0Vycm9yRG9tYWluKTsKKyAgICBzd2l0Y2ggKGVycm9y
LmNvZGUpIHsKKyAgICBjYXNlIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVMb29rdXBGYWls
ZWQ6CisgICAgICAgIHJldHVybiBbTlNFcnJvciBlcnJvcldpdGhEb21haW46X1dLVXNlckNvbnRl
bnRFeHRlbnNpb25zRG9tYWluIGNvZGU6X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9y
TG9va3VwRmFpbGVkIHVzZXJJbmZvOmVycm9yLnVzZXJJbmZvXTsKKyAgICBjYXNlIFdLRXJyb3JD
b250ZW50RXh0ZW5zaW9uU3RvcmVWZXJzaW9uTWlzbWF0Y2g6CisgICAgICAgIHJldHVybiBbTlNF
cnJvciBlcnJvcldpdGhEb21haW46X1dLVXNlckNvbnRlbnRFeHRlbnNpb25zRG9tYWluIGNvZGU6
X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yVmVyc2lvbk1pc21hdGNoIHVzZXJJbmZv
OmVycm9yLnVzZXJJbmZvXTsKKyAgICBjYXNlIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVD
b21waWxlRmFpbGVkOgorICAgICAgICByZXR1cm4gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOl9X
S1VzZXJDb250ZW50RXh0ZW5zaW9uc0RvbWFpbiBjb2RlOl9XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmVFcnJvckNvbXBpbGVGYWlsZWQgdXNlckluZm86ZXJyb3IudXNlckluZm9dOworICAgIGNh
c2UgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlbW92ZUZhaWxlZDoKKyAgICAgICAgcmV0
dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpfV0tVc2VyQ29udGVudEV4dGVuc2lvbnNEb21h
aW4gY29kZTpfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlRXJyb3JSZW1vdmVGYWlsZWQgdXNl
ckluZm86ZXJyb3IudXNlckluZm9dOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCiBAaW1wbGVtZW50YXRpb24gX1dLVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZQogCiArIChpbnN0YW5jZXR5cGUpZGVmYXVsdFN0b3JlCkBAIC01
NCw3ICs3NCw3IEBAIC0gKHZvaWQpY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGkKIHsK
ICAgICBbX2NvbnRlbnRFeHRlbnNpb25TdG9yZSBfY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJ
ZGVudGlmaWVyOmlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246ZW5jb2RlZENvbnRl
bnRFeHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6XihXS0NvbnRlbnRFeHRlbnNpb24gKmNvbnRl
bnRFeHRlbnNpb24sIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIF9XS1VzZXJDb250ZW50Rmls
dGVyICpjb250ZW50RmlsdGVyID0gY29udGVudEV4dGVuc2lvbiA/IFtbW19XS1VzZXJDb250ZW50
RmlsdGVyIGFsbG9jXSBfaW5pdFdpdGhXS0NvbnRlbnRFeHRlbnNpb246Y29udGVudEV4dGVuc2lv
bl0gYXV0b3JlbGVhc2VdIDogbmlsOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZW50
RmlsdGVyLCBlcnJvcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRlbnRGaWx0ZXIs
IHRvVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yKGVycm9yKSk7CiAgICAgfV07CiB9CiAK
QEAgLTYyLDEzICs4MiwxNSBAQCAtICh2b2lkKWxvb2t1cENvbnRlbnRFeHRlbnNpb25Gb3JJZGVu
dGlmCiB7CiAgICAgW19jb250ZW50RXh0ZW5zaW9uU3RvcmUgbG9va3VwQ29udGVudEV4dGVuc2lv
bkZvcklkZW50aWZpZXI6aWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjpeKFdLQ29udGVudEV4
dGVuc2lvbiAqY29udGVudEV4dGVuc2lvbiwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgX1dL
VXNlckNvbnRlbnRGaWx0ZXIgKmNvbnRlbnRGaWx0ZXIgPSBjb250ZW50RXh0ZW5zaW9uID8gW1tb
X1dLVXNlckNvbnRlbnRGaWx0ZXIgYWxsb2NdIF9pbml0V2l0aFdLQ29udGVudEV4dGVuc2lvbjpj
b250ZW50RXh0ZW5zaW9uXSBhdXRvcmVsZWFzZV0gOiBuaWw7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGNvbnRlbnRGaWx0ZXIsIGVycm9yKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udGVudEZpbHRlciwgdG9Vc2VyQ29udGVudEV4dGVuc2lvblN0b3JlRXJyb3IoZXJyb3IpKTsK
ICAgICB9XTsKIH0KIAogLSAodm9pZClyZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0Vy
cm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW19jb250ZW50RXh0ZW5zaW9uU3RvcmUg
cmVtb3ZlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6aWRlbnRpZmllciBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW19jb250ZW50RXh0ZW5zaW9uU3RvcmUg
cmVtb3ZlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6aWRlbnRpZmllciBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRv
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yKGVycm9yKSk7CisgICAgfV07CiB9CiAKICNw
cmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzOTYw
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTctMDMtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBDb21waWxlZCBjb250ZW50IGV4dGVuc2lvbnMgc2hvdWxkIGluY2x1ZGUgdGhlIEpT
T04gc291cmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjk2NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHA6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLm1tOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxNy0wMy0xNCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFdLSFRUUENvb2tp
ZVN0b3JhZ2UgdG8gV0tIVFRQQ29va2llU3RvcmUuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAJKHJldmlz
aW9uIDIxMzk2MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db250ZW50
RXh0ZW5zaW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6
CiAgICAgICAgIEVYUEVDVF9FUShkYXRhLnRvcFVSTEZpbHRlcnMuc2l6ZSgpLCAwdWxsKTsKICAg
ICB9CiAKKyAgICB2b2lkIHdyaXRlU291cmNlKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfQorCiAg
ICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVk
QWN0aW9uQnl0ZT4mJiBhY3Rpb25zLCBib29sIGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbikg
ZmluYWwKICAgICB7CiAgICAgICAgIEVYUEVDVF9GQUxTRShmaW5hbGl6ZWQpOwpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQkocmV2aXNpb24gMjEzOTYwKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDEzIEBAIFRFU1Rf
RihXS0NvbnRlbnRFeHRlbnNpb25TdG9yZVRlc3QsIFZlcnMKICAgICAgICAgZG9uZUxvb2tpbmdV
cCA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lTG9v
a2luZ1VwKTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lR2V0dGluZ1NvdXJjZSA9IGZhbHNlOwor
ICAgIFtbV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBfZ2V0Q29udGVudEV4
dGVuc2lvblNvdXJjZUZvcklkZW50aWZpZXI6QCJUZXN0RXh0ZW5zaW9uIiBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TU3RyaW5nKiBzb3VyY2UpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoc291cmNlKTsK
KyAgICAgICAgZG9uZUdldHRpbmdTb3VyY2UgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZUdldHRpbmdTb3VyY2UpOwogfQogCiBURVNUX0YoV0tDb250
ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBSZW1vdmFsKQpAQCAtMTgzLDQgKzE5MCw2OSBAQCBURVNU
X0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBOb25FCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lUmVtb3ZpbmcpOwogfQogCitURVNUX0YoV0tDb250ZW50RXh0ZW5zaW9u
U3RvcmVUZXN0LCBOb25EZWZhdWx0U3RvcmUpCit7CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25UZXN0Il0gaXNEaXJlY3Rvcnk6WUVT
XTsKKyAgICBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSAqc3RvcmUgPSBbV0tDb250ZW50RXh0ZW5z
aW9uU3RvcmUgc3RvcmVXaXRoVVJMOnRlbXBEaXJdOworICAgIE5TU3RyaW5nICppZGVudGlmaWVy
ID0gQCJUZXN0RXh0ZW5zaW9uIjsKKyAgICBOU1N0cmluZyAqZmlsZU5hbWUgPSBAIkNvbnRlbnRF
eHRlbnNpb24tVGVzdEV4dGVuc2lvbiI7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZUNvbXBpbGlu
ZyA9IGZhbHNlOworICAgIFtzdG9yZSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZp
ZXI6aWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjpiYXNpY0ZpbHRlciBjb21wbGV0
aW9uSGFuZGxlcjpeKFdLQ29udGVudEV4dGVuc2lvbiAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZmlsdGVyKTsKKyAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgICAgICBkb25lQ29tcGlsaW5nID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVDb21waWxpbmcpOworCisgICAgTlNEYXRhICpkYXRh
ID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6W3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OmZpbGVOYW1lXV07CisgICAgRVhQRUNUX05PVF9OVUxMKGRhdGEpOworICAg
IEVYUEVDVF9FUShkYXRhLmxlbmd0aCwgMjI4dSk7CisgICAgCisgICAgX19ibG9jayBib29sIGRv
bmVDaGVja2luZ1NvdXJjZSA9IGZhbHNlOworICAgIFtzdG9yZSBfZ2V0Q29udGVudEV4dGVuc2lv
blNvdXJjZUZvcklkZW50aWZpZXI6aWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3Ry
aW5nICpzb3VyY2UpIHsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHNvdXJjZSk7CisgICAgICAg
IEVYUEVDVF9TVFJFUShiYXNpY0ZpbHRlci5VVEY4U3RyaW5nLCBzb3VyY2UuVVRGOFN0cmluZyk7
CisgICAgICAgIGRvbmVDaGVja2luZ1NvdXJjZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lQ2hlY2tpbmdTb3VyY2UpOworICAgIAorICAgIF9fYmxv
Y2sgYm9vbCBkb25lUmVtb3ZpbmcgPSBmYWxzZTsKKyAgICBbc3RvcmUgcmVtb3ZlQ29udGVudEV4
dGVuc2lvbkZvcklkZW50aWZpZXI6aWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJy
b3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgZG9uZVJl
bW92aW5nID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmVSZW1vdmluZyk7CisKKyAgICBOU0RhdGEgKmRhdGFBZnRlclJlbW92aW5nID0gW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZVUkw6W3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OmZpbGVOYW1lXV07CisgICAgRVhQRUNUX05VTEwoZGF0YUFmdGVyUmVtb3ZpbmcpOworfQorCitU
RVNUX0YoV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVUZXN0LCBOb25BU0NJSVNvdXJjZSkKK3sKKyAg
ICBzdGF0aWMgTlNTdHJpbmcgKm5vbkFTQ0lJRmlsdGVyID0gQCJbe1wiYWN0aW9uXCI6e1widHlw
ZVwiOlwiYmxvY2tcIn0sXCJ0cmlnZ2VyXCI6e1widXJsLWZpbHRlclwiOlwiLip3ZWJraXQub3Jn
XCJ9LCBcInVudXNlZFwiOlwiw7DFuOKAmcKpXCJ9XSI7CisgICAgTlNVUkwgKnRlbXBEaXIgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25UZXN0Il0gaXNEaXJlY3Rvcnk6
WUVTXTsKKyAgICBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSAqc3RvcmUgPSBbV0tDb250ZW50RXh0
ZW5zaW9uU3RvcmUgc3RvcmVXaXRoVVJMOnRlbXBEaXJdOworICAgIE5TU3RyaW5nICppZGVudGlm
aWVyID0gQCJUZXN0RXh0ZW5zaW9uIjsKKyAgICBOU1N0cmluZyAqZmlsZU5hbWUgPSBAIkNvbnRl
bnRFeHRlbnNpb24tVGVzdEV4dGVuc2lvbiI7CisgICAgCisgICAgX19ibG9jayBib29sIGRvbmUg
PSBmYWxzZTsKKyAgICBbc3RvcmUgY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVy
OmlkZW50aWZpZXIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246bm9uQVNDSUlGaWx0ZXIgY29tcGxl
dGlvbkhhbmRsZXI6XihXS0NvbnRlbnRFeHRlbnNpb24gKmZpbHRlciwgTlNFcnJvciAqZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGZpbHRlcik7CisgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKKworICAgICAgICBbc3RvcmUgX2dldENvbnRlbnRFeHRlbnNpb25Tb3VyY2VGb3JJ
ZGVudGlmaWVyOmlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0cmluZyAqc291cmNl
KSB7CisgICAgICAgICAgICBFWFBFQ1RfTk9UX05VTEwoc291cmNlKTsKKyAgICAgICAgICAgIEVY
UEVDVF9TVFJFUShub25BU0NJSUZpbHRlci5VVEY4U3RyaW5nLCBzb3VyY2UuVVRGOFN0cmluZyk7
CisKKyAgICAgICAgICAgIFtzdG9yZSBfcmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnNdOworICAg
ICAgICAgICAgTlNEYXRhICpkYXRhQWZ0ZXJSZW1vdmluZyA9IFtOU0RhdGEgZGF0YVdpdGhDb250
ZW50c09mVVJMOlt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlTmFtZV1d
OworICAgICAgICAgICAgRVhQRUNUX05VTEwoZGF0YUFmdGVyUmVtb3ZpbmcpOworCisgICAgICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304450</attachid>
            <date>2017-03-14 17:31:30 -0700</date>
            <delta_ts>2017-03-15 10:17:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169643-20170314173129.patch</filename>
            <type>text/plain</type>
            <size>30180</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzk2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAzLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29tcGlsZWQg
Y29udGVudCBleHRlbnNpb25zIHNob3VsZCBpbmNsdWRlIHRoZSBKU09OIHNvdXJjZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NjQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VyaWFsaXppbmcgdGhl
IEpTT04gc3RyaW5nIGZyb20gd2hpY2ggYSBjb250ZW50IGV4dGVuc2lvbiB3YXMgY29tcGlsZWQK
KyAgICAgICAgdG8gZGlzayB3aXRoIHRoZSBjb21waWxlZCBjb250ZW50IGV4dGVuc2lvbiB3aWxs
IGFsbG93IHVzIHRvIHZhbGlkYXRlIGNvbnRlbnQKKyAgICAgICAgZXh0ZW5zaW9ucyBhbmQgYXV0
b21hdGljYWxseSBtaWdyYXRlIG9sZGVyIGNvbnRlbnQgZXh0ZW5zaW9ucyB0byBuZXcgdmVyc2lv
bnMuCisgICAgICAgIEl0IGxlc3MgdGhhbiBkb3VibGVzIHRoZSBzaXplIG9mIHRoZSBjb21waWxl
ZCBjb250ZW50IGV4dGVuc2lvbiBvbiBkaXNrLCBhbmQgd2hlbgorICAgICAgICBpbnRlcnByZXRp
bmcgdGhlIGJ5dGVjb2RlIHRoYXQgbWVtb3J5IGlzIG5ldmVyIHJlYWQsIHNvIGl0IGRvZXNuJ3Qg
aW5jcmVhc2Ugb3VyCisgICAgICAgIGRpcnR5IG1lbW9yeSB1c2FnZS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmg6CisKIDIwMTctMDMtMTQgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDk3NjApOiBBcHBsZSBQYXkg
ZG9lc24ndCB3b3JrIG9uIHNpdGVzIHRoYXQgc3BlY2lmeSBlbXB0eSBjb250YWN0IGZpZWxkcwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkNv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMTM5NjApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDYsNiArMzA2LDggQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBp
bGVSdWxlTGlzdChDb250ZW50RQogI2lmIENPTlRFTlRfRVhURU5TSU9OU19QRVJGT1JNQU5DRV9S
RVBPUlRJTkcKICAgICBkb3VibGUgcGF0dGVyblBhcnRpdGlvbmluZ1N0YXJ0ID0gbW9ub3Rvbmlj
YWxseUluY3JlYXNpbmdUaW1lKCk7CiAjZW5kaWYKKyAgICAKKyAgICBjbGllbnQud3JpdGVTb3Vy
Y2UocnVsZUpTT04pOwogCiAgICAgVmVjdG9yPFNlcmlhbGl6ZWRBY3Rpb25CeXRlPiBhY3Rpb25z
OwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWN0aW9uTG9jYXRpb25zID0gc2VyaWFsaXplQWN0aW9u
cyhwYXJzZWRSdWxlTGlzdCwgYWN0aW9ucyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuaAko
cmV2aXNpb24gMjEzOTYwKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkNvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCgp
IHsgfQogICAgIAogICAgIC8vIEZ1bmN0aW9ucyBzaG91bGQgYmUgY2FsbGVkIGluIHRoaXMgb3Jk
ZXIuIEFsbCBleGNlcHQgd3JpdGVBY3Rpb25zIGFuZCBmaW5hbGl6ZSBjYW4gYmUgY2FsbGVkIG11
bHRpcGxlIHRpbWVzLCB0aG91Z2guCisgICAgdmlydHVhbCB2b2lkIHdyaXRlU291cmNlKGNvbnN0
IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVBY3Rpb25zKFZlY3RvcjxTZXJp
YWxpemVkQWN0aW9uQnl0ZT4mJiwgYm9vbCBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29k
ZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0
ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYpID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzk2MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE3LTAzLTE0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29tcGlsZWQgY29u
dGVudCBleHRlbnNpb25zIHNob3VsZCBpbmNsdWRlIHRoZSBKU09OIHNvdXJjZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NjQzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHA6CisgICAgICAgIChBUEk6OkNvbnRlbnRFeHRlbnNp
b25TdG9yZTo6Q29udGVudEV4dGVuc2lvblN0b3JlKToKKyAgICAgICAgKEFQSTo6Q29udGVudEV4
dGVuc2lvbk1ldGFEYXRhOjpmaWxlU2l6ZSk6CisgICAgICAgIChBUEk6OmVuY29kZUNvbnRlbnRF
eHRlbnNpb25NZXRhRGF0YSk6CisgICAgICAgIChBUEk6OmRlY29kZUNvbnRlbnRFeHRlbnNpb25N
ZXRhRGF0YSk6CisgICAgICAgIChBUEk6OmNvbXBpbGVkVG9GaWxlKToKKyAgICAgICAgKEFQSTo6
Y3JlYXRlRXh0ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6Q29udGVudEV4dGVuc2lvblN0b3JlOjpn
ZXRDb250ZW50RXh0ZW5zaW9uU291cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRFeHRlbnNpb25TdG9yZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tD
b250ZW50RXh0ZW5zaW9uU3RvcmUubW06CisgICAgICAgICh0b1dLRXJyb3JDb2RlKToKKyAgICAg
ICAgKC1bV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUgbG9va3VwQ29udGVudEV4dGVuc2lvbkZvcklk
ZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudEV4dGVu
c2lvblN0b3JlIHJlbW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRFeHRlbnNpb25TdG9yZSBfZ2V0Q29udGVu
dEV4dGVuc2lvblNvdXJjZUZvcklkZW50aWZpZXI6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW06
CisgICAgICAgICh0b1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvcik6CisgICAgICAgICgt
W19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJ
ZGVudGlmaWVyOmVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIGxvb2t1cENvbnRlbnRFeHRl
bnNpb25Gb3JJZGVudGlmaWVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtfV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHJlbW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlm
aWVyOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCiAyMDE3LTAzLTE0ICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIExldCBQREZMYXllckNvbnRyb2xsZXIg
ZHJpdmUgY3Vyc29yIHVwZGF0ZXMgc28gdGhhdCBpdCdzIGNvcnJlY3QgbW9yZSBvZnRlbgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dEV4dGVuc2lvblN0b3JlLmNwcAkocmV2aXNpb24gMjEzOTYwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCw3IEBAIENvbnRlbnRFeHRlbnNpb25TdG9yZTo6Q29udGVudEV4dGVuc2lv
blMKICAgICAsIG1fcmVhZFF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJDb250ZW50RXh0ZW5zaW9u
U3RvcmUgUmVhZCBRdWV1ZSIpKQogICAgICwgbV9yZW1vdmVRdWV1ZShXb3JrUXVldWU6OmNyZWF0
ZSgiQ29udGVudEV4dGVuc2lvblN0b3JlIFJlbW92ZSBRdWV1ZSIpKQogeworICAgIFdlYkNvcmU6
Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQogCiBDb250ZW50RXh0ZW5zaW9uU3Rv
cmU6On5Db250ZW50RXh0ZW5zaW9uU3RvcmUoKQpAQCAtODEsMTEgKzgyLDEyIEBAIHN0YXRpYyBT
dHJpbmcgY29uc3RydWN0ZWRQYXRoKGNvbnN0IFN0cmkKIAogLy8gVGhlIHNpemUgYW5kIG9mZnNl
dCBvZiB0aGUgZGVuc2VseSBwYWNrZWQgYnl0ZXMgaW4gdGhlIGZpbGUsIG5vdCBzaXplb2YgYW5k
IG9mZnNldG9mLCB3aGljaCB3b3VsZAogLy8gcmVwcmVzZW50IHRoZSBzaXplIGFuZCBvZmZzZXQg
b2YgdGhlIHN0cnVjdHVyZSBpbiBtZW1vcnksIHBvc3NpYmx5IHdpdGggY29tcGlsZXItYWRkZWQg
cGFkZGluZy4KLWNvbnN0IHNpemVfdCBDb250ZW50RXh0ZW5zaW9uRmlsZUhlYWRlclNpemUgPSAy
ICogc2l6ZW9mKHVpbnQzMl90KSArIDQgKiBzaXplb2YodWludDY0X3QpOwotY29uc3Qgc2l6ZV90
IENvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCA9IHNpemVvZih1aW50MzJfdCkgKyA0
ICogc2l6ZW9mKHVpbnQ2NF90KTsKK2NvbnN0IHNpemVfdCBDb250ZW50RXh0ZW5zaW9uRmlsZUhl
YWRlclNpemUgPSAyICogc2l6ZW9mKHVpbnQzMl90KSArIDUgKiBzaXplb2YodWludDY0X3QpOwor
Y29uc3Qgc2l6ZV90IENvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCA9IHNpemVvZih1
aW50MzJfdCkgKyA1ICogc2l6ZW9mKHVpbnQ2NF90KTsKIAogc3RydWN0IENvbnRlbnRFeHRlbnNp
b25NZXRhRGF0YSB7CiAgICAgdWludDMyX3QgdmVyc2lvbiB7IENvbnRlbnRFeHRlbnNpb25TdG9y
ZTo6Q3VycmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lvbiB9OworICAgIHVpbnQ2NF90IHNv
dXJjZVNpemUgeyAwIH07CiAgICAgdWludDY0X3QgYWN0aW9uc1NpemUgeyAwIH07CiAgICAgdWlu
dDY0X3QgZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVTaXplIHsgMCB9OwogICAgIHVp
bnQ2NF90IGZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSB7IDAgfTsKQEAgLTk1LDYg
Kzk3LDcgQEAgc3RydWN0IENvbnRlbnRFeHRlbnNpb25NZXRhRGF0YSB7CiAgICAgc2l6ZV90IGZp
bGVTaXplKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uRmls
ZUhlYWRlclNpemUKKyAgICAgICAgICAgICsgc291cmNlU2l6ZQogICAgICAgICAgICAgKyBhY3Rp
b25zU2l6ZQogICAgICAgICAgICAgKyBmaWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVNp
emUKICAgICAgICAgICAgICsgZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXplCkBAIC0x
MDcsNiArMTEwLDcgQEAgc3RhdGljIERhdGEgZW5jb2RlQ29udGVudEV4dGVuc2lvbk1ldGFEYQog
ICAgIFdURjo6UGVyc2lzdGVuY2U6OkVuY29kZXIgZW5jb2RlcjsKIAogICAgIGVuY29kZXIgPDwg
bWV0YURhdGEudmVyc2lvbjsKKyAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnNvdXJjZVNpemU7CiAg
ICAgZW5jb2RlciA8PCBtZXRhRGF0YS5hY3Rpb25zU2l6ZTsKICAgICBlbmNvZGVyIDw8IG1ldGFE
YXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKICAgICBlbmNvZGVyIDw8
IG1ldGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZTsKQEAgLTEyOSw2ICsx
MzMsOCBAQCBzdGF0aWMgYm9vbCBkZWNvZGVDb250ZW50RXh0ZW5zaW9uTWV0YURhCiAgICAgICAg
IFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgZGVjb2RlcihkYXRhLCBzaXplKTsKICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0YS52ZXJzaW9uKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0YS5zb3VyY2VTaXpl
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShtZXRhRGF0YS5hY3Rpb25zU2l6ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25z
Qnl0ZWNvZGVTaXplKSkKQEAgLTE4MSw2ICsxODcsNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2Rl
IGNvbXBpbGVkVG9GaWxlKFN0CiAgICAgICAgICAgICA6IG1fZmlsZUhhbmRsZShmaWxlSGFuZGxl
KQogICAgICAgICAgICAgLCBtX21ldGFEYXRhKG1ldGFEYXRhKQogICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQoIW1ldGFEYXRhLnNvdXJjZVNpemUpOwogICAgICAgICAgICAgQVNTRVJUKCFt
ZXRhRGF0YS5hY3Rpb25zU2l6ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1ldGFEYXRhLmZpbHRl
cnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1l
dGFEYXRhLmZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlU2l6ZSk7CkBAIC0xODgsNiArMTk1
LDI1IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3QKICAgICAgICAg
ICAgIEFTU0VSVCghbWV0YURhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKTsKICAgICAg
ICAgfQogICAgICAgICAKKyAgICAgICAgdm9pZCB3cml0ZVNvdXJjZShjb25zdCBTdHJpbmcmIHNv
dXJjZUpTT04pIGZpbmFsIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZVdyaXR0ZW4pOworICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNX
aXRoQ29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9jb25k
aXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9hY3Rp
b25zV3JpdHRlbik7CisgICAgICAgICAgICBBU1NFUlQoIW1fc291cmNlV3JpdHRlbik7CisgICAg
ICAgICAgICB3cml0ZVRvRmlsZShzb3VyY2VKU09OLmlzOEJpdCgpKTsKKyAgICAgICAgICAgIG1f
c291cmNlV3JpdHRlbiArPSBzaXplb2YoYm9vbCk7CisgICAgICAgICAgICBpZiAoc291cmNlSlNP
Ti5pczhCaXQoKSkgeworICAgICAgICAgICAgICAgIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoID0g
c291cmNlSlNPTi5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcik7CisgICAgICAgICAgICAgICAgd3Jp
dGVUb0ZpbGUoRGF0YShzb3VyY2VKU09OLmNoYXJhY3RlcnM4KCksIHNlcmlhbGl6ZWRMZW5ndGgp
KTsKKyAgICAgICAgICAgICAgICBtX3NvdXJjZVdyaXR0ZW4gKz0gc2VyaWFsaXplZExlbmd0aDsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNlcmlhbGl6ZWRM
ZW5ndGggPSBzb3VyY2VKU09OLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKKyAgICAgICAgICAg
ICAgICB3cml0ZVRvRmlsZShEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNv
dXJjZUpTT04uY2hhcmFjdGVyczE2KCkpLCBzZXJpYWxpemVkTGVuZ3RoKSk7CisgICAgICAgICAg
ICAgICAgbV9zb3VyY2VXcml0dGVuICs9IHNlcmlhbGl6ZWRMZW5ndGg7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91dENv
bmRpdGlvbnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVj
b2RlV3JpdHRlbik7CkBAIC0yMjIsNiArMjQ4LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBj
b21waWxlZFRvRmlsZShTdAogICAgICAgICAKICAgICAgICAgdm9pZCBmaW5hbGl6ZSgpIGZpbmFs
CiAgICAgICAgIHsKKyAgICAgICAgICAgIG1fbWV0YURhdGEuc291cmNlU2l6ZSA9IG1fc291cmNl
V3JpdHRlbjsKICAgICAgICAgICAgIG1fbWV0YURhdGEuYWN0aW9uc1NpemUgPSBtX2FjdGlvbnNX
cml0dGVuOwogICAgICAgICAgICAgbV9tZXRhRGF0YS5maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNC
eXRlY29kZVNpemUgPSBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbjsK
ICAgICAgICAgICAgIG1fbWV0YURhdGEuZmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGVTaXpl
ID0gbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbjsKQEAgLTIzOSw2ICsyNjYs
MTAgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdAogICAgICAgICBi
b29sIGhhZEVycm9yV2hpbGVXcml0aW5nVG9GaWxlKCkgeyByZXR1cm4gbV9maWxlRXJyb3I7IH0K
IAogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgd3JpdGVUb0ZpbGUoYm9vbCB2YWx1ZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKSk7CisgICAgICAgIH0KICAgICAg
ICAgdm9pZCB3cml0ZVRvRmlsZShjb25zdCBEYXRhJiBkYXRhKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fZmlsZUVycm9yICYmICF3cml0ZURhdGFUb0ZpbGUoZGF0YSwgbV9maWxlSGFu
ZGxlKSkgewpAQCAtMjUzLDYgKzI4NCw3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGls
ZWRUb0ZpbGUoU3QKICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29k
ZVdyaXR0ZW4geyAwIH07CiAgICAgICAgIHNpemVfdCBtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29k
ZVdyaXR0ZW4geyAwIH07CiAgICAgICAgIHNpemVfdCBtX2FjdGlvbnNXcml0dGVuIHsgMCB9Owor
ICAgICAgICBzaXplX3QgbV9zb3VyY2VXcml0dGVuIHsgMCB9OwogICAgICAgICBib29sIG1fY29u
ZGl0aW9uc0FwcGx5T25seVRvRG9tYWluIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2ZpbGVF
cnJvciB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTI5NCwyMCArMzI2LDIxIEBAIHN0YXRpYyBzdGQ6
OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3QKIHN0YXRpYyBSZWZQdHI8QVBJOjpDb250ZW50
RXh0ZW5zaW9uPiBjcmVhdGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEmIG1ldGFEYXRhLCBjb25zdCBEYXRhJiBmaWxlRGF0
YSkKIHsKICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVh
dGUoY29uc3RfY2FzdDx1aW50OF90Kj4oZmlsZURhdGEuZGF0YSgpKSwgZmlsZURhdGEuc2l6ZSgp
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGNvbnN0
IHNpemVfdCBoZWFkZXJBbmRTb3VyY2VTaXplID0gQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJT
aXplICsgbWV0YURhdGEuc291cmNlU2l6ZTsKICAgICBhdXRvIGNvbXBpbGVkQ29udGVudEV4dGVu
c2lvbkRhdGEgPSBXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEoCiAgICAg
ICAgIFdURk1vdmUoc2hhcmVkTWVtb3J5KSwKICAgICAgICAgZmlsZURhdGEsCiAgICAgICAgIENv
bmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCwKLSAgICAgICAgQ29udGVudEV4dGVuc2lv
bkZpbGVIZWFkZXJTaXplLAorICAgICAgICBoZWFkZXJBbmRTb3VyY2VTaXplLAogICAgICAgICBt
ZXRhRGF0YS5hY3Rpb25zU2l6ZSwKLSAgICAgICAgQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJT
aXplCisgICAgICAgIGhlYWRlckFuZFNvdXJjZVNpemUKICAgICAgICAgICAgICsgbWV0YURhdGEu
YWN0aW9uc1NpemUsCiAgICAgICAgIG1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlU2l6ZSwKLSAgICAgICAgQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJTaXplCisgICAg
ICAgIGhlYWRlckFuZFNvdXJjZVNpemUKICAgICAgICAgICAgICsgbWV0YURhdGEuYWN0aW9uc1Np
emUKICAgICAgICAgICAgICsgbWV0YURhdGEuZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNv
ZGVTaXplLAogICAgICAgICBtZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNp
emUsCi0gICAgICAgIENvbnRlbnRFeHRlbnNpb25GaWxlSGVhZGVyU2l6ZQorICAgICAgICBoZWFk
ZXJBbmRTb3VyY2VTaXplCiAgICAgICAgICAgICArIG1ldGFEYXRhLmFjdGlvbnNTaXplCiAgICAg
ICAgICAgICArIG1ldGFEYXRhLmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlU2l6ZQog
ICAgICAgICAgICAgKyBtZXRhRGF0YS5maWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZVNpemUs
CkBAIC00MDEsNyArNDM0LDQ4IEBAIHZvaWQgQ29udGVudEV4dGVuc2lvblN0b3JlOjppbnZhbGlk
YXRlQ28KICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNp
emVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKGZpbGUpOwogfQot
ICAgIAorCit2b2lkIENvbnRlbnRFeHRlbnNpb25TdG9yZTo6Z2V0Q29udGVudEV4dGVuc2lvblNv
dXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChXVEY6OlN0
cmluZyk+IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5p
c29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZp
ZXIpOworICAgICAgICAKKyAgICAgICAgYXV0byBjb21wbGV0ZSA9IFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oU3RyaW5nIHNvdXJjZSkgbXV0YWJsZSB7CisgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzb3Vy
Y2UgPSBzb3VyY2UuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzb3VyY2UpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICBDb250ZW50RXh0ZW5zaW9uTWV0YURhdGEgbWV0YURhdGE7CisgICAgICAgIERhdGEg
ZmlsZURhdGE7CisgICAgICAgIGlmICghb3BlbkFuZE1hcENvbnRlbnRFeHRlbnNpb24ocGF0aCwg
bWV0YURhdGEsIGZpbGVEYXRhKSkgeworICAgICAgICAgICAgY29tcGxldGUoeyB9KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3dpdGNoIChtZXRh
RGF0YS52ZXJzaW9uKSB7CisgICAgICAgIGNhc2UgOToKKyAgICAgICAgICAgIGlmICghbWV0YURh
dGEuc291cmNlU2l6ZSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRlKHsgfSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYm9vbCBpczhCaXQg
PSBmaWxlRGF0YS5kYXRhKClbQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJTaXplXTsKKyAgICAg
ICAgICAgIHNpemVfdCBzdGFydCA9IENvbnRlbnRFeHRlbnNpb25GaWxlSGVhZGVyU2l6ZSArIHNp
emVvZihib29sKTsKKyAgICAgICAgICAgIHNpemVfdCBsZW5ndGggPSBtZXRhRGF0YS5zb3VyY2VT
aXplIC0gc2l6ZW9mKGJvb2wpOworICAgICAgICAgICAgaWYgKGlzOEJpdCkKKyAgICAgICAgICAg
ICAgICBjb21wbGV0ZShTdHJpbmcoZmlsZURhdGEuZGF0YSgpICsgc3RhcnQsIGxlbmd0aCkpOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCEobGVuZ3RoICUgc2l6
ZW9mKFVDaGFyKSkpOworICAgICAgICAgICAgICAgIGNvbXBsZXRlKFN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IFVDaGFyKj4oZmlsZURhdGEuZGF0YSgpICsgc3RhcnQpLCBsZW5ndGggLyBz
aXplb2YoVUNoYXIpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICAvLyBPbGRlciB2ZXJzaW9ucyBjYW5ub3QgcmVjb3ZlciB0aGUgb3Jp
Z2luYWwgSlNPTiBzb3VyY2UgZnJvbSBkaXNrLgorICAgICAgICBjb21wbGV0ZSh7IH0pOworICAg
IH0pOworfQorCiBjb25zdCBzdGQ6OmVycm9yX2NhdGVnb3J5JiBjb250ZW50RXh0ZW5zaW9uU3Rv
cmVFcnJvckNhdGVnb3J5KCkKIHsKICAgICBjbGFzcyBDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJv
ckNhdGVnb3J5IDogcHVibGljIHN0ZDo6ZXJyb3JfY2F0ZWdvcnkgewpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRFeHRlbnNpb25TdG9y
ZS5oCShyZXZpc2lvbiAyMTM5NjApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBA
IGNsYXNzIENvbnRlbnRFeHRlbnNpb247CiBjbGFzcyBDb250ZW50RXh0ZW5zaW9uU3RvcmUgZmlu
YWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OkNvbnRlbnRFeHRlbnNpb25TdG9y
ZT4gewogcHVibGljOgogICAgIGVudW0gY2xhc3MgRXJyb3IgewotICAgICAgICBMb29rdXBGYWls
ZWQgPSA2LCAvLyBNaXJyb3JzIHZhbHVlIG9mIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVM
b29rdXBGYWlsZWQKKyAgICAgICAgTG9va3VwRmFpbGVkID0gMSwKICAgICAgICAgVmVyc2lvbk1p
c21hdGNoLAogICAgICAgICBDb21waWxlRmFpbGVkLAogICAgICAgICBSZW1vdmVGYWlsZWQKQEAg
LTUwLDcgKzUwLDkgQEAgcHVibGljOgogICAgIAogICAgIC8vIFRoaXMgc2hvdWxkIGJlIGluY3Jl
bWVudGVkIGV2ZXJ5IHRpbWUgYSBmdW5jdGlvbmFsIGNoYW5nZSBpcyBtYWRlIHRvIHRoZSBieXRl
Y29kZSwgZmlsZSBmb3JtYXQsIGV0Yy4KICAgICAvLyB0byBwcmV2ZW50IGNyYXNoaW5nIHdoaWxl
IGxvYWRpbmcgb2xkIGRhdGEuCi0gICAgY29uc3Qgc3RhdGljIHVpbnQzMl90IEN1cnJlbnRDb250
ZW50RXh0ZW5zaW9uRmlsZVZlcnNpb24gPSA4OworICAgIC8vIEFsc28gdXBkYXRlIENvbnRlbnRF
eHRlbnNpb25TdG9yZTo6Z2V0Q29udGVudEV4dGVuc2lvblNvdXJjZSB0byBiZSBhYmxlIHRvIGZp
bmQgdGhlIG9yaWdpbmFsIEpTT04KKyAgICAvLyBzb3VyY2UgZnJvbSBvbGQgdmVyc2lvbnMuCisg
ICAgY29uc3Qgc3RhdGljIHVpbnQzMl90IEN1cnJlbnRDb250ZW50RXh0ZW5zaW9uRmlsZVZlcnNp
b24gPSA5OwogCiAgICAgc3RhdGljIENvbnRlbnRFeHRlbnNpb25TdG9yZSYgZGVmYXVsdFN0b3Jl
KCk7CiAgICAgc3RhdGljIFJlZjxDb250ZW50RXh0ZW5zaW9uU3RvcmU+IHN0b3JlV2l0aFBhdGgo
Y29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCk7CkBAIC02Niw2ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBGb3IgdGVzdGluZyBvbmx5LgogICAgIHZvaWQgc3luY2hyb25vdXNSZW1vdmVBbGxD
b250ZW50RXh0ZW5zaW9ucygpOwogICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRFeHRlbnNpb25W
ZXJzaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICB2b2lkIGdldENvbnRl
bnRFeHRlbnNpb25Tb3VyY2UoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9u
PHZvaWQoV1RGOjpTdHJpbmcpPik7CiAKIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgZGVmYXVs
dFN0b3JlUGF0aCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCShyZXZpc2lvbiAy
MTM5NjApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudEV4
dGVuc2lvblN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSwyNyBAQAogCiAjaWYg
V0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCAiQVBJQ29udGVudEV4dGVuc2lvblN0b3JlLmgiCiAj
aW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKIAorc3RhdGljIFdLRXJyb3JDb2RlIHRvV0tFcnJv
ckNvZGUoY29uc3Qgc3RkOjplcnJvcl9jb2RlJiBlcnJvcikKK3sKKyAgICBBU1NFUlQoZXJyb3Iu
Y2F0ZWdvcnkoKSA9PSBBUEk6OmNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yQ2F0ZWdvcnkoKSk7
CisgICAgc3dpdGNoIChlcnJvci52YWx1ZSgpKSB7CisgICAgY2FzZSBzdGF0aWNfY2FzdDxpbnQ+
KEFQSTo6Q29udGVudEV4dGVuc2lvblN0b3JlOjpFcnJvcjo6TG9va3VwRmFpbGVkKToKKyAgICAg
ICAgcmV0dXJuIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVMb29rdXBGYWlsZWQ7CisgICAg
Y2FzZSBzdGF0aWNfY2FzdDxpbnQ+KEFQSTo6Q29udGVudEV4dGVuc2lvblN0b3JlOjpFcnJvcjo6
VmVyc2lvbk1pc21hdGNoKToKKyAgICAgICAgcmV0dXJuIFdLRXJyb3JDb250ZW50RXh0ZW5zaW9u
U3RvcmVWZXJzaW9uTWlzbWF0Y2g7CisgICAgY2FzZSBzdGF0aWNfY2FzdDxpbnQ+KEFQSTo6Q29u
dGVudEV4dGVuc2lvblN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZCk6CisgICAgICAgIHJldHVy
biBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3JlQ29tcGlsZUZhaWxlZDsKKyAgICBjYXNlIHN0
YXRpY19jYXN0PGludD4oQVBJOjpDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkVycm9yOjpSZW1vdmVG
YWlsZWQpOgorICAgICAgICByZXR1cm4gV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlbW92
ZUZhaWxlZDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFdLRXJyb3JVbmtub3duOworICAgIH0KK30KKwogQGltcGxlbWVudGF0aW9u
IFdLQ29udGVudEV4dGVuc2lvblN0b3JlCiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtOTIsOCArMTEx
LDkgQEAgLSAodm9pZClsb29rdXBDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZgogICAgICAgICAg
ICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKFdLQ29udGVudEV4dGVuc2lvbiAqLCBOU0Vy
cm9yICopKWhhbmRsZXIuZ2V0KCk7CiAKICAgICAgICAgICAgIGF1dG8gdXNlckluZm8gPSBAe05T
SGVscEFuY2hvckVycm9yS2V5OiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4dGVuc2lv
biBsb29rdXAgZmFpbGVkOiAlcyIsIGVycm9yLm1lc3NhZ2UoKS5jX3N0cigpXX07Ci0gICAgICAg
ICAgICBBU1NFUlQoZXJyb3IudmFsdWUoKSA9PSBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3Jl
TG9va3VwRmFpbGVkIHx8IGVycm9yLnZhbHVlKCkgPT0gV0tFcnJvckNvbnRlbnRFeHRlbnNpb25T
dG9yZVZlcnNpb25NaXNtYXRjaCk7Ci0gICAgICAgICAgICByYXdIYW5kbGVyKG5pbCwgW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTplcnJvci52YWx1ZSgpIHVzZXJJ
bmZvOnVzZXJJbmZvXSk7CisgICAgICAgICAgICBhdXRvIHdrRXJyb3IgPSB0b1dLRXJyb3JDb2Rl
KGVycm9yKTsKKyAgICAgICAgICAgIEFTU0VSVCh3a0Vycm9yID09IFdLRXJyb3JDb250ZW50RXh0
ZW5zaW9uU3RvcmVMb29rdXBGYWlsZWQgfHwgd2tFcnJvciA9PSBXS0Vycm9yQ29udGVudEV4dGVu
c2lvblN0b3JlVmVyc2lvbk1pc21hdGNoKTsKKyAgICAgICAgICAgIHJhd0hhbmRsZXIobmlsLCBb
TlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOndrRXJyb3IgdXNlcklu
Zm86dXNlckluZm9dKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTEs
NyArMTMxLDcgQEAgLSAodm9pZClyZW1vdmVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZgogICAg
ICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZvaWQgKF4pKE5TRXJyb3IgKikpaGFuZGxlci5n
ZXQoKTsKIAogICAgICAgICAgICAgYXV0byB1c2VySW5mbyA9IEB7TlNIZWxwQW5jaG9yRXJyb3JL
ZXk6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXh0ZW5zaW9uIHJlbW92YWwgZmFpbGVk
OiAlcyIsIGVycm9yLm1lc3NhZ2UoKS5jX3N0cigpXX07Ci0gICAgICAgICAgICBBU1NFUlQoZXJy
b3IudmFsdWUoKSA9PSBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3JlUmVtb3ZlRmFpbGVkKTsK
KyAgICAgICAgICAgIEFTU0VSVCh0b1dLRXJyb3JDb2RlKGVycm9yKSA9PSBXS0Vycm9yQ29udGVu
dEV4dGVuc2lvblN0b3JlUmVtb3ZlRmFpbGVkKTsKICAgICAgICAgICAgIHJhd0hhbmRsZXIoW05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yQ29udGVudEV4
dGVuc2lvblN0b3JlUmVtb3ZlRmFpbGVkIHVzZXJJbmZvOnVzZXJJbmZvXSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE0NCw2ICsxNjQsMTggQEAgLSAodm9pZClfaW52YWxp
ZGF0ZUNvbnRlbnRFeHRlbnNpb25WZXJzaQogICAgIF9jb250ZW50RXh0ZW5zaW9uU3RvcmUtPmlu
dmFsaWRhdGVDb250ZW50RXh0ZW5zaW9uVmVyc2lvbihpZGVudGlmaWVyKTsKIH0KIAorLSAodm9p
ZClfZ2V0Q29udGVudEV4dGVuc2lvblNvdXJjZUZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRl
bnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcqKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVy
IGNvcHldKTsKKyAgICBfY29udGVudEV4dGVuc2lvblN0b3JlLT5nZXRDb250ZW50RXh0ZW5zaW9u
U291cmNlKGlkZW50aWZpZXIsIFtoYW5kbGVyXShTdHJpbmcgc291cmNlKSB7CisgICAgICAgIGF1
dG8gcmF3SGFuZGxlciA9ICh2b2lkICheKShOU1N0cmluZyAqKSloYW5kbGVyLmdldCgpOworICAg
ICAgICBpZiAoc291cmNlLmlzTnVsbCgpKQorICAgICAgICAgICAgcmF3SGFuZGxlcihuaWwpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByYXdIYW5kbGVyKHNvdXJjZSk7CisgICAgfSk7Cit9
CisKIC8vIE5TX1JFTEVBU0VTX0FSR1VNRU5UIHRvIGtlZXAgcGVhayBtZW1vcnkgdXNhZ2UgbG93
LgogCiAtICh2b2lkKV9jb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6KE5TU3Ry
aW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjooTlNTdHJpbmcgKillbmNv
ZGVkQ29udGVudEV4dGVuc2lvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250ZW50
RXh0ZW5zaW9uICosIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nv
bnRlbnRFeHRlbnNpb25TdG9yZVByaXZhdGUuaAkocmV2aXNpb24gMjEzOTYwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRFeHRlbnNpb25TdG9yZVByaXZh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogLy8gRm9yIHRlc3Rpbmcgb25s
eS4KIC0gKHZvaWQpX3JlbW92ZUFsbENvbnRlbnRFeHRlbnNpb25zOwogLSAodm9pZClfaW52YWxp
ZGF0ZUNvbnRlbnRFeHRlbnNpb25WZXJzaW9uRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVu
dGlmaWVyOworLSAodm9pZClfZ2V0Q29udGVudEV4dGVuc2lvblNvdXJjZUZvcklkZW50aWZpZXI6
KE5TU3RyaW5nICopaWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJp
bmcqKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLy8gTlNfUkVMRUFTRVNfQVJHVU1FTlQgdG8ga2Vl
cCBwZWFrIG1lbW9yeSB1c2FnZSBsb3cuCiAtICh2b2lkKV9jb21waWxlQ29udGVudEV4dGVuc2lv
bkZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVu
c2lvbjooTlNTdHJpbmcgKikgTlNfUkVMRUFTRVNfQVJHVU1FTlQgZW5jb2RlZENvbnRlbnRFeHRl
bnNpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLQ29udGVudEV4dGVuc2lvbiAqLCBO
U0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgJKHJldmlzaW9uIDIxMzk2MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLRXJyb3JEb21haW4KICBA
Y29uc3RhbnQgV0tFcnJvckphdmFTY3JpcHRFeGNlcHRpb25PY2N1cnJlZCAgICAgICAgICBJbmRp
Y2F0ZXMgdGhhdCBhIEphdmFTY3JpcHQgZXhjZXB0aW9uIG9jY3VycmVkLgogIEBjb25zdGFudCBX
S0Vycm9ySmF2YVNjcmlwdFJlc3VsdFR5cGVJc1Vuc3VwcG9ydGVkICAgIEluZGljYXRlcyB0aGF0
IHRoZSByZXN1bHQgb2YgSmF2YVNjcmlwdCBleGVjdXRpb24gY291bGQgbm90IGJlIHJldHVybmVk
LgogIEBjb25zdGFudCBXS0Vycm9yQ29udGVudEV4dGVuc2lvblN0b3JlTG9va3VwRmFpbGVkICAg
IEluZGljYXRlcyB0aGF0IGxvb2tpbmcgdXAgYSBXS1VzZXJDb250ZW50RXh0ZW5zaW9uIGZhaWxl
ZC4KLSBAY29uc3RhbnQgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZVZlcnNpb25NaXNtYXRj
aCBJbmRpY2F0ZXMgdGhhdCBsb29raW5nIHVwIGEgV0tVc2VyQ29udGVudEV4dGVuc2lvbiBmb3Vu
ZCBhbiBleHRlbnNpb24gd2l0aCBhbiBpbmNvbXBhdGlibGUgYmluYXJ5IHZlcnNpb24uCisgQGNv
bnN0YW50IFdLRXJyb3JDb250ZW50RXh0ZW5zaW9uU3RvcmVWZXJzaW9uTWlzbWF0Y2ggSW5kaWNh
dGVzIHRoYXQgV0tVc2VyQ29udGVudEV4dGVuc2lvbiB2ZXJzaW9uIGRpZCBub3QgbWF0Y2ggdGhl
IGxhdGVzdC4KICBAY29uc3RhbnQgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZUNvbXBpbGVG
YWlsZWQgICBJbmRpY2F0ZXMgdGhhdCBjb21waWxpbmcgYSBXS1VzZXJDb250ZW50RXh0ZW5zaW9u
IGZhaWxlZC4KICBAY29uc3RhbnQgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZVJlbW92ZUZh
aWxlZCAgICBJbmRpY2F0ZXMgdGhhdCByZW1vdmluZyBhIFdLVXNlckNvbnRlbnRFeHRlbnNpb24g
ZmFpbGVkLgogICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAkocmV2
aXNpb24gMjEzOTYwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcg
QEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LgogV0tfRVhURVJOIE5T
U3RyaW5nICogY29uc3QgX1dLVXNlckNvbnRlbnRFeHRlbnNpb25zRG9tYWluIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yQ29kZSkgewotICAgIF9XS1Vz
ZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvckxvb2t1cEZhaWxlZCA9IDYsIC8vIE1pcnJvcnMg
dmFsdWUgb2YgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZUxvb2t1cEZhaWxlZAorICAgIF9X
S1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvckxvb2t1cEZhaWxlZCwKICAgICBfV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlRXJyb3JWZXJzaW9uTWlzbWF0Y2gsCiAgICAgX1dLVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZUVycm9yQ29tcGlsZUZhaWxlZCwKICAgICBfV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlRXJyb3JSZW1vdmVGYWlsZWQsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLm1tCShyZXZpc2lvbiAyMTM5NjApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDI2IEBACiAKIE5TU3RyaW5nICogY29uc3QgX1dLVXNlckNv
bnRlbnRFeHRlbnNpb25zRG9tYWluID0gQCJXS0Vycm9yRG9tYWluIjsKIAorc3RhdGljIE5TRXJy
b3IgKnRvVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVycm9yKGNvbnN0IE5TRXJyb3IgKmVycm9y
KQoreworICAgIGlmICghZXJyb3IpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBU1NFUlQo
ZXJyb3IuZG9tYWluID09IFdLRXJyb3JEb21haW4pOworICAgIHN3aXRjaCAoZXJyb3IuY29kZSkg
eworICAgIGNhc2UgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZUxvb2t1cEZhaWxlZDoKKyAg
ICAgICAgcmV0dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpfV0tVc2VyQ29udGVudEV4dGVu
c2lvbnNEb21haW4gY29kZTpfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlRXJyb3JMb29rdXBG
YWlsZWQgdXNlckluZm86ZXJyb3IudXNlckluZm9dOworICAgIGNhc2UgV0tFcnJvckNvbnRlbnRF
eHRlbnNpb25TdG9yZVZlcnNpb25NaXNtYXRjaDoKKyAgICAgICAgcmV0dXJuIFtOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpfV0tVc2VyQ29udGVudEV4dGVuc2lvbnNEb21haW4gY29kZTpfV0tVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlRXJyb3JWZXJzaW9uTWlzbWF0Y2ggdXNlckluZm86ZXJyb3Iu
dXNlckluZm9dOworICAgIGNhc2UgV0tFcnJvckNvbnRlbnRFeHRlbnNpb25TdG9yZUNvbXBpbGVG
YWlsZWQ6CisgICAgICAgIHJldHVybiBbTlNFcnJvciBlcnJvcldpdGhEb21haW46X1dLVXNlckNv
bnRlbnRFeHRlbnNpb25zRG9tYWluIGNvZGU6X1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUVy
cm9yQ29tcGlsZUZhaWxlZCB1c2VySW5mbzplcnJvci51c2VySW5mb107CisgICAgY2FzZSBXS0Vy
cm9yQ29udGVudEV4dGVuc2lvblN0b3JlUmVtb3ZlRmFpbGVkOgorICAgICAgICByZXR1cm4gW05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOl9XS1VzZXJDb250ZW50RXh0ZW5zaW9uc0RvbWFpbiBjb2Rl
Ol9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvclJlbW92ZUZhaWxlZCB1c2VySW5mbzpl
cnJvci51c2VySW5mb107CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlCiAKICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmUKQEAgLTU0LDcgKzc0
LDcgQEAgLSAodm9pZCljb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aQogewogICAgIFtf
Y29udGVudEV4dGVuc2lvblN0b3JlIF9jb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZp
ZXI6aWRlbnRpZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjplbmNvZGVkQ29udGVudEV4dGVu
c2lvbiBjb21wbGV0aW9uSGFuZGxlcjpeKFdLQ29udGVudEV4dGVuc2lvbiAqY29udGVudEV4dGVu
c2lvbiwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgX1dLVXNlckNvbnRlbnRGaWx0ZXIgKmNv
bnRlbnRGaWx0ZXIgPSBjb250ZW50RXh0ZW5zaW9uID8gW1tbX1dLVXNlckNvbnRlbnRGaWx0ZXIg
YWxsb2NdIF9pbml0V2l0aFdLQ29udGVudEV4dGVuc2lvbjpjb250ZW50RXh0ZW5zaW9uXSBhdXRv
cmVsZWFzZV0gOiBuaWw7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRlbnRGaWx0ZXIs
IGVycm9yKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGVudEZpbHRlciwgdG9Vc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlRXJyb3IoZXJyb3IpKTsKICAgICB9XTsKIH0KIApAQCAtNjIs
MTMgKzgyLDE1IEBAIC0gKHZvaWQpbG9va3VwQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWYKIHsK
ICAgICBbX2NvbnRlbnRFeHRlbnNpb25TdG9yZSBsb29rdXBDb250ZW50RXh0ZW5zaW9uRm9ySWRl
bnRpZmllcjppZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tDb250ZW50RXh0ZW5zaW9u
ICpjb250ZW50RXh0ZW5zaW9uLCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBfV0tVc2VyQ29u
dGVudEZpbHRlciAqY29udGVudEZpbHRlciA9IGNvbnRlbnRFeHRlbnNpb24gPyBbW1tfV0tVc2Vy
Q29udGVudEZpbHRlciBhbGxvY10gX2luaXRXaXRoV0tDb250ZW50RXh0ZW5zaW9uOmNvbnRlbnRF
eHRlbnNpb25dIGF1dG9yZWxlYXNlXSA6IG5pbDsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Y29udGVudEZpbHRlciwgZXJyb3IpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZW50
RmlsdGVyLCB0b1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvcihlcnJvcikpOwogICAgIH1d
OwogfQogCiAtICh2b2lkKXJlbW92ZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOihOU1N0
cmluZyAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKikp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBbX2NvbnRlbnRFeHRlbnNpb25TdG9yZSByZW1vdmVD
b250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVy
OmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbX2NvbnRlbnRFeHRlbnNpb25TdG9yZSByZW1vdmVD
b250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodG9Vc2VyQ29u
dGVudEV4dGVuc2lvblN0b3JlRXJyb3IoZXJyb3IpKTsKKyAgICB9XTsKIH0KIAogI3ByYWdtYSBt
YXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTM5NjApCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMy0x
NCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IENvbXBpbGVkIGNvbnRlbnQgZXh0ZW5zaW9ucyBzaG91bGQgaW5jbHVkZSB0aGUgSlNPTiBzb3Vy
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTY0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmUubW06CisgICAgICAgIChURVNUX0YpOgorCiAyMDE3LTAzLTE0ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgV0tIVFRQQ29va2llU3RvcmFn
ZSB0byBXS0hUVFBDb29raWVTdG9yZS4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAkocmV2aXNpb24gMjEz
OTYwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgRVhQRUNUX0VRKGRhdGEudG9wVVJMRmlsdGVycy5zaXplKCksIDB1bGwpOwogICAgIH0KIAor
ICAgIHZvaWQgd3JpdGVTb3VyY2UoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisKICAgICB2b2lk
IHdyaXRlQWN0aW9ucyhWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OlNlcmlhbGl6ZWRBY3Rpb25C
eXRlPiYmIGFjdGlvbnMsIGJvb2wgY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKSBmaW5hbAog
ICAgIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbmFsaXplZCk7CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
V0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCShyZXZpc2lvbiAyMTM5NjApCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XS1VzZXJDb250ZW50RXh0ZW5zaW9u
U3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsMTMgQEAgVEVTVF9GKFdLQ29u
dGVudEV4dGVuc2lvblN0b3JlVGVzdCwgVmVycwogICAgICAgICBkb25lTG9va2luZ1VwID0gdHJ1
ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVMb29raW5nVXAp
OworCisgICAgX19ibG9jayBib29sIGRvbmVHZXR0aW5nU291cmNlID0gZmFsc2U7CisgICAgW1tX
S0NvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIF9nZXRDb250ZW50RXh0ZW5zaW9u
U291cmNlRm9ySWRlbnRpZmllcjpAIlRlc3RFeHRlbnNpb24iIGNvbXBsZXRpb25IYW5kbGVyOl4o
TlNTdHJpbmcqIHNvdXJjZSkgeworICAgICAgICBFWFBFQ1RfTlVMTChzb3VyY2UpOworICAgICAg
ICBkb25lR2V0dGluZ1NvdXJjZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lR2V0dGluZ1NvdXJjZSk7CiB9CiAKIFRFU1RfRihXS0NvbnRlbnRFeHRl
bnNpb25TdG9yZVRlc3QsIFJlbW92YWwpCkBAIC0xODMsNCArMTkwLDY5IEBAIFRFU1RfRihXS0Nv
bnRlbnRFeHRlbnNpb25TdG9yZVRlc3QsIE5vbkUKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmVSZW1vdmluZyk7CiB9CiAKK1RFU1RfRihXS0NvbnRlbnRFeHRlbnNpb25TdG9yZVRl
c3QsIE5vbkRlZmF1bHRTdG9yZSkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiQ29udGVudEV4dGVuc2lvblRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworICAg
IFdLQ29udGVudEV4dGVuc2lvblN0b3JlICpzdG9yZSA9IFtXS0NvbnRlbnRFeHRlbnNpb25TdG9y
ZSBzdG9yZVdpdGhVUkw6dGVtcERpcl07CisgICAgTlNTdHJpbmcgKmlkZW50aWZpZXIgPSBAIlRl
c3RFeHRlbnNpb24iOworICAgIE5TU3RyaW5nICpmaWxlTmFtZSA9IEAiQ29udGVudEV4dGVuc2lv
bi1UZXN0RXh0ZW5zaW9uIjsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lQ29tcGlsaW5nID0gZmFs
c2U7CisgICAgW3N0b3JlIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjppZGVu
dGlmaWVyIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmJhc2ljRmlsdGVyIGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tDb250ZW50RXh0ZW5zaW9uICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgIEVYUEVDVF9OT1RfTlVMTChmaWx0ZXIpOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgICAgIGRvbmVDb21waWxpbmcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZUNvbXBpbGluZyk7CisKKyAgICBOU0RhdGEgKmRhdGEgPSBbTlNE
YXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6ZmlsZU5hbWVdXTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoZGF0YSk7CisgICAgRVhQRUNU
X0VRKGRhdGEubGVuZ3RoLCAyMjh1KTsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZUNoZWNr
aW5nU291cmNlID0gZmFsc2U7CisgICAgW3N0b3JlIF9nZXRDb250ZW50RXh0ZW5zaW9uU291cmNl
Rm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNTdHJpbmcgKnNv
dXJjZSkgeworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoc291cmNlKTsKKyAgICAgICAgRVhQRUNU
X1NUUkVRKGJhc2ljRmlsdGVyLlVURjhTdHJpbmcsIHNvdXJjZS5VVEY4U3RyaW5nKTsKKyAgICAg
ICAgZG9uZUNoZWNraW5nU291cmNlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmVDaGVja2luZ1NvdXJjZSk7CisgICAgCisgICAgX19ibG9jayBib29s
IGRvbmVSZW1vdmluZyA9IGZhbHNlOworICAgIFtzdG9yZSByZW1vdmVDb250ZW50RXh0ZW5zaW9u
Rm9ySWRlbnRpZmllcjppZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBkb25lUmVtb3Zpbmcg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZVJlbW92
aW5nKTsKKworICAgIE5TRGF0YSAqZGF0YUFmdGVyUmVtb3ZpbmcgPSBbTlNEYXRhIGRhdGFXaXRo
Q29udGVudHNPZlVSTDpbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZU5h
bWVdXTsKKyAgICBFWFBFQ1RfTlVMTChkYXRhQWZ0ZXJSZW1vdmluZyk7Cit9CisKK1RFU1RfRihX
S0NvbnRlbnRFeHRlbnNpb25TdG9yZVRlc3QsIE5vbkFTQ0lJU291cmNlKQoreworICAgIHN0YXRp
YyBOU1N0cmluZyAqbm9uQVNDSUlGaWx0ZXIgPSBAIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJi
bG9ja1wifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKndlYmtpdC5vcmdcIn0sIFwi
dW51c2VkXCI6XCLDsMW44oCZwqlcIn1dIjsKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiQ29udGVudEV4dGVuc2lvblRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOwor
ICAgIFdLQ29udGVudEV4dGVuc2lvblN0b3JlICpzdG9yZSA9IFtXS0NvbnRlbnRFeHRlbnNpb25T
dG9yZSBzdG9yZVdpdGhVUkw6dGVtcERpcl07CisgICAgTlNTdHJpbmcgKmlkZW50aWZpZXIgPSBA
IlRlc3RFeHRlbnNpb24iOworICAgIE5TU3RyaW5nICpmaWxlTmFtZSA9IEAiQ29udGVudEV4dGVu
c2lvbi1UZXN0RXh0ZW5zaW9uIjsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OworICAgIFtzdG9yZSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6aWRlbnRp
ZmllciBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjpub25BU0NJSUZpbHRlciBjb21wbGV0aW9uSGFu
ZGxlcjpeKFdLQ29udGVudEV4dGVuc2lvbiAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfTk9UX05VTEwoZmlsdGVyKTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworCisgICAgICAgIFtzdG9yZSBfZ2V0Q29udGVudEV4dGVuc2lvblNvdXJjZUZvcklkZW50aWZp
ZXI6aWRlbnRpZmllciBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpzb3VyY2UpIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChzb3VyY2UpOworICAgICAgICAgICAgRVhQRUNUX1NU
UkVRKG5vbkFTQ0lJRmlsdGVyLlVURjhTdHJpbmcsIHNvdXJjZS5VVEY4U3RyaW5nKTsKKworICAg
ICAgICAgICAgW3N0b3JlIF9yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9uc107CisgICAgICAgICAg
ICBOU0RhdGEgKmRhdGFBZnRlclJlbW92aW5nID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZV
Ukw6W3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVOYW1lXV07CisgICAg
ICAgICAgICBFWFBFQ1RfTlVMTChkYXRhQWZ0ZXJSZW1vdmluZyk7CisKKyAgICAgICAgICAgIGRv
bmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworfQorCiAjZW5kaWYK
</data>
<flag name="review"
          id="325980"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>