<?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>54864</bug_id>
          
          <creation_ts>2011-02-21 02:29:09 -0800</creation_ts>
          <short_desc>IndexedDB: Rename IDBSQLiteDatabase to IDBBackingStore</short_desc>
          <delta_ts>2011-02-23 01:41:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>andreip</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jorlow</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>354483</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-21 02:29:09 -0800</bug_when>
    <thetext>IndexedDB: Rename IDBSQLiteDatabase to IDBBackingStore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354485</commentid>
    <comment_count>1</comment_count>
      <attachid>83142</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-21 02:30:36 -0800</bug_when>
    <thetext>Created attachment 83142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354487</commentid>
    <comment_count>2</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-21 02:31:53 -0800</bug_when>
    <thetext>First step towards refactoring all the Indexed DB backing store code into one place. Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354488</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-21 02:35:03 -0800</bug_when>
    <thetext>Attachment 83142 did not build on chromium:
Build output: http://queues.webkit.org/results/7940627</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354489</commentid>
    <comment_count>4</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-02-21 02:36:43 -0800</bug_when>
    <thetext>Attachment 83142 did not build on gtk:
Build output: http://queues.webkit.org/results/7938777</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354491</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-21 02:40:16 -0800</bug_when>
    <thetext>Attachment 83142 did not build on mac:
Build output: http://queues.webkit.org/results/7936901</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354493</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-21 02:46:24 -0800</bug_when>
    <thetext>Attachment 83142 did not build on chromium:
Build output: http://queues.webkit.org/results/7939728</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354494</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-21 02:52:49 -0800</bug_when>
    <thetext>Attachment 83142 did not build on win:
Build output: http://queues.webkit.org/results/7937842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354516</commentid>
    <comment_count>8</comment_count>
      <attachid>83146</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-21 04:33:36 -0800</bug_when>
    <thetext>Created attachment 83146
manual patch

Uploading manually; webkit-patch seems to leave newly added files out of the patch :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355384</commentid>
    <comment_count>9</comment_count>
      <attachid>83146</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-02-22 10:39:46 -0800</bug_when>
    <thetext>Comment on attachment 83146
manual patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355938</commentid>
    <comment_count>10</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-02-23 01:41:28 -0800</bug_when>
    <thetext>Committed r79426: &lt;http://trac.webkit.org/changeset/79426&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83142</attachid>
            <date>2011-02-21 02:30:36 -0800</date>
            <delta_ts>2011-02-21 04:33:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54864-20110221103033.patch</filename>
            <type>text/plain</type>
            <size>33688</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzkxOTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NTJiNDczNWIwYzJiMmVm
NjQ3YmU5OTNlNTkxN2Y4NmUwNjZhM2I3Li45OWM2YjUwODFjMTM4ZDhhNGNkYjJkYThlMzg2OWZi
NmZhNTg3YTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMDItMjEgIEhhbnMg
V2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IFJlbmFtZSBJREJTUUxpdGVEYXRhYmFz
ZSB0byBJREJCYWNraW5nU3RvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0ODY0CisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9uYWxpdHksIHNvIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OklEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6On5JREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHN0
b3JhZ2UvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmRiKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5kSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3VycmVudFJvd0V4aXN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGF0YWJhc2UpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1
cnNvckJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6OnNxbGl0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJGYWN0
b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJ
bXBsOjpyZW1vdmVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlblNRTGl0
ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Bl
bik6CisgICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaDoKKyAgICAgICAg
KiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6c3FsaXRlRGF0YWJhc2UpOgorICAgICAgICAqIHN0
b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhC
YWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9hZEluZGV4ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6c3FsaXRlRGF0YWJhc2UpOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKwogMjAxMS0wMi0yMSAg
QW5kb25pIE1vcmFsZXMgQWxhc3RydWV5ICA8YW1vcmFsZXNAZmx1bW90aW9uLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDI1ZTdmODVmNjg2YjBkOGUyYTNjZjJlNDkyZjU5YTM2YWUzY2UxZTAuLjk1NjE4MWU5YThmYjM2
MzY2YmJjNTQwOWIwNzU3MTg2MmJlMzNkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMDkz
LDYgKzMwOTMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2VUcmFja2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQW55LmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJBbnkuaCBcCisJU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJCYWNraW5nU3RvcmUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkJhY2tpbmdTdG9yZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oIFwKQEAgLTMxMzMs
OCArMzEzNSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJPYmplY3RTdG9yZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBcCi0JU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJTUUxpdGVEYXRhYmFzZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCU1FMaXRlRGF0YWJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzMzQ3M2I0MjE5NjUwNTI3YmI4
YTFkYTcwM2ZiMTNkYjJhMDU1Zjc3Li5mZWYyNmQyY2I2YWQxYjE4YmRkZTJhMzUxZDhkYmEwMjY0
OTRjODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00MDU2LDYgKzQwNTYsOCBAQAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCQW55LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuaCcsCisgICAgICAg
ICAgICAnc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdl
L0lEQkJhY2tpbmdTdG9yZS5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkNhbGxiYWNrcy5o
JywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkN1cnNvci5jcHAnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCQ3Vyc29yLmgnLApAQCAtNDA5OSw4ICs0MTAxLDYgQEAKICAgICAgICAgICAgICdz
dG9yYWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCcsCiAgICAgICAgICAgICAnc3Rv
cmFnZS9JREJSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0Lmgn
LAotICAgICAgICAgICAgJ3N0b3JhZ2UvSURCU1FMaXRlRGF0YWJhc2UuY3BwJywKLSAgICAgICAg
ICAgICdzdG9yYWdlL0lEQlNRTGl0ZURhdGFiYXNlLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9u
LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApp
bmRleCAwODliYjY3MjNkMTU5ODE4YzU3MWY3YzJhYTBiMzkyMjRkZjAyNTFiLi40NTc2ZjZkYjgx
NzY3ODQ1OTM4OTc4MmY0MzJlYzI0OTY4NGUyZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisj
aW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
RXJyb3IuaCIKQEAgLTM3LDcgKzM4LDYgQEAKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2lu
Y2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0
LmgiCi0jaW5jbHVkZSAiSURCU1FMaXRlRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgpAQCAtNDUsOCArNDUsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUlEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5kSW1wbChJ
REJTUUxpdGVEYXRhYmFzZSogZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NPd25QdHI8U1FMaXRlU3Rh
dGVtZW50PiBxdWVyeSwgYm9vbCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlKiBvYmplY3RTdG9yZSkKLSAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCitJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6SURCQ3Vyc29yQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiBiYWNraW5nU3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJREJDdXJz
b3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50PiBxdWVy
eSwgYm9vbCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
KiBvYmplY3RTdG9yZSkKKyAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAs
IG1fa2V5UmFuZ2Uoa2V5UmFuZ2UpCiAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCiAgICAg
LCBtX3F1ZXJ5KHF1ZXJ5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSURCQ3Vyc29yQmFja2Vu
ZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1Jl
ZlB0CiBib29sIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjdXJyZW50Um93RXhpc3RzKCkKIHsKICAg
ICBTdHJpbmcgc3FsID0gbV9jdXJyZW50SURCS2V5VmFsdWUgPyAiU0VMRUNUIGlkIEZST00gSW5k
ZXhEYXRhIFdIRVJFIGlkID0gPyIgOiAiU0VMRUNUIGlkIEZST00gT2JqZWN0U3RvcmVEYXRhIFdI
RVJFIGlkID0gPyI7Ci0gICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudChtX2RhdGFiYXNlLT5k
YigpLCBzcWwpOworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9iYWNraW5nU3RvcmUt
PmRiKCksIHNxbCk7CiAKICAgICBib29sIG9rID0gc3RhdGVtZW50LnByZXBhcmUoKSA9PSBTUUxS
ZXN1bHRPazsKICAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7CkBAIC0xNzQsNyArMTc0LDcgQEAg
dm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6bG9hZEN1cnJlbnRSb3coKQogCiBTUUxpdGVEYXRh
YmFzZSYgSURCQ3Vyc29yQmFja2VuZEltcGw6OmRhdGFiYXNlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9kYXRhYmFzZS0+ZGIoKTsKKyAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUtPmRiKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yQmFja2VuZEltcGwuaAppbmRleCBmNDU5MTM5ODdjNmMxMzBiMjVmNWY2YmRmODMzZTEz
YzE5ODg0MTdlLi5kYjEyZjE3ZDBkMjFjZWVhNmRlNTViZWIzNjdiMjg0MzY0MzYyYWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCkBAIC00MSw3
ICs0MSw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw7CiBjbGFzcyBJREJJbmRleEJh
Y2tlbmRJbXBsOwogY2xhc3MgSURCS2V5UmFuZ2U7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U7Ci1jbGFzcyBJREJTUUxpdGVEYXRhYmFzZTsKK2NsYXNzIElEQkJhY2tpbmdT
dG9yZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKIGNsYXNzIFNRTGl0
ZURhdGFiYXNlOwogY2xhc3MgU1FMaXRlU3RhdGVtZW50OwpAQCAtNDksOSArNDksOSBAQCBjbGFz
cyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIElEQkN1cnNvckJhY2tlbmRJbXBsIDog
cHVibGljIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjcmVhdGUoSURCU1FMaXRlRGF0YWJhc2Uq
IGRhdGFiYXNlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yOjpE
aXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZVN0YXRlbWVudD4gcXVlcnksIGJv
b2wgaXNTZXJpYWxpemVkU2NyaXB0VmFsdWVDdXJzb3IsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSogb2Jq
ZWN0U3RvcmUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNy
ZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc093blB0cjxT
UUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29y
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UqIG9iamVjdFN0b3JlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJDdXJzb3JCYWNrZW5kSW1wbChkYXRhYmFzZSwga2V5UmFuZ2UsIGRp
cmVjdGlvbiwgcXVlcnksIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yLCB0cmFuc2FjdGlv
biwgb2JqZWN0U3RvcmUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDdXJzb3JC
YWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGtleVJhbmdlLCBkaXJlY3Rpb24sIHF1ZXJ5LCBpc1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgdHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlKSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgfklEQkN1cnNvckJhY2tlbmRJbXBsKCk7CiAKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKLSAgICBJREJDdXJz
b3JCYWNrZW5kSW1wbChJREJTUUxpdGVEYXRhYmFzZSosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
LCBJREJDdXJzb3I6OkRpcmVjdGlvbiwgUGFzc093blB0cjxTUUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5
LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICBJREJD
dXJzb3JCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50PiBxdWVy
eSwgYm9vbCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKik7CiAKICAgICBi
b29sIGN1cnJlbnRSb3dFeGlzdHMoKTsKICAgICB2b2lkIGxvYWRDdXJyZW50Um93KCk7CkBAIC03
Myw3ICs3Myw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlk
SWQgPSAtMTsKIAotICAgIFJlZlB0cjxJREJTUUxpdGVEYXRhYmFzZT4gbV9kYXRhYmFzZTsKKyAg
ICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKIAogICAgIFJlZlB0cjxJ
REJLZXlSYW5nZT4gbV9rZXlSYW5nZTsKICAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBtX2RpcmVj
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCmluZGV4IGUyNzQ1YjUxYTc4YTllOGFhYjcwMWVmOTMxOGVjNjk5YWE3MGY0ZTMuLjhh
ODkxZGI2M2FiMzMzYTFjZGE5ZWNlYTVjYWYxZDZjYjI0ZDAzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMzAsMTAgKzMw
LDEwIEBACiAKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNsdWRlICJET01TdHJp
bmdMaXN0LmgiCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEltcGwuaCIKICNp
bmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCi0jaW5jbHVkZSAiSURCU1FMaXRl
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRl
bWVudC5oIgpAQCAtMTA1LDggKzEwNSw4IEBAIHN0YXRpYyBib29sIHNldE1ldGFEYXRhKFNRTGl0
ZURhdGFiYXNlJiBzcWxpdGVEYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLUlEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFj
a2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJTUUxpdGVEYXRhYmFzZSogc3FsaXRlRGF0
YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yLCBJREJGYWN0b3J5
QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikKLSAg
ICA6IG1fc3FsaXRlRGF0YWJhc2Uoc3FsaXRlRGF0YWJhc2UpCitJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2lu
Z1N0b3JlKiBiYWNraW5nU3RvcmUsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5h
dG9yLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3RvcnksIGNvbnN0IFN0cmluZyYgdW5pcXVl
SWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1f
aWQoSW52YWxpZElkKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZlcnNpb24oIiIpCkBA
IC0xMTcsOSArMTE3LDkgQEAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlNRTGl0ZURhdGEKIHsKICAgICBBU1NFUlQo
IW1fbmFtZS5pc051bGwoKSk7CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBleHRyYWN0TWV0YURhdGEo
bV9zcWxpdGVEYXRhYmFzZS0+ZGIoKSwgbV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpOworICAgIGJv
b2wgc3VjY2VzcyA9IGV4dHJhY3RNZXRhRGF0YShtX2JhY2tpbmdTdG9yZS0+ZGIoKSwgbV9uYW1l
LCBtX3ZlcnNpb24sIG1faWQpOwogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2VzcyA9
PSAobV9pZCAhPSBJbnZhbGlkSWQpKTsKLSAgICBpZiAoIXNldE1ldGFEYXRhKG1fc3FsaXRlRGF0
YWJhc2UtPmRiKCksIG1fbmFtZSwgbV92ZXJzaW9uLCBtX2lkKSkKKyAgICBpZiAoIXNldE1ldGFE
YXRhKG1fYmFja2luZ1N0b3JlLT5kYigpLCBtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCkpCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBGSVhNRTogTmVlZCBiZXR0ZXIgZXJyb3IgaGFu
ZGxpbmcuCiAgICAgbG9hZE9iamVjdFN0b3JlcygpOwogfQpAQCAtMTMxLDcgKzEzMSw3IEBAIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6On5JREJEYXRhYmFzZUJhY2tlbmRJbXBsKCkKIAogU1FMaXRl
RGF0YWJhc2UmIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNxbGl0ZURhdGFiYXNlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9zcWxpdGVEYXRhYmFzZS0+ZGIoKTsKKyAgICByZXR1cm4gbV9iYWNr
aW5nU3RvcmUtPmRiKCk7CiB9CiAKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CkBAIC0xNTEsNyArMTUxLDcg
QEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+ICBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fc3FsaXRlRGF0YWJhc2UuZ2V0KCksIG5hbWUs
IGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpOworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZSht
X2JhY2tpbmdTdG9yZS5nZXQoKSwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CiAgICAg
QVNTRVJUKG9iamVjdFN0b3JlLT5uYW1lKCkgPT0gbmFtZSk7CiAKICAgICBSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwpAQCAtMjUzLDcgKzI1Myw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmCiB7CiAgICAgaW50NjRfdCBkYXRhYmFzZUlkID0gZGF0YWJh
c2UtPmlkKCk7CiAgICAgZGF0YWJhc2UtPm1fdmVyc2lvbiA9IHZlcnNpb247Ci0gICAgaWYgKCFz
ZXRNZXRhRGF0YShkYXRhYmFzZS0+bV9zcWxpdGVEYXRhYmFzZS0+ZGIoKSwgZGF0YWJhc2UtPm1f
bmFtZSwgZGF0YWJhc2UtPm1fdmVyc2lvbiwgZGF0YWJhc2VJZCkpIHsKKyAgICBpZiAoIXNldE1l
dGFEYXRhKGRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+ZGIoKSwgZGF0YWJhc2UtPm1fbmFtZSwg
ZGF0YWJhc2UtPm1fdmVyc2lvbiwgZGF0YWJhc2VJZCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRo
ZSBJbmRleGVkIERhdGFiYXNlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhbiBlcnJvciBj
b2RlIGRlZGljYXRlZCB0byBJL08gZXJyb3JzLgogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VS
UiwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKSk7CiAgICAgICAgIHRy
YW5zYWN0aW9uLT5hYm9ydCgpOwpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6bG9hZE9iamVjdFN0b3JlcygpCiAgICAgICAgIFN0cmluZyBrZXlQYXRoID0g
b2JqZWN0U3RvcmVzUXVlcnkuZ2V0Q29sdW1uVGV4dCgyKTsKICAgICAgICAgYm9vbCBhdXRvSW5j
cmVtZW50ID0gISFvYmplY3RTdG9yZXNRdWVyeS5nZXRDb2x1bW5JbnQoMyk7CiAKLSAgICAgICAg
bV9vYmplY3RTdG9yZXMuc2V0KG5hbWUsIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0
ZShtX3NxbGl0ZURhdGFiYXNlLmdldCgpLCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVu
dCkpOworICAgICAgICBtX29iamVjdFN0b3Jlcy5zZXQobmFtZSwgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLmdldCgpLCBpZCwgbmFtZSwga2V5UGF0aCwg
YXV0b0luY3JlbWVudCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAyMDJiMDcyMDdhMDI0ODAwZGYyNTE2ZDc1
Yzg0NWMwNTA0YzcyMDU2Li40NWFmYjhkNzZkOTdiMDQxNWViZDgxYTZhMTIxNjI5ZGY0MmEzZmQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aApAQCAtMzYsMTUgKzM2LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURC
QmFja2luZ1N0b3JlOwogY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbXBsOwogY2xhc3MgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDsKLWNsYXNzIElEQlNRTGl0ZURhdGFiYXNlOwogY2xhc3MgSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvcjsKIGNsYXNzIFNRTGl0ZURhdGFiYXNlOwogCiBjbGFzcyBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsIDogcHVibGljIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1w
bD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCU1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNl
LCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciwgSURCRmFjdG9yeUJhY2tl
bmRJbXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvciogY29vcmRpbmF0b3IsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3Qg
U3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKG5hbWUsIGRhdGFiYXNlLCBjb29yZGluYXRvciwg
ZmFjdG9yeSwgdW5pcXVlSWRlbnRpZmllcikpOwogICAgIH0KQEAgLTcwLDcgKzcwLDcgQEAgcHVi
bGljOgogICAgIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KIAog
cHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCU1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwg
SURCRmFjdG9yeUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsK
KyAgICBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2lu
Z1N0b3JlKiBkYXRhYmFzZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciosIElEQkZhY3RvcnlC
YWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CiAKICAgICB2b2lk
IGxvYWRPYmplY3RTdG9yZXMoKTsKIApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyB2b2lkIGFkZE9iamVjdFN0b3JlVG9NYXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0VmVyc2lvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKTsKIAotICAgIFJlZlB0cjxJREJTUUxpdGVEYXRhYmFzZT4gbV9zcWxp
dGVEYXRhYmFzZTsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsK
ICAgICBpbnQ2NCBtX2lkOwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fdmVyc2lv
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNw
cAppbmRleCAzNzJkNTRjNzg5MWNlNDE3MGMwMzdkOGNiZDIyYmM0OWIyM2I0ZTRjLi4yOGZlYzU1
MDdjZTYwNThmM2IzYjUyODkyMGM1M2ZmMmM5YmRjMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCkBAIC0zMSw5ICszMSw5IEBACiAK
ICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2lu
Y2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZElt
cGwuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIklEQlNR
TGl0ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9u
LmgiCkBAIC02MCwxMyArNjAsMTMgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OnJlbW92
ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWYKICAgICBtX2Rh
dGFiYXNlQmFja2VuZE1hcC5yZW1vdmUodW5pcXVlSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgSURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVTUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIHVu
aXF1ZUlkZW50aWZpZXIpCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6cmVtb3ZlSURCQmFj
a2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQo
bV9zcWxpdGVEYXRhYmFzZU1hcC5jb250YWlucyh1bmlxdWVJZGVudGlmaWVyKSk7Ci0gICAgbV9z
cWxpdGVEYXRhYmFzZU1hcC5yZW1vdmUodW5pcXVlSWRlbnRpZmllcik7CisgICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlTWFwLmNvbnRhaW5zKHVuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICBtX2JhY2tp
bmdTdG9yZU1hcC5yZW1vdmUodW5pcXVlSWRlbnRpZmllcik7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPElEQlNRTGl0ZURhdGFiYXNlPiBvcGVuU1FMaXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4q
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBhdGhCYXNlLCBpbnQ2NF90IG1heGltdW1T
aXplLCBjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEltcGwq
IGZhY3RvcnkpCitzdGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW5TUUxpdGVE
YXRhYmFzZShTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGF0
aEJhc2UsIGludDY0X3QgbWF4aW11bVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIs
IElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSkKIHsKICAgICBTdHJpbmcgcGF0aCA9ICI6
bWVtb3J5OiI7CiAgICAgaWYgKCFwYXRoQmFzZS5pc0VtcHR5KCkpIHsKQEAgLTc5LDE4ICs3OSwx
OCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJTUUxpdGVEYXRhYmFzZT4gb3BlblNRTGl0ZURhdGFi
YXNlKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eQogICAgICAgICBwYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGhCYXNlLCBzZWN1cml0eU9yaWdpbi0+ZGF0YWJhc2VJZGVudGlmaWVy
KCkgKyAiLmluZGV4ZWRkYiIpOwogICAgIH0KIAotICAgIFJlZlB0cjxJREJTUUxpdGVEYXRhYmFz
ZT4gc3FsaXRlRGF0YWJhc2UgPSBJREJTUUxpdGVEYXRhYmFzZTo6Y3JlYXRlKGZpbGVJZGVudGlm
aWVyLCBmYWN0b3J5KTsKLSAgICBpZiAoIXNxbGl0ZURhdGFiYXNlLT5kYigpLm9wZW4ocGF0aCkp
IHsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZShmaWxlSWRlbnRpZmllciwgZmFjdG9yeSk7CisgICAgaWYgKCFiYWNraW5n
U3RvcmUtPmRiKCkub3BlbihwYXRoKSkgewogICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYW55
IG90aGVyIHRoaW5nIHdlIGNvdWxkIHBvc3NpYmx5IGRvIHRvIHJlY292ZXIgYXQgdGhpcyBwb2lu
dD8gSWYgc28sIGRvIGl0IHJhdGhlciB0aGFuIGp1c3QgZXJyb3Jpbmcgb3V0LgogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIGRhdGFiYXNlIGZpbGUgJXMgZm9yIEluZGV4ZWREQiIs
IHBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIC8v
IEZJWE1FOiBFcnJvciBjaGVja2luZz8KLSAgICBzcWxpdGVEYXRhYmFzZS0+ZGIoKS5zZXRNYXhp
bXVtU2l6ZShtYXhpbXVtU2l6ZSk7Ci0gICAgc3FsaXRlRGF0YWJhc2UtPmRiKCkudHVybk9uSW5j
cmVtZW50YWxBdXRvVmFjdXVtKCk7CisgICAgYmFja2luZ1N0b3JlLT5kYigpLnNldE1heGltdW1T
aXplKG1heGltdW1TaXplKTsKKyAgICBiYWNraW5nU3RvcmUtPmRiKCkudHVybk9uSW5jcmVtZW50
YWxBdXRvVmFjdXVtKCk7CiAKLSAgICByZXR1cm4gc3FsaXRlRGF0YWJhc2UucmVsZWFzZSgpOwor
ICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFzZSgpOwogfQogCiBzdGF0aWMgYm9vbCBydW5D
b21tYW5kcyhTUUxpdGVEYXRhYmFzZSYgc3FsaXRlRGF0YWJhc2UsIGNvbnN0IGNoYXIqKiBjb21t
YW5kcywgc2l6ZV90IG51bWJlck9mQ29tbWFuZHMpCkBAIC0yMjAsMjIgKzIyMCwyMiBAQCB2b2lk
IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYQogCiAgICAgLy8gRklYTUU6IEV2ZXJ5dGhpbmcgZnJvbSBub3cg
b24gc2hvdWxkIGJlIGRvbmUgb24gYW5vdGhlciB0aHJlYWQuCiAKLSAgICBSZWZQdHI8SURCU1FM
aXRlRGF0YWJhc2U+IHNxbGl0ZURhdGFiYXNlOwotICAgIFNRTGl0ZURhdGFiYXNlTWFwOjppdGVy
YXRvciBpdDIgPSBtX3NxbGl0ZURhdGFiYXNlTWFwLmZpbmQoZmlsZUlkZW50aWZpZXIpOwotICAg
IGlmIChpdDIgIT0gbV9zcWxpdGVEYXRhYmFzZU1hcC5lbmQoKSkKLSAgICAgICAgc3FsaXRlRGF0
YWJhc2UgPSBpdDItPnNlY29uZDsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5n
U3RvcmU7CisgICAgSURCQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdDIgPSBtX2JhY2tpbmdT
dG9yZU1hcC5maW5kKGZpbGVJZGVudGlmaWVyKTsKKyAgICBpZiAoaXQyICE9IG1fYmFja2luZ1N0
b3JlTWFwLmVuZCgpKQorICAgICAgICBiYWNraW5nU3RvcmUgPSBpdDItPnNlY29uZDsKICAgICBl
bHNlIHsKLSAgICAgICAgc3FsaXRlRGF0YWJhc2UgPSBvcGVuU1FMaXRlRGF0YWJhc2Uoc2VjdXJp
dHlPcmlnaW4uZ2V0KCksIGRhdGFEaXIsIG1heGltdW1TaXplLCBmaWxlSWRlbnRpZmllciwgdGhp
cyk7CisgICAgICAgIGJhY2tpbmdTdG9yZSA9IG9wZW5TUUxpdGVEYXRhYmFzZShzZWN1cml0eU9y
aWdpbi5nZXQoKSwgZGF0YURpciwgbWF4aW11bVNpemUsIGZpbGVJZGVudGlmaWVyLCB0aGlzKTsK
IAotICAgICAgICBpZiAoIXNxbGl0ZURhdGFiYXNlIHx8ICFjcmVhdGVUYWJsZXMoc3FsaXRlRGF0
YWJhc2UtPmRiKCkpIHx8ICFtaWdyYXRlRGF0YWJhc2Uoc3FsaXRlRGF0YWJhc2UtPmRiKCkpKSB7
CisgICAgICAgIGlmICghYmFja2luZ1N0b3JlIHx8ICFjcmVhdGVUYWJsZXMoYmFja2luZ1N0b3Jl
LT5kYigpKSB8fCAhbWlncmF0ZURhdGFiYXNlKGJhY2tpbmdTdG9yZS0+ZGIoKSkpIHsKICAgICAg
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwotICAgICAg
ICAgICAgbV9zcWxpdGVEYXRhYmFzZU1hcC5zZXQoZmlsZUlkZW50aWZpZXIsIDApOworICAgICAg
ICAgICAgbV9iYWNraW5nU3RvcmVNYXAuc2V0KGZpbGVJZGVudGlmaWVyLCAwKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX3NxbGl0ZURhdGFiYXNlTWFwLnNldChm
aWxlSWRlbnRpZmllciwgc3FsaXRlRGF0YWJhc2UuZ2V0KCkpOworICAgICAgICBtX2JhY2tpbmdT
dG9yZU1hcC5zZXQoZmlsZUlkZW50aWZpZXIsIGJhY2tpbmdTdG9yZS5nZXQoKSk7CiAgICAgfQog
Ci0gICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlQmFja2VuZCA9IElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZShuYW1lLCBzcWxpdGVEYXRhYmFzZS5nZXQoKSwg
bV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsK
KyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdTdG9yZS5nZXQoKSwgbV90
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlmaWVyKTsKICAg
ICBkYXRhYmFzZUJhY2tlbmQtPm9wZW4oKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhkYXRh
YmFzZUJhY2tlbmQuZ2V0KCkpOwogICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnNldCh1bmlxdWVJ
ZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggZGNhZjg0ODU5Y2JmYjFkMmQ3NjAx
ZGIyYzg5MmY3NTkzOTZkYmEwOS4uMzdlNmE5Y2FjYjAwMzllN2Q0MGRkNDQ2ZGQ0NDA0MTcwZDRm
NmU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1w
bC5oCkBAIC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NU3Ry
aW5nTGlzdDsKIAorY2xhc3MgSURCQmFja2luZ1N0b3JlOwogY2xhc3MgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDsKLWNsYXNzIElEQlNRTGl0ZURhdGFiYXNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvcjsKIAogY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbXBsIDogcHVibGljIElEQkZh
Y3RvcnlCYWNrZW5kSW50ZXJmYWNlIHsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAg
Ly8gTm90aWZpY2F0aW9ucyBmcm9tIHdlYWsgcG9pbnRlcnMuCiAgICAgdm9pZCByZW1vdmVJREJE
YXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKLSAgICB2b2lk
IHJlbW92ZVNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCByZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlm
aWVyKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIsIGludDY0X3QgbWF4aW11bVNpemUpOwogCkBAIC02Miw4ICs2
Miw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbCo+IElEQkRhdGFiYXNlQmFja2VuZE1hcDsKICAgICBJREJEYXRhYmFzZUJhY2tl
bmRNYXAgbV9kYXRhYmFzZUJhY2tlbmRNYXA7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBJREJTUUxpdGVEYXRhYmFzZSo+IFNRTGl0ZURhdGFiYXNlTWFwOwotICAgIFNRTGl0ZURhdGFi
YXNlTWFwIG1fc3FsaXRlRGF0YWJhc2VNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
SURCQmFja2luZ1N0b3JlKj4gSURCQmFja2luZ1N0b3JlTWFwOworICAgIElEQkJhY2tpbmdTdG9y
ZU1hcCBtX2JhY2tpbmdTdG9yZU1hcDsKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAKQEAgLTc2LDQgKzc2LDMgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAjZW5kaWYgLy8gSURCRmFjdG9yeUJhY2tlbmRJbXBsX2gKLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggNmVi
YTE4OWVkYzkwYjg1YWJkMmMxODgzOTYzZWU4NzZkMGJlNjYzOC4uYmYzY2FiNDg0YTk0N2M2MzM0
YjE3YmRkMTUxZGMxYjQ3NDg0NTg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4QmFja2VuZEltcGwuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKKyNpbmNsdWRlICJJ
REJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJ
REJDdXJzb3JCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwu
aCIKQEAgLTM2LDE0ICszNywxMyBAQAogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklE
QktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIgotI2lu
Y2x1ZGUgIklEQlNRTGl0ZURhdGFiYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1J
REJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNl
KiBkYXRhYmFzZSwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKLSAgICA6IG1f
ZGF0YWJhc2UoZGF0YWJhc2UpCitJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJ
bXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgdW5pcXVlKQorICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICwg
bV9pZChpZCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9zdG9yZU5hbWUoc3RvcmVOYW1l
KQpAQCAtNTIsOCArNTIsOCBAQCBJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJ
bXBsKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwgaW50NjRfdCBpZAogewogfQogCi1JREJJ
bmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiBk
YXRhYmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29u
c3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKLSAgICA6IG1fZGF0YWJhc2UoZGF0YWJh
c2UpCitJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdT
dG9yZSogYmFja2luZ1N0b3JlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3Rv
cmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIDogbV9iYWNr
aW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICwgbV9pZChJbnZhbGlkSWQpCiAgICAgLCBtX25h
bWUobmFtZSkKICAgICAsIG1fc3RvcmVOYW1lKHN0b3JlTmFtZSkKQEAgLTEwOCw3ICsxMDgsNyBA
QCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cgogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlKGluZGV4
LT5tX3N0b3JlTmFtZSwgZWMpOwogICAgIEFTU0VSVChvYmplY3RTdG9yZSAmJiAhZWMpOwogCi0g
ICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGN1cnNvciA9IElEQkN1cnNvckJh
Y2tlbmRJbXBsOjpjcmVhdGUoaW5kZXgtPm1fZGF0YWJhc2UuZ2V0KCksIHJhbmdlLCBkaXJlY3Rp
b24sIHF1ZXJ5LnJlbGVhc2UoKSwgb2JqZWN0Q3Vyc29yLCB0cmFuc2FjdGlvbi5nZXQoKSwgb2Jq
ZWN0U3RvcmUuZ2V0KCkpOworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBj
dXJzb3IgPSBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3JlYXRlKGluZGV4LT5tX2JhY2tpbmdTdG9y
ZS5nZXQoKSwgcmFuZ2UsIGRpcmVjdGlvbiwgcXVlcnkucmVsZWFzZSgpLCBvYmplY3RDdXJzb3Is
IHRyYW5zYWN0aW9uLmdldCgpLCBvYmplY3RTdG9yZS5nZXQoKSk7CiAgICAgY2FsbGJhY2tzLT5v
blN1Y2Nlc3MoY3Vyc29yLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29s
IElEQkluZGV4QmFja2VuZEltcGw6OmFkZGluZ0tleUFsbG93ZWQoSURCS2V5KiBrZXkpCiAKIFNR
TGl0ZURhdGFiYXNlJiBJREJJbmRleEJhY2tlbmRJbXBsOjpzcWxpdGVEYXRhYmFzZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2UtPmRiKCk7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0
b3JlLT5kYigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oCmluZGV4IGI5OGZiMDIxNDcwNTkyYjlkMDU4
ZGY0YzZmNGIyMzBiNzZiNWI3YjkuLjk4ZjM2MjNlZmQzNDdhOGNjNjQ1OTNmMzk5YjljNDZhZmZk
ZjkzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5o
CkBAIC0zMiwyMSArMzIsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJC
YWNraW5nU3RvcmU7CiBjbGFzcyBJREJLZXk7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOwotY2xhc3MgSURCU1FMaXRlRGF0YWJhc2U7CiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGwg
OiBwdWJsaWMgSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCU1FMaXRlRGF0YWJhc2Uq
IGRhdGFiYXNlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
c3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUq
IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChkYXRhYmFz
ZSwgaWQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGlkLCBuYW1l
LCBzdG9yZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBjcmVhdGUoSURCU1FMaXRlRGF0YWJhc2UqIGRhdGFi
YXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoLCBib29sIHVuaXF1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SURCSW5kZXhCYWNrZW5kSW1wbChkYXRhYmFzZSwgbmFtZSwgc3RvcmVOYW1lLCBrZXlQYXRoLCB1
bmlxdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBs
KGJhY2tpbmdTdG9yZSwgbmFtZSwgc3RvcmVOYW1lLCBrZXlQYXRoLCB1bmlxdWUpKTsKICAgICB9
CiAgICAgdmlydHVhbCB+SURCSW5kZXhCYWNrZW5kSW1wbCgpOwogCkBAIC03Miw4ICs3Miw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgSURCSW5kZXhCYWNrZW5kSW1wbChJREJT
UUxpdGVEYXRhYmFzZSosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpOwotICAg
IElEQkluZGV4QmFja2VuZEltcGwoSURCU1FMaXRlRGF0YWJhc2UqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlKTsKKyAgICBJREJJbmRleEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIGludDY0
X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpOworICAgIElEQkluZGV4QmFja2VuZEltcGwo
SURCQmFja2luZ1N0b3JlKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3Jl
TmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSk7CiAKICAgICBTUUxpdGVE
YXRhYmFzZSYgc3FsaXRlRGF0YWJhc2UoKSBjb25zdDsKIApAQCAtODIsNyArODIsNyBAQCBwcml2
YXRlOgogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gMDsKIAotICAgIFJl
ZlB0cjxJREJTUUxpdGVEYXRhYmFzZT4gbV9kYXRhYmFzZTsKKyAgICBSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKIAogICAgIGludDY0X3QgbV9pZDsKICAgICBTdHJpbmcg
bV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHAKaW5kZXggMzkyYmU2MTc3NDU4NTVmOTYxZjI4ODI0ZDQyMGI2Y2NjMGE2
ZGY4OS4uYTIxNDZhNTIxZDJmYzYzNmIxNmVlNjIwMjNmZTExMGU2ZjA0MTNlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNpbmNs
dWRlICJET01TdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCiAjaW5j
bHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgog
I2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgiCkBAIC00MCw3ICs0MSw2IEBACiAjaW5j
bHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktleVBhdGhCYWNrZW5kSW1wbC5oIgog
I2luY2x1ZGUgIklEQktleVJhbmdlLmgiCi0jaW5jbHVkZSAiSURCU1FMaXRlRGF0YWJhc2UuaCIK
ICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKQEAg
LTUzLDggKzUzLDggQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6fklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwoKQogewogfQogCi1JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwgaW50NjRfdCBp
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCkKLSAgICA6IG1fZGF0YWJhc2UoZGF0YWJhc2UpCitJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2lu
Z1N0b3JlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0
b3JlKQogICAgICwgbV9pZChpZCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9rZXlQYXRo
KGtleVBhdGgpCkBAIC02NCw4ICs2NCw4IEBAIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCU1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlCiAgICAg
bG9hZEluZGV4ZXMoKTsKIH0KIAotSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbChJREJTUUxpdGVEYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCi0gICAg
OiBtX2RhdGFiYXNlKGRhdGFiYXNlKQorSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkK
KyAgICA6IG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAsIG1faWQoSW52YWxpZElk
KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKQEAgLTQ0OCw3
ICs0NDgsNyBAQCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoY29ucwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJbmRleEJh
Y2tlbmRJbXBsOjpjcmVhdGUobV9kYXRhYmFzZS5nZXQoKSwgbmFtZSwgbV9uYW1lLCBrZXlQYXRo
LCB1bmlxdWUpOworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQklu
ZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2JhY2tpbmdTdG9yZS5nZXQoKSwgbmFtZSwgbV9uYW1l
LCBrZXlQYXRoLCB1bmlxdWUpOwogICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwog
CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhp
czsKQEAgLTU3NSw3ICs1NzUsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzcwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGN1
cnNvciA9IElEQkN1cnNvckJhY2tlbmRJbXBsOjpjcmVhdGUob2JqZWN0U3RvcmUtPm1fZGF0YWJh
c2UuZ2V0KCksIHJhbmdlLCBkaXJlY3Rpb24sIHF1ZXJ5LnJlbGVhc2UoKSwgdHJ1ZSwgdHJhbnNh
Y3Rpb24uZ2V0KCksIG9iamVjdFN0b3JlLmdldCgpKTsKKyAgICBSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZT4gY3Vyc29yID0gSURCQ3Vyc29yQmFja2VuZEltcGw6OmNyZWF0ZShvYmpl
Y3RTdG9yZS0+bV9iYWNraW5nU3RvcmUuZ2V0KCksIHJhbmdlLCBkaXJlY3Rpb24sIHF1ZXJ5LnJl
bGVhc2UoKSwgdHJ1ZSwgdHJhbnNhY3Rpb24uZ2V0KCksIG9iamVjdFN0b3JlLmdldCgpKTsKICAg
ICBjYWxsYmFja3MtPm9uU3VjY2VzcyhjdXJzb3IucmVsZWFzZSgpKTsKIH0KIApAQCAtNTkzLDEz
ICs1OTMsMTMgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpsb2FkSW5kZXhlcygp
CiAgICAgICAgIFN0cmluZyBrZXlQYXRoID0gaW5kZXhRdWVyeS5nZXRDb2x1bW5UZXh0KDIpOwog
ICAgICAgICBib29sIHVuaXF1ZSA9ICEhaW5kZXhRdWVyeS5nZXRDb2x1bW5JbnQoMyk7CiAKLSAg
ICAgICAgbV9pbmRleGVzLnNldChuYW1lLCBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9k
YXRhYmFzZS5nZXQoKSwgaWQsIG5hbWUsIG1fbmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7CisgICAg
ICAgIG1faW5kZXhlcy5zZXQobmFtZSwgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fYmFj
a2luZ1N0b3JlLmdldCgpLCBpZCwgbmFtZSwgbV9uYW1lLCBrZXlQYXRoLCB1bmlxdWUpKTsKICAg
ICB9CiB9CiAKIFNRTGl0ZURhdGFiYXNlJiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpzcWxp
dGVEYXRhYmFzZSgpIGNvbnN0IAogewotICAgIHJldHVybiBtX2RhdGFiYXNlLT5kYigpOworICAg
IHJldHVybiBtX2JhY2tpbmdTdG9yZS0+ZGIoKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpyZW1vdmVJbmRleEZyb21NYXAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IGI1ZWQ4YjZkMmM2MGMwNTkw
M2JlNWE1MTAwY2Y2ZWMzZGY2YjliZDUuLmRjMGE5YTc2ODRmN2E0NGE4Zjg3Y2FhZDRmMjcwZGM4
YWQ1MjU0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oCkBAIC0zNCwyMiArMzQsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBJREJCYWNraW5nU3RvcmU7CiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OwogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbDsKLWNsYXNzIElEQlNRTGl0ZURhdGFiYXNlOwog
Y2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgU1FMaXRlRGF0YWJh
c2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsIDogcHVibGljIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4g
Y3JlYXRlKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwgaW50NjRfdCBpZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURC
QmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoZGF0YWJh
c2UsIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIGlkLCBu
YW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJTUUxpdGVEYXRhYmFzZSog
ZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
KGRhdGFiYXNlLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChiYWNraW5nU3RvcmUsIG5h
bWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbCgpOwogCkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5z
aWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKLSAg
ICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiwgaW50NjRfdCBp
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCk7Ci0gICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJTUUxpdGVEYXRhYmFz
ZSosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQpOworICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgs
IGJvb2wgYXV0b0luY3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJC
YWNraW5nU3RvcmUqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50KTsKIAogICAgIHZvaWQgbG9hZEluZGV4ZXMoKTsKICAgICBTUUxp
dGVEYXRhYmFzZSYgc3FsaXRlRGF0YWJhc2UoKSBjb25zdDsKQEAgLTk5LDcgKzk5LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCByZW1vdmVJbmRleEZyb21NYXAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGFkZEluZGV4VG9NYXAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbD4sIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4pOwogCi0gICAgUmVmUHRyPElE
QlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+
IG1fYmFja2luZ1N0b3JlOwogCiAgICAgaW50NjRfdCBtX2lkOwogICAgIFN0cmluZyBtX25hbWU7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83146</attachid>
            <date>2011-02-21 04:33:36 -0800</date>
            <delta_ts>2011-02-22 10:39:46 -0800</delta_ts>
            <desc>manual patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>41801</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NTJiNDczLi45OWM2YjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTEtMDItMjEgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IFJl
bmFtZSBJREJTUUxpdGVEYXRhYmFzZSB0byBJREJCYWNraW5nU3RvcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0ODY0CisKKyAgICAgICAgTm8gbmV3
IGZ1bmN0aW9uYWxpdHksIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJhY2tp
bmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OklEQkJhY2tp
bmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6On5JREJCYWNraW5n
U3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJC
YWNraW5nU3RvcmU6OmRiKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JC
YWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3Vy
cmVudFJvd0V4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6
ZGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpjcmVhdGUpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNxbGl0ZURhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2Jq
ZWN0U3RvcmVzKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZSk6CisgICAg
ICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJREJCYWNraW5nU3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlblNRTGl0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZh
Y3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFj
a2VuZEltcGwuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6c3FsaXRlRGF0
YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bG9h
ZEluZGV4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
c3FsaXRlRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3Jl
YXRlKToKKwogMjAxMS0wMi0yMSAgQW5kb25pIE1vcmFsZXMgQWxhc3RydWV5ICA8YW1vcmFsZXNA
Zmx1bW90aW9uLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDI1ZTdmODUuLjk1NjE4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCkBAIC0zMDkzLDYgKzMwOTMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQW55LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJBbnkuaCBcCisJU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkNhbGxiYWNrcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJ
bXBsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5o
IFwKQEAgLTMxMzMsOCArMzEzNSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlJlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBc
Ci0JU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJTUUxpdGVEYXRhYmFzZS5jcHAgXAotCVNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCU1FMaXRlRGF0YWJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBcCiAJU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzMzQ3M2I0
Li5mZWYyNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00MDU2LDYgKzQwNTYsOCBAQAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvRGF0YWJhc2VUcmFja2VyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCQW55LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJBbnkuaCcsCisgICAg
ICAgICAgICAnc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuY3BwJywKKyAgICAgICAgICAgICdzdG9y
YWdlL0lEQkJhY2tpbmdTdG9yZS5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkNhbGxiYWNr
cy5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQkN1cnNvci5jcHAnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvSURCQ3Vyc29yLmgnLApAQCAtNDA5OSw4ICs0MTAxLDYgQEAKICAgICAgICAgICAg
ICdzdG9yYWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9JREJSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0
LmgnLAotICAgICAgICAgICAgJ3N0b3JhZ2UvSURCU1FMaXRlRGF0YWJhc2UuY3BwJywKLSAgICAg
ICAgICAgICdzdG9yYWdlL0lEQlNRTGl0ZURhdGFiYXNlLmgnLAogICAgICAgICAgICAgJ3N0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0
aW9uLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4OGZlYjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUu
aCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSURCQmFja2luZ1N0b3Jl
OjpJREJCYWNraW5nU3RvcmUoU3RyaW5nIGlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1w
bCogZmFjdG9yeSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9mYWN0
b3J5KGZhY3RvcnkpCit7Cit9CisKK0lEQkJhY2tpbmdTdG9yZTo6fklEQkJhY2tpbmdTdG9yZSgp
Cit7CisgICAgbV9mYWN0b3J5LT5yZW1vdmVJREJCYWNraW5nU3RvcmUobV9pZGVudGlmaWVyKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdT
dG9yZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWJiMTAyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaApAQCAtMCwwICsxLDU5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJREJCYWNraW5nU3RvcmVfaAorI2RlZmluZSBJREJCYWNraW5nU3Rv
cmVfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJTUUxpdGVE
YXRhYmFzZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbXBsOworCitjbGFzcyBJREJCYWNraW5nU3Rv
cmUgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJCYWNraW5nU3RvcmU+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IGNyZWF0ZShTdHJpbmcgaWRlbnRpZmll
ciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5KSB7IHJldHVybiBhZG9wdFJlZihuZXcg
SURCQmFja2luZ1N0b3JlKGlkZW50aWZpZXIsIGZhY3RvcnkpKTsgfQorICAgIH5JREJCYWNraW5n
U3RvcmUoKTsKKworICAgIFNRTGl0ZURhdGFiYXNlJiBkYigpIHsgcmV0dXJuIG1fZGI7IH0KKwor
cHJpdmF0ZToKKyAgICBJREJCYWNraW5nU3RvcmUoU3RyaW5nIGlkZW50aWZpZXIsIElEQkZhY3Rv
cnlCYWNrZW5kSW1wbCogZmFjdG9yeSk7CisKKyAgICBTUUxpdGVEYXRhYmFzZSBtX2RiOworICAg
IFN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW1wbD4g
bV9mYWN0b3J5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKworI2Vu
ZGlmIC8vIElEQkJhY2tpbmdTdG9yZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4IDA4OWJiNjcuLjQ1NzZmNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJDcm9zc1Ro
cmVhZFRhc2suaCIKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJD
YWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VFcnJvci5oIgpAQCAtMzcsNyArMzgsNiBAQAogI2luY2x1ZGUgIklEQktl
eVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIgogI2luY2x1
ZGUgIklEQlJlcXVlc3QuaCIKLSNpbmNsdWRlICJJREJTUUxpdGVEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNRTGl0ZURh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCkBAIC00NSw4ICs0NSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNv
ckJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4ga2V5UmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc093
blB0cjxTUUxpdGVTdGF0ZW1lbnQ+IHF1ZXJ5LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVl
Q3Vyc29yLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UqIG9iamVjdFN0b3JlKQotICAgIDogbV9kYXRhYmFz
ZShkYXRhYmFzZSkKK0lEQkN1cnNvckJhY2tlbmRJbXBsOjpJREJDdXJzb3JCYWNrZW5kSW1wbChJ
REJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIElEQkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiwgUGFzc093blB0cjxTUUxpdGVT
dGF0ZW1lbnQ+IHF1ZXJ5LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yLCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2UqIG9iamVjdFN0b3JlKQorICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2lu
Z1N0b3JlKQogICAgICwgbV9rZXlSYW5nZShrZXlSYW5nZSkKICAgICAsIG1fZGlyZWN0aW9uKGRp
cmVjdGlvbikKICAgICAsIG1fcXVlcnkocXVlcnkpCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4g
cHJwS2V5LCBQYXNzUmVmUHQKIGJvb2wgSURCQ3Vyc29yQmFja2VuZEltcGw6OmN1cnJlbnRSb3dF
eGlzdHMoKQogewogICAgIFN0cmluZyBzcWwgPSBtX2N1cnJlbnRJREJLZXlWYWx1ZSA/ICJTRUxF
Q1QgaWQgRlJPTSBJbmRleERhdGEgV0hFUkUgaWQgPSA/IiA6ICJTRUxFQ1QgaWQgRlJPTSBPYmpl
Y3RTdG9yZURhdGEgV0hFUkUgaWQgPSA/IjsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgc3RhdGVtZW50
KG1fZGF0YWJhc2UtPmRiKCksIHNxbCk7CisgICAgU1FMaXRlU3RhdGVtZW50IHN0YXRlbWVudCht
X2JhY2tpbmdTdG9yZS0+ZGIoKSwgc3FsKTsKIAogICAgIGJvb2wgb2sgPSBzdGF0ZW1lbnQucHJl
cGFyZSgpID09IFNRTFJlc3VsdE9rOwogICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpsb2FkQ3VycmVudFJvdygp
CiAKIFNRTGl0ZURhdGFiYXNlJiBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGF0YWJhc2UoKSBjb25z
dAogewotICAgIHJldHVybiBtX2RhdGFiYXNlLT5kYigpOworICAgIHJldHVybiBtX2JhY2tpbmdT
dG9yZS0+ZGIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4IGY0NTkxMzkuLmRiMTJmMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKQEAg
LTQxLDcgKzQxLDcgQEAgY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDsKIGNsYXNzIElEQklu
ZGV4QmFja2VuZEltcGw7CiBjbGFzcyBJREJLZXlSYW5nZTsKIGNsYXNzIElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZTsKLWNsYXNzIElEQlNRTGl0ZURhdGFiYXNlOworY2xhc3MgSURCQmFj
a2luZ1N0b3JlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogY2xhc3Mg
U1FMaXRlRGF0YWJhc2U7CiBjbGFzcyBTUUxpdGVTdGF0ZW1lbnQ7CkBAIC00OSw5ICs0OSw5IEBA
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSURCQ3Vyc29yQmFja2VuZElt
cGwgOiBwdWJsaWMgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGNyZWF0ZShJREJTUUxpdGVEYXRh
YmFzZSogZGF0YWJhc2UsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJREJDdXJz
b3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24sIFBhc3NPd25QdHI8U1FMaXRlU3RhdGVtZW50PiBxdWVy
eSwgYm9vbCBpc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUN1cnNvciwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
KiBvYmplY3RTdG9yZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1w
bD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzT3du
UHRyPFNRTGl0ZVN0YXRlbWVudD4gcXVlcnksIGJvb2wgaXNTZXJpYWxpemVkU2NyaXB0VmFsdWVD
dXJzb3IsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZSogb2JqZWN0U3RvcmUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvckJhY2tlbmRJbXBsKGRhdGFiYXNlLCBrZXlSYW5n
ZSwgZGlyZWN0aW9uLCBxdWVyeSwgaXNTZXJpYWxpemVkU2NyaXB0VmFsdWVDdXJzb3IsIHRyYW5z
YWN0aW9uLCBvYmplY3RTdG9yZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1
cnNvckJhY2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgcXVlcnks
IGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yLCB0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmUp
KTsKICAgICB9CiAgICAgdmlydHVhbCB+SURCQ3Vyc29yQmFja2VuZEltcGwoKTsKIApAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgotICAgIElE
QkN1cnNvckJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4sIElEQkN1cnNvcjo6RGlyZWN0aW9uLCBQYXNzT3duUHRyPFNRTGl0ZVN0YXRlbWVudD4g
cXVlcnksIGJvb2wgaXNTZXJpYWxpemVkU2NyaXB0VmFsdWVDdXJzb3IsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSopOworICAg
IElEQkN1cnNvckJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSosIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+LCBJREJDdXJzb3I6OkRpcmVjdGlvbiwgUGFzc093blB0cjxTUUxpdGVTdGF0ZW1lbnQ+
IHF1ZXJ5LCBib29sIGlzU2VyaWFsaXplZFNjcmlwdFZhbHVlQ3Vyc29yLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UqKTsKIAog
ICAgIGJvb2wgY3VycmVudFJvd0V4aXN0cygpOwogICAgIHZvaWQgbG9hZEN1cnJlbnRSb3coKTsK
QEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IElu
dmFsaWRJZCA9IC0xOwogCi0gICAgUmVmUHRyPElEQlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNl
OworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOwogCiAgICAgUmVm
UHRyPElEQktleVJhbmdlPiBtX2tleVJhbmdlOwogICAgIElEQkN1cnNvcjo6RGlyZWN0aW9uIG1f
ZGlyZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggZTI3NDViNS4uOGE4OTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0zMCwxMCArMzAsMTAg
QEAKIAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xp
c3QuaCIKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW1wbC5oIgogI2luY2x1
ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCIKLSNpbmNsdWRlICJJREJTUUxpdGVEYXRh
YmFzZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50
LmgiCkBAIC0xMDUsOCArMTA1LDggQEAgc3RhdGljIGJvb2wgc2V0TWV0YURhdGEoU1FMaXRlRGF0
YWJhc2UmIHNxbGl0ZURhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnMKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlNRTGl0ZURhdGFiYXNlKiBzcWxpdGVEYXRhYmFz
ZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRpbmF0b3IsIElEQkZhY3RvcnlCYWNr
ZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKQotICAgIDog
bV9zcWxpdGVEYXRhYmFzZShzcWxpdGVEYXRhYmFzZSkKK0lEQkRhdGFiYXNlQmFja2VuZEltcGw6
OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3Rv
cmUqIGJhY2tpbmdTdG9yZSwgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRpbmF0b3Is
IElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVu
dGlmaWVyKQorICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICwgbV9pZChJ
bnZhbGlkSWQpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fdmVyc2lvbigiIikKQEAgLTEx
Nyw5ICsxMTcsOSBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCU1FMaXRlRGF0YQogewogICAgIEFTU0VSVCghbV9u
YW1lLmlzTnVsbCgpKTsKIAotICAgIGJvb2wgc3VjY2VzcyA9IGV4dHJhY3RNZXRhRGF0YShtX3Nx
bGl0ZURhdGFiYXNlLT5kYigpLCBtX25hbWUsIG1fdmVyc2lvbiwgbV9pZCk7CisgICAgYm9vbCBz
dWNjZXNzID0gZXh0cmFjdE1ldGFEYXRhKG1fYmFja2luZ1N0b3JlLT5kYigpLCBtX25hbWUsIG1f
dmVyc2lvbiwgbV9pZCk7CiAgICAgQVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzID09ICht
X2lkICE9IEludmFsaWRJZCkpOwotICAgIGlmICghc2V0TWV0YURhdGEobV9zcWxpdGVEYXRhYmFz
ZS0+ZGIoKSwgbV9uYW1lLCBtX3ZlcnNpb24sIG1faWQpKQorICAgIGlmICghc2V0TWV0YURhdGEo
bV9iYWNraW5nU3RvcmUtPmRiKCksIG1fbmFtZSwgbV92ZXJzaW9uLCBtX2lkKSkKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEZJWE1FOiBOZWVkIGJldHRlciBlcnJvciBoYW5kbGlu
Zy4KICAgICBsb2FkT2JqZWN0U3RvcmVzKCk7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6fklEQkRhdGFiYXNlQmFja2VuZEltcGwoKQogCiBTUUxpdGVEYXRh
YmFzZSYgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c3FsaXRlRGF0YWJhc2UoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3NxbGl0ZURhdGFiYXNlLT5kYigpOworICAgIHJldHVybiBtX2JhY2tpbmdT
dG9yZS0+ZGIoKTsKIH0KIAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKQEAgLTE1MSw3ICsxNTEsNyBAQCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNyZWF0ZU9iamVjdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUobV9zcWxpdGVEYXRhYmFzZS5nZXQoKSwgbmFtZSwga2V5
UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fYmFj
a2luZ1N0b3JlLmdldCgpLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKICAgICBBU1NF
UlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBuYW1lKTsKIAogICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWYKIHsKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSBkYXRhYmFzZS0+
aWQoKTsKICAgICBkYXRhYmFzZS0+bV92ZXJzaW9uID0gdmVyc2lvbjsKLSAgICBpZiAoIXNldE1l
dGFEYXRhKGRhdGFiYXNlLT5tX3NxbGl0ZURhdGFiYXNlLT5kYigpLCBkYXRhYmFzZS0+bV9uYW1l
LCBkYXRhYmFzZS0+bV92ZXJzaW9uLCBkYXRhYmFzZUlkKSkgeworICAgIGlmICghc2V0TWV0YURh
dGEoZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT5kYigpLCBkYXRhYmFzZS0+bV9uYW1lLCBkYXRh
YmFzZS0+bV92ZXJzaW9uLCBkYXRhYmFzZUlkKSkgewogICAgICAgICAvLyBGSVhNRTogVGhlIElu
ZGV4ZWQgRGF0YWJhc2Ugc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBoYXZlIGFuIGVycm9yIGNvZGUg
ZGVkaWNhdGVkIHRvIEkvTyBlcnJvcnMuCiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAi
RXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpKTsKICAgICAgICAgdHJhbnNh
Y3Rpb24tPmFib3J0KCk7CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKCkKICAgICAgICAgU3RyaW5nIGtleVBhdGggPSBvYmpl
Y3RTdG9yZXNRdWVyeS5nZXRDb2x1bW5UZXh0KDIpOwogICAgICAgICBib29sIGF1dG9JbmNyZW1l
bnQgPSAhIW9iamVjdFN0b3Jlc1F1ZXJ5LmdldENvbHVtbkludCgzKTsKIAotICAgICAgICBtX29i
amVjdFN0b3Jlcy5zZXQobmFtZSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKG1f
c3FsaXRlRGF0YWJhc2UuZ2V0KCksIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7
CisgICAgICAgIG1fb2JqZWN0U3RvcmVzLnNldChuYW1lLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpjcmVhdGUobV9iYWNraW5nU3RvcmUuZ2V0KCksIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jcmVtZW50KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDIwMmIwNzIuLjQ1YWZiOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC0zNiwxNSAr
MzYsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJCYWNraW5nU3RvcmU7
CiBjbGFzcyBJREJGYWN0b3J5QmFja2VuZEltcGw7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOwotY2xhc3MgSURCU1FMaXRlRGF0YWJhc2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yOwogY2xhc3MgU1FMaXRlRGF0YWJhc2U7CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFj
a2VuZEltcGwgOiBwdWJsaWMgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJTUUxpdGVEYXRhYmFzZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IqIGNvb3JkaW5hdG9yLCBJREJGYWN0b3J5QmFja2VuZEltcGwqIGZhY3Rv
cnksIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJC
YWNraW5nU3RvcmUqIGRhdGFiYXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGlu
YXRvciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1
ZUlkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFi
YXNlQmFja2VuZEltcGwobmFtZSwgZGF0YWJhc2UsIGNvb3JkaW5hdG9yLCBmYWN0b3J5LCB1bmlx
dWVJZGVudGlmaWVyKSk7CiAgICAgfQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvciogdHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKTsgfQogCiBwcml2YXRlOgotICAg
IElEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJTUUxpdGVEYXRh
YmFzZSogZGF0YWJhc2UsIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqLCBJREJGYWN0b3J5QmFj
a2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIElEQkRhdGFi
YXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGRhdGFi
YXNlLCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiwg
Y29uc3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgbG9hZE9iamVjdFN0
b3JlcygpOwogCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgYWRk
T2JqZWN0U3RvcmVUb01hcChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
Pik7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRWZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+LCBjb25zdCBTdHJpbmcmIHZlcnNp
b24pOwogCi0gICAgUmVmUHRyPElEQlNRTGl0ZURhdGFiYXNlPiBtX3NxbGl0ZURhdGFiYXNlOwor
ICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOwogICAgIGludDY0IG1f
aWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBTdHJpbmcgbV92ZXJzaW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IDM3MmQ1
NGMuLjI4ZmVjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlC
YWNrZW5kSW1wbC5jcHAKQEAgLTMxLDkgKzMxLDkgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xp
c3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3Jl
LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAiSURCU1FMaXRlRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKQEAgLTYwLDEzICs2MCwxMyBA
QCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6cmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKGNv
bnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZgogICAgIG1fZGF0YWJhc2VCYWNrZW5kTWFwLnJlbW92
ZSh1bmlxdWVJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OnJl
bW92ZVNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcikKK3ZvaWQg
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpyZW1vdmVJREJCYWNraW5nU3RvcmUoY29uc3QgU3RyaW5n
JiB1bmlxdWVJZGVudGlmaWVyKQogewotICAgIEFTU0VSVChtX3NxbGl0ZURhdGFiYXNlTWFwLmNv
bnRhaW5zKHVuaXF1ZUlkZW50aWZpZXIpKTsKLSAgICBtX3NxbGl0ZURhdGFiYXNlTWFwLnJlbW92
ZSh1bmlxdWVJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQobV9iYWNraW5nU3RvcmVNYXAuY29udGFp
bnModW5pcXVlSWRlbnRpZmllcikpOworICAgIG1fYmFja2luZ1N0b3JlTWFwLnJlbW92ZSh1bmlx
dWVJZGVudGlmaWVyKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SURCU1FMaXRlRGF0YWJhc2U+
IG9wZW5TUUxpdGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0
IFN0cmluZyYgcGF0aEJhc2UsIGludDY0X3QgbWF4aW11bVNpemUsIGNvbnN0IFN0cmluZyYgZmls
ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSkKK3N0YXRpYyBQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlblNRTGl0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwYXRoQmFzZSwgaW50NjRfdCBtYXhpbXVt
U2l6ZSwgY29uc3QgU3RyaW5nJiBmaWxlSWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBs
KiBmYWN0b3J5KQogewogICAgIFN0cmluZyBwYXRoID0gIjptZW1vcnk6IjsKICAgICBpZiAoIXBh
dGhCYXNlLmlzRW1wdHkoKSkgewpAQCAtNzksMTggKzc5LDE4IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PElEQlNRTGl0ZURhdGFiYXNlPiBvcGVuU1FMaXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5CiAgICAgICAgIHBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aEJhc2Us
IHNlY3VyaXR5T3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSArICIuaW5kZXhlZGRiIik7CiAg
ICAgfQogCi0gICAgUmVmUHRyPElEQlNRTGl0ZURhdGFiYXNlPiBzcWxpdGVEYXRhYmFzZSA9IElE
QlNRTGl0ZURhdGFiYXNlOjpjcmVhdGUoZmlsZUlkZW50aWZpZXIsIGZhY3RvcnkpOwotICAgIGlm
ICghc3FsaXRlRGF0YWJhc2UtPmRiKCkub3BlbihwYXRoKSkgeworICAgIFJlZlB0cjxJREJCYWNr
aW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IElEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKGZpbGVJZGVu
dGlmaWVyLCBmYWN0b3J5KTsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZS0+ZGIoKS5vcGVuKHBhdGgp
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhbnkgb3RoZXIgdGhpbmcgd2UgY291bGQg
cG9zc2libHkgZG8gdG8gcmVjb3ZlciBhdCB0aGlzIHBvaW50PyBJZiBzbywgZG8gaXQgcmF0aGVy
IHRoYW4ganVzdCBlcnJvcmluZyBvdXQuCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9w
ZW4gZGF0YWJhc2UgZmlsZSAlcyBmb3IgSW5kZXhlZERCIiwgcGF0aC51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEVycm9yIGNoZWNraW5n
PwotICAgIHNxbGl0ZURhdGFiYXNlLT5kYigpLnNldE1heGltdW1TaXplKG1heGltdW1TaXplKTsK
LSAgICBzcWxpdGVEYXRhYmFzZS0+ZGIoKS50dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKTsK
KyAgICBiYWNraW5nU3RvcmUtPmRiKCkuc2V0TWF4aW11bVNpemUobWF4aW11bVNpemUpOworICAg
IGJhY2tpbmdTdG9yZS0+ZGIoKS50dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1dW0oKTsKIAotICAg
IHJldHVybiBzcWxpdGVEYXRhYmFzZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGJhY2tpbmdTdG9y
ZS5yZWxlYXNlKCk7CiB9CiAKIHN0YXRpYyBib29sIHJ1bkNvbW1hbmRzKFNRTGl0ZURhdGFiYXNl
JiBzcWxpdGVEYXRhYmFzZSwgY29uc3QgY2hhcioqIGNvbW1hbmRzLCBzaXplX3QgbnVtYmVyT2ZD
b21tYW5kcykKQEAgLTIyMCwyMiArMjIwLDIyIEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBs
OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhCiAK
ICAgICAvLyBGSVhNRTogRXZlcnl0aGluZyBmcm9tIG5vdyBvbiBzaG91bGQgYmUgZG9uZSBvbiBh
bm90aGVyIHRocmVhZC4KIAotICAgIFJlZlB0cjxJREJTUUxpdGVEYXRhYmFzZT4gc3FsaXRlRGF0
YWJhc2U7Ci0gICAgU1FMaXRlRGF0YWJhc2VNYXA6Oml0ZXJhdG9yIGl0MiA9IG1fc3FsaXRlRGF0
YWJhc2VNYXAuZmluZChmaWxlSWRlbnRpZmllcik7Ci0gICAgaWYgKGl0MiAhPSBtX3NxbGl0ZURh
dGFiYXNlTWFwLmVuZCgpKQotICAgICAgICBzcWxpdGVEYXRhYmFzZSA9IGl0Mi0+c2Vjb25kOwor
ICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZTsKKyAgICBJREJCYWNraW5n
U3RvcmVNYXA6Oml0ZXJhdG9yIGl0MiA9IG1fYmFja2luZ1N0b3JlTWFwLmZpbmQoZmlsZUlkZW50
aWZpZXIpOworICAgIGlmIChpdDIgIT0gbV9iYWNraW5nU3RvcmVNYXAuZW5kKCkpCisgICAgICAg
IGJhY2tpbmdTdG9yZSA9IGl0Mi0+c2Vjb25kOwogICAgIGVsc2UgewotICAgICAgICBzcWxpdGVE
YXRhYmFzZSA9IG9wZW5TUUxpdGVEYXRhYmFzZShzZWN1cml0eU9yaWdpbi5nZXQoKSwgZGF0YURp
ciwgbWF4aW11bVNpemUsIGZpbGVJZGVudGlmaWVyLCB0aGlzKTsKKyAgICAgICAgYmFja2luZ1N0
b3JlID0gb3BlblNRTGl0ZURhdGFiYXNlKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhRGlyLCBt
YXhpbXVtU2l6ZSwgZmlsZUlkZW50aWZpZXIsIHRoaXMpOwogCi0gICAgICAgIGlmICghc3FsaXRl
RGF0YWJhc2UgfHwgIWNyZWF0ZVRhYmxlcyhzcWxpdGVEYXRhYmFzZS0+ZGIoKSkgfHwgIW1pZ3Jh
dGVEYXRhYmFzZShzcWxpdGVEYXRhYmFzZS0+ZGIoKSkpIHsKKyAgICAgICAgaWYgKCFiYWNraW5n
U3RvcmUgfHwgIWNyZWF0ZVRhYmxlcyhiYWNraW5nU3RvcmUtPmRiKCkpIHx8ICFtaWdyYXRlRGF0
YWJhc2UoYmFja2luZ1N0b3JlLT5kYigpKSkgewogICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9X
Tl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7Ci0gICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNl
TWFwLnNldChmaWxlSWRlbnRpZmllciwgMCk7CisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZU1h
cC5zZXQoZmlsZUlkZW50aWZpZXIsIDApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIG1fc3FsaXRlRGF0YWJhc2VNYXAuc2V0KGZpbGVJZGVudGlmaWVyLCBzcWxpdGVE
YXRhYmFzZS5nZXQoKSk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlTWFwLnNldChmaWxlSWRlbnRp
ZmllciwgYmFja2luZ1N0b3JlLmdldCgpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW1wbD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Y3JlYXRlKG5hbWUsIHNxbGl0ZURhdGFiYXNlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
cmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Z2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwogICAgIGRhdGFiYXNlQmFja2VuZC0+b3Bl
bigpOwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAg
ICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFj
a2VuZC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuaAppbmRleCBkY2FmODQ4Li4zN2U2YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKQEAgLTM4LDggKzM4LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBET01TdHJpbmdMaXN0OwogCitjbGFzcyBJREJCYWNraW5nU3Rv
cmU7CiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwotY2xhc3MgSURCU1FMaXRlRGF0YWJh
c2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCiBjbGFzcyBJREJGYWN0b3J5
QmFja2VuZEltcGwgOiBwdWJsaWMgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UgewpAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBOb3RpZmljYXRpb25zIGZyb20gd2VhayBwb2lu
dGVycy4KICAgICB2b2lkIHJlbW92ZUlEQkRhdGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIHVu
aXF1ZUlkZW50aWZpZXIpOwotICAgIHZvaWQgcmVtb3ZlU1FMaXRlRGF0YWJhc2UoY29uc3QgU3Ry
aW5nJiB1bmlxdWVJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZUlEQkJhY2tpbmdTdG9yZShj
b25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBt
YXhpbXVtU2l6ZSk7CiAKQEAgLTYyLDggKzYyLDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKj4gSURCRGF0YWJhc2VCYWNrZW5k
TWFwOwogICAgIElEQkRhdGFiYXNlQmFja2VuZE1hcCBtX2RhdGFiYXNlQmFja2VuZE1hcDsKIAot
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQlNRTGl0ZURhdGFiYXNlKj4gU1FMaXRlRGF0
YWJhc2VNYXA7Ci0gICAgU1FMaXRlRGF0YWJhc2VNYXAgbV9zcWxpdGVEYXRhYmFzZU1hcDsKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJCYWNraW5nU3RvcmUqPiBJREJCYWNraW5nU3Rv
cmVNYXA7CisgICAgSURCQmFja2luZ1N0b3JlTWFwIG1fYmFja2luZ1N0b3JlTWFwOwogCiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJhbnNhY3Rpb25Db29yZGluYXRv
cjsKIApAQCAtNzYsNCArNzYsMyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNlbmRpZiAvLyBJREJG
YWN0b3J5QmFja2VuZEltcGxfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eEJhY2tlbmRJbXBsLmNwcAppbmRleCA2ZWJhMTg5Li5iZjNjYWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFz
ay5oIgorI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNr
cy5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oIgpAQCAtMzYsMTQgKzM3LDEzIEBACiAjaW5jbHVkZSAiSURCS2V5
LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmgiCi0jaW5jbHVkZSAiSURCU1FMaXRlRGF0YWJhc2UuaCIKICNpbmNsdWRlICJT
UUxpdGVEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUlEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwo
SURCU1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wg
dW5pcXVlKQotICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKK0lEQkluZGV4QmFja2VuZEltcGw6
OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGludDY0
X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNr
aW5nU3RvcmUpCiAgICAgLCBtX2lkKGlkKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3N0
b3JlTmFtZShzdG9yZU5hbWUpCkBAIC01Miw4ICs1Miw4IEBAIElEQkluZGV4QmFja2VuZEltcGw6
OklEQkluZGV4QmFja2VuZEltcGwoSURCU1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlLCBpbnQ2NF90
IGlkCiB7CiB9CiAKLUlEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURC
U1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQotICAgIDog
bV9kYXRhYmFzZShkYXRhYmFzZSkKK0lEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2Vu
ZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlx
dWUpCisgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgLCBtX2lkKEludmFs
aWRJZCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9zdG9yZU5hbWUoc3RvcmVOYW1lKQpA
QCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcklu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyCiAgICAgUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi0+
b2JqZWN0U3RvcmUoaW5kZXgtPm1fc3RvcmVOYW1lLCBlYyk7CiAgICAgQVNTRVJUKG9iamVjdFN0
b3JlICYmICFlYyk7CiAKLSAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Vy
c29yID0gSURCQ3Vyc29yQmFja2VuZEltcGw6OmNyZWF0ZShpbmRleC0+bV9kYXRhYmFzZS5nZXQo
KSwgcmFuZ2UsIGRpcmVjdGlvbiwgcXVlcnkucmVsZWFzZSgpLCBvYmplY3RDdXJzb3IsIHRyYW5z
YWN0aW9uLmdldCgpLCBvYmplY3RTdG9yZS5nZXQoKSk7CisgICAgUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+IGN1cnNvciA9IElEQkN1cnNvckJhY2tlbmRJbXBsOjpjcmVhdGUoaW5k
ZXgtPm1fYmFja2luZ1N0b3JlLmdldCgpLCByYW5nZSwgZGlyZWN0aW9uLCBxdWVyeS5yZWxlYXNl
KCksIG9iamVjdEN1cnNvciwgdHJhbnNhY3Rpb24uZ2V0KCksIG9iamVjdFN0b3JlLmdldCgpKTsK
ICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhjdXJzb3IucmVsZWFzZSgpKTsKIH0KIApAQCAtMjAy
LDcgKzIwMiw3IEBAIGJvb2wgSURCSW5kZXhCYWNrZW5kSW1wbDo6YWRkaW5nS2V5QWxsb3dlZChJ
REJLZXkqIGtleSkKIAogU1FMaXRlRGF0YWJhc2UmIElEQkluZGV4QmFja2VuZEltcGw6OnNxbGl0
ZURhdGFiYXNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhYmFzZS0+ZGIoKTsKKyAgICBy
ZXR1cm4gbV9iYWNraW5nU3RvcmUtPmRiKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggYjk4
ZmIwMi4uOThmMzYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRl
eEJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tl
bmRJbXBsLmgKQEAgLTMyLDIxICszMiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIElEQkJhY2tpbmdTdG9yZTsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw7Ci1jbGFzcyBJREJTUUxpdGVEYXRhYmFzZTsKIGNsYXNzIFNRTGl0ZURhdGFi
YXNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgSURCSW5kZXhCYWNr
ZW5kSW1wbCA6IHB1YmxpYyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJTUUxpdGVE
YXRhYmFzZSogZGF0YWJhc2UsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tp
bmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBs
KGRhdGFiYXNlLCBpZCwgbmFtZSwgc3RvcmVOYW1lLCBrZXlQYXRoLCB1bmlxdWUpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwg
aWQsIG5hbWUsIHN0b3JlTmFtZSwga2V5UGF0aCwgdW5pcXVlKSk7CiAgICAgfQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShJREJTUUxpdGVEYXRhYmFz
ZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0
b3JlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBsKGRhdGFiYXNlLCBuYW1lLCBzdG9yZU5hbWUsIGtl
eVBhdGgsIHVuaXF1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4QmFj
a2VuZEltcGwoYmFja2luZ1N0b3JlLCBuYW1lLCBzdG9yZU5hbWUsIGtleVBhdGgsIHVuaXF1ZSkp
OwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJJbmRleEJhY2tlbmRJbXBsKCk7CiAKQEAgLTcyLDgg
KzcyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0cjxJREJL
ZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKLSAgICBJREJJbmRleEJhY2tlbmRJ
bXBsKElEQlNRTGl0ZURhdGFiYXNlKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSk7Ci0gICAgSURCSW5kZXhCYWNrZW5kSW1wbChJREJTUUxpdGVEYXRhYmFzZSosIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCwgYm9vbCB1bmlxdWUpOworICAgIElEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3Jl
KiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSk7CisgICAgSURCSW5kZXhCYWNr
ZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlKTsKIAogICAg
IFNRTGl0ZURhdGFiYXNlJiBzcWxpdGVEYXRhYmFzZSgpIGNvbnN0OwogCkBAIC04Miw3ICs4Miw3
IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAwOwog
Ci0gICAgUmVmUHRyPElEQlNRTGl0ZURhdGFiYXNlPiBtX2RhdGFiYXNlOworICAgIFJlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IG1fYmFja2luZ1N0b3JlOwogCiAgICAgaW50NjRfdCBtX2lkOwogICAg
IFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCAzOTJiZTYxLi5hMjE0NmE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1
ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNs
dWRlICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEltcGwuaCIKQEAgLTQwLDcgKzQxLDYgQEAKICNpbmNs
dWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aEJhY2tlbmRJbXBsLmgiCiAj
aW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKLSNpbmNsdWRlICJJREJTUUxpdGVEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZS5oIgpAQCAt
NTMsOCArNTMsOCBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjp+SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbCgpCiB7CiB9CiAKLUlEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwoSURCU1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlLCBpbnQ2NF90IGlk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50KQotICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKK0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5n
U3RvcmUsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCisgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3Rv
cmUpCiAgICAgLCBtX2lkKGlkKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2tleVBhdGgo
a2V5UGF0aCkKQEAgLTY0LDggKzY0LDggQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJTUUxpdGVEYXRhYmFzZSogZGF0YWJhc2UKICAgICBs
b2FkSW5kZXhlcygpOwogfQogCi1JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKLSAgICA6
IG1fZGF0YWJhc2UoZGF0YWJhc2UpCitJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQor
ICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICwgbV9pZChJbnZhbGlkSWQp
CiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQpAQCAtNDQ4LDcg
KzQ0OCw3IEBAIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFj
a2VuZEltcGw6OmNyZWF0ZShtX2RhdGFiYXNlLmdldCgpLCBuYW1lLCBtX25hbWUsIGtleVBhdGgs
IHVuaXF1ZSk7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5k
ZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fYmFja2luZ1N0b3JlLmdldCgpLCBuYW1lLCBtX25hbWUs
IGtleVBhdGgsIHVuaXF1ZSk7CiAgICAgQVNTRVJUKGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7CiAK
ICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlz
OwpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3Bl
bkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Vy
c29yID0gSURCQ3Vyc29yQmFja2VuZEltcGw6OmNyZWF0ZShvYmplY3RTdG9yZS0+bV9kYXRhYmFz
ZS5nZXQoKSwgcmFuZ2UsIGRpcmVjdGlvbiwgcXVlcnkucmVsZWFzZSgpLCB0cnVlLCB0cmFuc2Fj
dGlvbi5nZXQoKSwgb2JqZWN0U3RvcmUuZ2V0KCkpOworICAgIFJlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiBjdXJzb3IgPSBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y3JlYXRlKG9iamVj
dFN0b3JlLT5tX2JhY2tpbmdTdG9yZS5nZXQoKSwgcmFuZ2UsIGRpcmVjdGlvbiwgcXVlcnkucmVs
ZWFzZSgpLCB0cnVlLCB0cmFuc2FjdGlvbi5nZXQoKSwgb2JqZWN0U3RvcmUuZ2V0KCkpOwogICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKGN1cnNvci5yZWxlYXNlKCkpOwogfQogCkBAIC01OTMsMTMg
KzU5MywxMyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmxvYWRJbmRleGVzKCkK
ICAgICAgICAgU3RyaW5nIGtleVBhdGggPSBpbmRleFF1ZXJ5LmdldENvbHVtblRleHQoMik7CiAg
ICAgICAgIGJvb2wgdW5pcXVlID0gISFpbmRleFF1ZXJ5LmdldENvbHVtbkludCgzKTsKIAotICAg
ICAgICBtX2luZGV4ZXMuc2V0KG5hbWUsIElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2Rh
dGFiYXNlLmdldCgpLCBpZCwgbmFtZSwgbV9uYW1lLCBrZXlQYXRoLCB1bmlxdWUpKTsKKyAgICAg
ICAgbV9pbmRleGVzLnNldChuYW1lLCBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9iYWNr
aW5nU3RvcmUuZ2V0KCksIGlkLCBuYW1lLCBtX25hbWUsIGtleVBhdGgsIHVuaXF1ZSkpOwogICAg
IH0KIH0KIAogU1FMaXRlRGF0YWJhc2UmIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNxbGl0
ZURhdGFiYXNlKCkgY29uc3QgCiB7Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2UtPmRiKCk7CisgICAg
cmV0dXJuIG1fYmFja2luZ1N0b3JlLT5kYigpOwogfQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnJlbW92ZUluZGV4RnJvbU1hcChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXggYjVlZDhiNi4uZGMwYTlhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmgKQEAgLTM0LDIyICszNCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IElEQkJhY2tpbmdTdG9yZTsKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw7CiBjbGFzcyBJ
REJJbmRleEJhY2tlbmRJbXBsOwotY2xhc3MgSURCU1FMaXRlRGF0YWJhc2U7CiBjbGFzcyBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBTUUxpdGVEYXRhYmFzZTsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoSURC
U1FMaXRlRGF0YWJhc2UqIGRhdGFiYXNlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShJREJCYWNraW5nU3Rv
cmUqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChkYXRhYmFzZSwgaWQsIG5h
bWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwgaWQsIG5hbWUsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRlKElEQlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3Jl
bWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBj
cmVhdGUoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoZGF0YWJhc2Us
IG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGJhY2tpbmdTdG9yZSwgbmFtZSwga2V5UGF0
aCwgYXV0b0luY3JlbWVudCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKCk7CiAKQEAgLTc4LDggKzc4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgotICAgIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwoSURCU1FMaXRlRGF0YWJhc2UqLCBpbnQ2NF90IGlkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KTsK
LSAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQlNRTGl0ZURhdGFiYXNlKiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCk7
CisgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJCYWNraW5nU3RvcmUqLCBpbnQ2NF90
IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRv
SW5jcmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9y
ZSosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQpOwogCiAgICAgdm9pZCBsb2FkSW5kZXhlcygpOwogICAgIFNRTGl0ZURhdGFiYXNl
JiBzcWxpdGVEYXRhYmFzZSgpIGNvbnN0OwpAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIHJlbW92ZUluZGV4RnJvbU1hcChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbXBsPik7CiAgICAgc3RhdGljIHZvaWQgYWRkSW5kZXhUb01hcChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPik7CiAKLSAgICBSZWZQdHI8SURCU1FMaXRlRGF0
YWJhc2U+IG1fZGF0YWJhc2U7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gbV9iYWNraW5n
U3RvcmU7CiAKICAgICBpbnQ2NF90IG1faWQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJTUUxpdGVEYXRhYmFzZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGU4ODE5MTcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJTUUxpdGVEYXRhYmFzZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklEQlNRTGl0ZURhdGFiYXNlLmgi
Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotI2luY2x1ZGUgIklEQkZhY3RvcnlC
YWNrZW5kSW1wbC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUlEQlNRTGl0ZURhdGFiYXNl
OjpJREJTUUxpdGVEYXRhYmFzZShTdHJpbmcgaWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJ
bXBsKiBmYWN0b3J5KQotICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2Zh
Y3RvcnkoZmFjdG9yeSkKLXsKLX0KLQotSURCU1FMaXRlRGF0YWJhc2U6On5JREJTUUxpdGVEYXRh
YmFzZSgpCi17Ci0gICAgbV9mYWN0b3J5LT5yZW1vdmVTUUxpdGVEYXRhYmFzZShtX2lkZW50aWZp
ZXIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCU1FM
aXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCU1FMaXRlRGF0YWJhc2Uu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU1NjUwNi4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlNRTGl0ZURhdGFiYXNlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJREJTUUxpdGVEYXRhYmFzZV9oCi0jZGVm
aW5lIElEQlNRTGl0ZURhdGFiYXNlX2gKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQot
Ci0jaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW1wbDsKLQot
Y2xhc3MgSURCU1FMaXRlRGF0YWJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTUUxpdGVEYXRh
YmFzZT4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlNRTGl0ZURhdGFiYXNl
PiBjcmVhdGUoU3RyaW5nIGlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9y
eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCU1FMaXRlRGF0YWJhc2Uo
aWRlbnRpZmllciwgZmFjdG9yeSkpOwotICAgIH0KLSAgICB+SURCU1FMaXRlRGF0YWJhc2UoKTsK
LQotICAgIFNRTGl0ZURhdGFiYXNlJiBkYigpIHsgcmV0dXJuIG1fZGI7IH0KLQotcHJpdmF0ZToK
LSAgICBJREJTUUxpdGVEYXRhYmFzZShTdHJpbmcgaWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tl
bmRJbXBsKiBmYWN0b3J5KTsKLQotICAgIFNRTGl0ZURhdGFiYXNlIG1fZGI7Ci0gICAgU3RyaW5n
IG1faWRlbnRpZmllcjsKLSAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbXBsPiBtX2ZhY3Rv
cnk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8g
SURCU1FMaXRlRGF0YWJhc2VfaAo=
</data>
<flag name="review"
          id="74907"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>