<?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>231675</bug_id>
          
          <creation_ts>2021-10-13 07:06:40 -0700</creation_ts>
          <short_desc>Remove WTF::Variant and WTF::get</short_desc>
          <delta_ts>2021-10-13 09:19:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1803748</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-13 07:06:40 -0700</bug_when>
    <thetext>Remove WTF::Variant and WTF::get</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803749</commentid>
    <comment_count>1</comment_count>
      <attachid>441071</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-13 07:07:48 -0700</bug_when>
    <thetext>Created attachment 441071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803751</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-10-13 07:09:01 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803762</commentid>
    <comment_count>3</comment_count>
      <attachid>441076</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-13 07:34:22 -0700</bug_when>
    <thetext>Created attachment 441076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803799</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-13 09:18:06 -0700</bug_when>
    <thetext>Committed r284095 (242923@main): &lt;https://commits.webkit.org/242923@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441076.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803800</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-13 09:19:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/84201398&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441071</attachid>
            <date>2021-10-13 07:07:48 -0700</date>
            <delta_ts>2021-10-13 07:58:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231675-20211013080747.patch</filename>
            <type>text/plain</type>
            <size>223424</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MTJjOTE0MGYxZGM1ZTU0M2RlYmZhZjI3YTFkMmZiMjM2OTI1NzIwLi5hMzMwYzRhYjc2NWUxNTVj
Njc3NmFkOGMzODdhYmVmMjM5MDhlZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAyMS0xMC0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBXVEY6OlZhcmlhbnQgYW5kIFdURjo6Z2V0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE2NzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpXYXRj
aHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVyZW5jZUFuZEluc3RhbGxXYXRj
aHBvaW50KToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludHNPblN0cnVjdHVyZVN0dWJJbmZvOjpl
bnN1cmVSZWZlcmVuY2VBbmRBZGRXYXRjaHBvaW50KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlI
ZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlZhbHVl
KToKKyAgICAgICAgKiBqaXQvU25pcHBldFJlZy5oOgorICAgICAgICAoSlNDOjpTbmlwcGV0UmVn
OjpncHIgY29uc3QpOgorICAgICAgICAoSlNDOjpTbmlwcGV0UmVnOjpmcHIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpTbmlwcGV0UmVnOjpqc1ZhbHVlUmVncyBjb25zdCk6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcGFy
c2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdpdGhvdXRDbGVhcmlu
Z0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5j
cHA6CisgICAgICAgIChKU0M6OkNvbXBhY3RURFpFbnZpcm9ubWVudDo6dG9URFpFbnZpcm9ubWVu
dFNsb3cgY29uc3QpOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6Cisg
ICAgICAgIChKU0M6OkNvbXBhY3RURFpFbnZpcm9ubWVudDo6dG9URFpFbnZpcm9ubWVudCBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9DYWNoZVVwZGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkNh
Y2hlVXBkYXRlOjphc0dsb2JhbCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlVXBkYXRlOjph
c0Z1bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q2FjaGVkQ29tcGFjdFREWkVudmlyb25tZW50OjplbmNvZGUpOgorICAgICAg
ICAqIHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJ
bnRHZW5lcmF0b3I6OkNvbnRyb2xUeXBlOjppc0NhdGNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TExJbnRHZW5lcmF0b3I6OkNvbnRyb2xUeXBlOjp0YXJnZXRMYWJlbEZvckJyYW5jaCBjb25zdCk6
CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRMb29wKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEVsc2VUb1VucmVhY2hhYmxlKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZENhdGNoVG9VbnJlYWNoYWJsZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRDYXRjaEFsbFRvVW5yZWFjaGFi
bGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkRGVsZWdhdGVUb1Vu
cmVhY2hhYmxlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZFJldGhy
b3cpOgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVXNlIHN0ZDo6dmFyaWFudCBpbnN0ZWFkIG9mIFdURjo6VmFyaWFu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwppbmRleCAwYzYwZDE5YWExNWU4NTgyZjAxMjIxOGVmOWRkY2EyMzM4YWQwYzQ2Li41N2ZmODA3
NGQ1OWZlZjdjNGM5YjBjNzA0MDg5MTI3MDk0OTVjYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIxLTEwLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmVtb3ZlIFdURjo6VmFyaWFudCBhbmQgV1RGOjpnZXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTY3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1ZhcmlhbnQuaDoKKyAgICAg
ICAgKFdURjo6Z2V0KTogRGVsZXRlZC4KKwogMjAyMS0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBzdGQ6OnZhcmlhbnQgaW5z
dGVhZCBvZiBXVEY6OlZhcmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZDE2ODc1YjI5M2Q0NzFmMTAwOGZj
NGE3NTA5MWU5N2VhODlhYjRjLi44MjAyZTNmZTkzOTE1MTI2YjAwYTM3MmYwODBhNzFkY2EyM2E4
ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjM2IEBACisyMDIxLTEwLTEzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6
VmFyaWFudCBhbmQgV1RGOjpnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlIGFyZSBub3cgdXNpbmcgc3RkOjp2YXJpYW50IGFuZCBzdGQ6OmdldCBp
bnN0ZWFkLgorCisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBs
ZVBheVBheW1lbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OmhhbmRsZXNJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OnZhbGlkYXRlTWVyY2hhbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGVQYXlQYXltZW50SGFuZGxlcjo6ZGlkQXV0aG9yaXplUGF5bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkaWRTZWxlY3RQYXltZW50TWV0aG9kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRpZENoYW5nZUNvdXBvbkNv
ZGUpOgorICAgICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRp
bmdzRGF0YVNvdXJjZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2Fk
ZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpyZXF1ZXN0RnJvbUluZm8pOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHk6OmJsb2JCb2R5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6
Zm9ybURhdGFCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Zm9ybURhdGFCb2R5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YXJyYXlCdWZmZXJCb2R5IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YXJyYXlCdWZmZXJWaWV3Qm9keSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRleHRCb2R5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keTo6dGV4dEJvZHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Ojp1cmxTZWFyY2hQYXJhbXNCb2R5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoSGVhZGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsSGVhZGVyTWFw
KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQktleTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6
OmNvbXBhcmUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjphcnJheSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJLZXk6OnN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmRhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpudW1iZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCS2V5OjpiaW5hcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6SURC
S2V5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjptYXliZUNyZWF0ZUlEQktl
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjppc29sYXRlZENvcHkpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQktleURhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRh
Ojpjb21wYXJlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmxvZ2dpbmdT
dHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6b3BlcmF0b3I9PSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
REJLZXlEYXRhOjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OnN0
cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpkYXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6Om51bWJlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJLZXlEYXRhOjpiaW5hcnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
S2V5RGF0YTo6YXJyYXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmRlY29kZSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y2VydGlmaWNhdGVUeXBlRnJvbUFsZ29yaXRobUlkZW50aWZpZXIpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6c2V0RW5jcnlwdGlvbktleSk6Cisg
ICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb25FZmZlY3Q6OnVwZGF0ZVRpbWluZyk6CisgICAgICAgICogYW5pbWF0aW9uL0tl
eWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NJdGVyYWJsZUtleWZy
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzUHJvcGVydHlJbmRleGVkS2V5ZnJhbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpjcmVhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
aW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Om1heWJlQ3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpj
YW5JbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUpOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OmV4cG9ydEtleSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobUFFU19DRkI6OmltcG9ydEtleSk6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9BbGdvcml0aG1BRVNfQ1RSOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5
cHRvQWxnb3JpdGhtQUVTX0dDTTo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfS1cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtQUVTX0tXOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtRUNESDo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RTQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RT
QTo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1IS0RGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OmltcG9y
dEtleSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjppbXBvcnRLZXkpOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1QQktERjI6OmltcG9ydEtleSk6CisgICAg
ICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81Ojpp
bXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81OjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtUlNBX1BTUzo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjc3MvQ1NTQ3VzdG9tUHJvcGVy
dHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpl
cXVhbHMgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6Cisg
ICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJs
ZVJlZmVyZW5jZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3Vs
ZEluc2VydEFzU2VwYXJhdGVNYXJrZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmFuaW1hdGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1h
cmtlcik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaWN0
YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudCBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpvdmVycmlk
ZUFscGhhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjYW52YXNHcmFk
aWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Y2FudmFzUGF0dGVy
biBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Y29sb3IgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2NvcGVkU2hhZGVyUHJvZ3JhbUhpZ2hsaWdodDo6c2F2
ZUJsZW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2NvcGVkU2hhZGVyUHJv
Z3JhbUhpZ2hsaWdodDo6aGFzQnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JTY29wZWRTaGFkZXJQcm9ncmFtSGlnaGxpZ2h0OjpoYXNGcmFtZWJ1ZmZlclBhcmFtZXRl
ckF0dGFjaG1lbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZUVEN1ZTo6c2V0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6OnNl
dFBvc2l0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveDo6bW9kZXJuUGF0
aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94OjpsZWdhY3lQ
YXRoIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JC
b3guaDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3g6OmxlZ2FjeUlubGlu
ZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94Ojppbmxp
bmVCb3ggY29uc3QpOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb3B5UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0
b21EYXRhOjpyZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpyZWFkU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjp0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vY29jb2EvTWVkaWFVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERl
Y29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09w
dGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kaW5nT3B0aW9uczo6aXNBdXRvIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kaW5nT3B0aW9uczo6aXNTeW5jaHJvbm91cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnM6OmlzQXN5bmNocm9ub3VzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY29kaW5nT3B0aW9uczo6c2l6ZUZvckRyYXdpbmcg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGF0aDo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRk
UXVhZEN1cnZlVG8pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkQmV6aWVyQ3VydmVUbyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6
UGF0aDo6aW5saW5lRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjppbmxpbmVE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFz
dGVib2FyZEl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVk
aW9TaGFyZWRVbml0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvU2hhcmVkVW5pdDo6
cmVzZXRTYW1wbGVSYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9T
b3VyY2VQcm92aWRlckNvY29hOjpyZWNlaXZlZE5ld0F1ZGlvU2FtcGxlcyk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYURldmljZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFEZXZp
Y2U6OnNwZWFrZXJQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tEaXNwbGF5Q2FwdHVyZXI6OmludHJpbnNpY1NpemUgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVv
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5l
cmF0ZVByZXNldHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmNhcGFiaWxpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6bW9ja0Rpc3BsYXlUeXBlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0RO
Uy5oOgorICAgICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjppcHY0QWRkcmVzcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJUEFkZHJlc3M6OmlwdjZBZGRyZXNzIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1E
YXRhOjphcHBlbmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtRGF0YTo6YXBwZW5kTm9uTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmg6CisgICAgICAgICogcGxh
dGZvcm0veHIvUGxhdGZvcm1YUi5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OlZpZXc6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsZWdhY3lMaW5l
TGF5b3V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGVnYWN5
TGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Om1vZGVybkxp
bmVMYXlvdXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojptb2Rl
cm5MaW5lTGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhZ2dlZENvbnRlbnRDb250YWluc1JlcGxhY2VkRWxlbWVudCk6
CisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckpvYkRhdGE6OnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6Y2FuY2VsSm9ic0Zyb21TZXJ2aWNl
V29ya2VyKToKKwogMjAyMS0xMC0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBzdGQ6OnZhcmlhbnQgaW5zdGVhZCBvZiBXVEY6OlZh
cmlhbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggM2QzNTQ0N2U1MTQ4ZjFkMmE4MTJmMzY3MGE5N2M5YTFmMGEyN2I3
MS4uZTRjYTIwMmJkMWEyMmVkOGUzY2Q0Yjg2ZjYwYjhiMjRiM2E4MGE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw4MSBAQAorMjAyMS0xMC0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBXVEY6OlZhcmlhbnQgYW5kIFdURjo6Z2V0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE2NzUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVBy
b2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmg6CisgICAgICAgIChXZWJLaXQ6
OlF1YWxpZmllZFJlc291cmNlSGVhcDo6Z2V0IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6RGF0YTo6RGF0YSk6CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8UGFzdGVib2FyZEN1c3RvbURhdGE6OkVudHJ5Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxJREJLZXlQYXRoPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPjo6ZW5jb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OnZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9Ub3VjaEdl
c3R1cmVDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vZ3RrL1dl
YkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQXV0b21hdGlvbi93cGUvV2ViQXV0b21hdGlvblNlc3Npb25XUEUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtl
eWJvYXJkSW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFD
YXB0dXJlTWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNr
Z3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjppc1Zh
bGlkRm9yZWdyb3VuZEFjdGl2aXR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb3Jl
OjpnZXRScElkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29yZTo6Z2V0VXNlck5hbWUpOgorICAg
ICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVzcG9uZFJlY2VpdmVkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dG9yLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50
aWFsKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJEZWNpZGVQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRp
YWxBZnRlckF0dGVzdGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpn
ZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlR2V0QXNzZXJ0aW9uQWZ0ZXJSZXNwb25zZVNlbGVjdGVkKToKKyAgICAgICAgKFdlYktpdDo6
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlclZlcmlmaWNh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6ZGVsZXRlRHVwbGlj
YXRlQ3JlZGVudGlhbCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0Ojpn
ZXRVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q3RhcEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6
Q3RhcEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpDdGFwQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6Q3RhcEF1dGhlbnRpY2F0b3I6OnByb2Nlc3NHb29nbGVMZWdh
Y3lBcHBJZFN1cHBvcnRFeHRlbnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpVMmZB
dXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkF1dGhl
bnRpY2F0b3I6OmNoZWNrRXhjbHVkZUxpc3QpOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50
aWNhdG9yOjppc3N1ZVJlZ2lzdGVyQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUyZkF1dGhl
bnRpY2F0b3I6OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OlUyZkF1dGhlbnRpY2F0
b3I6Omlzc3VlU2lnbkNvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50aWNhdG9y
Ojpjb250aW51ZVJlZ2lzdGVyQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAg
IChXZWJLaXQ6OlUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UmVjb3JkZXJQcml2YXRlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1l
bnQuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3NlbGVjdF9lbGVtZW50X2FkZCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxl
clByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6
OnJlbW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Ojphbm5vdGF0ZWRTdWJzdHJpbmdCZXR3ZWVuUG9z
aXRpb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29uc3Qp
OgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVXNlIHN0ZDo6dmFyaWFudCBpbnN0ZWFkIG9mIFdURjo6VmFyaWFudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCmluZGV4IGYzMTc5MTY0NGFlY2FlZTI2YjU4ZjJkOWYw
YmQzODY1ZTYwOGMyYmEuLjlhODUyYTNlZDUzOTE2OWUyN2ZiNWM1NmRmY2M4MjM5ZGZmNjY3N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMC0x
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJlbW92ZSBXVEY6OlZhcmlhbnQgYW5kIFdURjo6Z2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3Np
dGlvbi5tbToKKyAgICAgICAgKC1bV2ViVmlzaWJsZVBvc2l0aW9uIGVuY2xvc2luZ1JhbmdlV2l0
aERpY3RhdGlvblBocmFzZUFsdGVybmF0aXZlczpdKToKKwogMjAyMS0wOC0xOSAgTWVnYW4gR2Fy
ZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBvbGQgdW51
c2VkIGNvZGUgYW5kIG91dCBvZiBkYXRlIGNvbW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCmluZGV4IGMwYzI1NjFhNzk4Y2UwZTk0NDVjZDJkM2YxOWVhZTdhODc3ZWJkY2EuLmEwMGE5
OWFjOTUzODA4NGJjNmFmNjhmMDIwNGUzNzU4MGFhZWI0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0xMyAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSBXVEY6OlZhcmlhbnQg
YW5kIFdURjo6Z2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzE2NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIGdldERpY3Rh
dGlvblJlc3VsdFJhbmdlczphbmRNZXRhZGF0YXM6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIGRp
Y3RhdGlvblJlc3VsdE1ldGFkYXRhRm9yUmFuZ2U6XSk6CisKIDIwMjEtMTAtMTIgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2Ugc3RkOjp2
YXJpYW50IGluc3RlYWQgb2YgV1RGOjpWYXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5jcHAKaW5kZXggYmFhMWMwZWFhZDJmMTNiY2FhYzkxNzYzZmRmOTQzYjgyODMzNWZhZC4u
NGI4YjJiNzUxOGZiODZkMmQ0YjdjZGM1ZWNhYjY2NmU1YTZmYWM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50LmNwcApAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgV2F0Y2hwb2lu
dHNPblN0cnVjdHVyZVN0dWJJbmZvOjplbnN1cmVSZWZlcmVuY2VBbmRJbnN0YWxsV2F0Y2hwb2lu
dCgKICAgICBBU1NFUlQoISFrZXkpOwogICAgIGF1dG8mIHdhdGNocG9pbnRWYXJpYW50ID0gaG9s
ZGVyUmVmLT5hZGRXYXRjaHBvaW50KGtleSk7CiAgICAgaWYgKGtleS5raW5kKCkgPT0gUHJvcGVy
dHlDb25kaXRpb246OkVxdWl2YWxlbmNlKSB7Ci0gICAgICAgIGF1dG8mIGFkYXB0aXZlV2F0Y2hw
b2ludCA9IFdURjo6Z2V0PEFkYXB0aXZlVmFsdWVTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50Pih3YXRjaHBvaW50VmFyaWFudCk7CisgICAgICAgIGF1dG8mIGFkYXB0aXZlV2F0Y2hwb2lu
dCA9IHN0ZDo6Z2V0PEFkYXB0aXZlVmFsdWVTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
Pih3YXRjaHBvaW50VmFyaWFudCk7CiAgICAgICAgIGFkYXB0aXZlV2F0Y2hwb2ludC5pbnN0YWxs
KGNvZGVCbG9jay0+dm0oKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byogc3RydWN0dXJl
VHJhbnNpdGlvbldhdGNocG9pbnQgPSAmV1RGOjpnZXQ8U3RydWN0dXJlVHJhbnNpdGlvblN0cnVj
dHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+KHdhdGNocG9pbnRWYXJpYW50KTsKKyAgICAgICAg
YXV0byogc3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQgPSAmc3RkOjpnZXQ8U3RydWN0dXJl
VHJhbnNpdGlvblN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+KHdhdGNocG9pbnRWYXJp
YW50KTsKICAgICAgICAga2V5Lm9iamVjdCgpLT5zdHJ1Y3R1cmUoKS0+YWRkVHJhbnNpdGlvbldh
dGNocG9pbnQoc3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQpOwogICAgIH0KIH0KQEAgLTEw
Myw3ICsxMDMsNyBAQCBXYXRjaHBvaW50KiBXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86
OmVuc3VyZVJlZmVyZW5jZUFuZEFkZFdhdGNocG9pbnQoCiAgICAgICAgIEFTU0VSVChob2xkZXJS
ZWYtPm1fc3R1YkluZm8gPT0gc3R1YkluZm8pOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gJldU
Rjo6Z2V0PFN0cnVjdHVyZVRyYW5zaXRpb25TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
Pihob2xkZXJSZWYtPmFkZFdhdGNocG9pbnQoT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKSkpOwor
ICAgIHJldHVybiAmc3RkOjpnZXQ8U3RydWN0dXJlVHJhbnNpdGlvblN0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQ+KGhvbGRlclJlZi0+YWRkV2F0Y2hwb2ludChPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvbigpKSk7CiB9CiAKIHZvaWQgQWRhcHRpdmVWYWx1ZVN0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQ6OmhhbmRsZUZpcmUoVk0mLCBjb25zdCBGaXJlRGV0YWlsJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCA0N2RkZGVjMDIw
ZDI3MjNiODQ5NmZhY2IwNWQ2YjViNmY0ZjUwNTJiLi5jOGNiYmVlMDZiZjdkNjY2MmMxOWE0YTRh
OGExOGMyMWNlZmQzZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCkBAIC05MzEsOSArOTMxLDkgQEAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wTGlz
dCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUoVk0mIHZtLCBKU1ZhbHVlUmVncyB2YWwK
ICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmFwcGVuZChicmFuY2hUZXN0OCha
ZXJvLCBBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICAgICAg
ZW1pdExvYWRTdHJ1Y3R1cmUodm0sIHZhbHVlLnBheWxvYWRHUFIoKSwgc2NyYXRjaCwgc2NyYXRj
aElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKTsKICAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8SlNHbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKQotICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKFdURjo6Z2V0PEpTR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSksIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk7Cisg
ICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3RkOjpnZXQ8SlNHbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKSwgc2NyYXRjaElmU2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbW92ZShXVEY6OmdldDxHUFJSZWc+KGdsb2Jh
bE9iamVjdCksIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk7Cisg
ICAgICAgICAgICBtb3ZlKHN0ZDo6Z2V0PEdQUlJlZz4oZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaElm
U2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKTsKICAgICAgICAgaXNOb3RNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRj
aCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHNjcmF0Y2hJZlNob3VsZENoZWNr
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogCiAgICAgICAgIC8vIFdlIGFjdCBsaWtlIHdlIGFy
ZSAidW5kZWZpbmVkIiBoZXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9TbmlwcGV0UmVnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NuaXBwZXRSZWcuaApp
bmRleCA4MjhiOTdhYzExMTE2ZGU4MDAyYTUwN2MxMDRmYjMxYjkxNDk0ZGU0Li44NzA4OGQ5MzAy
YzExNGQ3NWQ4OWYxMDkxNmJiZDkwMThmZGZhNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NuaXBwZXRSZWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1NuaXBwZXRSZWcuaApAQCAtNzIsMTcgKzcyLDE3IEBAIHB1YmxpYzoKICAgICBHUFJSZWcgZ3By
KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0dQUigpKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6Z2V0PEdQUlJlZz4obV92YXJpYW50KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PEdQ
UlJlZz4obV92YXJpYW50KTsKICAgICB9CiAgICAgRlBSUmVnIGZwcigpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlQoaXNGUFIoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxGUFJSZWc+
KG1fdmFyaWFudCk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxGUFJSZWc+KG1fdmFyaWFudCk7
CiAgICAgfQogICAgIEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIEFTU0VSVChpc0pTVmFsdWVSZWdzKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8SlNW
YWx1ZVJlZ3M+KG1fdmFyaWFudCk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxKU1ZhbHVlUmVn
cz4obV92YXJpYW50KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IDk5MTc3OTY5OGUxMjNjZTlmMDc3ZDRmZjBjNTBhOTBmOGJjZjhmNDEuLmM1ZjY5MzllZDA0NmRm
Y2QyYzNkZjA5OTllODFkYzBlZmEyOWU3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yMTQ5
LDcgKzIxNDksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJBZ2Vu
dFJlY2VpdmVCcm9hZGNhc3QsIChKU0dsb2JhbE9iamVjdCogZwogICAgIGF1dG8gY29udGVudCA9
IG1lc3NhZ2UtPnJlbGVhc2VDb250ZW50cygpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gKFsmXSgp
IC0+IEpTVmFsdWUgewogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxBcnJheUJ1
ZmZlckNvbnRlbnRzPihjb250ZW50KSkgewotICAgICAgICAgICAgYXV0byBuYXRpdmVCdWZmZXIg
PSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKFdURjo6Z2V0PEFycmF5QnVmZmVyQ29udGVudHM+KFdURk1v
dmUoY29udGVudCkpKTsKKyAgICAgICAgICAgIGF1dG8gbmF0aXZlQnVmZmVyID0gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShzdGQ6OmdldDxBcnJheUJ1ZmZlckNvbnRlbnRzPihXVEZNb3ZlKGNvbnRlbnQp
KSk7CiAgICAgICAgICAgICBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlID0gbmF0
aXZlQnVmZmVyLT5zaGFyaW5nTW9kZSgpOwogICAgICAgICAgICAgcmV0dXJuIEpTQXJyYXlCdWZm
ZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFyaW5n
TW9kZSksIFdURk1vdmUobmF0aXZlQnVmZmVyKSk7CiAgICAgICAgIH0KQEAgLTIxNTcsNyArMjE1
Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2
ZUJyb2FkY2FzdCwgKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZjxXYXNtOjpNZW1vcnlIYW5kbGU+Pihjb250ZW50KSkgewogICAgICAgICAg
ICAgSlNXZWJBc3NlbWJseU1lbW9yeSoganNNZW1vcnkgPSBKU0M6OkpTV2ViQXNzZW1ibHlNZW1v
cnk6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5
TWVtb3J5U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhj
ZXB0aW9uKCk7Ci0gICAgICAgICAgICBSZWY8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpN
ZW1vcnk6OmNyZWF0ZShXVEY6OmdldDxSZWY8V2FzbTo6TWVtb3J5SGFuZGxlPj4oV1RGTW92ZShj
b250ZW50KSksCisgICAgICAgICAgICBSZWY8V2FzbTo6TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpN
ZW1vcnk6OmNyZWF0ZShzdGQ6OmdldDxSZWY8V2FzbTo6TWVtb3J5SGFuZGxlPj4oV1RGTW92ZShj
b250ZW50KSksCiAgICAgICAgICAgICAgICAgWyZ2bV0gKFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJl
c3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwK
ICAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVtb3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7
IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAg
ICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdhc206Ok1lbW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206
OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBhZ2VDb3VudCBuZXdQYWdlQ291bnQpIHsg
anNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0sIG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNv
dW50KTsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDEwNmJi
ZmNiYTQwNWQwZTVhYTNkMDMwMzA2NjJmN2JiZWMzNzhiOWQuLjAzNWVhYTVlZWRjZTE5MjI3OGNi
MGQ0ODZkZWQ5MTk4YmRmOWZmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCkBAIC0yMjk4LDExICsyMjk4LDExIEBAIHN0YXJ0OgogICAgICAgICAgICAgaWYgKCFwYXJz
ZU51bWJlclJlc3VsdCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0g
MDsKICAgICAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPigq
cGFyc2VOdW1iZXJSZXN1bHQpKQotICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHN0ZDo6Z2V0PGRvdWJsZT4oKnBhcnNlTnVtYmVy
UmVzdWx0KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRva2VuID0gQklH
SU5UOwogICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW5EYXRh
LT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVy
UmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9IHN0ZDo6
Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOwogICAgICAgICAgICAg
ICAgIHRva2VuRGF0YS0+cmFkaXggPSAxNjsKICAgICAgICAgICAgIH0KIApAQCAtMjMzNywxMSAr
MjMzNywxMSBAQCBzdGFydDoKICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJSZXN1bHQpCiAg
ICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IDA7CiAgICAgICAgICAgICBl
bHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0
KSkKLSAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gV1RGOjpnZXQ8ZG91
YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUgPSBzdGQ6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKICAgICAgICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0g
V1RGOjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBzdGQ6OmdldDxjb25zdCBJZGVudGlm
aWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPnJh
ZGl4ID0gMjsKICAgICAgICAgICAgIH0KIApAQCAtMjM3NywxMSArMjM3NywxMSBAQCBzdGFydDoK
ICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJSZXN1bHQpCiAgICAgICAgICAgICAgICAgdG9r
ZW5EYXRhLT5kb3VibGVWYWx1ZSA9IDA7CiAgICAgICAgICAgICBlbHNlIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KSkKLSAgICAgICAgICAgICAg
ICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJS
ZXN1bHQpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBzdGQ6Omdl
dDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICB0b2tlbiA9IEJJR0lOVDsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0gV1RGOjpnZXQ8Y29uc3QgSWRl
bnRpZmllcio+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRh
LT5iaWdJbnRTdHJpbmcgPSBzdGQ6OmdldDxjb25zdCBJZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVy
UmVzdWx0KTsKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPnJhZGl4ID0gODsKICAgICAgICAg
ICAgIH0KIApAQCAtMjQxOCw3ICsyNDE4LDcgQEAgc3RhcnQ6CiAgICAgICAgIGlmIChpc0FTQ0lJ
T2N0YWxEaWdpdChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICBhdXRvIHBhcnNlTnVtYmVyUmVz
dWx0ID0gcGFyc2VPY3RhbCgpOwogICAgICAgICAgICAgaWYgKHBhcnNlTnVtYmVyUmVzdWx0ICYm
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKSB7Ci0g
ICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6Z2V0PGRvdWJsZT4o
KnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gc3RkOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOwogICAgICAgICAgICAg
ICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRvdWJs
ZVZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjQyOCwxMiArMjQyOCwxMiBA
QCBzdGFydDoKICAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZURlY2lt
YWwoKTsKICAgICAgICAgICAgIGlmIChwYXJzZU51bWJlclJlc3VsdCkgewogICAgICAgICAgICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0
KSkgewotICAgICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gV1RGOjpn
ZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB0b2tl
bkRhdGEtPmRvdWJsZVZhbHVlID0gc3RkOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQp
OwogICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuVHlwZUZvckludGVnZXJMaWtlVG9r
ZW4odG9rZW5EYXRhLT5kb3VibGVWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CiAgICAgICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0gV1RG
OjpnZXQ8Y29uc3QgSWRlbnRpZmllcio+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0gc3RkOjpnZXQ8Y29uc3QgSWRlbnRp
Zmllcio+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0
YS0+cmFkaXggPSAxMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5jcHAKaW5kZXggYmQ2NzNjNjhmNTQ2ZDI4MzhkYjJkZTgxNGQxYzRiZDBkYzMyNWMwZi4uMjhk
YTE5OTc0M2UwNTZkMjRkOWUzYjVkYTZjZWVlNjlkYjA5ODRjNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0yNzcs
MTQgKzI3NywxNCBAQCBURFpFbnZpcm9ubWVudCYgQ29tcGFjdFREWkVudmlyb25tZW50Ojp0b1RE
WkVudmlyb25tZW50U2xvdygpIGNvbnN0CiB7CiAgICAgSW5mbGF0ZWQgaW5mbGF0ZWQ7CiAgICAg
ewotICAgICAgICBhdXRvJiBjb21wYWN0ID0gV1RGOjpnZXQ8Q29tcGFjdD4obV92YXJpYWJsZXMp
OworICAgICAgICBhdXRvJiBjb21wYWN0ID0gc3RkOjpnZXQ8Q29tcGFjdD4obV92YXJpYWJsZXMp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbXBhY3Quc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mbGF0ZWQuYWRkKGNvbXBhY3RbaV0pOwog
ICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKICAgICAgICAgfQogICAgIH0KICAgICBtX3ZhcmlhYmxlcyA9IFZhcmlhYmxlcyhXVEZNb3Zl
KGluZmxhdGVkKSk7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5mbGF0ZWQmPihXVEY6OmdldDxJ
bmZsYXRlZD4obV92YXJpYWJsZXMpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxJbmZsYXRlZCY+
KHN0ZDo6Z2V0PEluZmxhdGVkPihtX3ZhcmlhYmxlcykpOwogfQogCiBDb21wYWN0VERaRW52aXJv
bm1lbnRNYXA6OkhhbmRsZSBDb21wYWN0VERaRW52aXJvbm1lbnRNYXA6OmdldChjb25zdCBURFpF
bnZpcm9ubWVudCYgZW52KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCBiNDQ3ZTM3MjM2OTc2ZDFkZGU2ZTI1YWFiMmU1MmNl
MWU4N2JhYTk4Li5lY2FmNTkyYWI0NTMwZWJkYjRlYzQ4YTc5ZmQ2YzcwMThiNTA3Yzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
aApAQCAtMzU2LDcgKzM1Niw3IEBAIHB1YmxpYzoKICAgICBURFpFbnZpcm9ubWVudCYgdG9URFpF
bnZpcm9ubWVudCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxJbmZsYXRlZD4obV92YXJpYWJsZXMpKQotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8VERaRW52aXJvbm1lbnQmPihXVEY6OmdldDxJbmZsYXRlZD4obV92YXJpYWJsZXMpKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFREWkVudmlyb25tZW50Jj4oc3RkOjpnZXQ8SW5m
bGF0ZWQ+KG1fdmFyaWFibGVzKSk7CiAgICAgICAgIHJldHVybiB0b1REWkVudmlyb25tZW50U2xv
dygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVVcGRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVVcGRh
dGUuY3BwCmluZGV4IDFjZmRmNzJjMWM4MjBhMDZlZDU2NTg5Nzg3OGUzMzIzZWYxM2RkMTQuLjE2
NDJlMzUyZTc1Mzg3OGY4Yjc1MDBiYzY5NGI0MjVhNTM5YjEwODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlVXBkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZVVwZGF0ZS5jcHAKQEAgLTU0LDEzICs1NCwxMyBAQCBi
b29sIENhY2hlVXBkYXRlOjppc0dsb2JhbCgpIGNvbnN0CiBjb25zdCBDYWNoZVVwZGF0ZTo6R2xv
YmFsVXBkYXRlJiBDYWNoZVVwZGF0ZTo6YXNHbG9iYWwoKSBjb25zdAogewogICAgIEFTU0VSVChp
c0dsb2JhbCgpKTsKLSAgICByZXR1cm4gV1RGOjpnZXQ8R2xvYmFsVXBkYXRlPihtX3VwZGF0ZSk7
CisgICAgcmV0dXJuIHN0ZDo6Z2V0PEdsb2JhbFVwZGF0ZT4obV91cGRhdGUpOwogfQogCiBjb25z
dCBDYWNoZVVwZGF0ZTo6RnVuY3Rpb25VcGRhdGUmIENhY2hlVXBkYXRlOjphc0Z1bmN0aW9uKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIWlzR2xvYmFsKCkpOwotICAgIHJldHVybiBXVEY6OmdldDxG
dW5jdGlvblVwZGF0ZT4obV91cGRhdGUpOworICAgIHJldHVybiBzdGQ6OmdldDxGdW5jdGlvblVw
ZGF0ZT4obV91cGRhdGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBkZTgyMTRiYTI2YTRhZTQ0
OTU5Y2ZlNGQ3MDliOTk2NjIxODRhNWRiLi4zZmJlNGUxMjZiMjk2YWY0ZWNhZGU3ZGE2N2EzNDAx
Zjc0NjE4MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCkBAIC0xMDM4LDEwICsxMDM4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDb21wYWN0VERaRW52aXJvbm1lbnQmIGVudikKICAgICB7
CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbXBhY3RURFpFbnZpcm9ubWVu
dDo6Q29tcGFjdD4oZW52Lm1fdmFyaWFibGVzKSkKLSAgICAgICAgICAgIG1fdmFyaWFibGVzLmVu
Y29kZShlbmNvZGVyLCBXVEY6OmdldDxDb21wYWN0VERaRW52aXJvbm1lbnQ6OkNvbXBhY3Q+KGVu
di5tX3ZhcmlhYmxlcykpOworICAgICAgICAgICAgbV92YXJpYWJsZXMuZW5jb2RlKGVuY29kZXIs
IHN0ZDo6Z2V0PENvbXBhY3RURFpFbnZpcm9ubWVudDo6Q29tcGFjdD4oZW52Lm1fdmFyaWFibGVz
KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQ29tcGFjdFREWkVudmlyb25tZW50OjpD
b21wYWN0IGNvbXBhY3Q7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IFdURjo6Z2V0PENv
bXBhY3RURFpFbnZpcm9ubWVudDo6SW5mbGF0ZWQ+KGVudi5tX3ZhcmlhYmxlcykpCisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGtleSA6IHN0ZDo6Z2V0PENvbXBhY3RURFpFbnZpcm9ubWVudDo6SW5m
bGF0ZWQ+KGVudi5tX3ZhcmlhYmxlcykpCiAgICAgICAgICAgICAgICAgY29tcGFjdC5hcHBlbmQo
a2V5KTsKICAgICAgICAgICAgIG1fdmFyaWFibGVzLmVuY29kZShlbmNvZGVyLCBjb21wYWN0KTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxM
SW50R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdl
bmVyYXRvci5jcHAKaW5kZXggNzA0OWFiNDgyNjhhZWZhYzE3YmYxOTZkNGYxNTI2MWY1YzViYjU5
My4uM2MyNjYzZTI5ZTA2NmI4MGM5MzcwMzljN2MzNjgxMDFhMjFjOWQwYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC0xMjgs
NyArMTI4LDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q29udHJvbENhdGNoPihjb250cm9sKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDb250cm9sQ2F0Y2ggY2F0Y2hEYXRhID0gV1RGOjpn
ZXQ8Q29udHJvbENhdGNoPihjb250cm9sKTsKKyAgICAgICAgICAgIENvbnRyb2xDYXRjaCBjYXRj
aERhdGEgPSBzdGQ6OmdldDxDb250cm9sQ2F0Y2g+KGNvbnRyb2wpOwogICAgICAgICAgICAgcmV0
dXJuIGNhdGNoRGF0YS5tX2tpbmQgPT0gQ2F0Y2hLaW5kOjpDYXRjaDsKICAgICAgICAgfQogCkBA
IC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8TGFiZWw+IHRhcmdldExh
YmVsRm9yQnJhbmNoKCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8Q29udHJvbExvb3A+KCp0aGlzKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpnZXQ8Q29udHJvbExvb3A+KCp0aGlzKS5tX2JvZHkucHRyKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6Z2V0PENvbnRyb2xMb29wPigqdGhpcykubV9ib2R5LnB0cigpOwog
ICAgICAgICAgICAgcmV0dXJuIG1fY29udGludWF0aW9uOwogICAgICAgICB9CiAKQEAgLTEwMDAs
NyArMTAwMCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExvb3AoQmxvY2tTaWduYXR1cmUg
c2lnbmF0dXJlLCBTdGFjayYgZW5jbG9zaW5nU3RhY2ssIENvCiAgICAgICAgIGZvciAoVHlwZWRF
eHByZXNzaW9uIGV4cHJlc3Npb24gOiBleHByZXNzaW9uU3RhY2spCiAgICAgICAgICAgICBvc3JF
bnRyeURhdGEuYXBwZW5kKGV4cHJlc3Npb24pOwogICAgICAgICBpZiAoQ29udHJvbFR5cGU6Omlz
QW55Q2F0Y2goZGF0YSkpCi0gICAgICAgICAgICBvc3JFbnRyeURhdGEuYXBwZW5kKFdURjo6Z2V0
PENvbnRyb2xDYXRjaD4oZGF0YSkubV9leGNlcHRpb24pOworICAgICAgICAgICAgb3NyRW50cnlE
YXRhLmFwcGVuZChzdGQ6OmdldDxDb250cm9sQ2F0Y2g+KGRhdGEpLm1fZXhjZXB0aW9uKTsKICAg
ICB9CiAgICAgZm9yIChUeXBlZEV4cHJlc3Npb24gZXhwcmVzc2lvbiA6IGVuY2xvc2luZ1N0YWNr
KQogICAgICAgICBvc3JFbnRyeURhdGEuYXBwZW5kKGV4cHJlc3Npb24pOwpAQCAtMTA1MSw3ICsx
MDUxLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRWxzZVRvVW5yZWFjaGFibGUoQ29udHJv
bFR5cGUmIGRhdGEpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBtX3N0YWNrU2l6ZSA9IGRhdGEu
c3RhY2tTaXplKCkgKyBkYXRhLm1fc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7CiAKLSAgICBD
b250cm9sSWYmIGNvbnRyb2wgPSBXVEY6OmdldDxDb250cm9sSWY+KGRhdGEpOworICAgIENvbnRy
b2xJZiYgY29udHJvbCA9IHN0ZDo6Z2V0PENvbnRyb2xJZj4oZGF0YSk7CiAgICAgZW1pdExhYmVs
KGNvbnRyb2wubV9hbHRlcm5hdGUuZ2V0KCkpOwogICAgIGRhdGEgPSBDb250cm9sVHlwZTo6Ymxv
Y2soZGF0YS5tX3NpZ25hdHVyZSwgbV9zdGFja1NpemUsIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVh
dGlvbikpOwogICAgIHJldHVybiB7IH07CkBAIC0xMTAxLDcgKzExMDEsNyBAQCBhdXRvIExMSW50
R2VuZXJhdG9yOjphZGRDYXRjaFRvVW5yZWFjaGFibGUodW5zaWduZWQgZXhjZXB0aW9uSW5kZXgs
IGNvbnN0IFNpZ25hdAogICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFja1NpemUoKTsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uID0gcHVzaCgpOwogICAgIGlmIChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPENvbnRyb2xUcnk+KGRhdGEpKSB7Ci0gICAgICAgIENvbnRyb2xUcnkmIHRyeURh
dGEgPSBXVEY6OmdldDxDb250cm9sVHJ5PihkYXRhKTsKKyAgICAgICAgQ29udHJvbFRyeSYgdHJ5
RGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xUcnk+KGRhdGEpOwogICAgICAgICBkYXRhID0gQ29udHJv
bFR5cGU6OmNyZWF0ZUNhdGNoKGRhdGEubV9zaWduYXR1cmUsIGRhdGEuc3RhY2tTaXplKCksIFdU
Rk1vdmUodHJ5RGF0YS5tX3RyeSksIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVhdGlvbiksIGNhdGNo
TGFiZWwsIHRyeURhdGEubV90cnlEZXB0aCwgZXhjZXB0aW9uKTsKICAgICB9CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7ICsr
aSkKQEAgLTExMzMsNyArMTEzMyw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhdGNoVG9V
bnJlYWNoYWJsZSh1bnNpZ25lZCBleGNlcHRpb25JbmRleCwgY29uc3QgU2lnbmF0CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBDb250cm9sQ2F0Y2gmIGNhdGNoRGF0YSA9IFdURjo6Z2V0PENvbnRy
b2xDYXRjaD4oZGF0YSk7CisgICAgQ29udHJvbENhdGNoJiBjYXRjaERhdGEgPSBzdGQ6OmdldDxD
b250cm9sQ2F0Y2g+KGRhdGEpOwogICAgIGNhdGNoRGF0YS5tX2tpbmQgPSBDYXRjaEtpbmQ6OkNh
dGNoOwogICAgIG1fY29kZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5kbGVyKHsgSGFuZGxlclR5cGU6
OkNhdGNoLCBjYXRjaERhdGEubV90cnlTdGFydC0+bG9jYXRpb24oKSwgY2F0Y2hEYXRhLm1fdHJ5
RW5kLT5sb2NhdGlvbigpLCBjYXRjaExhYmVsLT5sb2NhdGlvbigpLCBtX3RyeURlcHRoLCBleGNl
cHRpb25JbmRleCB9KTsKIApAQCAtMTE1NCwxMCArMTE1NCwxMCBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRDYXRjaEFsbFRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIGRhdGEpIC0+IFBhcnRp
YWxSZXN1bAogICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFja1NpemUoKTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgZXhjZXB0aW9uID0gcHVzaCgpOwogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPENvbnRyb2xUcnk+KGRhdGEpKSB7Ci0gICAgICAgIENvbnRyb2xUcnkmIHRyeURhdGEgPSBX
VEY6OmdldDxDb250cm9sVHJ5PihkYXRhKTsKKyAgICAgICAgQ29udHJvbFRyeSYgdHJ5RGF0YSA9
IHN0ZDo6Z2V0PENvbnRyb2xUcnk+KGRhdGEpOwogICAgICAgICBkYXRhID0gQ29udHJvbFR5cGU6
OmNyZWF0ZUNhdGNoKGRhdGEubV9zaWduYXR1cmUsIGRhdGEuc3RhY2tTaXplKCksIFdURk1vdmUo
dHJ5RGF0YS5tX3RyeSksIFdURk1vdmUoZGF0YS5tX2NvbnRpbnVhdGlvbiksIGNhdGNoTGFiZWws
IHRyeURhdGEubV90cnlEZXB0aCwgZXhjZXB0aW9uKTsKICAgICB9Ci0gICAgQ29udHJvbENhdGNo
JiBjYXRjaERhdGEgPSBXVEY6OmdldDxDb250cm9sQ2F0Y2g+KGRhdGEpOworICAgIENvbnRyb2xD
YXRjaCYgY2F0Y2hEYXRhID0gc3RkOjpnZXQ8Q29udHJvbENhdGNoPihkYXRhKTsKICAgICBjYXRj
aERhdGEubV9raW5kID0gQ2F0Y2hLaW5kOjpDYXRjaEFsbDsKIAogICAgIGlmIChDb250ZXh0Ojp1
c2VGYXN0VExTKCkpCkBAIC0xMTgwLDkgKzExODAsOSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjph
ZGREZWxlZ2F0ZVRvVW5yZWFjaGFibGUoQ29udHJvbFR5cGUmIHRhcmdldCwgQ29udHJvbFR5cGUm
CiAgICAgUmVmPExhYmVsPiBkZWxlZ2F0ZUxhYmVsID0gbmV3RW1pdHRlZExhYmVsKCk7CiAKICAg
ICBBU1NFUlQoQ29udHJvbFR5cGU6OmlzVHJ5KHRhcmdldCkgfHwgQ29udHJvbFR5cGU6OmlzVG9w
TGV2ZWwodGFyZ2V0KSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0RGVwdGggPSBDb250cm9sVHlwZTo6
aXNUcnkodGFyZ2V0KSA/IFdURjo6Z2V0PENvbnRyb2xUcnk+KHRhcmdldCkubV90cnlEZXB0aCA6
IDA7CisgICAgdW5zaWduZWQgdGFyZ2V0RGVwdGggPSBDb250cm9sVHlwZTo6aXNUcnkodGFyZ2V0
KSA/IHN0ZDo6Z2V0PENvbnRyb2xUcnk+KHRhcmdldCkubV90cnlEZXB0aCA6IDA7CiAKLSAgICBD
b250cm9sVHJ5JiB0cnlEYXRhID0gV1RGOjpnZXQ8Q29udHJvbFRyeT4oZGF0YSk7CisgICAgQ29u
dHJvbFRyeSYgdHJ5RGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xUcnk+KGRhdGEpOwogICAgIG1fY29k
ZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5kbGVyKHsgSGFuZGxlclR5cGU6OkRlbGVnYXRlLCB0cnlE
YXRhLm1fdHJ5LT5sb2NhdGlvbigpLCBkZWxlZ2F0ZUxhYmVsLT5sb2NhdGlvbigpLCAwLCBtX3Ry
eURlcHRoLCB0YXJnZXREZXB0aCB9KTsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgcmV0
dXJuIHsgfTsKQEAgLTEyMDUsNyArMTIwNSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJl
dGhyb3codW5zaWduZWQsIENvbnRyb2xUeXBlJiBkYXRhKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAg
ICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8Q29udHJvbENhdGNoPihkYXRhKSk7Ci0gICAgQ29udHJvbENhdGNoIGNhdGNoRGF0YSA9
IFdURjo6Z2V0PENvbnRyb2xDYXRjaD4oZGF0YSk7CisgICAgQ29udHJvbENhdGNoIGNhdGNoRGF0
YSA9IHN0ZDo6Z2V0PENvbnRyb2xDYXRjaD4oZGF0YSk7CiAgICAgV2FzbVJldGhyb3c6OmVtaXQo
dGhpcywgY2F0Y2hEYXRhLm1fZXhjZXB0aW9uKTsKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVmFyaWFudC5oIGIvU291cmNlL1dURi93dGYvVmFyaWFudC5o
CmluZGV4IDRlZjE1NmVjNjBhNGMzZmY4ODcxYzdiZjY4NDljODdlYzJhYzJmYjguLmFhMmIyNjNm
Zjc2ZGUwNjE4ZjcxMDMzZjcwMTk2MWFmOTBmZWY1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1ZhcmlhbnQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgKQEAgLTUzLDMzICs1
Myw2IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBlcz4K
LXVzaW5nIFZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8VHlwZXMuLi4+OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIF9UeXBlJiBnZXQoVmFy
aWFudDxfVHlwZXMuLi4+JiBfX3YpCi17Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PF9UeXBlPihfX3Yp
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29u
c3RleHByIF9UeXBlJiYgZ2V0KFZhcmlhbnQ8X1R5cGVzLi4uPiYmIF9fdikKLXsKLSAgICByZXR1
cm4gc3RkOjpnZXQ8X1R5cGU+KFdURk1vdmUoX192KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlwZXM+Ci1jb25zdGV4cHIgX1R5cGUgY29uc3QmIGdldChW
YXJpYW50PF9UeXBlcy4uLj4gY29uc3QmIF9fdikKLXsKLSAgICByZXR1cm4gc3RkOjpnZXQ8X1R5
cGU+KF9fdik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIF9UeXBlLHR5cGVuYW1lIC4uLiBfVHlw
ZXM+Ci1jb25zdGV4cHIgY29uc3QgX1R5cGUmJiBnZXQoVmFyaWFudDxfVHlwZXMuLi4+IGNvbnN0
JiYgX192KQotewotICAgIHJldHVybiBzdGQ6OmdldDxfVHlwZT4oV1RGTW92ZShfX3YpKTsKLX0K
LQogLy8gLS0gV2ViS2l0IEFkZGl0aW9ucyAtLQogCiB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcy4u
LiBGPgpAQCAtODksNSArNjIsMyBAQCBhdXRvIHN3aXRjaE9uKFYmJiB2LCBGJiYuLi4gZikgLT4g
ZGVjbHR5cGUoc3RkOjp2aXNpdChtYWtlVmlzaXRvcihzdGQ6OmZvcndhcmQ8RgogfQogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpWYXJpYW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVl
c3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKaW5kZXggZWEzODVjYjE3MDY4ZmVlNjI4M2Q4
NmRjZWQyMzJiNDkxYjM5OTM3MC4uNTMwYWM5MjJlMjMwNjVkOTRhYzQ5YjRiMWU1NTg2MTBlZjg0
NDBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50
cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3Bw
CkBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpoYW5kbGVz
SWRlbnRpZmllcihjb25zdCBQYXltZW50UmVxdWVzdDo6TWV0aG9kSWRlbnQKICAgICBpZiAoIXN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VVJMPihpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byYgdXJsID0gV1RGOjpnZXQ8VVJMPihpZGVudGlmaWVyKTsKKyAgICBh
dXRvJiB1cmwgPSBzdGQ6OmdldDxVUkw+KGlkZW50aWZpZXIpOwogICAgIHJldHVybiB1cmwuaG9z
dCgpID09ICJhcHBsZS5jb20iICYmIHVybC5wYXRoKCkgPT0gIi9hcHBsZS1wYXkiOwogfQogCkBA
IC03MTEsNyArNzExLDcgQEAgdW5zaWduZWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6dmVyc2lv
bigpIGNvbnN0CiB2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnZhbGlkYXRlTWVyY2hhbnQo
VVJMJiYgdmFsaWRhdGlvblVSTCkKIHsKICAgICBpZiAodmFsaWRhdGlvblVSTC5pc1ZhbGlkKCkp
Ci0gICAgICAgIG1fcGF5bWVudFJlcXVlc3QtPmRpc3BhdGNoRXZlbnQoTWVyY2hhbnRWYWxpZGF0
aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubWVyY2hhbnR2YWxpZGF0aW9uRXZlbnQsIFdU
Rjo6Z2V0PFVSTD4obV9pZGVudGlmaWVyKS5zdHJpbmcoKSwgV1RGTW92ZSh2YWxpZGF0aW9uVVJM
KSkuZ2V0KCkpOworICAgICAgICBtX3BheW1lbnRSZXF1ZXN0LT5kaXNwYXRjaEV2ZW50KE1lcmNo
YW50VmFsaWRhdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm1lcmNoYW50dmFsaWRhdGlv
bkV2ZW50LCBzdGQ6OmdldDxVUkw+KG1faWRlbnRpZmllcikuc3RyaW5nKCksIFdURk1vdmUodmFs
aWRhdGlvblVSTCkpLmdldCgpKTsKIH0KIAogc3RhdGljIFJlZjxQYXltZW50QWRkcmVzcz4gY29u
dmVydChjb25zdCBBcHBsZVBheVBheW1lbnRDb250YWN0JiBjb250YWN0KQpAQCAtNzM2LDcgKzcz
Niw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6ZGlkQXV0aG9yaXplUGF5bWVudChj
b25zdCBQYXltZW50JiBwYXltZW50KQogICAgICAgICByZXR1cm4gdG9KU0RpY3Rpb25hcnkobGV4
aWNhbEdsb2JhbE9iamVjdCwgYXBwbGVQYXlQYXltZW50KTsKICAgICB9OwogCi0gICAgbV9wYXlt
ZW50UmVxdWVzdC0+YWNjZXB0KFdURjo6Z2V0PFVSTD4obV9pZGVudGlmaWVyKS5zdHJpbmcoKSwg
V1RGTW92ZShkZXRhaWxzRnVuY3Rpb24pLCBjb252ZXJ0KHNoaXBwaW5nQ29udGFjdCksIHNoaXBw
aW5nQ29udGFjdC5sb2NhbGl6ZWROYW1lLCBzaGlwcGluZ0NvbnRhY3QuZW1haWxBZGRyZXNzLCBz
aGlwcGluZ0NvbnRhY3QucGhvbmVOdW1iZXIpOworICAgIG1fcGF5bWVudFJlcXVlc3QtPmFjY2Vw
dChzdGQ6OmdldDxVUkw+KG1faWRlbnRpZmllcikuc3RyaW5nKCksIFdURk1vdmUoZGV0YWlsc0Z1
bmN0aW9uKSwgY29udmVydChzaGlwcGluZ0NvbnRhY3QpLCBzaGlwcGluZ0NvbnRhY3QubG9jYWxp
emVkTmFtZSwgc2hpcHBpbmdDb250YWN0LmVtYWlsQWRkcmVzcywgc2hpcHBpbmdDb250YWN0LnBo
b25lTnVtYmVyKTsKIH0KIAogdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkaWRTZWxlY3RT
aGlwcGluZ01ldGhvZChjb25zdCBBcHBsZVBheVNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhv
ZCkKQEAgLTc2Miw3ICs3NjIsNyBAQCB2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRpZFNl
bGVjdFBheW1lbnRNZXRob2QoY29uc3QgUGF5bWVudE1ldGhvZCYgcGF5bWVudAogCiAgICAgYXV0
byBhcHBsZVBheVBheW1lbnRNZXRob2QgPSBwYXltZW50TWV0aG9kLnRvQXBwbGVQYXlQYXltZW50
TWV0aG9kKCk7CiAgICAgbV9zZWxlY3RlZFBheW1lbnRNZXRob2RUeXBlID0gYXBwbGVQYXlQYXlt
ZW50TWV0aG9kLnR5cGU7Ci0gICAgbV9wYXltZW50UmVxdWVzdC0+cGF5bWVudE1ldGhvZENoYW5n
ZWQoV1RGOjpnZXQ8VVJMPihtX2lkZW50aWZpZXIpLnN0cmluZygpLCBbYXBwbGVQYXlQYXltZW50
TWV0aG9kID0gV1RGTW92ZShhcHBsZVBheVBheW1lbnRNZXRob2QpXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0KSB7CisgICAgbV9wYXltZW50UmVxdWVzdC0+cGF5bWVu
dE1ldGhvZENoYW5nZWQoc3RkOjpnZXQ8VVJMPihtX2lkZW50aWZpZXIpLnN0cmluZygpLCBbYXBw
bGVQYXlQYXltZW50TWV0aG9kID0gV1RGTW92ZShhcHBsZVBheVBheW1lbnRNZXRob2QpXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIHJldHVybiB0
b0pTRGljdGlvbmFyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcHBsZVBheVBheW1lbnRNZXRob2Qp
OwogICAgIH0pOwogfQpAQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFu
ZGxlcjo6ZGlkQ2hhbmdlQ291cG9uQ29kZShTdHJpbmcmJiBjb3Vwb25Db2RlKQogICAgIG1fdXBk
YXRlU3RhdGUgPSBVcGRhdGVTdGF0ZTo6Q291cG9uQ29kZTsKIAogICAgIEFwcGxlUGF5Q291cG9u
Q29kZURldGFpbHMgYXBwbGVQYXlDb3Vwb25Db2RlRGV0YWlscyB7IFdURk1vdmUoY291cG9uQ29k
ZSkgfTsKLSAgICBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50TWV0aG9kQ2hhbmdlZChXVEY6Omdl
dDxVUkw+KG1faWRlbnRpZmllcikuc3RyaW5nKCksIFthcHBsZVBheUNvdXBvbkNvZGVEZXRhaWxz
ID0gV1RGTW92ZShhcHBsZVBheUNvdXBvbkNvZGVEZXRhaWxzKV0gKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QpIHsKKyAgICBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50
TWV0aG9kQ2hhbmdlZChzdGQ6OmdldDxVUkw+KG1faWRlbnRpZmllcikuc3RyaW5nKCksIFthcHBs
ZVBheUNvdXBvbkNvZGVEZXRhaWxzID0gV1RGTW92ZShhcHBsZVBheUNvdXBvbkNvZGVEZXRhaWxz
KV0gKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QpIHsKICAgICAgICAg
cmV0dXJuIHRvSlNEaWN0aW9uYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIGFwcGxlUGF5Q291cG9u
Q29kZURldGFpbHMpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcAppbmRleCA3YmNkMDRjOTEwYjA2YTc5OGE3MzI5M2ZjMmIyOTVl
NjJlMjRhMTg3Li45MmUwZDEwN2UyNWEyMGJmOGUxMDdmYWEyNzg3YmZmNDAwOWJkNTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJ
dGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcApAQCAtMjEy
LDEwICsyMTIsMTAgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjppbnZv
a2VDb21wbGV0aW9uSGFuZGxlcigpCiAgICAgZm9yIChhdXRvJiBpdGVtVHlwZUxvYWRlciA6IGl0
ZW1UeXBlTG9hZGVycykgewogICAgICAgICBhdXRvIHR5cGUgPSBpdGVtVHlwZUxvYWRlci0+dHlw
ZSgpOwogICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5cGVMb2FkZXItPmRhdGEoKTsKLSAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAmJiAhIVdURjo6Z2V0
PFN0cmluZz4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlU3RyaW5nKHR5cGUs
IFdURjo6Z2V0PFN0cmluZz4oZGF0YSkpOworICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSkKKyAgICAgICAg
ICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpnZXQ8U3RyaW5nPihkYXRhKSk7
CiAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZl
cj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0ZURhdGEodHlwZSwgV1RGOjpn
ZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7CisgICAgICAgICAgICBjdXN0
b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSku
Y29weVJlZigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY0LDEwICsyNjQsMTAg
QEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbGlwYm9hcmRJdGVtVHlw
ZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWUKICAgICBpZiAobV90eXBlID09ICJ0ZXh0L2h0bWwi
X3MpIHsKICAgICAgICAgU3RyaW5nIG1hcmt1cFRvU2FuaXRpemU7CiAgICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpKSB7Ci0gICAgICAg
ICAgICBhdXRvJiBidWZmZXIgPSBXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKTsK
KyAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Piht
X2RhdGEpOwogICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFN0cmluZzo6ZnJvbVVURjgo
YnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKSkKLSAgICAgICAgICAgIG1hcmt1cFRv
U2FuaXRpemUgPSBXVEY6OmdldDxTdHJpbmc+KG1fZGF0YSk7CisgICAgICAgICAgICBtYXJrdXBU
b1Nhbml0aXplID0gc3RkOjpnZXQ8U3RyaW5nPihtX2RhdGEpOwogCiAgICAgICAgIGlmIChtYXJr
dXBUb1Nhbml0aXplLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3OCw5ICsy
NzgsOSBAQCB2b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsaXBib2FyZEl0
ZW1UeXBlTG9hZGVyOjpzYW5pdGl6ZURhdGFJZk5lZQogICAgIGlmIChtX3R5cGUgPT0gImltYWdl
L3BuZyJfcykgewogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXpl
OwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4o
bV9kYXRhKSkKLSAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSBXVEY6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKKyAgICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUg
PSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9kYXRhKS5wdHIoKTsKICAgICAgICAgZWxz
ZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkpCi0gICAgICAgICAg
ICBidWZmZXJUb1Nhbml0aXplID0gdXRmOEJ1ZmZlcihXVEY6OmdldDxTdHJpbmc+KG1fZGF0YSkp
OworICAgICAgICAgICAgYnVmZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoc3RkOjpnZXQ8U3Ry
aW5nPihtX2RhdGEpKTsKIAogICAgICAgICBpZiAoIWJ1ZmZlclRvU2FuaXRpemUgfHwgYnVmZmVy
VG9TYW5pdGl6ZS0+aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAppbmRleCBhMmRhOTk4NmJjMDdiNzQ4OGQ4NmE5
NmRjZDczNTg3YTRmZTI0NzYzLi45MDk4ZTA1YWY0Yzg0MzNiM2QxM2IzOTU2NTA2NGE5YzE1NDMz
ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcApAQCAtMjA3
LDcgKzIwNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBET01DYWNoZTo6cmVx
dWVzdEZyb21JbmZvKFJlcXVlc3RJbmZvJiYgaW5mbywgYm9vCiB7CiAgICAgUmVmUHRyPEZldGNo
UmVxdWVzdD4gcmVxdWVzdDsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8
RmV0Y2hSZXF1ZXN0Pj4oaW5mbykpIHsKLSAgICAgICAgcmVxdWVzdCA9IFdURjo6Z2V0PFJlZlB0
cjxGZXRjaFJlcXVlc3Q+PihpbmZvKS5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICByZXF1ZXN0
ID0gc3RkOjpnZXQ8UmVmUHRyPEZldGNoUmVxdWVzdD4+KGluZm8pLnJlbGVhc2VOb25OdWxsKCk7
CiAgICAgICAgIGlmIChyZXF1ZXN0LT5tZXRob2QoKSAhPSAiR0VUIiAmJiAhaWdub3JlTWV0aG9k
KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlJlcXVlc3QgbWV0
aG9kIGlzIG5vdCBHRVQiX3MgfTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5oCmluZGV4IDA1YWE4ZWZlZWIyOTAyMTlhNmUwZDEzNDIyNDZiYjdkYzFm
ZTlkMjkuLmYzNDM2ZDRhYmQ0OWEwM2JhNzlkMmM4ZWUxZjdkYWNhZjk3MTJhZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApAQCAtMTEwLDE0ICsxMTAsMTQgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzVVJMU2VhcmNoUGFyYW1zKCkgY29uc3QgeyByZXR1cm4gc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8Y29uc3QgVVJMU2VhcmNoUGFyYW1zPj4obV9kYXRhKTsg
fQogICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KG1fZGF0YSk7IH0KIAotICAgIGNvbnN0IEJsb2ImIGJsb2JCb2R5KCkgY29uc3Qg
eyByZXR1cm4gV1RGOjpnZXQ8UmVmPGNvbnN0IEJsb2I+PihtX2RhdGEpLmdldCgpOyB9Ci0gICAg
Rm9ybURhdGEmIGZvcm1EYXRhQm9keSgpIHsgcmV0dXJuIFdURjo6Z2V0PFJlZjxGb3JtRGF0YT4+
KG1fZGF0YSkuZ2V0KCk7IH0KLSAgICBjb25zdCBGb3JtRGF0YSYgZm9ybURhdGFCb2R5KCkgY29u
c3QgeyByZXR1cm4gV1RGOjpnZXQ8UmVmPEZvcm1EYXRhPj4obV9kYXRhKS5nZXQoKTsgfQotICAg
IGNvbnN0IEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlckJvZHkoKSBjb25zdCB7IHJldHVybiBXVEY6
OmdldDxSZWY8Y29uc3QgQXJyYXlCdWZmZXI+PihtX2RhdGEpLmdldCgpOyB9Ci0gICAgY29uc3Qg
QXJyYXlCdWZmZXJWaWV3JiBhcnJheUJ1ZmZlclZpZXdCb2R5KCkgY29uc3QgeyByZXR1cm4gV1RG
OjpnZXQ8UmVmPGNvbnN0IEFycmF5QnVmZmVyVmlldz4+KG1fZGF0YSkuZ2V0KCk7IH0KLSAgICBT
dHJpbmcmIHRleHRCb2R5KCkgeyByZXR1cm4gV1RGOjpnZXQ8U3RyaW5nPihtX2RhdGEpOyB9Ci0g
ICAgY29uc3QgU3RyaW5nJiB0ZXh0Qm9keSgpIGNvbnN0IHsgcmV0dXJuIFdURjo6Z2V0PFN0cmlu
Zz4obV9kYXRhKTsgfQotICAgIGNvbnN0IFVSTFNlYXJjaFBhcmFtcyYgdXJsU2VhcmNoUGFyYW1z
Qm9keSgpIGNvbnN0IHsgcmV0dXJuIFdURjo6Z2V0PFJlZjxjb25zdCBVUkxTZWFyY2hQYXJhbXM+
PihtX2RhdGEpLmdldCgpOyB9CisgICAgY29uc3QgQmxvYiYgYmxvYkJvZHkoKSBjb25zdCB7IHJl
dHVybiBzdGQ6OmdldDxSZWY8Y29uc3QgQmxvYj4+KG1fZGF0YSkuZ2V0KCk7IH0KKyAgICBGb3Jt
RGF0YSYgZm9ybURhdGFCb2R5KCkgeyByZXR1cm4gc3RkOjpnZXQ8UmVmPEZvcm1EYXRhPj4obV9k
YXRhKS5nZXQoKTsgfQorICAgIGNvbnN0IEZvcm1EYXRhJiBmb3JtRGF0YUJvZHkoKSBjb25zdCB7
IHJldHVybiBzdGQ6OmdldDxSZWY8Rm9ybURhdGE+PihtX2RhdGEpLmdldCgpOyB9CisgICAgY29u
c3QgQXJyYXlCdWZmZXImIGFycmF5QnVmZmVyQm9keSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6Z2V0
PFJlZjxjb25zdCBBcnJheUJ1ZmZlcj4+KG1fZGF0YSkuZ2V0KCk7IH0KKyAgICBjb25zdCBBcnJh
eUJ1ZmZlclZpZXcmIGFycmF5QnVmZmVyVmlld0JvZHkoKSBjb25zdCB7IHJldHVybiBzdGQ6Omdl
dDxSZWY8Y29uc3QgQXJyYXlCdWZmZXJWaWV3Pj4obV9kYXRhKS5nZXQoKTsgfQorICAgIFN0cmlu
ZyYgdGV4dEJvZHkoKSB7IHJldHVybiBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7IH0KKyAgICBj
b25zdCBTdHJpbmcmIHRleHRCb2R5KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8U3RyaW5nPiht
X2RhdGEpOyB9CisgICAgY29uc3QgVVJMU2VhcmNoUGFyYW1zJiB1cmxTZWFyY2hQYXJhbXNCb2R5
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8UmVmPGNvbnN0IFVSTFNlYXJjaFBhcmFtcz4+KG1f
ZGF0YSkuZ2V0KCk7IH0KIAogICAgIHVzaW5nIERhdGEgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFJlZjxjb25zdCBCbG9iPiwgUmVmPEZvcm1EYXRhPiwgUmVmPGNvbnN0IEFycmF5QnVm
ZmVyPiwgUmVmPGNvbnN0IEFycmF5QnVmZmVyVmlldz4sIFJlZjxjb25zdCBVUkxTZWFyY2hQYXJh
bXM+LCBTdHJpbmc+OwogICAgIERhdGEgbV9kYXRhIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuY3BwCmluZGV4IGIyZWYwYTk0ZGM3M2Iw
ZTVhNTUyOWZmYjAyN2Q5ZmFiMjc3YTA5YmUuLjIwODRlMDJkZGUxNjA3YzYzNWNiZDdjYzY2OGE2
MWRhZmM4YzMwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hIZWFkZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVh
ZGVycy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVu
ZFRvSGVhZGVyTWFwKGNvbnN0IEhUVFBIZWFkZXJNYXA6OkhUVFBIZWFkZXJNYXBDb24KIHN0YXRp
YyBFeGNlcHRpb25Pcjx2b2lkPiBmaWxsSGVhZGVyTWFwKEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMs
IGNvbnN0IEZldGNoSGVhZGVyczo6SW5pdCYgaGVhZGVyc0luaXQsIEZldGNoSGVhZGVyczo6R3Vh
cmQgZ3VhcmQpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFZlY3Rv
cjxTdHJpbmc+Pj4oaGVhZGVyc0luaXQpKSB7Ci0gICAgICAgIGF1dG8mIHNlcXVlbmNlID0gV1RG
OjpnZXQ8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Pj4oaGVhZGVyc0luaXQpOworICAgICAgICBhdXRv
JiBzZXF1ZW5jZSA9IHN0ZDo6Z2V0PFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4+KGhlYWRlcnNJbml0
KTsKICAgICAgICAgZm9yIChhdXRvJiBoZWFkZXIgOiBzZXF1ZW5jZSkgewogICAgICAgICAgICAg
aWYgKGhlYWRlci5zaXplKCkgIT0gMikKICAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgVHlwZUVycm9yLCAiSGVhZGVyIHN1Yi1zZXF1ZW5jZSBtdXN0IGNvbnRhaW4gZXhhY3RseSB0
d28gaXRlbXMiIH07CkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+
IGZpbGxIZWFkZXJNYXAoSFRUUEhlYWRlck1hcCYgaGVhZGVycywgY29uc3QgRmV0Y2hIZWFkZXIK
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8mIHJlY29yZCA9IFdURjo6Z2V0PFZlY3Rv
cjxXVEY6OktleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4+PihoZWFkZXJzSW5pdCk7CisgICAg
ICAgIGF1dG8mIHJlY29yZCA9IHN0ZDo6Z2V0PFZlY3RvcjxXVEY6OktleVZhbHVlUGFpcjxTdHJp
bmcsIFN0cmluZz4+PihoZWFkZXJzSW5pdCk7CiAgICAgICAgIGZvciAoYXV0byYgaGVhZGVyIDog
cmVjb3JkKSB7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGFwcGVuZFRvSGVhZGVyTWFwKGhl
YWRlci5rZXksIGhlYWRlci52YWx1ZSwgaGVhZGVycywgZ3VhcmQpOwogICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmNwcAppbmRleCAwMTExMDdkZmI2YTBkZWQ2YWUyN2NkZjU3NTJlOWMyMTBh
ZDE1NWEyLi5hOTU0NzQwZDNlNDNjZGUzMTIwYzEzMzViNjJkNzE0Yjc2ZDExYWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0yNzYsMTEg
KzI3NiwxMSBAQCBFeGNlcHRpb25PcjxSZWY8RmV0Y2hSZXF1ZXN0Pj4gRmV0Y2hSZXF1ZXN0Ojpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAgIGF1dG8gcmVxdWVzdCA9IGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXF1ZXN0KGNvbnRleHQsIHN0ZDo6bnVsbG9wdCwgRmV0Y2hIZWFk
ZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVzdCksIHsgfSwgeyB9LCB7IH0p
KTsKIAogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oaW5wdXQpKSB7Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gcmVxdWVzdC0+aW5pdGlhbGl6ZVdpdGgoV1RGOjpnZXQ8U3Ry
aW5nPihpbnB1dCksIFdURk1vdmUoaW5pdCkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcXVl
c3QtPmluaXRpYWxpemVXaXRoKHN0ZDo6Z2V0PFN0cmluZz4oaW5wdXQpLCBXVEZNb3ZlKGluaXQp
KTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gcmVxdWVzdC0+aW5pdGlhbGl6ZVdpdGgoKldURjo6Z2V0PFJlZlB0cjxGZXRjaFJl
cXVlc3Q+PihpbnB1dCksIFdURk1vdmUoaW5pdCkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJl
cXVlc3QtPmluaXRpYWxpemVXaXRoKCpzdGQ6OmdldDxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5w
dXQpLCBXVEZNb3ZlKGluaXQpKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRl
eCBjNWMyNDRmMzc0NjBkMDA0YTRlZDE4YjAzYjM5ZjM1ZWY5ZjVmMGIwLi4wOTM0YmNjMDBkOThk
ZjM2Nzg5OWZhYTY3ZDBjOTkxMTE3YmE4MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgRXhjZXB0
aW9uT3I8UmVmPElEQk9iamVjdFN0b3JlPj4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmEKICAgICBpZiAobV9pbmZvLmhhc09iamVjdFN0b3JlKG5hbWUpKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgQ29uc3RyYWludEVycm9yLCAiRmFpbGVkIHRvIGV4
ZWN1dGUgJ2NyZWF0ZU9iamVjdFN0b3JlJyBvbiAnSURCRGF0YWJhc2UnOiBBbiBvYmplY3Qgc3Rv
cmUgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgYWxyZWFkeSBleGlzdHMuIl9zIH07CiAKLSAgICBp
ZiAoa2V5UGF0aCAmJiBwYXJhbWV0ZXJzLmF1dG9JbmNyZW1lbnQgJiYgKChzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFN0cmluZz4oa2V5UGF0aC52YWx1ZSgpKSAmJiBXVEY6OmdldDxTdHJpbmc+KGtl
eVBhdGgudmFsdWUoKSkuaXNFbXB0eSgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rv
cjxTdHJpbmc+PihrZXlQYXRoLnZhbHVlKCkpKSkKKyAgICBpZiAoa2V5UGF0aCAmJiBwYXJhbWV0
ZXJzLmF1dG9JbmNyZW1lbnQgJiYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oa2V5
UGF0aC52YWx1ZSgpKSAmJiBzdGQ6OmdldDxTdHJpbmc+KGtleVBhdGgudmFsdWUoKSkuaXNFbXB0
eSgpKSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxTdHJpbmc+PihrZXlQYXRoLnZh
bHVlKCkpKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwg
IkZhaWxlZCB0byBleGVjdXRlICdjcmVhdGVPYmplY3RTdG9yZScgb24gJ0lEQkRhdGFiYXNlJzog
VGhlIGF1dG9JbmNyZW1lbnQgb3B0aW9uIHdhcyBzZXQgYnV0IHRoZSBrZXlQYXRoIG9wdGlvbiB3
YXMgZW1wdHkgb3IgYW4gYXJyYXkuIl9zIH07CiAKICAgICAvLyBJbnN0YWxsIHRoZSBuZXcgT2Jq
ZWN0U3RvcmUgaW50byB0aGUgY29ubmVjdGlvbidzIG1ldGFkYXRhLgpAQCAtMTc2LDkgKzE3Niw5
IEBAIEV4Y2VwdGlvbk9yPFJlZjxJREJUcmFuc2FjdGlvbj4+IElEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbihTdHJpbmdPclZlY3Rvck9mU3RyaW5nCiAKICAgICBWZWN0b3I8U3RyaW5nPiBvYmplY3RT
dG9yZXM7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFN0cmluZz4+KHN0
b3JlTmFtZXMpKQotICAgICAgICBvYmplY3RTdG9yZXMgPSBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rv
cjxTdHJpbmc+PihzdG9yZU5hbWVzKSk7CisgICAgICAgIG9iamVjdFN0b3JlcyA9IFdURk1vdmUo
c3RkOjpnZXQ8VmVjdG9yPFN0cmluZz4+KHN0b3JlTmFtZXMpKTsKICAgICBlbHNlCi0gICAgICAg
IG9iamVjdFN0b3Jlcy5hcHBlbmQoV1RGTW92ZShXVEY6OmdldDxTdHJpbmc+KHN0b3JlTmFtZXMp
KSk7CisgICAgICAgIG9iamVjdFN0b3Jlcy5hcHBlbmQoV1RGTW92ZShzdGQ6OmdldDxTdHJpbmc+
KHN0b3JlTmFtZXMpKSk7CiAKICAgICAvLyBJdCBpcyB2YWxpZCBmb3IgamF2YXNjcmlwdCB0byBw
YXNzIGluIGEgbGlzdCBvZiBvYmplY3Qgc3RvcmUgbmFtZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGxp
c3RlZCB0d2ljZSwKICAgICAvLyBzbyB3ZSBuZWVkIHRvIHB1dCB0aGVtIGFsbCBpbiBhIHNldCB0
byBnZXQgYSB1bmlxdWUgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXkuY3BwCmluZGV4IDc5Y2E0NjQ0ZmYzOWQyMzY0MGM3ZjVkY2M5OTJmYmVkMTQ3OWMwNGQu
LjRmYjI2Mzg1NDgyOGI5ZjdmOGU0ZmJiYWIwN2Q0YTM0ZWY0ZjczNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcApAQCAtOTQsNyArOTQsNyBAQCBib29s
IElEQktleTo6aXNWYWxpZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
IChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheSkgewotICAgICAgICBmb3IgKGF1
dG8mIGtleSA6IFdURjo6Z2V0PElEQktleVZlY3Rvcj4obV92YWx1ZSkpIHsKKyAgICAgICAgZm9y
IChhdXRvJiBrZXkgOiBzdGQ6OmdldDxJREJLZXlWZWN0b3I+KG1fdmFsdWUpKSB7CiAgICAgICAg
ICAgICBpZiAoIWtleS0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMTEwLDggKzExMCw4IEBAIGludCBJREJLZXk6OmNvbXBhcmUoY29uc3Qg
SURCS2V5JiBvdGhlcikgY29uc3QKIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7Ci0gICAgICAgIGF1dG8mIGFycmF5ID0gV1RGOjpn
ZXQ8SURCS2V5VmVjdG9yPihtX3ZhbHVlKTsKLSAgICAgICAgYXV0byYgb3RoZXJBcnJheSA9IFdU
Rjo6Z2V0PElEQktleVZlY3Rvcj4ob3RoZXIubV92YWx1ZSk7CisgICAgICAgIGF1dG8mIGFycmF5
ID0gc3RkOjpnZXQ8SURCS2V5VmVjdG9yPihtX3ZhbHVlKTsKKyAgICAgICAgYXV0byYgb3RoZXJB
cnJheSA9IHN0ZDo6Z2V0PElEQktleVZlY3Rvcj4ob3RoZXIubV92YWx1ZSk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpICYmIGkgPCBvdGhlckFycmF5LnNpemUo
KTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaW50IHJlc3VsdCA9IGFycmF5W2ldLT5jb21wYXJl
KCpvdGhlckFycmF5W2ldKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTIz
LDEzICsxMjMsMTMgQEAgaW50IElEQktleTo6Y29tcGFyZShjb25zdCBJREJLZXkmIG90aGVyKSBj
b25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5
cGU6OkJpbmFyeToKLSAgICAgICAgcmV0dXJuIGNvbXBhcmVCaW5hcnlLZXlEYXRhKFdURjo6Z2V0
PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSwgV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFC
dWZmZXI+KG90aGVyLm1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVCaW5hcnlLZXlE
YXRhKHN0ZDo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSwgc3RkOjpnZXQ8VGhy
ZWFkU2FmZURhdGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6
S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICByZXR1cm4gLWNvZGVQb2ludENvbXBhcmUoV1RGOjpn
ZXQ8U3RyaW5nPihvdGhlci5tX3ZhbHVlKSwgV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSk7Cisg
ICAgICAgIHJldHVybiAtY29kZVBvaW50Q29tcGFyZShzdGQ6OmdldDxTdHJpbmc+KG90aGVyLm1f
dmFsdWUpLCBzdGQ6OmdldDxTdHJpbmc+KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6
S2V5VHlwZTo6RGF0ZToKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOiB7Ci0g
ICAgICAgIGF1dG8gbnVtYmVyID0gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKLSAgICAgICAg
YXV0byBvdGhlck51bWJlciA9IFdURjo6Z2V0PGRvdWJsZT4ob3RoZXIubV92YWx1ZSk7CisgICAg
ICAgIGF1dG8gbnVtYmVyID0gc3RkOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKKyAgICAgICAgYXV0
byBvdGhlck51bWJlciA9IHN0ZDo6Z2V0PGRvdWJsZT4ob3RoZXIubV92YWx1ZSk7CiAgICAgICAg
IHJldHVybiAobnVtYmVyIDwgb3RoZXJOdW1iZXIpID8gLTEgOiAoKG51bWJlciA+IG90aGVyTnVt
YmVyKSA/IDEgOiAwKTsKICAgICB9CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkludmFs
aWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXku
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCmluZGV4IGY1M2Fi
MjRlZmU3NzBjMzM0MzU2OTAyMjhmYWU3MTdlNDYwY2Q5ZjAuLjA1NmVjMDlhZGJhNzc2NGQzMDhk
ZjZkNmNlOTA4MzkwODc0YmM2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleS5oCkBAIC0xMTEsMzEgKzExMSwzMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxJREJLZXk+PiYgYXJyYXkoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5KTsKLSAgICAgICAgcmV0dXJuIFdURjo6
Z2V0PFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4+KG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3Rk
OjpnZXQ8VmVjdG9yPFJlZlB0cjxJREJLZXk+Pj4obV92YWx1ZSk7CiAgICAgfQogCiAgICAgY29u
c3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBJbmRleGVkREI6OktleVR5cGU6OlN0cmluZyk7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxT
dHJpbmc+KG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpnZXQ8U3RyaW5nPihtX3ZhbHVl
KTsKICAgICB9CiAKICAgICBkb3VibGUgZGF0ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0ZSk7Ci0gICAgICAgIHJldHVybiBX
VEY6OmdldDxkb3VibGU+KG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpnZXQ8ZG91Ymxl
PihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBkb3VibGUgbnVtYmVyKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXIpOwotICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7CiAgICAgfQogCiAgICAgY29uc3QgVGhyZWFkU2FmZURh
dGFCdWZmZXImIGJpbmFyeSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09
IEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5KTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFRo
cmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFRo
cmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBpbnQgY29tcGFyZShj
b25zdCBJREJLZXkmIG90aGVyKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5RGF0YS5jcHAKaW5kZXggOGY3OGM0YzdlYmU4Nzc0OWNjMjM4YjRjZjc1
MDRmODA0ZGNhMzQ3ZC4uMmEzN2M1MjhlZjViZjlkOTU3NzNhMGIxMGYwMjUyMjliZGU1YTQxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgSURCS2V5RGF0YTo6SURCS2V5RGF0YShjb25zdCBJREJLZXkqIGtl
eSkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7
CiAgICAgICAgIG1fdmFsdWUgPSBWZWN0b3I8SURCS2V5RGF0YT4oKTsKLSAgICAgICAgYXV0byYg
YXJyYXkgPSBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUpOworICAgICAgICBh
dXRvJiBhcnJheSA9IHN0ZDo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSk7CiAgICAg
ICAgIGZvciAoYXV0byYga2V5MiA6IGtleS0+YXJyYXkoKSkKICAgICAgICAgICAgIGFycmF5LmFw
cGVuZChJREJLZXlEYXRhKGtleTIuZ2V0KCkpKTsKICAgICAgICAgYnJlYWs7CkBAIC04MCwyMCAr
ODAsMjAgQEAgUmVmUHRyPElEQktleT4gSURCS2V5RGF0YTo6bWF5YmVDcmVhdGVJREJLZXkoKSBj
b25zdAogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVJbnZhbGlkKCk7CiAgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5
Pj4gYXJyYXk7Ci0gICAgICAgIGZvciAoYXV0byYga2V5RGF0YSA6IFdURjo6Z2V0PFZlY3RvcjxJ
REJLZXlEYXRhPj4obV92YWx1ZSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBrZXlEYXRhIDogc3Rk
OjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKSkgewogICAgICAgICAgICAgYXJyYXku
YXBwZW5kKGtleURhdGEubWF5YmVDcmVhdGVJREJLZXkoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
YXJyYXkubGFzdCgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVB
cnJheShhcnJheSk7CiAgICAgfQogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6
Ci0gICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUJpbmFyeShXVEY6OmdldDxUaHJlYWRTYWZl
RGF0YUJ1ZmZlcj4obV92YWx1ZSkpOworICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVCaW5h
cnkoc3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpKTsKICAgICBjYXNlIElu
ZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVT
dHJpbmcoV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSk7CisgICAgICAgIHJldHVybiBJREJLZXk6
OmNyZWF0ZVN0cmluZyhzdGQ6OmdldDxTdHJpbmc+KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6RGF0ZToKLSAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlRGF0ZShX
VEY6OmdldDxkb3VibGU+KG1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRl
RGF0ZShzdGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6TnVtYmVyOgotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIoV1RGOjpn
ZXQ8ZG91YmxlPihtX3ZhbHVlKSk7CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZU51bWJl
cihzdGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlw
ZTo6TWF4OgogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNaW46CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTI0LDIwICsxMjQsMjAgQEAgdm9pZCBJREJLZXlEYXRhOjpp
c29sYXRlZENvcHkoY29uc3QgSURCS2V5RGF0YSYgc291cmNlLCBJREJLZXlEYXRhJiBkZXN0aW5h
dGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJh
eTogewogICAgICAgICBkZXN0aW5hdGlvbi5tX3ZhbHVlID0gVmVjdG9yPElEQktleURhdGE+KCk7
Ci0gICAgICAgIGF1dG8mIGRlc3RpbmF0aW9uQXJyYXkgPSBXVEY6OmdldDxWZWN0b3I8SURCS2V5
RGF0YT4+KGRlc3RpbmF0aW9uLm1fdmFsdWUpOwotICAgICAgICBmb3IgKGF1dG8mIGtleSA6IFdU
Rjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4oc291cmNlLm1fdmFsdWUpKQorICAgICAgICBhdXRv
JiBkZXN0aW5hdGlvbkFycmF5ID0gc3RkOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihkZXN0aW5h
dGlvbi5tX3ZhbHVlKTsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBzdGQ6OmdldDxWZWN0b3I8
SURCS2V5RGF0YT4+KHNvdXJjZS5tX3ZhbHVlKSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uQXJy
YXkuYXBwZW5kKGtleS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeToKLSAgICAgICAgZGVzdGluYXRpb24u
bV92YWx1ZSA9IFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihzb3VyY2UubV92YWx1ZSk7
CisgICAgICAgIGRlc3RpbmF0aW9uLm1fdmFsdWUgPSBzdGQ6OmdldDxUaHJlYWRTYWZlRGF0YUJ1
ZmZlcj4oc291cmNlLm1fdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6OlN0cmluZzoKLSAgICAgICAgZGVzdGluYXRpb24ubV92YWx1ZSA9IFdURjo6
Z2V0PFN0cmluZz4oc291cmNlLm1fdmFsdWUpLmlzb2xhdGVkQ29weSgpOworICAgICAgICBkZXN0
aW5hdGlvbi5tX3ZhbHVlID0gc3RkOjpnZXQ8U3RyaW5nPihzb3VyY2UubV92YWx1ZSkuaXNvbGF0
ZWRDb3B5KCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6
RGF0ZToKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOgotICAgICAgICBkZXN0
aW5hdGlvbi5tX3ZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPihzb3VyY2UubV92YWx1ZSk7CisgICAg
ICAgIGRlc3RpbmF0aW9uLm1fdmFsdWUgPSBzdGQ6OmdldDxkb3VibGU+KHNvdXJjZS5tX3ZhbHVl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNYXg6CiAg
ICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKQEAgLTE1OSwyNSArMTU5LDI1IEBAIHZv
aWQgSURCS2V5RGF0YTo6ZW5jb2RlKEtleWVkRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBj
YXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheTogewotICAgICAgICBhdXRvJiBhcnJheSA9IFdU
Rjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSk7CisgICAgICAgIGF1dG8mIGFycmF5
ID0gc3RkOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKICAgICAgICAgZW5jb2Rl
ci5lbmNvZGVPYmplY3RzKCJhcnJheSIsIGFycmF5LmJlZ2luKCksIGFycmF5LmVuZCgpLCBbXShL
ZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IElEQktleURhdGEmIGtleSkgewogICAgICAgICAg
ICAga2V5LmVuY29kZShlbmNvZGVyKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeTogewotICAgICAgICBhdXRv
KiBkYXRhID0gV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpLmRhdGEoKTsK
KyAgICAgICAgYXV0byogZGF0YSA9IHN0ZDo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3Zh
bHVlKS5kYXRhKCk7CiAgICAgICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiaGFzQmluYXJ5IiwgISFk
YXRhKTsKICAgICAgICAgaWYgKGRhdGEpCiAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZUJ5dGVz
KCJiaW5hcnkiLCBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OlN0cmluZzoKLSAgICAgICAgZW5j
b2Rlci5lbmNvZGVTdHJpbmcoInN0cmluZyIsIFdURjo6Z2V0PFN0cmluZz4obV92YWx1ZSkpOwor
ICAgICAgICBlbmNvZGVyLmVuY29kZVN0cmluZygic3RyaW5nIiwgc3RkOjpnZXQ8U3RyaW5nPiht
X3ZhbHVlKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6
RGF0ZToKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOgotICAgICAgICBlbmNv
ZGVyLmVuY29kZURvdWJsZSgibnVtYmVyIiwgV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKSk7Cisg
ICAgICAgIGVuY29kZXIuZW5jb2RlRG91YmxlKCJudW1iZXIiLCBzdGQ6OmdldDxkb3VibGU+KG1f
dmFsdWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpN
YXg6CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKQEAgLTIxOSwxMiArMjE5LDEy
IEBAIGJvb2wgSURCS2V5RGF0YTo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2RlciwgSURCS2V5
RGF0YSYgcmVzdWx0KQogCiAgICAgaWYgKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlU
eXBlOjpTdHJpbmcpIHsKICAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSBTdHJpbmcoKTsKLSAgICAg
ICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlU3RyaW5nKCJzdHJpbmciLCBXVEY6OmdldDxTdHJpbmc+
KHJlc3VsdC5tX3ZhbHVlKSk7CisgICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZVN0cmluZygi
c3RyaW5nIiwgc3RkOjpnZXQ8U3RyaW5nPihyZXN1bHQubV92YWx1ZSkpOwogICAgIH0KIAogICAg
IGlmIChyZXN1bHQubV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyIHx8IHJlc3Vs
dC5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlKSB7CiAgICAgICAgIHJlc3VsdC5t
X3ZhbHVlID0gMC4wOwotICAgICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGVEb3VibGUoIm51bWJl
ciIsIFdURjo6Z2V0PGRvdWJsZT4ocmVzdWx0Lm1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGRl
Y29kZXIuZGVjb2RlRG91YmxlKCJudW1iZXIiLCBzdGQ6OmdldDxkb3VibGU+KHJlc3VsdC5tX3Zh
bHVlKSk7CiAgICAgfQogCiAgICAgaWYgKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlU
eXBlOjpCaW5hcnkpIHsKQEAgLTI1Miw3ICsyNTIsNyBAQCBib29sIElEQktleURhdGE6OmRlY29k
ZShLZXllZERlY29kZXImIGRlY29kZXIsIElEQktleURhdGEmIHJlc3VsdCkKICAgICB9OwogICAg
IAogICAgIHJlc3VsdC5tX3ZhbHVlID0gVmVjdG9yPElEQktleURhdGE+KCk7Ci0gICAgcmV0dXJu
IGRlY29kZXIuZGVjb2RlT2JqZWN0cygiYXJyYXkiLCBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0
YT4+KHJlc3VsdC5tX3ZhbHVlKSwgYXJyYXlGdW5jdGlvbik7CisgICAgcmV0dXJuIGRlY29kZXIu
ZGVjb2RlT2JqZWN0cygiYXJyYXkiLCBzdGQ6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KHJlc3Vs
dC5tX3ZhbHVlKSwgYXJyYXlGdW5jdGlvbik7CiB9CiAKIGludCBJREJLZXlEYXRhOjpjb21wYXJl
KGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdApAQCAtMjc2LDggKzI3Niw4IEBAIGludCBJ
REJLZXlEYXRhOjpjb21wYXJlKGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdAogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBJbmRl
eGVkREI6OktleVR5cGU6OkFycmF5OiB7Ci0gICAgICAgIGF1dG8mIGFycmF5ID0gV1RGOjpnZXQ8
VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKLSAgICAgICAgYXV0byYgb3RoZXJBcnJheSA9
IFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4ob3RoZXIubV92YWx1ZSk7CisgICAgICAgIGF1
dG8mIGFycmF5ID0gc3RkOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKKyAgICAg
ICAgYXV0byYgb3RoZXJBcnJheSA9IHN0ZDo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4ob3RoZXIu
bV92YWx1ZSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpICYm
IGkgPCBvdGhlckFycmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaW50IHJlc3Vs
dCA9IGFycmF5W2ldLmNvbXBhcmUob3RoZXJBcnJheVtpXSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKQEAgLTI4OSwxMyArMjg5LDEzIEBAIGludCBJREJLZXlEYXRhOjpjb21wYXJl
KGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeToKLSAgICAgICAgcmV0dXJuIGNv
bXBhcmVCaW5hcnlLZXlEYXRhKFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVl
KSwgV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbXBhcmVCaW5hcnlLZXlEYXRhKHN0ZDo6Z2V0PFRocmVhZFNhZmVEYXRhQnVm
ZmVyPihtX3ZhbHVlKSwgc3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG90aGVyLm1fdmFs
dWUpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICByZXR1
cm4gY29kZVBvaW50Q29tcGFyZShXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUpLCBXVEY6OmdldDxT
dHJpbmc+KG90aGVyLm1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUo
c3RkOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSwgc3RkOjpnZXQ8U3RyaW5nPihvdGhlci5tX3ZhbHVl
KSk7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6CiAgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6Ok51bWJlcjogewotICAgICAgICBhdXRvIG51bWJlciA9IFdURjo6Z2V0PGRv
dWJsZT4obV92YWx1ZSk7Ci0gICAgICAgIGF1dG8gb3RoZXJOdW1iZXIgPSBXVEY6OmdldDxkb3Vi
bGU+KG90aGVyLm1fdmFsdWUpOworICAgICAgICBhdXRvIG51bWJlciA9IHN0ZDo6Z2V0PGRvdWJs
ZT4obV92YWx1ZSk7CisgICAgICAgIGF1dG8gb3RoZXJOdW1iZXIgPSBzdGQ6OmdldDxkb3VibGU+
KG90aGVyLm1fdmFsdWUpOwogCiAgICAgICAgIGlmIChudW1iZXIgPT0gb3RoZXJOdW1iZXIpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKQEAgLTMyNCw3ICszMjQsNyBAQCBTdHJpbmcgSURCS2V5RGF0
YTo6bG9nZ2luZ1N0cmluZygpIGNvbnN0CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFy
cmF5OiB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5h
cHBlbmQoIjxhcnJheT4gLSB7ICIpOwotICAgICAgICBhdXRvJiBhcnJheSA9IFdURjo6Z2V0PFZl
Y3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSk7CisgICAgICAgIGF1dG8mIGFycmF5ID0gc3RkOjpn
ZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcnJheS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQo
YXJyYXlbaV0ubG9nZ2luZ1N0cmluZygpKTsKICAgICAgICAgICAgIGlmIChpIDwgYXJyYXkuc2l6
ZSgpIC0gMSkKQEAgLTMzOCw3ICszMzgsNyBAQCBTdHJpbmcgSURCS2V5RGF0YTo6bG9nZ2luZ1N0
cmluZygpIGNvbnN0CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVp
bGRlci5hcHBlbmQoIjxiaW5hcnk+IC0gIik7CiAKLSAgICAgICAgYXV0byogZGF0YSA9IFdURjo6
Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKS5kYXRhKCk7CisgICAgICAgIGF1dG8q
IGRhdGEgPSBzdGQ6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkuZGF0YSgpOwog
ICAgICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIobnVsbCki
KTsKICAgICAgICAgICAgIHJlc3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTM1OSwxMiAr
MzU5LDEyIEBAIFN0cmluZyBJREJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6Ci0g
ICAgICAgIHJlc3VsdCA9ICI8c3RyaW5nPiAtICIgKyBXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUp
OworICAgICAgICByZXN1bHQgPSAiPHN0cmluZz4gLSAiICsgc3RkOjpnZXQ8U3RyaW5nPihtX3Zh
bHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6
Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCI8ZGF0ZT4gLSAiLCBXVEY6OmdldDxkb3VibGU+
KG1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIjxkYXRlPiAtICIsIHN0ZDo6
Z2V0PGRvdWJsZT4obV92YWx1ZSkpOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1i
ZXI6Ci0gICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCI8bnVtYmVyPiAtICIsIFdURjo6Z2V0PGRv
dWJsZT4obV92YWx1ZSkpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiPG51bWJlcj4gLSAi
LCBzdGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlw
ZTo6TWF4OgogICAgICAgICByZXR1cm4gIjxtYXhpbXVtPiJfczsKICAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6TWluOgpAQCAtNDUxLDEzICs0NTEsMTMgQEAgYm9vbCBJREJLZXlEYXRhOjpv
cGVyYXRvcj09KGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOgogICAgIGNhc2UgSW5k
ZXhlZERCOjpLZXlUeXBlOjpEYXRlOgotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8ZG91YmxlPiht
X3ZhbHVlKSA9PSBXVEY6OmdldDxkb3VibGU+KG90aGVyLm1fdmFsdWUpOworICAgICAgICByZXR1
cm4gc3RkOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKSA9PSBzdGQ6OmdldDxkb3VibGU+KG90aGVyLm1f
dmFsdWUpOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6Ci0gICAgICAgIHJl
dHVybiBXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUpID09IFdURjo6Z2V0PFN0cmluZz4ob3RoZXIu
bV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxTdHJpbmc+KG1fdmFsdWUpID09IHN0
ZDo6Z2V0PFN0cmluZz4ob3RoZXIubV92YWx1ZSk7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5
cGU6OkJpbmFyeToKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVy
PihtX3ZhbHVlKSA9PSBXVEY6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4ob3RoZXIubV92YWx1
ZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1
ZSkgPT0gc3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpOwogICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheToKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0
PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSkgPT0gV1RGOjpnZXQ8VmVjdG9yPElEQktleURh
dGE+PihvdGhlci5tX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFZlY3RvcjxJREJL
ZXlEYXRhPj4obV92YWx1ZSkgPT0gc3RkOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihvdGhlci5t
X3ZhbHVlKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAg
LTQ3MywxNCArNDczLDE0IEBAIHNpemVfdCBJREJLZXlEYXRhOjpzaXplKCkgY29uc3QKICAgICBj
YXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6IHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxJ
REJLZXk+PiBhcnJheTsKICAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7Ci0gICAgICAgIGZv
ciAoYXV0byYga2V5RGF0YSA6IFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSkp
CisgICAgICAgIGZvciAoYXV0byYga2V5RGF0YSA6IHN0ZDo6Z2V0PFZlY3RvcjxJREJLZXlEYXRh
Pj4obV92YWx1ZSkpCiAgICAgICAgICAgICB0b3RhbFNpemUgKz0ga2V5RGF0YS5zaXplKCk7CiAg
ICAgICAgIHJldHVybiB0b3RhbFNpemU7CiAgICAgfQogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlU
eXBlOjpCaW5hcnk6Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZl
cj4obV92YWx1ZSkuc2l6ZSgpOworICAgICAgICByZXR1cm4gc3RkOjpnZXQ8VGhyZWFkU2FmZURh
dGFCdWZmZXI+KG1fdmFsdWUpLnNpemUoKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6
U3RyaW5nOgotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKS5zaXplSW5C
eXRlcygpOworICAgICAgICByZXR1cm4gc3RkOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKS5zaXplSW5C
eXRlcygpOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlOgogICAgIGNhc2UgSW5k
ZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG91YmxlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaAppbmRleCBl
NzYxNzM5ZWFmODgyYTNkMjhlZDgyNGI0OWQ1NWY0MjkyOWJhOTZkLi44YTE4MTA5MWM1ZTY4YTY3
ZDI0MDI0ODM1OThiZmYwZDNmMDBiNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5RGF0YS5oCkBAIC0xMzAsMTMgKzEzMCwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcjoK
ICAgICAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6Ci0gICAgICAgICAgICBoYXNo
Q29kZXMuYXBwZW5kKFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoZG91YmxlKT4oJldU
Rjo6Z2V0PGRvdWJsZT4obV92YWx1ZSkpKTsKKyAgICAgICAgICAgIGhhc2hDb2Rlcy5hcHBlbmQo
U3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihkb3VibGUpPigmc3RkOjpnZXQ8ZG91Ymxl
PihtX3ZhbHVlKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW5kZXhlZERC
OjpLZXlUeXBlOjpTdHJpbmc6Ci0gICAgICAgICAgICBoYXNoQ29kZXMuYXBwZW5kKFN0cmluZ0hh
c2g6Omhhc2goV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSkpOworICAgICAgICAgICAgaGFzaENv
ZGVzLmFwcGVuZChTdHJpbmdIYXNoOjpoYXNoKHN0ZDo6Z2V0PFN0cmluZz4obV92YWx1ZSkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6Qmlu
YXJ5OiB7Ci0gICAgICAgICAgICBhdXRvKiBkYXRhID0gV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFC
dWZmZXI+KG1fdmFsdWUpLmRhdGEoKTsKKyAgICAgICAgICAgIGF1dG8qIGRhdGEgPSBzdGQ6Omdl
dDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkuZGF0YSgpOwogICAgICAgICAgICAgaWYg
KCFkYXRhKQogICAgICAgICAgICAgICAgIGhhc2hDb2Rlcy5hcHBlbmQoMCk7CiAgICAgICAgICAg
ICBlbHNlCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OgotICAgICAg
ICAgICAgZm9yIChhdXRvJiBrZXkgOiBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFs
dWUpKQorICAgICAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBzdGQ6OmdldDxWZWN0b3I8SURCS2V5
RGF0YT4+KG1fdmFsdWUpKQogICAgICAgICAgICAgICAgIGhhc2hDb2Rlcy5hcHBlbmQoa2V5Lmhh
c2goKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTU1LDMxICsxNTUsMzEg
QEAgcHVibGljOgogICAgIFN0cmluZyBzdHJpbmcoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6OlN0cmluZyk7Ci0gICAgICAgIHJldHVy
biBXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpnZXQ8U3Ry
aW5nPihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBkb3VibGUgZGF0ZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0ZSk7Ci0gICAg
ICAgIHJldHVybiBXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUpOworICAgICAgICByZXR1cm4gc3Rk
OjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBkb3VibGUgbnVtYmVyKCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpO
dW1iZXIpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7CiAgICAgfQogCiAgICAgY29uc3Qg
VGhyZWFkU2FmZURhdGFCdWZmZXImIGJpbmFyeSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5KTsKLSAgICAgICAgcmV0dXJu
IFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBj
b25zdCBWZWN0b3I8SURCS2V5RGF0YT4mIGFycmF5KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheSk7Ci0gICAgICAgIHJldHVy
biBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUpOworICAgICAgICByZXR1cm4g
c3RkOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0OwpAQCAtMjM1LDE3ICsyMzUsMTcgQEAgdm9pZCBJREJLZXlEYXRhOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlw
ZTo6TWluOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJy
YXk6Ci0gICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3Zh
bHVlKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1f
dmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6Qmlu
YXJ5OgotICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPiht
X3ZhbHVlKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZl
cj4obV92YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBl
OjpTdHJpbmc6Ci0gICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKTsK
KyAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxTdHJpbmc+KG1fdmFsdWUpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0ZToKICAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6TnVtYmVyOgotICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0PGRvdWJs
ZT4obV92YWx1ZSk7CisgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8ZG91YmxlPihtX3ZhbHVl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMjcwLDIzICsyNzAsMjMgQEAgc3RkOjpv
cHRpb25hbDxJREJLZXlEYXRhPiBJREJLZXlEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OgogICAg
ICAgICBrZXlEYXRhLm1fdmFsdWUgPSBWZWN0b3I8SURCS2V5RGF0YT4oKTsKLSAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KGtleURhdGEubV92
YWx1ZSkpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0ZDo6Z2V0PFZlY3RvcjxJREJL
ZXlEYXRhPj4oa2V5RGF0YS5tX3ZhbHVlKSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5
OgogICAgICAgICBrZXlEYXRhLm1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcigpOwotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihr
ZXlEYXRhLm1fdmFsdWUpKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGQ6OmdldDxU
aHJlYWRTYWZlRGF0YUJ1ZmZlcj4oa2V5RGF0YS5tX3ZhbHVlKSkpCiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6U3RyaW5nOgogICAgICAgICBrZXlEYXRhLm1fdmFsdWUgPSBTdHJpbmcoKTsKLSAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxTdHJpbmc+KGtleURhdGEubV92YWx1ZSkp
KQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0ZDo6Z2V0PFN0cmluZz4oa2V5RGF0YS5t
X3ZhbHVlKSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0ZToKICAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6TnVtYmVyOgogICAgICAgICBrZXlEYXRhLm1fdmFsdWUgPSAwLjA7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoV1RGOjpnZXQ8ZG91YmxlPihrZXlEYXRhLm1fdmFsdWUp
KSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGQ6OmdldDxkb3VibGU+KGtleURhdGEu
bV92YWx1ZSkpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCAwMzUyMmQzYjM0YzI1MWFiNjkwNTAxYjNj
NjIyYTk0MDMxOTE1ZmYzLi44ZDkzZDIxODNlODk5ZjhkNTk2YzBmMzgzZGY4ZGNhZDIzZTU1MjYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxS
VENSdHBUcmFuc2NlaXZlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcihBZGRU
cmFuc2NlCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBpZiAoc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KHdpdGhUcmFjaykpIHsKLSAgICAgICAgY29uc3QgU3RyaW5n
JiBraW5kID0gV1RGOjpnZXQ8U3RyaW5nPih3aXRoVHJhY2spOworICAgICAgICBjb25zdCBTdHJp
bmcmIGtpbmQgPSBzdGQ6OmdldDxTdHJpbmc+KHdpdGhUcmFjayk7CiAgICAgICAgIGlmIChraW5k
ICE9ICJhdWRpbyJfcyAmJiBraW5kICE9ICJ2aWRlbyJfcykKICAgICAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFuc2NlaXZl
cihBZGRUcmFuc2NlCiAgICAgaWYgKGlzQ2xvc2VkKCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAgYXV0byB0cmFjayA9IFdURjo6Z2V0PFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4od2l0aFRyYWNrKS5yZWxlYXNlTm9uTnVsbCgpOworICAg
IGF1dG8gdHJhY2sgPSBzdGQ6OmdldDxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+KHdpdGhUcmFj
aykucmVsZWFzZU5vbk51bGwoKTsKICAgICByZXR1cm4gbV9iYWNrZW5kLT5hZGRUcmFuc2NlaXZl
cihXVEZNb3ZlKHRyYWNrKSwgaW5pdCk7CiB9CiAKQEAgLTg0Niw3ICs4NDYsNyBAQCBzdGF0aWMg
aW5saW5lIEV4Y2VwdGlvbk9yPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Q2VydGlmaWNhdGVJbmZv
cm1hdGlvbj4gY2VydGlmaQogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4o
YWxnb3JpdGhtSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciwgIkFsZ29yaXRobSBpcyBub3Qgc3VwcG9ydGVkIl9zIH07CiAKLSAgICBhdXRv
JiB2YWx1ZSA9IFdURjo6Z2V0PEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PihhbGdvcml0aG1J
ZGVudGlmaWVyKTsKKyAgICBhdXRvJiB2YWx1ZSA9IHN0ZDo6Z2V0PEpTQzo6U3Ryb25nPEpTQzo6
SlNPYmplY3Q+PihhbGdvcml0aG1JZGVudGlmaWVyKTsKIAogICAgIEpTQzo6Vk0mIHZtID0gbGV4
aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcAppbmRleCBhNjFmMTgyZjc5OGU5MjkyYWI2
YWI2ZjczNjg0NTAyNjMwZGMyMGE5Li4xMjY4YmE1NjE3ZWNmYzYxMWQ1ZmZhNDU0NzRiMzk0MjE3
MTkxYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm0uY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQg
UlRDUnRwU0ZyYW1lVHJhbnNmb3JtOjpzZXRFbmNyeXB0aW9uS2V5KENyeXB0b0tleSYga2V5LCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoV1RG
OjpnZXQ8Q3J5cHRvS2V5QWxnb3JpdGhtPihhbGdvcml0aG0pLm5hbWUgIT0gIkhLREYiKSB7Cisg
ICAgaWYgKHN0ZDo6Z2V0PENyeXB0b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKS5uYW1lICE9ICJI
S0RGIikgewogICAgICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsICJP
bmx5IEhLREYgaXMgc3VwcG9ydGVkIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAppbmRleCBkNzYyYTNl
NmRhZGVhNTcyOWZiZTliNWFlYWQyNzhjYjUyYWYxNGM0Li44OWJkNDBhNTgxZDU0YjQ4MDgyZDI5
MDNkNzhlZTMyNDc4Y2FlMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
QW5pbWF0aW9uRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0
aW9uRWZmZWN0LmNwcApAQCAtMzg1LDExICszODUsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQW5p
bWF0aW9uRWZmZWN0Ojp1cGRhdGVUaW1pbmcoc3RkOjpvcHRpb25hbDxPcHRpb25hbEVmZmVjdFRp
bWkKICAgICAvLyBGSVhNRTogc2hvdWxkIGl0IG5vdCB0aHJvdyBhbiBleGNlcHRpb24gb24gYSBz
dHJpbmcgb3RoZXIgdGhhbiAiYXV0byI/CiAgICAgaWYgKHRpbWluZy0+ZHVyYXRpb24pIHsKICAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPih0aW1pbmctPmR1cmF0aW9u
LnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICBhdXRvIGR1cmF0aW9uQXNEb3VibGUgPSBXVEY6Omdl
dDxkb3VibGU+KHRpbWluZy0+ZHVyYXRpb24udmFsdWUoKSk7CisgICAgICAgICAgICBhdXRvIGR1
cmF0aW9uQXNEb3VibGUgPSBzdGQ6OmdldDxkb3VibGU+KHRpbWluZy0+ZHVyYXRpb24udmFsdWUo
KSk7CiAgICAgICAgICAgICBpZiAoZHVyYXRpb25Bc0RvdWJsZSA8IDAgfHwgc3RkOjppc25hbihk
dXJhdGlvbkFzRG91YmxlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yIH07CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoV1RGOjpnZXQ8U3Ry
aW5nPih0aW1pbmctPmR1cmF0aW9uLnZhbHVlKCkpICE9ICJhdXRvIikKKyAgICAgICAgICAgIGlm
IChzdGQ6OmdldDxTdHJpbmc+KHRpbWluZy0+ZHVyYXRpb24udmFsdWUoKSkgIT0gImF1dG8iKQog
ICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKICAgICAgICAg
fQogICAgIH0KQEAgLTQyOSw3ICs0MjksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBbmltYXRpb25F
ZmZlY3Q6OnVwZGF0ZVRpbWluZyhzdGQ6Om9wdGlvbmFsPE9wdGlvbmFsRWZmZWN0VGltaQogICAg
ICAgICBtX2l0ZXJhdGlvbnMgPSB0aW1pbmctPml0ZXJhdGlvbnMudmFsdWUoKTsKIAogICAgIGlm
ICh0aW1pbmctPmR1cmF0aW9uKQotICAgICAgICBtX2l0ZXJhdGlvbkR1cmF0aW9uID0gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHRpbWluZy0+ZHVyYXRpb24udmFsdWUoKSkgPyBTZWNv
bmRzOjpmcm9tTWlsbGlzZWNvbmRzKFdURjo6Z2V0PGRvdWJsZT4odGltaW5nLT5kdXJhdGlvbi52
YWx1ZSgpKSkgOiAwX3M7CisgICAgICAgIG1faXRlcmF0aW9uRHVyYXRpb24gPSBzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPGRvdWJsZT4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSA/IFNlY29uZHM6
OmZyb21NaWxsaXNlY29uZHMoc3RkOjpnZXQ8ZG91YmxlPih0aW1pbmctPmR1cmF0aW9uLnZhbHVl
KCkpKSA6IDBfczsKIAogICAgIGlmICh0aW1pbmctPmRpcmVjdGlvbikKICAgICAgICAgbV9kaXJl
Y3Rpb24gPSB0aW1pbmctPmRpcmVjdGlvbi52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggZjZjZjU5ZGQ2YTQ5YzQ3NzFjNGYxMjkzYjI1
MzUxYmM2NmJiYjA1Zi4uYWYyNTAzZDM0YTM2OGY0MTIxOGRjM2RiMzA5OTE0MmEwYmNmMmRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC0zMjQs
MjAgKzMyNCwyMCBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NJdGVy
YWJsZUtleWZyYW1lcyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbAogICAgICAgICAvLyBXaGVuIGNh
bGxpbmcgcHJvY2Vzc0tleWZyYW1lTGlrZU9iamVjdCgpIHdpdGggdGhlICJhbGxvdyBsaXN0cyIg
ZmxhZyBzZXQgdG8gZmFsc2UsIHRoZSBvbmx5IG9mZnNldAogICAgICAgICAvLyBhbHRlcm5hdGl2
ZXMgd2Ugc2hvdWxkIGV4cGVjdCBhcmUgZG91YmxlIGFuZCBudWxscHRyLgogICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJv
cGVydGllcy5vZmZzZXQpKQotICAgICAgICAgICAga2V5ZnJhbWVPdXRwdXQub2Zmc2V0ID0gV1RG
OjpnZXQ8ZG91YmxlPihrZXlmcmFtZUxpa2VPYmplY3QuYmFzZVByb3BlcnRpZXMub2Zmc2V0KTsK
KyAgICAgICAgICAgIGtleWZyYW1lT3V0cHV0Lm9mZnNldCA9IHN0ZDo6Z2V0PGRvdWJsZT4oa2V5
ZnJhbWVMaWtlT2JqZWN0LmJhc2VQcm9wZXJ0aWVzLm9mZnNldCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIEFTU0VSVChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6bnVsbHB0cl90Pihr
ZXlmcmFtZUxpa2VPYmplY3QuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSk7CiAKICAgICAgICAgLy8g
V2hlbiBjYWxsaW5nIHByb2Nlc3NLZXlmcmFtZUxpa2VPYmplY3QoKSB3aXRoIHRoZSAiYWxsb3cg
bGlzdHMiIGZsYWcgc2V0IHRvIGZhbHNlLCB0aGUgb25seSBlYXNpbmcKICAgICAgICAgLy8gYWx0
ZXJuYXRpdmUgd2Ugc2hvdWxkIGV4cGVjdCBpcyBTdHJpbmcuCiAgICAgICAgIEFTU0VSVChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oa2V5ZnJhbWVMaWtlT2JqZWN0LmJhc2VQcm9wZXJ0
aWVzLmVhc2luZykpOwotICAgICAgICBrZXlmcmFtZU91dHB1dC5lYXNpbmcgPSBXVEY6OmdldDxT
dHJpbmc+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJvcGVydGllcy5lYXNpbmcpOworICAgICAg
ICBrZXlmcmFtZU91dHB1dC5lYXNpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KGtleWZyYW1lTGlrZU9i
amVjdC5iYXNlUHJvcGVydGllcy5lYXNpbmcpOwogCiAgICAgICAgIC8vIFdoZW4gY2FsbGluZyBw
cm9jZXNzS2V5ZnJhbWVMaWtlT2JqZWN0KCkgd2l0aCB0aGUgImFsbG93IGxpc3RzIiBmbGFnIHNl
dCB0byBmYWxzZSwgdGhlIG9ubHkgY29tcG9zaXRlCiAgICAgICAgIC8vIGFsdGVybmF0aXZlcyB3
ZSBzaG91bGQgZXhwZWN0IGlzIENvbXBvc2l0ZU9wZXJhdGlvbkF1dG8uCiAgICAgICAgIGlmIChk
b2N1bWVudC5zZXR0aW5ncygpLndlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxl
ZCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDb21wb3Np
dGVPcGVyYXRpb25PckF1dG8+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJvcGVydGllcy5jb21w
b3NpdGUpKTsKLSAgICAgICAgICAgIGtleWZyYW1lT3V0cHV0LmNvbXBvc2l0ZSA9IFdURjo6Z2V0
PENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0bz4oa2V5ZnJhbWVMaWtlT2JqZWN0LmJhc2VQcm9wZXJ0
aWVzLmNvbXBvc2l0ZSk7CisgICAgICAgICAgICBrZXlmcmFtZU91dHB1dC5jb21wb3NpdGUgPSBz
dGQ6OmdldDxDb21wb3NpdGVPcGVyYXRpb25PckF1dG8+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNl
UHJvcGVydGllcy5jb21wb3NpdGUpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBw
cm9wZXJ0eUFuZFZhbHVlIDoga2V5ZnJhbWVMaWtlT2JqZWN0LnByb3BlcnRpZXNBbmRWYWx1ZXMp
IHsKQEAgLTQzOCw5ICs0MzgsOSBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IHBy
b2Nlc3NQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMoSlNHbG9iYWxPYmplY3QmCiAgICAgLy8gICAg
LSBkb3VibGU/LCBhIHNlcXVlbmNlIG9mIGxlbmd0aCBvbmUgd2l0aCB0aGUgdmFsdWUgb2Yg4oCc
b2Zmc2V04oCdIGFzIGl0cyBzaW5nbGUgaXRlbSwgaS5lLiDCqyBvZmZzZXQgwrssCiAgICAgVmVj
dG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4gb2Zmc2V0czsKICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxWZWN0b3I8c3RkOjpvcHRpb25hbDxkb3VibGU+Pj4ocHJvcGVydHlJbmRleGVk
S2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKLSAgICAgICAgb2Zmc2V0cyA9IFdURjo6
Z2V0PFZlY3RvcjxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFt
ZS5iYXNlUHJvcGVydGllcy5vZmZzZXQpOworICAgICAgICBvZmZzZXRzID0gc3RkOjpnZXQ8VmVj
dG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQ
cm9wZXJ0aWVzLm9mZnNldCk7CiAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxk
b3VibGU+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCi0g
ICAgICAgIG9mZnNldHMuYXBwZW5kKFdURjo6Z2V0PGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5
ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSk7CisgICAgICAgIG9mZnNldHMuYXBwZW5kKHN0
ZDo6Z2V0PGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zm
c2V0KSk7CiAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxzdGQ6Om51bGxwdHJf
dD4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKICAgICAg
ICAgb2Zmc2V0cy5hcHBlbmQoc3RkOjpudWxsb3B0KTsKIApAQCAtNDUzLDkgKzQ1Myw5IEBAIHN0
YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc1Byb3BlcnR5SW5kZXhlZEtleWZy
YW1lcyhKU0dsb2JhbE9iamVjdCYKICAgICAvLyAgICAtIERPTVN0cmluZywgYSBzZXF1ZW5jZSBv
ZiBsZW5ndGggb25lIHdpdGggdGhlIHZhbHVlIG9mIOKAnGVhc2luZ+KAnSBhcyBpdHMgc2luZ2xl
IGl0ZW0sIGkuZS4gwqsgZWFzaW5nIMK7LAogICAgIFZlY3RvcjxTdHJpbmc+IGVhc2luZ3M7CiAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFN0cmluZz4+KHByb3BlcnR5SW5k
ZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLmVhc2luZykpCi0gICAgICAgIGVhc2luZ3MgPSBX
VEY6OmdldDxWZWN0b3I8U3RyaW5nPj4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3Bl
cnRpZXMuZWFzaW5nKTsKKyAgICAgICAgZWFzaW5ncyA9IHN0ZDo6Z2V0PFZlY3RvcjxTdHJpbmc+
Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5lYXNpbmcpOwogICAgIGVs
c2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihwcm9wZXJ0eUluZGV4ZWRLZXlm
cmFtZS5iYXNlUHJvcGVydGllcy5lYXNpbmcpKQotICAgICAgICBlYXNpbmdzLmFwcGVuZChXVEY6
OmdldDxTdHJpbmc+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLmVhc2lu
ZykpOworICAgICAgICBlYXNpbmdzLmFwcGVuZChzdGQ6OmdldDxTdHJpbmc+KHByb3BlcnR5SW5k
ZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLmVhc2luZykpOwogCiAgICAgLy8gOC4gSWYgZWFz
aW5ncyBpcyBhbiBlbXB0eSBzZXF1ZW5jZSwgbGV0IGl0IGJlIGEgc2VxdWVuY2Ugb2YgbGVuZ3Ro
IG9uZSBjb250YWluaW5nIHRoZSBzaW5nbGUgdmFsdWUg4oCcbGluZWFy4oCdLCBpLmUuIMKrICJs
aW5lYXIiIMK7LgogICAgIGlmIChlYXNpbmdzLmlzRW1wdHkoKSkKQEAgLTQ4Miw5ICs0ODIsOSBA
QCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NQcm9wZXJ0eUluZGV4ZWRL
ZXlmcmFtZXMoSlNHbG9iYWxPYmplY3QmCiAgICAgaWYgKGRvY3VtZW50LnNldHRpbmdzKCkud2Vi
QW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkKCkpIHsKICAgICAgICAgVmVjdG9y
PENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0bz4gY29tcG9zaXRlTW9kZXM7CiAgICAgICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxDb21wb3NpdGVPcGVyYXRpb25PckF1dG8+Pihw
cm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5jb21wb3NpdGUpKQotICAgICAg
ICAgICAgY29tcG9zaXRlTW9kZXMgPSBXVEY6OmdldDxWZWN0b3I8Q29tcG9zaXRlT3BlcmF0aW9u
T3JBdXRvPj4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMuY29tcG9zaXRl
KTsKKyAgICAgICAgICAgIGNvbXBvc2l0ZU1vZGVzID0gc3RkOjpnZXQ8VmVjdG9yPENvbXBvc2l0
ZU9wZXJhdGlvbk9yQXV0bz4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVz
LmNvbXBvc2l0ZSk7CiAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29t
cG9zaXRlT3BlcmF0aW9uT3JBdXRvPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVy
dGllcy5jb21wb3NpdGUpKQotICAgICAgICAgICAgY29tcG9zaXRlTW9kZXMuYXBwZW5kKFdURjo6
Z2V0PENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0bz4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFz
ZVByb3BlcnRpZXMuY29tcG9zaXRlKSk7CisgICAgICAgICAgICBjb21wb3NpdGVNb2Rlcy5hcHBl
bmQoc3RkOjpnZXQ8Q29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvPihwcm9wZXJ0eUluZGV4ZWRLZXlm
cmFtZS5iYXNlUHJvcGVydGllcy5jb21wb3NpdGUpKTsKICAgICAgICAgaWYgKCFjb21wb3NpdGVN
b2Rlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIDEuIExldCBjb21wb3NpdGUgbW9kZXMg
YmUgYSBzZXF1ZW5jZSBvZiBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8gdmFsdWVzIGFzc2lnbmVk
IGZyb20gdGhlIOKAnGNvbXBvc2l0ZeKAnSBtZW1iZXIgb2YgcHJvcGVydHktaW5kZXhlZCBrZXlm
cmFtZS4gSWYgdGhhdCBtZW1iZXIgaXMgYSBzaW5nbGUKICAgICAgICAgICAgIC8vICAgIENvbXBv
c2l0ZU9wZXJhdGlvbk9yQXV0byB2YWx1ZSBvcGVyYXRpb24sIGxldCBjb21wb3NpdGUgbW9kZXMg
YmUgYSBzZXF1ZW5jZSBvZiBsZW5ndGggb25lLCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUg4oCcY29t
cG9zaXRl4oCdIGFzIGl0cyBzaW5nbGUgaXRlbS4KQEAgLTUxNSwxMCArNTE1LDEwIEBAIEV4Y2Vw
dGlvbk9yPFJlZjxLZXlmcmFtZUVmZmVjdD4+IEtleWZyYW1lRWZmZWN0OjpjcmVhdGUoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHCiAgICAgICAgIE9wdGlvbmFsRWZmZWN0VGltaW5nIHRpbWluZzsK
ICAgICAgICAgYXV0byBvcHRpb25zVmFsdWUgPSBvcHRpb25zLnZhbHVlKCk7CiAgICAgICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4ob3B0aW9uc1ZhbHVlKSkgewotICAgICAg
ICAgICAgc3RkOjp2YXJpYW50PGRvdWJsZSwgU3RyaW5nPiBkdXJhdGlvbiA9IFdURjo6Z2V0PGRv
dWJsZT4ob3B0aW9uc1ZhbHVlKTsKKyAgICAgICAgICAgIHN0ZDo6dmFyaWFudDxkb3VibGUsIFN0
cmluZz4gZHVyYXRpb24gPSBzdGQ6OmdldDxkb3VibGU+KG9wdGlvbnNWYWx1ZSk7CiAgICAgICAg
ICAgICB0aW1pbmcuZHVyYXRpb24gPSBkdXJhdGlvbjsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGF1dG8ga2V5ZnJhbWVFZmZlY3RPcHRpb25zID0gV1RGOjpnZXQ8S2V5ZnJhbWVFZmZl
Y3RPcHRpb25zPihvcHRpb25zVmFsdWUpOworICAgICAgICAgICAgYXV0byBrZXlmcmFtZUVmZmVj
dE9wdGlvbnMgPSBzdGQ6OmdldDxLZXlmcmFtZUVmZmVjdE9wdGlvbnM+KG9wdGlvbnNWYWx1ZSk7
CiAKICAgICAgICAgICAgIGF1dG8gc2V0UHNldWRvRWxlbWVudFJlc3VsdCA9IGtleWZyYW1lRWZm
ZWN0LT5zZXRQc2V1ZG9FbGVtZW50KGtleWZyYW1lRWZmZWN0T3B0aW9ucy5wc2V1ZG9FbGVtZW50
KTsKICAgICAgICAgICAgIGlmIChzZXRQc2V1ZG9FbGVtZW50UmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcAppbmRleCAzOGI0NWRiZmIzNTk2OGU3Y2M2YWYxMGIzZjIxYmVhYzk0MDUyYjY5Li45ZTU2
NzIxZDNlZGFjZDhiOTBiYmI3MGQ0MzEzZTFmNzAxZmU5MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMzMxLDcgKzMz
MSw3IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJLCiAKICAgICBWZWN0b3I8U3RyaW5nPiBrZXlQ
YXRoRWxlbWVudHM7CiAgICAgSURCS2V5UGF0aFBhcnNlRXJyb3IgZXJyb3I7Ci0gICAgSURCUGFy
c2VLZXlQYXRoKFdURjo6Z2V0PFN0cmluZz4oa2V5UGF0aCksIGtleVBhdGhFbGVtZW50cywgZXJy
b3IpOworICAgIElEQlBhcnNlS2V5UGF0aChzdGQ6OmdldDxTdHJpbmc+KGtleVBhdGgpLCBrZXlQ
YXRoRWxlbWVudHMsIGVycm9yKTsKICAgICBBU1NFUlQoZXJyb3IgPT0gSURCS2V5UGF0aFBhcnNl
RXJyb3I6Ok5vbmUpOwogCiAgICAgaWYgKGtleVBhdGhFbGVtZW50cy5pc0VtcHR5KCkpCkBAIC0z
NTksNyArMzU5LDcgQEAgYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQksKIFJlZlB0cjxJREJLZXk+IG1h
eWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5
UGF0aCkKIHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8U3RyaW5nPj4o
a2V5UGF0aCkpIHsKLSAgICAgICAgYXV0byYgYXJyYXkgPSBXVEY6OmdldDxWZWN0b3I8U3RyaW5n
Pj4oa2V5UGF0aCk7CisgICAgICAgIGF1dG8mIGFycmF5ID0gc3RkOjpnZXQ8VmVjdG9yPFN0cmlu
Zz4+KGtleVBhdGgpOwogICAgICAgICBWZWN0b3I8UmVmUHRyPElEQktleT4+IHJlc3VsdDsKICAg
ICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJyYXkuc2l6ZSgpKTsKICAgICAg
ICAgZm9yIChhdXRvJiBzdHJpbmcgOiBhcnJheSkgewpAQCAtMzcxLDcgKzM3MSw3IEBAIFJlZlB0
cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChKU0ds
b2JhbE9iamVjdCYgbGV4aWNhCiAgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUFycmF5KFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGludGVybmFsQ3JlYXRlSURCS2V5
RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgV1RG
OjpnZXQ8U3RyaW5nPihrZXlQYXRoKSk7CisgICAgcmV0dXJuIGludGVybmFsQ3JlYXRlSURCS2V5
RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgc3Rk
OjpnZXQ8U3RyaW5nPihrZXlQYXRoKSk7CiB9CiAKIGJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1Nj
cmlwdFZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHNj
cmlwdFZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQpAQCAtMzgxLDcgKzM4MSw3IEBA
IGJvb2wgY2FuSW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihrZXlQYXRoKSk7CiAgICAgVmVjdG9yPFN0cmluZz4ga2V5UGF0aEVsZW1lbnRz
OwogICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOwotICAgIElEQlBhcnNlS2V5UGF0aChX
VEY6OmdldDxTdHJpbmc+KGtleVBhdGgpLCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKKyAgICBJ
REJQYXJzZUtleVBhdGgoc3RkOjpnZXQ8U3RyaW5nPihrZXlQYXRoKSwga2V5UGF0aEVsZW1lbnRz
LCBlcnJvcik7CiAgICAgQVNTRVJUKGVycm9yID09IElEQktleVBhdGhQYXJzZUVycm9yOjpOb25l
KTsKIAogICAgIGlmICgha2V5UGF0aEVsZW1lbnRzLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1N1YnRsZUNyeXB0by5jcHAKaW5kZXggMmZkMmYwZmQ3N2IyMTczNzZhZTZhMGE1YWI4MWVmMGVi
M2Y0MWEyMy4uNGZiYmU3MmUzZDlkYjI1YzU5MjE2YjU5NzkyYmY1NDc3NzQzZjk1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL1N1YnRsZUNyeXB0by5jcHAKQEAgLTk1LDEyICs5NSwxMiBAQCBzdGF0
aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+
PiBub3JtYWxpemVDcnlwdG9BbAogCiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihhbGdvcml0aG1JZGVudGlmaWVyKSkgewogICAgICAgICBhdXRvIG5ld1BhcmFtcyA9IFN0
cm9uZzxKU09iamVjdD4odm0sIGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZzdGF0ZSkpOwotICAgICAg
ICBuZXdQYXJhbXMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm5h
bWUiKSwganNTdHJpbmcodm0sIFdURjo6Z2V0PFN0cmluZz4oYWxnb3JpdGhtSWRlbnRpZmllcikp
KTsKKyAgICAgICAgbmV3UGFyYW1zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJuYW1lIiksIGpzU3RyaW5nKHZtLCBzdGQ6OmdldDxTdHJpbmc+KGFsZ29yaXRobUlk
ZW50aWZpZXIpKSk7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbm9ybWFsaXplQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycyhzdGF0ZSwgbmV3UGFyYW1zLCBvcGVyYXRpb24pOwogICAgIH0KIAot
ICAgIGF1dG8mIHZhbHVlID0gV1RGOjpnZXQ8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+KGFs
Z29yaXRobUlkZW50aWZpZXIpOworICAgIGF1dG8mIHZhbHVlID0gc3RkOjpnZXQ8SlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4+KGFsZ29yaXRobUlkZW50aWZpZXIpOwogCiAgICAgYXV0byBwYXJh
bXMgPSBjb252ZXJ0RGljdGlvbmFyeTxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPihzdGF0ZSwg
dmFsdWUuZ2V0KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7
IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CkBAIC05NDksMTIgKzk0OSwxMiBAQCB2b2lkIFN1
YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQsIENyeXB0b0tleSYga2V5LCBS
ZWY8RGVmZXJyZWRQcm9taQogICAgICAgICAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1h
dDo6U3BraToKICAgICAgICAgICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6OlBrY3M4
OgogICAgICAgICAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6UmF3OiB7Ci0gICAg
ICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkgPSBXVEY6OmdldDxWZWN0b3I8dWlu
dDhfdD4+KGtleSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkgPSBz
dGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGtleSk7CiAgICAgICAgICAgICAgICAgZnVsZmlsbFBy
b21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZS5yZWxlYXNlTm9uTnVsbCgpLCByYXdLZXkuZGF0
YSgpLCByYXdLZXkuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0OjpKd2s6Ci0gICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExEaWN0aW9uYXJ5PEpzb25XZWJLZXk+PihX
VEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGtleSkpKTsKKyAgICAgICAgICAgICAgICBwcm9t
aXNlLT5yZXNvbHZlPElETERpY3Rpb25hcnk8SnNvbldlYktleT4+KFdURk1vdmUoc3RkOjpnZXQ8
SnNvbldlYktleT4oa2V5KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTAyNSwxMSArMTAyNSwx
MSBAQCB2b2lkIFN1YnRsZUNyeXB0bzo6d3JhcEtleShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0
ZSwgS2V5Rm9ybWF0IGZvcm1hdCwgQ3J5cHRvSwogICAgICAgICAgICAgICAgIGNhc2UgU3VidGxl
Q3J5cHRvOjpLZXlGb3JtYXQ6OlNwa2k6CiAgICAgICAgICAgICAgICAgY2FzZSBTdWJ0bGVDcnlw
dG86OktleUZvcm1hdDo6UGtjczg6CiAgICAgICAgICAgICAgICAgY2FzZSBTdWJ0bGVDcnlwdG86
OktleUZvcm1hdDo6UmF3OgotICAgICAgICAgICAgICAgICAgICBieXRlcyA9IFdURjo6Z2V0PFZl
Y3Rvcjx1aW50OF90Pj4oa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXMgPSBzdGQ6Omdl
dDxWZWN0b3I8dWludDhfdD4+KGtleSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6Okp3azogewogICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogQ29udmVydGluZyB0byBKUyBqdXN0IHRvIEpTT04tU3Ry
aW5naWZ5IHNlZW1zIGluZWZmaWNpZW50LiBXZSBzaG91bGQgZmluZCBhIHdheSB0byBnbyBkaXJl
Y3RseSBmcm9tIHRoZSBzdHJ1Y3QgdG8gSlNPTi4KLSAgICAgICAgICAgICAgICAgICAgYXV0byBq
d2sgPSB0b0pTPElETERpY3Rpb25hcnk8SnNvbldlYktleT4+KCoocHJvbWlzZS0+Z2xvYmFsT2Jq
ZWN0KCkpLCAqKHByb21pc2UtPmdsb2JhbE9iamVjdCgpKSwgV1RGTW92ZShXVEY6OmdldDxKc29u
V2ViS2V5PihrZXkpKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gandrID0gdG9KUzxJRExE
aWN0aW9uYXJ5PEpzb25XZWJLZXk+PigqKHByb21pc2UtPmdsb2JhbE9iamVjdCgpKSwgKihwcm9t
aXNlLT5nbG9iYWxPYmplY3QoKSksIFdURk1vdmUoc3RkOjpnZXQ8SnNvbldlYktleT4oa2V5KSkp
OwogICAgICAgICAgICAgICAgICAgICBTdHJpbmcgandrU3RyaW5nID0gSlNPTlN0cmluZ2lmeShw
cm9taXNlLT5nbG9iYWxPYmplY3QoKSwgandrLCAwKTsKICAgICAgICAgICAgICAgICAgICAgQ1N0
cmluZyBqd2tVdGY4U3RyaW5nID0gandrU3RyaW5nLnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CiAg
ICAgICAgICAgICAgICAgICAgIGJ5dGVzLmFwcGVuZChqd2tVdGY4U3RyaW5nLmRhdGEoKSwgandr
VXRmOFN0cmluZy5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCmluZGV4IDJiNmJhYzEz
NzdhYTc1MDMwYTUzZmEzYTgyMzk1YjU4NTMzZmViNjkuLjc2ZDI2ZTk3ZTQyMzYyNWViYjI4MWM3
YzY4ZjM5Mzk4ODEzOGY0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9y
bWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGMKICAgICBSZWZQdHI8Q3J5cHRvS2V5QUVTPiBy
ZXN1bHQ7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6
UmF3OgotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4
dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9y
dFJhdyhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4
X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENyeXB0b0tleUZvcm1hdDo6SndrOiB7CiAgICAgICAgIGF1dG8gY2hlY2tBbGdDYWxsYmFj
ayA9IFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgYWxnKSAtPiBib29sIHsKQEAgLTEz
Myw3ICsxMzMsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmltcG9ydEtleShDcnlw
dG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgYwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9OwotICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpn
ZXQ8SnNvbldlYktleT4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGNoZWNr
QWxnQ2FsbGJhY2spKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRKd2so
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKHN0ZDo6Z2V0PEpzb25XZWJLZXk+KGRhdGEp
KSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcAppbmRl
eCAyNTM4NzJkODlkMWIzZmQzNzg4NjZjODBjNTg1NjEwMTk4MjFjNDEwLi4yNTA1NDcwYTI5MzJh
ZThhNzIwODk4NWY1N2Y3MGZmNGJlYjU5YTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQjo6aW1wb3J0S2V5KENy
eXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjCiAgICAgUmVmUHRyPENyeXB0
b0tleUFFUz4gcmVzdWx0OwogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9L
ZXlGb3JtYXQ6OlJhdzoKLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRSYXco
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4o
ZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5
QUVTOjppbXBvcnRSYXcocGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKHN0ZDo6Z2V0PFZl
Y3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6Okp3azogewogICAgICAgICBhdXRvIGNoZWNr
QWxnQ2FsbGJhY2sgPSBbXShzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGFsZykgLT4gYm9v
bCB7CkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjppbXBv
cnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGMKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfTsKLSAgICAgICAgcmVz
dWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRKd2socGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZN
b3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RG
TW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6
aW1wb3J0SndrKHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShzdGQ6OmdldDxKc29uV2Vi
S2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFj
aykpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NU
Ui5jcHAKaW5kZXggZWQ0NDMyOGMyZTA2ZDkyOWM4ZmMzZmFlOTYwM2E5NTM2NjY3ZGNmMi4uYWQz
MDlmNjFhNzVmOTJjZDk5NDYzZjllODEzMmFmYjBjYzk3ZWRlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NU
Ui5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DVFI6Omlt
cG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgYwogICAgIFJl
ZlB0cjxDcnlwdG9LZXlBRVM+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgIGNh
c2UgQ3J5cHRvS2V5Rm9ybWF0OjpSYXc6Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6
aW1wb3J0UmF3KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8
dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9
IENyeXB0b0tleUFFUzo6aW1wb3J0UmF3KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShz
dGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKd2s6IHsKICAgICAgICAg
YXV0byBjaGVja0FsZ0NhbGxiYWNrID0gW10oc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBh
bGcpIC0+IGJvb2wgewpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUjo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBj
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH07Ci0g
ICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0SndrKHBhcmFtZXRlcnMuaWRlbnRp
ZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFjaykpOworICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoc3RkOjpn
ZXQ8SnNvbldlYktleT4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGNoZWNr
QWxnQ2FsbGJhY2spKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1B
RVNfR0NNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19HQ00uY3BwCmluZGV4IGU1YmM4NzBmNGJlYmUyNTEyN2FlNGNkZmY1N2IzYjIwMTIy
YzRlY2UuLmEzZGQ4NTMzMjE5M2U1OTFiYTYzMzg0MjQ3YWU5NzhiOTg1ODgyM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19H
Q00uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19HQ00uY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1B
RVNfR0NNOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEs
IGMKICAgICBSZWZQdHI8Q3J5cHRvS2V5QUVTPiByZXN1bHQ7CiAgICAgc3dpdGNoIChmb3JtYXQp
IHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UmF3OgotICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAg
ICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IFdURk1vdmUoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6SndrOiB7
CiAgICAgICAgIGF1dG8gY2hlY2tBbGdDYWxsYmFjayA9IFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgYWxnKSAtPiBib29sIHsKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobUFFU19HQ006OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRh
JiYgZGF0YSwgYwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9OwotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpLCBleHRy
YWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGNoZWNrQWxnQ2FsbGJhY2spKTsKKyAgICAgICAgcmVz
dWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRKd2socGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZN
b3ZlKHN0ZDo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RG
TW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZh
dWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19LVy5jcHAKaW5kZXggMmQ1Y2E4NzJkZTU1YjEzYWEwOGU0N2MwMGI4
ZWUzZWI3MTRhYTY4My4uMWViZDUxZTlmODYzNTgwYzY4MGEyOTdmNGViODVmZTIwZmIxMjcyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtQUVTX0tXLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1BRVNfS1cuY3BwCkBAIC04MywxMCArODMsMTAgQEAgdm9pZCBDcnlwdG9BbGdv
cml0aG1BRVNfS1c6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYg
ZGF0YSwgY28KICAgICBSZWZQdHI8Q3J5cHRvS2V5QUVTPiByZXN1bHQ7CiAgICAgc3dpdGNoIChm
b3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UmF3OgotICAgICAgICByZXN1bHQg
PSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUo
V1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwor
ICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIFdURk1vdmUoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6
SndrOiB7Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0SndrKHBhcmFtZXRl
cnMuaWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSksIGV4dHJh
Y3RhYmxlLCB1c2FnZXMsIFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgYWxnKSAtPiBi
b29sIHsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRKd2socGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBXVEZNb3ZlKHN0ZDo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFj
dGFibGUsIHVzYWdlcywgW10oc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBhbGcpIC0+IGJv
b2wgewogICAgICAgICAgICAgc3dpdGNoIChsZW5ndGgpIHsKICAgICAgICAgICAgIGNhc2UgQ3J5
cHRvS2V5QUVTOjpzX2xlbmd0aDEyODoKICAgICAgICAgICAgICAgICByZXR1cm4gYWxnLmlzTnVs
bCgpIHx8IGFsZyA9PSBBTEcxMjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwCmluZGV4IGM3ZTMyNWFlN2U3ZDQ2
ZmJjYTdhNWQxMDExYWM1YjY0ODUwOTBmNGQuLjc3NmQzOWJhM2JlYjNlOTUyY2RmZDdiNWVkMzlk
ZWQxYTY5Y2U3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUVDREguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1FQ0RIOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5
RGF0YSYmIGRhdGEsIGNvbnMKICAgICBSZWZQdHI8Q3J5cHRvS2V5RUM+IHJlc3VsdDsKICAgICBz
d2l0Y2ggKGZvcm1hdCkgewogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKd2s6IHsKLSAgICAg
ICAgSnNvbldlYktleSBrZXkgPSBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKTsK
KyAgICAgICAgSnNvbldlYktleSBrZXkgPSBXVEZNb3ZlKHN0ZDo6Z2V0PEpzb25XZWJLZXk+KGRh
dGEpKTsKIAogICAgICAgICBib29sIGlzVXNhZ2VzQWxsb3dlZCA9IGZhbHNlOwogICAgICAgICBp
ZiAoIWtleS5kLmlzTnVsbCgpKSB7CkBAIC0xNTMsMjEgKzE1MywyMSBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobUVDREg6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYg
ZGF0YSwgY29ucwogICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU3ludGF4RXJyb3IpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tl
eUVDOjppbXBvcnRSYXcoZWNQYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVjUGFyYW1ldGVycy5uYW1l
ZEN1cnZlLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5RUM6OmltcG9ydFJhdyhl
Y1BhcmFtZXRlcnMuaWRlbnRpZmllciwgZWNQYXJhbWV0ZXJzLm5hbWVkQ3VydmUsIFdURk1vdmUo
c3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6U3BraToKICAgICAgICAg
aWYgKHVzYWdlcykgewogICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU3ludGF4RXJyb3Ip
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0
b0tleUVDOjppbXBvcnRTcGtpKGVjUGFyYW1ldGVycy5pZGVudGlmaWVyLCBlY1BhcmFtZXRlcnMu
bmFtZWRDdXJ2ZSwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0
cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjppbXBvcnRT
cGtpKGVjUGFyYW1ldGVycy5pZGVudGlmaWVyLCBlY1BhcmFtZXRlcnMubmFtZWRDdXJ2ZSwgV1RG
TW92ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpQa2NzODoKICAg
ICAgICAgaWYgKHVzYWdlcyAmJiAodXNhZ2VzIF4gQ3J5cHRvS2V5VXNhZ2VEZXJpdmVLZXkpICYm
ICh1c2FnZXMgXiBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpICYmICh1c2FnZXMgXiAoQ3J5cHRv
S2V5VXNhZ2VEZXJpdmVLZXkgfCBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpKSkgewogICAgICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU3ludGF4RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjppbXBvcnRQa2NzOChl
Y1BhcmFtZXRlcnMuaWRlbnRpZmllciwgZWNQYXJhbWV0ZXJzLm5hbWVkQ3VydmUsIFdURk1vdmUo
V1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwor
ICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlFQzo6aW1wb3J0UGtjczgoZWNQYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIGVjUGFyYW1ldGVycy5uYW1lZEN1cnZlLCBXVEZNb3ZlKHN0ZDo6Z2V0PFZlY3Rv
cjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGlmICghcmVzdWx0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5jcHAKaW5kZXggNTE1YTI4
NWUzMDFiMDE5ZmNiNDA1ZjU3NGVhY2Q2OWYxYzJhOWZhYi4uODcyZmJlYTY2YWNiYjZjMTE0NjMw
N2RhYmY5NDBiM2VhM2IwNWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmNwcApAQCAtMTEwLDcgKzExMCw3
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQg
Zm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgY29uCiAgICAgUmVmUHRyPENyeXB0b0tleUVDPiByZXN1
bHQ7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6Sndr
OiB7Ci0gICAgICAgIEpzb25XZWJLZXkga2V5ID0gV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5
PihkYXRhKSk7CisgICAgICAgIEpzb25XZWJLZXkga2V5ID0gV1RGTW92ZShzdGQ6OmdldDxKc29u
V2ViS2V5PihkYXRhKSk7CiAKICAgICAgICAgaWYgKHVzYWdlcyAmJiAoKCFrZXkuZC5pc051bGwo
KSAmJiAodXNhZ2VzIF4gQ3J5cHRvS2V5VXNhZ2VTaWduKSkgfHwgKGtleS5kLmlzTnVsbCgpICYm
ICh1c2FnZXMgXiBDcnlwdG9LZXlVc2FnZVZlcmlmeSkpKSkgewogICAgICAgICAgICAgZXhjZXB0
aW9uQ2FsbGJhY2soU3ludGF4RXJyb3IpOwpAQCAtMTQxLDIxICsxNDEsMjEgQEAgdm9pZCBDcnlw
dG9BbGdvcml0aG1FQ0RTQTo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURh
dGEmJiBkYXRhLCBjb24KICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRheEVycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlFQzo6aW1wb3J0UmF3KGVjUGFyYW1ldGVycy5pZGVudGlmaWVyLCBlY1BhcmFtZXRlcnMu
bmFtZWRDdXJ2ZSwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0
cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjppbXBvcnRS
YXcoZWNQYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVjUGFyYW1ldGVycy5uYW1lZEN1cnZlLCBXVEZN
b3ZlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlNwa2k6CiAgICAg
ICAgIGlmICh1c2FnZXMgJiYgKHVzYWdlcyBeIENyeXB0b0tleVVzYWdlVmVyaWZ5KSkgewogICAg
ICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU3ludGF4RXJyb3IpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjppbXBvcnRTcGtp
KGVjUGFyYW1ldGVycy5pZGVudGlmaWVyLCBlY1BhcmFtZXRlcnMubmFtZWRDdXJ2ZSwgV1RGTW92
ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7
CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjppbXBvcnRTcGtpKGVjUGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBlY1BhcmFtZXRlcnMubmFtZWRDdXJ2ZSwgV1RGTW92ZShzdGQ6OmdldDxWZWN0
b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpQa2NzODoKICAgICAgICAgaWYgKHVzYWdlcyAm
JiAodXNhZ2VzIF4gQ3J5cHRvS2V5VXNhZ2VTaWduKSkgewogICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soU3ludGF4RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjppbXBvcnRQa2NzOChlY1BhcmFtZXRlcnMuaWRl
bnRpZmllciwgZWNQYXJhbWV0ZXJzLm5hbWVkQ3VydmUsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9y
PHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICByZXN1bHQg
PSBDcnlwdG9LZXlFQzo6aW1wb3J0UGtjczgoZWNQYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVjUGFy
YW1ldGVycy5uYW1lZEN1cnZlLCBXVEZNb3ZlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0
YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlm
ICghcmVzdWx0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1IS0RGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3BwCmluZGV4IDhkY2NjYTdlYTEzMTkwNGI5MGMwMWVk
ODY5NmUyNDk0ZDYzYWRlZTUuLjVjN2EyZjRjNTMxNWJiZTg3MzkwMGU0OTNkMDZiYzE0ZTlhZDRl
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUhLREYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUhLREYuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtSEtERjo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRh
LCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYWxsYmFjayhDcnlwdG9LZXlS
YXc6OmNyZWF0ZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9y
PHVpbnQ4X3Q+PihkYXRhKSksIHVzYWdlcykpOworICAgIGNhbGxiYWNrKENyeXB0b0tleVJhdzo6
Y3JlYXRlKHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8dWlu
dDhfdD4+KGRhdGEpKSwgdXNhZ2VzKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHNpemVfdD4gQ3J5cHRv
QWxnb3JpdGhtSEtERjo6Z2V0S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtSE1BQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1ITUFDLmNwcAppbmRleCAwMmIyMTcxMWU3ZmJlNGJmZjI0YWQyODE2MGUzNTMx
NmE2ZmQ3MWYyLi5kNGE3ZDJjYTk5NWY1ODZjY2Q5MjcwY2E3YmE4YzNjM2M3YWI0YTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1I
TUFDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1ITUFDLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1B
Qzo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjb25z
CiAgICAgUmVmUHRyPENyeXB0b0tleUhNQUM+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGZvcm1hdCkg
ewogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpSYXc6Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0
b0tleUhNQUM6OmltcG9ydFJhdyhobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGht
YWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50
OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5
cHRvS2V5SE1BQzo6aW1wb3J0UmF3KGhtYWNQYXJhbWV0ZXJzLmxlbmd0aC52YWx1ZV9vcigwKSwg
aG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIFdURk1vdmUoc3RkOjpnZXQ8VmVjdG9yPHVp
bnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENyeXB0b0tleUZvcm1hdDo6SndrOiB7CiAgICAgICAgIGF1dG8gY2hlY2tBbGdDYWxs
YmFjayA9IFtdKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgY29uc3QgU3RyaW5nJiBh
bGcpIC0+IGJvb2wgewpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1B
Qzo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjb25z
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH07Ci0g
ICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6OmltcG9ydEp3ayhobWFjUGFyYW1ldGVycy5s
ZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3Zl
KFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92
ZShjaGVja0FsZ0NhbGxiYWNrKSk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUhNQUM6Omlt
cG9ydEp3ayhobWFjUGFyYW1ldGVycy5sZW5ndGgudmFsdWVfb3IoMCksIGhtYWNQYXJhbWV0ZXJz
Lmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKHN0ZDo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0
cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVja0FsZ0NhbGxiYWNrKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5jcHAKaW5kZXggMzNhNTkz
MmUxNjQ5YWZlNzI3MmI3YTYxYzRiMjZmY2IxNGEzMTZlMy4uMjY4YzA1MWQ5ZmUyNDVjNTQzNDBm
NzZjMTBhMTU3NDg1OTM3Y2YwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuY3BwCkBAIC03Myw3ICs3Myw3
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0
IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBjYWxsYmFjayhDcnlwdG9LZXlSYXc6OmNyZWF0ZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdU
Rk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIHVzYWdlcykpOworICAgIGNh
bGxiYWNrKENyeXB0b0tleVJhdzo6Y3JlYXRlKHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92
ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgdXNhZ2VzKSk7CiB9CiAKIEV4Y2Vw
dGlvbk9yPHNpemVfdD4gQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpnZXRLZXlMZW5ndGgoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzUuY3BwCmluZGV4IDc4YjI3N2VmZGFmYzk3MGJlYmUyYzQwOGFiOGViOGQxZTU3ZjhjNDIu
LjIwNjkzMWM0NTNhNTczYWJjNDhiMTMyYjM4ZjY5N2RlZDI0MDcyMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1Mx
X3YxXzUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3Jt
YXQsIEtleURhdGEmCiAgICAgUmVmUHRyPENyeXB0b0tleVJTQT4gcmVzdWx0OwogICAgIHN3aXRj
aCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6Okp3azogewotICAgICAgICBK
c29uV2ViS2V5IGtleSA9IFdURk1vdmUoV1RGOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpOworICAg
ICAgICBKc29uV2ViS2V5IGtleSA9IFdURk1vdmUoc3RkOjpnZXQ8SnNvbldlYktleT4oZGF0YSkp
OwogICAgICAgICBpZiAodXNhZ2VzICYmICgoIWtleS5kLmlzTnVsbCgpICYmICh1c2FnZXMgXiBD
cnlwdG9LZXlVc2FnZURlY3J5cHQpKSB8fCAoa2V5LmQuaXNOdWxsKCkgJiYgKHVzYWdlcyBeIENy
eXB0b0tleVVzYWdlRW5jcnlwdCkpKSkgewogICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
U3ludGF4RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KENyeXB0b0tleUZv
cm1hdCBmb3JtYXQsIEtleURhdGEmCiAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhTeW50
YXhFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0
ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKHBhcmFtZXRlcnMuaWRlbnRpZmllciwgc3RkOjpu
dWxsb3B0LCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0
YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtp
KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHN0ZDo6Z2V0PFZl
Y3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpQa2NzODogewpAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNTo6aW1wb3J0S2V5
KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmCiAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhTeW50YXhFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChwYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRh
dGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJT
QTo6aW1wb3J0UGtjczgocGFyYW1ldGVycy5pZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFdURk1v
dmUoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81LmNwcAppbmRleCA4NzA3MTNkMTBkMjMyMjQ2M2NlZGIxNjVmY2U0
MmUzY2MzZTVlZGMyLi5hYjExYzdiNDBmODJjNjczMDdiNDQ3YzVlMTRiYmFkZTg4NDg1ZmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6aW1wb3J0S2V5KENy
eXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEKICAgICBSZWZQdHI8Q3J5cHRvS2V5UlNBPiBy
ZXN1bHQ7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6
SndrOiB7Ci0gICAgICAgIEpzb25XZWJLZXkga2V5ID0gV1RGTW92ZShXVEY6OmdldDxKc29uV2Vi
S2V5PihkYXRhKSk7CisgICAgICAgIEpzb25XZWJLZXkga2V5ID0gV1RGTW92ZShzdGQ6OmdldDxK
c29uV2ViS2V5PihkYXRhKSk7CiAKICAgICAgICAgaWYgKHVzYWdlcyAmJiAoKCFrZXkuZC5pc051
bGwoKSAmJiAodXNhZ2VzIF4gQ3J5cHRvS2V5VXNhZ2VTaWduKSkgfHwgKGtleS5kLmlzTnVsbCgp
ICYmICh1c2FnZXMgXiBDcnlwdG9LZXlVc2FnZVZlcmlmeSkpKSkgewogICAgICAgICAgICAgZXhj
ZXB0aW9uQ2FsbGJhY2soU3ludGF4RXJyb3IpOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzU6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQg
Zm9ybWF0LCBLZXlEYXRhCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
Ly8gRklYTUU6IDx3ZWJraXQub3JnL2IvMTY1NDM2PgotICAgICAgICByZXN1bHQgPSBDcnlwdG9L
ZXlSU0E6OmltcG9ydFNwa2kocnNhUGFyYW1ldGVycy5pZGVudGlmaWVyLCByc2FQYXJhbWV0ZXJz
Lmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkp
LCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjpp
bXBvcnRTcGtpKHJzYVBhcmFtZXRlcnMuaWRlbnRpZmllciwgcnNhUGFyYW1ldGVycy5oYXNoSWRl
bnRpZmllciwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFj
dGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENyeXB0b0tl
eUZvcm1hdDo6UGtjczg6IHsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81OjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5
RGF0YQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiA8
d2Via2l0Lm9yZy9iLzE2NTQzNj4KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBv
cnRQa2NzOChwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJzYVBhcmFtZXRlcnMuaGFzaElkZW50aWZp
ZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxl
LCB1c2FnZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KHBh
cmFtZXRlcnMuaWRlbnRpZmllciwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92
ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAu
Y3BwCmluZGV4IDM1NGU0NDYyZTlkYmUzMDc1MWI0MGViZjhkOGE0YWFhZDYwM2U2YTQuLjdmM2I1
Y2RmNzQ5MWQ3MzIxMjk2Nzg4ZWM1NTM5ZjliZGE5Mjg2ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpp
bXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsCiAgICAgUmVm
UHRyPENyeXB0b0tleVJTQT4gcmVzdWx0OwogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2Fz
ZSBDcnlwdG9LZXlGb3JtYXQ6Okp3azogewotICAgICAgICBKc29uV2ViS2V5IGtleSA9IFdURk1v
dmUoV1RGOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpOworICAgICAgICBKc29uV2ViS2V5IGtleSA9
IFdURk1vdmUoc3RkOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpOwogCiAgICAgICAgIGJvb2wgaXNV
c2FnZXNBbGxvd2VkID0gZmFsc2U7CiAgICAgICAgIGlmICgha2V5LmQuaXNOdWxsKCkpIHsKQEAg
LTE2OCw3ICsxNjgsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjppbXBvcnRLZXko
Q3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMTY1NDM2Pgot
ICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2kocnNhUGFyYW1ldGVycy5p
ZGVudGlmaWVyLCByc2FQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0
PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAg
cmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKHJzYVBhcmFtZXRlcnMuaWRlbnRpZmll
ciwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8
dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UGtjczg6IHsKQEAgLTE3Nyw3ICsxNzcs
NyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9y
bWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMTY1NDM2PgotICAgICAgICByZXN1
bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgcnNh
UGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhf
dD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0
b0tleVJTQTo6aW1wb3J0UGtjczgocGFyYW1ldGVycy5pZGVudGlmaWVyLCByc2FQYXJhbWV0ZXJz
Lmhhc2hJZGVudGlmaWVyLCBXVEZNb3ZlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkp
LCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1
bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FfUFNTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCmluZGV4IDhkNDc1YzU0NDRkYjhlMmRkMDJmNzcyYmNh
ZmJmZTBkNWY0NzU3NjcuLmM5NzE1NDNjZmIyYmRiMGJmOGVjMzEzM2U0NjU3NWM0OTk1YWE3NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVJTQV9QU1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1SU0FfUFNTOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0
YSYmIGRhdGEsIGMKICAgICBSZWZQdHI8Q3J5cHRvS2V5UlNBPiByZXN1bHQ7CiAgICAgc3dpdGNo
IChmb3JtYXQpIHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6SndrOiB7Ci0gICAgICAgIEpz
b25XZWJLZXkga2V5ID0gV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSk7CisgICAg
ICAgIEpzb25XZWJLZXkga2V5ID0gV1RGTW92ZShzdGQ6OmdldDxKc29uV2ViS2V5PihkYXRhKSk7
CiAKICAgICAgICAgaWYgKHVzYWdlcyAmJiAoKCFrZXkuZC5pc051bGwoKSAmJiAodXNhZ2VzIF4g
Q3J5cHRvS2V5VXNhZ2VTaWduKSkgfHwgKGtleS5kLmlzTnVsbCgpICYmICh1c2FnZXMgXiBDcnlw
dG9LZXlVc2FnZVZlcmlmeSkpKSkgewogICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU3lu
dGF4RXJyb3IpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BT
Uzo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQu
b3JnL2IvMTY1NDM2PgotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFNwa2ko
cnNhUGFyYW1ldGVycy5pZGVudGlmaWVyLCByc2FQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBX
VEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNh
Z2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKHJzYVBhcmFt
ZXRlcnMuaWRlbnRpZmllciwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShz
dGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UGtjczg6IHsK
QEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OmltcG9ydEtl
eShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgYwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE2NTQz
Nj4KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChwYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIHJzYVBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAg
ICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4KHBhcmFtZXRlcnMuaWRlbnRpZmll
ciwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8
dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
c3RvbVByb3BlcnR5VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3Bl
cnR5VmFsdWUuY3BwCmluZGV4IDA2N2E4YTZlOTdmMWM5NTA5MzY2ODA2MjhlZTM2MWY2OGZmNjg4
YzcuLjZiNDk5ZTI2YjdmZDM1NzZjNDU3OTUyZGVjNDIyNjQ4M2Q3NjU1MjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5jcHAKQEAgLTQyLDE1ICs0Miwx
NSBAQCBib29sIENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3Zh
bHVlLCBbJl0oY29uc3Qgc3RkOjptb25vc3RhdGUmKSB7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0sIFsmXShjb25zdCBSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4mIHZhbHVlKSB7
Ci0gICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVS
ZWZlcmVuY2VWYWx1ZT4+KG90aGVyLm1fdmFsdWUpLmdldCgpOworICAgICAgICByZXR1cm4gdmFs
dWUuZ2V0KCkgPT0gc3RkOjpnZXQ8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+PihvdGhl
ci5tX3ZhbHVlKS5nZXQoKTsKICAgICB9LCBbJl0oY29uc3QgQ1NTVmFsdWVJRCYgdmFsdWUpIHsK
LSAgICAgICAgcmV0dXJuIHZhbHVlID09IFdURjo6Z2V0PENTU1ZhbHVlSUQ+KG90aGVyLm1fdmFs
dWUpOworICAgICAgICByZXR1cm4gdmFsdWUgPT0gc3RkOjpnZXQ8Q1NTVmFsdWVJRD4ob3RoZXIu
bV92YWx1ZSk7CiAgICAgfSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZURhdGE+JiB2YWx1ZSkg
ewotICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCkgPT0gV1RGOjpnZXQ8UmVmPENTU1ZhcmlhYmxl
RGF0YT4+KG90aGVyLm1fdmFsdWUpLmdldCgpOworICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCkg
PT0gc3RkOjpnZXQ8UmVmPENTU1ZhcmlhYmxlRGF0YT4+KG90aGVyLm1fdmFsdWUpLmdldCgpOwog
ICAgIH0sIFsmXShjb25zdCBMZW5ndGgmIHZhbHVlKSB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSA9
PSBXVEY6OmdldDxMZW5ndGg+KG90aGVyLm1fdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWUg
PT0gc3RkOjpnZXQ8TGVuZ3RoPihvdGhlci5tX3ZhbHVlKTsKICAgICB9LCBbJl0oY29uc3QgUmVm
PFN0eWxlSW1hZ2U+JiB2YWx1ZSkgewotICAgICAgICByZXR1cm4gdmFsdWUuZ2V0KCkgPT0gV1RG
OjpnZXQ8UmVmPFN0eWxlSW1hZ2U+PihvdGhlci5tX3ZhbHVlKS5nZXQoKTsKKyAgICAgICAgcmV0
dXJuIHZhbHVlLmdldCgpID09IHN0ZDo6Z2V0PFJlZjxTdHlsZUltYWdlPj4ob3RoZXIubV92YWx1
ZSkuZ2V0KCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9tUHJv
cGVydHlWYWx1ZS5oCmluZGV4IDM4Yzc5YzJkYWU4ZDFiZGQ0NDI4YmJlZDMyOWY4ZjM4ZWVmMzU0
MWIuLjE3YzEzZjFmYjA2NzhiNDkxZWVmMzg4ZDMyZmQxM2UwZjA3NzM2NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuaApAQCAtODQsOCArODQsOCBAQCBw
dWJsaWM6CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CiAgICAgYm9vbCBpc1Jlc29sdmVkKCkgY29uc3QgeyByZXR1cm4gIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmPENTU1ZhcmlhYmxlUmVmZXJlbmNlVmFsdWU+PihtX3ZhbHVlKTsgfQot
ICAgIGJvb2wgaXNVbnNldCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
Q1NTVmFsdWVJRD4obV92YWx1ZSkgJiYgV1RGOjpnZXQ8Q1NTVmFsdWVJRD4obV92YWx1ZSkgPT0g
Q1NTVmFsdWVVbnNldDsgfQotICAgIGJvb2wgaXNJbnZhbGlkKCkgY29uc3QgeyByZXR1cm4gc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxDU1NWYWx1ZUlEPihtX3ZhbHVlKSAmJiBXVEY6OmdldDxDU1NW
YWx1ZUlEPihtX3ZhbHVlKSA9PSBDU1NWYWx1ZUludmFsaWQ7IH0KKyAgICBib29sIGlzVW5zZXQo
KSBjb25zdCB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KG1fdmFs
dWUpICYmIHN0ZDo6Z2V0PENTU1ZhbHVlSUQ+KG1fdmFsdWUpID09IENTU1ZhbHVlVW5zZXQ7IH0K
KyAgICBib29sIGlzSW52YWxpZCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8Q1NTVmFsdWVJRD4obV92YWx1ZSkgJiYgc3RkOjpnZXQ8Q1NTVmFsdWVJRD4obV92YWx1ZSkg
PT0gQ1NTVmFsdWVJbnZhbGlkOyB9CiAKICAgICBjb25zdCBWYXJpYW50VmFsdWUmIHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggZWE2
MDMxOTNjNjA4MTc1ZTQxMzc5MDk3MDNkYzFhNDIyMDU4OTQzNi4uMTlhN2M3OGIyOWRhNDExOWJi
MGY4N2JmNWFkN2U1OGRkN2U1ZjU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMzAwLDgg
KzMwMCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVy
biBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxDYXNjYWRlTGF5ZXJOYW1lPj4obV9uYW1l
VmFyaWFudCk7IH0KIAotICAgIGF1dG8mIG5hbWUoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxD
YXNjYWRlTGF5ZXJOYW1lPihtX25hbWVWYXJpYW50KTsgfQotICAgIGF1dG8mIG5hbWVMaXN0KCkg
Y29uc3QgeyByZXR1cm4gV1RGOjpnZXQ8VmVjdG9yPENhc2NhZGVMYXllck5hbWU+PihtX25hbWVW
YXJpYW50KTsgfQorICAgIGF1dG8mIG5hbWUoKSBjb25zdCB7IHJldHVybiBzdGQ6OmdldDxDYXNj
YWRlTGF5ZXJOYW1lPihtX25hbWVWYXJpYW50KTsgfQorICAgIGF1dG8mIG5hbWVMaXN0KCkgY29u
c3QgeyByZXR1cm4gc3RkOjpnZXQ8VmVjdG9yPENhc2NhZGVMYXllck5hbWU+PihtX25hbWVWYXJp
YW50KTsgfQogCiBwcml2YXRlOgogICAgIFN0eWxlUnVsZUxheWVyKFZlY3RvcjxDYXNjYWRlTGF5
ZXJOYW1lPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAppbmRleCBm
Zjc2MzQ1NWEzOWUzY2RlZjgxNWE0N2M0OTFjM2M4YTc3ZGNhYWE0Li5mMjM3MzI4NmEzZjBhZGZk
YmIwMzUwNTRhOTA2Y2JlNDU3NTE5YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
YXJzZXIuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6
OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcEkKICAg
ICB9CiAKICAgICBjb25zdCBhdXRvJiBjdXN0b21Qcm9wVmFsdWUgPSBkb3duY2FzdDxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSk7Ci0gICAgY29uc3QgYXV0byYgdmFsdWVXaXRoUmVmZXJl
bmNlcyA9IFdURjo6Z2V0PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4oY3VzdG9tUHJv
cFZhbHVlLnZhbHVlKCkpLmdldCgpOworICAgIGNvbnN0IGF1dG8mIHZhbHVlV2l0aFJlZmVyZW5j
ZXMgPSBzdGQ6OmdldDxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KGN1c3RvbVByb3BW
YWx1ZS52YWx1ZSgpKS5nZXQoKTsKIAogICAgIGF1dG8mIG5hbWUgPSBkb3duY2FzdDxDU1NDdXN0
b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSkubmFtZSgpOwogICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSBi
dWlsZGVyU3RhdGUuZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQo
KS5nZXQobmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCmluZGV4IGY4ZGM0M2Rj
YjEyM2QxNTNiNDIwNGVjOWZkZTU3ZTJhZTM2NDE3ZGEuLjUzNDFlOTcyMWI4ZmVlZWJmN2U4NGU0
ZDBhY2Q4YTQ0YWI1YjExNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5oCkBAIC0x
NzUsNyArMTc1LDcgQEAgaW5saW5lIHZvaWQgRG9jdW1lbnRNYXJrZXI6OnNoaWZ0T2Zmc2V0cyhp
bnQgZGVsdGEpCiAKIGlubGluZSBjb25zdCBTdHJpbmcmIERvY3VtZW50TWFya2VyOjpkZXNjcmlw
dGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihtX2RhdGEpID8gV1RGOjpnZXQ8U3RyaW5nPihtX2RhdGEpIDogZW1wdHlTdHJpbmcoKTsKKyAg
ICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkgPyBzdGQ6Omdl
dDxTdHJpbmc+KG1fZGF0YSkgOiBlbXB0eVN0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIu
Y3BwCmluZGV4IGQ2YTQ5M2Y2MTYwODM1ZGM5OTVjMzFhM2M5NmVjMjMyNDcwYTViMjQuLmIzZGVl
YzIyZjNmMjI5MWVmYjU3YjFlYjJmOWFhOWZmOTE4MmFjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAg
c3RhdGljIGJvb2wgc2hvdWxkSW5zZXJ0QXNTZXBhcmF0ZU1hcmtlcihjb25zdCBEb2N1bWVudE1h
cmtlciYgbWFya2VyKQogI2VuZGlmCiAKICAgICBpZiAobWFya2VyLnR5cGUoKSA9PSBEb2N1bWVu
dE1hcmtlcjo6RHJhZ2dlZENvbnRlbnQpCi0gICAgICAgIHJldHVybiBpczxSZW5kZXJSZXBsYWNl
ZD4oV1RGOjpnZXQ8UmVmUHRyPE5vZGU+PihtYXJrZXIuZGF0YSgpKS0+cmVuZGVyZXIoKSk7Cisg
ICAgICAgIHJldHVybiBpczxSZW5kZXJSZXBsYWNlZD4oc3RkOjpnZXQ8UmVmUHRyPE5vZGU+Piht
YXJrZXIuZGF0YSgpKS0+cmVuZGVyZXIoKSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggMjY0ZWM1YmRiZmZiMDc3MmEyZmQxMmM5NmQ3MTVjOTZlMzJi
Y2ExYS4uODc4ZTUxMDQwNGJlMzVmMDE0ZjAxNGM1NzEwNjc5Y2E5ZmZkNzZmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtOTIwLDggKzkyMCw4IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50
b1ZpZXcoc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8Ym9vbCwgU2Nyb2xsSW50b1ZpZXdPcHRp
CiAgICAgaWYgKGFyZykgewogICAgICAgICBhdXRvIHZhbHVlID0gYXJnLnZhbHVlKCk7CiAgICAg
ICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNjcm9sbEludG9WaWV3T3B0aW9ucz4odmFs
dWUpKQotICAgICAgICAgICAgb3B0aW9ucyA9IFdURjo6Z2V0PFNjcm9sbEludG9WaWV3T3B0aW9u
cz4odmFsdWUpOwotICAgICAgICBlbHNlIGlmICghV1RGOjpnZXQ8Ym9vbD4odmFsdWUpKQorICAg
ICAgICAgICAgb3B0aW9ucyA9IHN0ZDo6Z2V0PFNjcm9sbEludG9WaWV3T3B0aW9ucz4odmFsdWUp
OworICAgICAgICBlbHNlIGlmICghc3RkOjpnZXQ8Ym9vbD4odmFsdWUpKQogICAgICAgICAgICAg
b3B0aW9ucy5ibG9ja1Bvc2l0aW9uID0gU2Nyb2xsTG9naWNhbFBvc2l0aW9uOjpFbmQ7CiAgICAg
fQogCkBAIC00NjI5LDkgKzQ2MjksOSBAQCBFeGNlcHRpb25PcjxSZWY8V2ViQW5pbWF0aW9uPj4g
RWxlbWVudDo6YW5pbWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYgogICAgICAg
ICBhdXRvIG9wdGlvbnNWYWx1ZSA9IG9wdGlvbnMudmFsdWUoKTsKICAgICAgICAgc3RkOjp2YXJp
YW50PGRvdWJsZSwgS2V5ZnJhbWVFZmZlY3RPcHRpb25zPiBrZXlmcmFtZUVmZmVjdE9wdGlvbnNW
YXJpYW50OwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KG9wdGlv
bnNWYWx1ZSkpCi0gICAgICAgICAgICBrZXlmcmFtZUVmZmVjdE9wdGlvbnNWYXJpYW50ID0gV1RG
OjpnZXQ8ZG91YmxlPihvcHRpb25zVmFsdWUpOworICAgICAgICAgICAga2V5ZnJhbWVFZmZlY3RP
cHRpb25zVmFyaWFudCA9IHN0ZDo6Z2V0PGRvdWJsZT4ob3B0aW9uc1ZhbHVlKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGtleWZyYW1lRWZmZWN0T3B0aW9ucyA9IFdURjo6Z2V0
PEtleWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4ob3B0aW9uc1ZhbHVlKTsKKyAgICAgICAgICAgIGF1
dG8ga2V5ZnJhbWVFZmZlY3RPcHRpb25zID0gc3RkOjpnZXQ8S2V5ZnJhbWVBbmltYXRpb25PcHRp
b25zPihvcHRpb25zVmFsdWUpOwogICAgICAgICAgICAgaWQgPSBrZXlmcmFtZUVmZmVjdE9wdGlv
bnMuaWQ7CiAgICAgICAgICAgICBrZXlmcmFtZUVmZmVjdE9wdGlvbnNWYXJpYW50ID0gV1RGTW92
ZShrZXlmcmFtZUVmZmVjdE9wdGlvbnMpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAppbmRleCAzNmFiNGE0
MDIzOGFjNDAyNzhjNmQ3NGFhZjFkYjRhNjYwZWJhNzhiLi40NjI4ZTFmYmU5Yzg5Nzc2M2NkYmQy
ZTQ1OGYxMzgxZGIzODUyODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIEFs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmlyZWQoKQogICAgIGNhc2UgQWx0ZXJuYXRp
dmVUZXh0VHlwZVJldmVyc2lvbjogewogICAgICAgICBpZiAoIW1fcmFuZ2VXaXRoQWx0ZXJuYXRp
dmUpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5n
ID0gV1RGOjpnZXQ8QXV0b2NvcnJlY3Rpb25SZXBsYWNlbWVudD4obV9kZXRhaWxzKTsKKyAgICAg
ICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nID0gc3RkOjpnZXQ8QXV0b2NvcnJlY3Rpb25SZXBs
YWNlbWVudD4obV9kZXRhaWxzKTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50U3RyaW5nLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKQEAg
LTI4Nyw3ICsyODcsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnRpbWVyRmly
ZWQoKQogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQogICAgICAgICBpZiAoIW1fcmFu
Z2VXaXRoQWx0ZXJuYXRpdmUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gZGlj
dGF0aW9uQ29udGV4dCA9IFdURjo6Z2V0PERpY3RhdGlvbkNvbnRleHQ+KG1fZGV0YWlscyk7Cisg
ICAgICAgIGF1dG8gZGljdGF0aW9uQ29udGV4dCA9IHN0ZDo6Z2V0PERpY3RhdGlvbkNvbnRleHQ+
KG1fZGV0YWlscyk7CiAgICAgICAgIGlmICghZGljdGF0aW9uQ29udGV4dCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgYXV0byBib3VuZGluZ0JveCA9IHJvb3RWaWV3UmVjdEZvclJhbmdl
KCptX3JhbmdlV2l0aEFsdGVybmF0aXZlKTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBib29sIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKGNvbnN0IERv
Y3VtZW50TWFya2VyJgogICAgICAgICBzdGFydEFsdGVybmF0aXZlVGV4dFVJVGltZXIoQWx0ZXJu
YXRpdmVUZXh0VHlwZVJldmVyc2lvbik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9jdW1l
bnRNYXJrZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZlczogewotICAgICAgICBhdXRvJiBtYXJrZXJE
YXRhID0gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRh
KCkpOworICAgICAgICBhdXRvJiBtYXJrZXJEYXRhID0gc3RkOjpnZXQ8RG9jdW1lbnRNYXJrZXI6
OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRhKCkpOwogICAgICAgICBpZiAoY3VycmVudFdvcmQg
IT0gbWFya2VyRGF0YS5vcmlnaW5hbFRleHQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIG1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUgPSBXVEZNb3ZlKHdvcmRSYW5nZSk7CkBAIC02
NDgsNyArNjQ4LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpyZW1vdmVEaWN0
YXRpb25BbHRlcm5hdGl2ZXNGb3JNYXJrZXIoY29uc3QgRG9jdW0KIHsKICNpZiBVU0UoRElDVEFU
SU9OX0FMVEVSTkFUSVZFUykKICAgICBpZiAoYXV0byogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KCkpCi0gICAgICAgIGNsaWVudC0+cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdU
Rjo6Z2V0PERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25EYXRhPihtYXJrZXIuZGF0YSgpKS5jb250
ZXh0KTsKKyAgICAgICAgY2xpZW50LT5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoc3RkOjpn
ZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRhKCkpLmNvbnRleHQp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWFya2VyKTsKICNlbmRpZgpAQCAtNjU4LDcgKzY1
OCw3IEBAIFZlY3RvcjxTdHJpbmc+IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmRpY3RhdGlv
bkFsdGVybmF0aXZlc0Zvck1hcmtlcihjb25zdCBECiB7CiAjaWYgVVNFKERJQ1RBVElPTl9BTFRF
Uk5BVElWRVMpCiAgICAgaWYgKGF1dG8qIGNsaWVudCA9IGFsdGVybmF0aXZlVGV4dENsaWVudCgp
KQotICAgICAgICByZXR1cm4gY2xpZW50LT5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoV1RGOjpnZXQ8
RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRhKCkpLmNvbnRleHQpOwor
ICAgICAgICByZXR1cm4gY2xpZW50LT5kaWN0YXRpb25BbHRlcm5hdGl2ZXMoc3RkOjpnZXQ8RG9j
dW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRhKCkpLmNvbnRleHQpOwogICAg
IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWFya2Vy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA5NTAxOTQwYzAxMjcyNDNjNTlmMjZj
ZTc4OTU1YTM5YzE1NTIwYjg0Li42ZDRhZmNkNjQ2NjlmOTFjMWE1ZWMyM2MzZGFlZDRjMTRmYzEy
ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yMjc2LDcgKzIyNzYsNyBAQCB2
b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pCiAgICAgICAgIGlmIChhdXRvKiB3b3JkID0gc3RkOjpnZXRfaWY8VGV4dENoZWNraW5n
SGVscGVyOjpNaXNzcGVsbGVkV29yZD4oJmZvdW5kSXRlbSkpCiAgICAgICAgICAgICBtaXNzcGVs
bGVkV29yZCA9IFdURk1vdmUoKndvcmQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB1bmdy
YW1tYXRpY2FsUGhyYXNlID0gV1RGOjpnZXQ8VGV4dENoZWNraW5nSGVscGVyOjpVbmdyYW1tYXRp
Y2FsUGhyYXNlPihXVEZNb3ZlKGZvdW5kSXRlbSkpOworICAgICAgICAgICAgdW5ncmFtbWF0aWNh
bFBocmFzZSA9IHN0ZDo6Z2V0PFRleHRDaGVja2luZ0hlbHBlcjo6VW5ncmFtbWF0aWNhbFBocmFz
ZT4oV1RGTW92ZShmb3VuZEl0ZW0pKTsKICAgICB9IGVsc2UgewogICAgICAgICBtaXNzcGVsbGVk
V29yZCA9IFRleHRDaGVja2luZ0hlbHBlcigqY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2Up
LmZpbmRGaXJzdE1pc3NwZWxsZWRXb3JkKCk7CiAKQEAgLTIzMDMsNyArMjMwMyw3IEBAIHZvaWQg
RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlv
bikKICAgICAgICAgICAgIGlmIChhdXRvKiB3b3JkID0gc3RkOjpnZXRfaWY8VGV4dENoZWNraW5n
SGVscGVyOjpNaXNzcGVsbGVkV29yZD4oJmZvdW5kSXRlbSkpCiAgICAgICAgICAgICAgICAgbWlz
c3BlbGxlZFdvcmQgPSBXVEZNb3ZlKCp3b3JkKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB1bmdyYW1tYXRpY2FsUGhyYXNlID0gV1RGOjpnZXQ8VGV4dENoZWNraW5nSGVscGVy
OjpVbmdyYW1tYXRpY2FsUGhyYXNlPihXVEZNb3ZlKGZvdW5kSXRlbSkpOworICAgICAgICAgICAg
ICAgIHVuZ3JhbW1hdGljYWxQaHJhc2UgPSBzdGQ6OmdldDxUZXh0Q2hlY2tpbmdIZWxwZXI6OlVu
Z3JhbW1hdGljYWxQaHJhc2U+KFdURk1vdmUoZm91bmRJdGVtKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IFRleHRDaGVja2luZ0hlbHBlcigqY2xpZW50
KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsZWRXb3JkKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCBhYWJkZGEwM2Ew
MGY3NGQ0YjVhNmJkY2MyMjRmNmFhMzJiMjc1MzFhLi5mNjdhMmYzN2U4ZjFjODg2ZjEzMWJmNDdk
ZDUzZWY1Mjg0OWNlYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5
bGUuY3BwCkBAIC0xNDMsMTQgKzE0MywxNCBAQCBDYW52YXNTdHlsZSBDYW52YXNTdHlsZTo6Y3Jl
YXRlRnJvbVN0cmluZ1dpdGhPdmVycmlkZUFscGhhKGNvbnN0IFN0cmluZyYgY29sb3JTdAogYm9v
bCBDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3IoY29uc3QgQ2FudmFzU3R5bGUmIG90aGVy
KSBjb25zdAogewogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9yPihtX3N0eWxl
KSAmJiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9yPihvdGhlci5tX3N0eWxlKSkKLSAgICAg
ICAgcmV0dXJuIFdURjo6Z2V0PENvbG9yPihtX3N0eWxlKSA9PSBXVEY6OmdldDxDb2xvcj4ob3Ro
ZXIubV9zdHlsZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxDb2xvcj4obV9zdHlsZSkgPT0g
c3RkOjpnZXQ8Q29sb3I+KG90aGVyLm1fc3R5bGUpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CiBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnQoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb21w
b25lbnRzKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9y
PihtX3N0eWxlKSAmJiBXVEY6OmdldDxDb2xvcj4obV9zdHlsZSkgPT0gY29udmVydENvbG9yPFNS
R0JBPHVpbnQ4X3Q+Pihjb21wb25lbnRzKTsKKyAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxDb2xvcj4obV9zdHlsZSkgJiYgc3RkOjpnZXQ8Q29sb3I+KG1fc3R5bGUpID09IGNvbnZl
cnRDb2xvcjxTUkdCQTx1aW50OF90Pj4oY29tcG9uZW50cyk7CiB9CiAKIHZvaWQgQ2FudmFzU3R5
bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggMDM1MTc5MGFkZGVmMGFl
NDQzN2ExZWVkNzZmYmIxNDU2YWJhZmFkYy4uOWUyZTVkZmJjMTY3ZmU2YzdmMTNlNTFmNTY5YWU1
ZmFjNzNlZDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0
dXJuICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEludmFsaWQ+KG1fc3R5bGUpOyB9CiAgICAgYm9v
bCBpc0N1cnJlbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
Q3VycmVudENvbG9yPihtX3N0eWxlKTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG92ZXJy
aWRlQWxwaGEoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxDdXJyZW50Q29sb3I+KG1fc3R5bGUp
Lm92ZXJyaWRlQWxwaGE7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFscGhh
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8Q3VycmVudENvbG9yPihtX3N0eWxlKS5vdmVycmlk
ZUFscGhhOyB9CiAKICAgICBTdHJpbmcgY29sb3IoKSBjb25zdDsKICAgICBSZWZQdHI8Q2FudmFz
R3JhZGllbnQ+IGNhbnZhc0dyYWRpZW50KCkgY29uc3Q7CkBAIC05MCwxOSArOTAsMTkgQEAgaW5s
aW5lIFJlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzU3R5bGU6OmNhbnZhc0dyYWRpZW50KCkg
Y29uc3QKIHsKICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPENhbnZhc0dy
YWRpZW50Pj4obV9zdHlsZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBX
VEY6OmdldDxSZWZQdHI8Q2FudmFzR3JhZGllbnQ+PihtX3N0eWxlKTsKKyAgICByZXR1cm4gc3Rk
OjpnZXQ8UmVmUHRyPENhbnZhc0dyYWRpZW50Pj4obV9zdHlsZSk7CiB9CiAKIGlubGluZSBSZWZQ
dHI8Q2FudmFzUGF0dGVybj4gQ2FudmFzU3R5bGU6OmNhbnZhc1BhdHRlcm4oKSBjb25zdAogewog
ICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8Q2FudmFzUGF0dGVybj4+KG1f
c3R5bGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV1RGOjpnZXQ8UmVm
UHRyPENhbnZhc1BhdHRlcm4+PihtX3N0eWxlKTsKKyAgICByZXR1cm4gc3RkOjpnZXQ8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PihtX3N0eWxlKTsKIH0KIAogaW5saW5lIFN0cmluZyBDYW52YXNTdHls
ZTo6Y29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9ySFRNTChXVEY6
OmdldDxDb2xvcj4obV9zdHlsZSkpOworICAgIHJldHVybiBzZXJpYWxpemF0aW9uRm9ySFRNTChz
dGQ6OmdldDxDb2xvcj4obV9zdHlsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCmluZGV4IGQ2ZGVmNTJjZGRmYjE2MjBiZWNkZGJiZTA3MmNmYjk2ZGNiNjNi
OGUuLmNlOWEwOTEwNzNjOTI4MTdkM2E4Mjc2MjdjYmUzNGRmNjhmMTY4ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCkBAIC03MzEsMTYgKzczMSwxNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgV2Vi
R0xBbnkgcGFyYW0gPSBtX2NvbnRleHQuZ2V0UGFyYW1ldGVyKGF0dGFjaG1lbnQpOwogICAgICAg
ICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxUPihwYXJhbSkpCi0gICAgICAgICAgICBkZXN0
aW5hdGlvbiA9IFdURjo6Z2V0PFQ+KHBhcmFtKTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0g
c3RkOjpnZXQ8VD4ocGFyYW0pOwogICAgIH0KIAogICAgIGJvb2wgaGFzQnVmZmVyQmluZGluZyhH
Q0dMZW51bSBwbmFtZSkKICAgICB7CiAgICAgICAgIFdlYkdMQW55IGJpbmRpbmcgPSBtX2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKHBuYW1lKTsKICAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpGUkFNRUJVRkZFUl9CSU5ESU5HKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+PihiaW5kaW5nKSAmJiBXVEY6
OmdldDxSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4+KGJpbmRpbmcpOworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+PihiaW5k
aW5nKSAmJiBzdGQ6OmdldDxSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4+KGJpbmRpbmcpOwogICAg
ICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUl9CSU5ESU5H
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFdlYkdM
UmVuZGVyYnVmZmVyPj4oYmluZGluZykgJiYgV1RGOjpnZXQ8UmVmUHRyPFdlYkdMUmVuZGVyYnVm
ZmVyPj4oYmluZGluZyk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+PihiaW5kaW5nKSAmJiBzdGQ6OmdldDxSZWZQdHI8
V2ViR0xSZW5kZXJidWZmZXI+PihiaW5kaW5nKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtNzQ5LDcgKzc0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYkdMQW55IGF0dGFj
aG1lbnRQYXJhbWV0ZXIgPSBtX2NvbnRleHQuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgR3JhcGhpY3ND
b250ZXh0R0w6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpOwogICAgICAgICBp
ZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8dW5zaWduZWQ+KGF0dGFjaG1lbnRQYXJhbWV0ZXIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoV1RGOjpnZXQ8dW5zaWdu
ZWQ+KGF0dGFjaG1lbnRQYXJhbWV0ZXIpICE9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihHcmFwaGlj
c0NvbnRleHRHTDo6UkVOREVSQlVGRkVSKSkKKyAgICAgICAgaWYgKHN0ZDo6Z2V0PHVuc2lnbmVk
PihhdHRhY2htZW50UGFyYW1ldGVyKSAhPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3ND
b250ZXh0R0w6OlJFTkRFUkJVRkZFUikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcApp
bmRleCA0OGI4NjE1YjA3ZjRhMjM5ZDJhODIyMWM4MWEzMTA1NjcyMDc1NDk1Li5jY2MyMGNkZDQ1
MGJhYjljNGVkZWY1MTk5ZGI3MTU5NWM5MzY4ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9W
VFRDdWUuY3BwCkBAIC0zOTgsNyArMzk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVlRUQ3VlOjpz
ZXRMaW5lKGNvbnN0IExpbmVBbmRQb3NpdGlvblNldHRpbmcmIHBvc2l0aW9uKQogICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgbGluZVBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjpxdWlldF9OYU4oKTsKICAgICB9IGVsc2UgewotICAgICAgICBsaW5lUG9zaXRp
b24gPSBXVEY6OmdldDxkb3VibGU+KHBvc2l0aW9uKTsKKyAgICAgICAgbGluZVBvc2l0aW9uID0g
c3RkOjpnZXQ8ZG91YmxlPihwb3NpdGlvbik7CiAKICAgICAgICAgaWYgKG1fbGluZVBvc2l0aW9u
ID09IGxpbmVQb3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC00NzAsNyArNDcw
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gVlRUQ3VlOjpzZXRQb3NpdGlvbihjb25zdCBMaW5lQW5k
UG9zaXRpb25TZXR0aW5nJiBwb3NpdGlvbikKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgIHRleHRQb3NpdGlvbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFO
KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGV4dFBvc2l0aW9uID0gV1RGOjpnZXQ8ZG91Ymxl
Pihwb3NpdGlvbik7CisgICAgICAgIHRleHRQb3NpdGlvbiA9IHN0ZDo6Z2V0PGRvdWJsZT4ocG9z
aXRpb24pOwogICAgICAgICBpZiAoISh0ZXh0UG9zaXRpb24gPj0gMCAmJiB0ZXh0UG9zaXRpb24g
PD0gMTAwKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNpemVFcnJvciB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDcxZTlhZDYxMTg1ZjRjYzJlNWM3NzA5Njkx
MDYxZTVlYzJhYTVmYjguLjVhMjNjZTIwOGIyNDkwYWQxNmE4NTRlNGM5ZjkwNWY4OTk1MGNiOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBkYXRhYmFzZVJlc3Vs
dCA9IFdURjo6Z2V0PFJlZlB0cjxJREJEYXRhYmFzZT4+KHJlc3VsdFZhbHVlKTsKKyAgICAgICAg
YXV0byBkYXRhYmFzZVJlc3VsdCA9IHN0ZDo6Z2V0PFJlZlB0cjxJREJEYXRhYmFzZT4+KHJlc3Vs
dFZhbHVlKTsKICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNlLT5leGVjdXRlKCpkYXRh
YmFzZVJlc3VsdCk7CiAgICAgICAgIGRhdGFiYXNlUmVzdWx0LT5jbG9zZSgpOwogICAgIH0KQEAg
LTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBhdXRvIGN1cnNvciA9IFdURjo6Z2V0PFJlZlB0cjxJREJDdXJzb3I+PihyZXN1
bHRWYWx1ZSk7CisgICAgICAgIGF1dG8gY3Vyc29yID0gc3RkOjpnZXQ8UmVmUHRyPElEQkN1cnNv
cj4+KHJlc3VsdFZhbHVlKTsKIAogICAgICAgICBpZiAobV9za2lwQ291bnQpIHsKICAgICAgICAg
ICAgIGlmIChjdXJzb3ItPmFkdmFuY2UobV9za2lwQ291bnQpLmhhc0V4Y2VwdGlvbigpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9y
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveC5jcHAKaW5kZXggOTBlODc4MThhNDZjM2RjOGY5Y2RhYWEyZDMzYzA0Y2Q3YzM3MzZlZi4u
OTE2MTIyMWRkOTUwNWYwMDI2MWI4Yjg3MTBmOGYwNTA1OTQ2MjZlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3Bw
CkBAIC0xOTIsMTMgKzE5MiwxMyBAQCBMZWFmQm94SXRlcmF0b3IgYm94Rm9yKGNvbnN0IExheW91
dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50JiBjb250ZW50LCBzaXplX3QgYgogI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogY29uc3QgQm94TW9kZXJuUGF0aCYgQm94Ojpt
b2Rlcm5QYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjpnZXQ8Qm94TW9kZXJuUGF0aD4o
bV9wYXRoVmFyaWFudCk7CisgICAgcmV0dXJuIHN0ZDo6Z2V0PEJveE1vZGVyblBhdGg+KG1fcGF0
aFZhcmlhbnQpOwogfQogI2VuZGlmCiAKIGNvbnN0IEJveExlZ2FjeVBhdGgmIEJveDo6bGVnYWN5
UGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6Z2V0PEJveExlZ2FjeVBhdGg+KG1fcGF0
aFZhcmlhbnQpOworICAgIHJldHVybiBzdGQ6OmdldDxCb3hMZWdhY3lQYXRoPihtX3BhdGhWYXJp
YW50KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vSW5saW5lSXRlcmF0b3JCb3guaAppbmRleCA5YzQ3MTBiYmE3ZWJiMzkzMDU3Y2YwN2E0MTg1
OTVkNTg0MmZjNDBlLi4yN2U4MDI0NTYxM2FlNGFjMjA4OWNhZjBlNmYxZGE5MGVlMTY5ZWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRl
cmF0b3JCb3guaApAQCAtMjQ2LDcgKzI0Niw3IEBAIGlubGluZSBjb25zdCBMZWdhY3lJbmxpbmVC
b3gqIEJveDo6bGVnYWN5SW5saW5lQm94KCkgY29uc3QKIHsKICAgICBpZiAoIXN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8Qm94TGVnYWN5UGF0aD4obV9wYXRoVmFyaWFudCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBXVEY6OmdldDxCb3hMZWdhY3lQYXRoPihtX3BhdGhWYXJp
YW50KS5sZWdhY3lJbmxpbmVCb3goKTsKKyAgICByZXR1cm4gc3RkOjpnZXQ8Qm94TGVnYWN5UGF0
aD4obV9wYXRoVmFyaWFudCkubGVnYWN5SW5saW5lQm94KCk7CiB9CiAKICNpZiBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKQEAgLTI1NCw3ICsyNTQsNyBAQCBpbmxpbmUgY29uc3Qg
SW5saW5lRGlzcGxheTo6Qm94KiBCb3g6OmlubGluZUJveCgpIGNvbnN0CiB7CiAgICAgaWYgKCFz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPEJveE1vZGVyblBhdGg+KG1fcGF0aFZhcmlhbnQpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gJldURjo6Z2V0PEJveE1vZGVyblBhdGg+
KG1fcGF0aFZhcmlhbnQpLmJveCgpOworICAgIHJldHVybiAmc3RkOjpnZXQ8Qm94TW9kZXJuUGF0
aD4obV9wYXRoVmFyaWFudCkuYm94KCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9G
cmFtZUlPUy5tbQppbmRleCA4NjliMzEwN2MwY2E5MmZkMDJmMjRjYjRkYzk2NTQyNDQ4M2QzYTZi
Li5mZjc2OWM3MzlhYWVhNjRkYjdmNzA3YjQ5MGJkNWMwYTFjNjM0ZGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9GcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9GcmFtZUlPUy5tbQpAQCAtNzI4LDcgKzcyOCw3IEBAIE5TQXJyYXkgKkZyYW1lOjpp
bnRlcnByZXRhdGlvbnNGb3JDdXJyZW50Um9vdCgpIGNvbnN0CiAgICAgc2l6ZV90IGludGVycHJl
dGF0aW9uc0NvdW50ID0gMTsKIAogICAgIGZvciAoYXV0byogbWFya2VyIDogbWFya2Vyc0luUm9v
dCkKLSAgICAgICAgaW50ZXJwcmV0YXRpb25zQ291bnQgKj0gV1RGOjpnZXQ8VmVjdG9yPFN0cmlu
Zz4+KG1hcmtlci0+ZGF0YSgpKS5zaXplKCkgKyAxOworICAgICAgICBpbnRlcnByZXRhdGlvbnND
b3VudCAqPSBzdGQ6OmdldDxWZWN0b3I8U3RyaW5nPj4obWFya2VyLT5kYXRhKCkpLnNpemUoKSAr
IDE7CiAKICAgICBWZWN0b3I8VmVjdG9yPFVDaGFyPj4gaW50ZXJwcmV0YXRpb25zOwogICAgIGlu
dGVycHJldGF0aW9ucy5ncm93KGludGVycHJldGF0aW9uc0NvdW50KTsKQEAgLTczOSw3ICs3Mzks
NyBAQCBOU0FycmF5ICpGcmFtZTo6aW50ZXJwcmV0YXRpb25zRm9yQ3VycmVudFJvb3QoKSBjb25z
dAogCiAgICAgZm9yIChhdXRvJiBub2RlIDogaW50ZXJzZWN0aW5nTm9kZXMocmFuZ2VPZlJvb3RD
b250ZW50cykpIHsKICAgICAgICAgZm9yIChhdXRvKiBtYXJrZXIgOiBkb2N1bWVudCgpLT5tYXJr
ZXJzKCkubWFya2Vyc0Zvcihub2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0
aEFsdGVybmF0aXZlcykpIHsKLSAgICAgICAgICAgIGF1dG8mIGFsdGVybmF0aXZlcyA9IFdURjo6
Z2V0PFZlY3RvcjxTdHJpbmc+PihtYXJrZXItPmRhdGEoKSk7CisgICAgICAgICAgICBhdXRvJiBh
bHRlcm5hdGl2ZXMgPSBzdGQ6OmdldDxWZWN0b3I8U3RyaW5nPj4obWFya2VyLT5kYXRhKCkpOwog
CiAgICAgICAgICAgICBhdXRvIHJhbmdlRm9yTWFya2VyID0gbWFrZVNpbXBsZVJhbmdlKG5vZGUs
ICptYXJrZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3Vz
dG9tRGF0YS5jcHAKaW5kZXggZDNlODA0OTVmZjcwMzk4ZGViZTAyMzIzZjM2YjBhYWVjZmE4YzZh
Mi4uOWQzZjg3YTkxMTRjMzhhNTRlMzNhMDVlMmI5ODk1MmNjZjY3YWU3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcApAQCAtMzYsMTAg
KzM2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBzdGQ6OnZhcmlhbnQ8U3RyaW5n
LCBSZWY8U2hhcmVkQnVmZmVyPj4gY29weVBsYXRmb3JtRGF0YShjb25zdCBzdGQ6OnZhcmlhbnQ8
U3RyaW5nLCBSZWY8U2hhcmVkQnVmZmVyPj4mIG90aGVyKQogewogICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFN0cmluZz4ob3RoZXIpKQotICAgICAgICByZXR1cm4geyBXVEY6OmdldDxT
dHJpbmc+KG90aGVyKSB9OworICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxTdHJpbmc+KG90aGVy
KSB9OwogCiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KG90aGVyKSkKLSAgICAgICAgcmV0dXJuIHsgV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG90
aGVyKS5jb3B5UmVmKCkgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG90aGVyKS5jb3B5UmVmKCkgfTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0yMDks
NyArMjA5LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gUGFzdGVib2FyZEN1c3RvbURhdGE6OnJl
YWRCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdAogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+
KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmPFNo
YXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29weVJlZigpOworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihlbnRyeS5wbGF0Zm9ybURhdGEpLmNv
cHlSZWYoKTsKIAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0yMjMsNyArMjIz
LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgY29uc3QKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZW50cnkucGxhdGZvcm1EYXRhKSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6OmdldDxTdHJpbmc+KGVudHJ5LnBsYXRmb3JtRGF0YSk7CisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpnZXQ8U3RyaW5nPihlbnRyeS5wbGF0Zm9ybURhdGEpOwogCiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZyhGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYgdHlwCiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGVu
dHJ5LnBsYXRmb3JtRGF0YSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRv
IHN0cmluZyA9IFdURjo6Z2V0PFN0cmluZz4oZW50cnkucGxhdGZvcm1EYXRhKTsKKyAgICAgICAg
YXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KGVudHJ5LnBsYXRmb3JtRGF0YSk7CiAgICAg
ICAgIGlmICghc3RyaW5nLmlzTnVsbCgpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlw
ZSwgc3RyaW5nKTsKICAgICB9CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Zm9yRWFjaFBsYXRmb3JtU3RyaW5nT3JCdWZmZXIoRnVuY3Rpb248dm9pZChjb25z
dCBTdHIKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9kYXRhKSB7CiAgICAgICAgIGF1dG8m
IGRhdGEgPSBlbnRyeS5wbGF0Zm9ybURhdGE7Ci0gICAgICAgIGlmICgoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICFXVEY6OmdldDxTdHJpbmc+KGRhdGEpLmlzTnVsbCgp
KSB8fCBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihkYXRhKSkKKyAg
ICAgICAgaWYgKChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIXN0ZDo6
Z2V0PFN0cmluZz4oZGF0YSkuaXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwg
ZGF0YSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
aW5kZXggZWEwNTJhZjRmZTllOGFlZWYxNGZmNmM1NzMyMzJlYjdkNDZmOTI4MS4uYzQ1MTIzODYx
ZWZkNDczNGYwOGMxYzBkNWUwODE0NDllZjI3ODNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgVmVjdG9yPHVpbnQ4X3Q+IFNo
YXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0
YTsKICAgICBpZiAoaGFzT25lU2VnbWVudCgpICYmIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVj
dG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCi0g
ICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2UoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4
X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50
OF90PigpKTsKKyAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxW
ZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSwg
VmVjdG9yPHVpbnQ4X3Q+KCkpOwogICAgIGVsc2UKICAgICAgICAgY29tYmluZWREYXRhID0gY29t
YmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmNwcAppbmRleCBhNjE5MDI4YmQ3Nzc5NTcwZTc1NzVkNTA5ZTk5ZjFhZjM5ODYw
NjhkLi45NWZkMTM5MTNmNTVhNTJlMzQ0Yjk5MmRkYWI0ZDMyZjkyMTA4MDIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCBib29sIENBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbjo6b3BlcmF0b3I9PShjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBvdGhlcikgYwogICAgIGlmIChvdGhlci5wbGF0Zm9ybURlc2NyaXB0aW9uKCkudHlwZSAhPSBQ
bGF0Zm9ybURlc2NyaXB0aW9uOjpDQUF1ZGlvU3RyZWFtQmFzaWNUeXBlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gb3BlcmF0b3I9PSgqV1RGOjpnZXQ8Y29uc3QgQXVkaW9T
dHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4ob3RoZXIucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2Ny
aXB0aW9uKSk7CisgICAgcmV0dXJuIG9wZXJhdG9yPT0oKnN0ZDo6Z2V0PGNvbnN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbio+KG90aGVyLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlw
dGlvbikpOwogfQogCiBib29sIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6b3BlcmF0b3IhPShj
b25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURl
c2NyaXB0aW9uLmgKaW5kZXggMTQyOTc5MDIwZjdmOWI5M2RmYjNhNzZlZWEwYmNlYzc0NDZkODJm
Yi4uMjZiYThjODVjNTQzY2RiYmIxNmRiYmM2MGZjZDU2YWIwZDA4YWFjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0
cmVhbURlc2NyaXB0aW9uLmgKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBDQUF1ZGlvU3RyZWFtRGVz
Y3JpcHRpb246OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24KIGlubGluZSBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gdG9DQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCiB7CiAgICAg
QVNTRVJUKGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3Jt
RGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOwotICAgIHJldHVybiBDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24oKldURjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbio+KGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbikpOwor
ICAgIHJldHVybiBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKnN0ZDo6Z2V0PGNvbnN0IEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24o
KS5kZXNjcmlwdGlvbikpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9NZWRpYVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9NZWRpYVV0aWxpdGllcy5jcHAKaW5kZXggNzg0NzRkOGU1YTVhYzA3MDM1MzM1OTkwY2Rk
ZjhhZmNkODA1NjE5Ni4uYzhjMDFhZTIwYWRjZDRkYmM4ZGI2YTg2OGY5NjY3MzdhNjBlOTY2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVkaWFVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lZGlhVXRpbGl0aWVzLmNw
cApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJldGFpblB0cjxDTUZv
cm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3QgbWFnaWNDb29raWVTaXpl
LCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tpZSkKIHsKLSAgICBhdXRvIGJhc2ljRGVzY3JpcHRpb24g
PSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlv
bi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOworICAgIGF1dG8gYmFzaWNEZXNj
cmlwdGlvbiA9IHN0ZDo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRl
c2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CiAgICAgQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBmb3JtYXQgPSBudWxscHRyOwogICAgIGF1dG8gZXJyb3IgPSBQQUw6
OkNNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNp
Y0Rlc2NyaXB0aW9uLCAwLCBudWxscHRyLCBtYWdpY0Nvb2tpZVNpemUsIG1hZ2ljQ29va2llLCBu
dWxscHRyLCAmZm9ybWF0KTsKICAgICBpZiAoZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCmluZGV4IGQ2
NDUwNjM4MWQ2ZmJlOTZiYzY0MTk0NWQ3M2QxYjhkNzA4ZTVkMDcuLmVlZWU5MThhN2E2NTE2MWRj
ZWNiNGZhNDAzMmYzMTY0NTIwOWVkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBLZXllZERlY29kZXJHZW5lcmljOjpEaWN0aW9u
YXJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBO
b2RlID0gVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIGJvb2wsIHVpbnQzMl90LCB1aW50NjRfdCwg
aW50MzJfdCwgaW50NjRfdCwgZmxvYXQsIGRvdWJsZSwgU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8
RGljdGlvbmFyeT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+OworICAgIHVzaW5nIE5vZGUgPSBz
dGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBib29sLCB1aW50MzJfdCwgdWludDY0X3QsIGlu
dDMyX3QsIGludDY0X3QsIGZsb2F0LCBkb3VibGUsIFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPERp
Y3Rpb25hcnk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+PjsKIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYga2V5LCBUJiYgdmFsdWUpIHsgbV9t
YXAuYWRkKGtleSwgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Tm9kZT4oc3RkOjpm
b3J3YXJkPFQ+KHZhbHVlKSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCmluZGV4IDQ0ZjAwMjEzMDM5MDBjYzg3Mzg4Y2YxZjA0
ZDVlNDZmOGI1ZmRhOTAuLmE2ZGZiYmY0MGY0NjlhYzNjNGVjYmRlNDQ2YmIwNjMwOWQ5NGU5NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0
aW9ucy5oCkBAIC01NywxNyArNTcsMTcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0F1dG8oKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYmIFdURjo6Z2V0
PERlY29kaW5nTW9kZT4obV9kZWNvZGluZ01vZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6QXV0
bzsKKyAgICAgICAgcmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYmIHN0ZDo6Z2V0PERlY29kaW5n
TW9kZT4obV9kZWNvZGluZ01vZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6QXV0bzsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBoYXNEZWNvZGluZ01vZGUoKSAmJiBXVEY6OmdldDxEZWNvZGluZ01vZGU+KG1fZGVjb2Rp
bmdNb2RlT3JTaXplKSA9PSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzOworICAgICAgICByZXR1
cm4gaGFzRGVjb2RpbmdNb2RlKCkgJiYgc3RkOjpnZXQ8RGVjb2RpbmdNb2RlPihtX2RlY29kaW5n
TW9kZU9yU2l6ZSkgPT0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91czsKICAgICB9CiAKICAgICBi
b29sIGlzQXN5bmNocm9ub3VzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBoYXNEZWNv
ZGluZ01vZGUoKSAmJiBXVEY6OmdldDxEZWNvZGluZ01vZGU+KG1fZGVjb2RpbmdNb2RlT3JTaXpl
KSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czsKKyAgICAgICAgcmV0dXJuIGhhc0RlY29k
aW5nTW9kZSgpICYmIHN0ZDo6Z2V0PERlY29kaW5nTW9kZT4obV9kZWNvZGluZ01vZGVPclNpemUp
ID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOwogICAgIH0KIAogICAgIGJvb2wgaXNBc3lu
Y2hyb25vdXNDb21wYXRpYmxlV2l0aChjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0
aW9ucykgY29uc3QKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25h
bDxJbnRTaXplPiBzaXplRm9yRHJhd2luZygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
aGFzU2l6ZSgpKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PHN0ZDo6b3B0aW9uYWw8SW50U2l6
ZT4+KG1fZGVjb2RpbmdNb2RlT3JTaXplKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PHN0ZDo6
b3B0aW9uYWw8SW50U2l6ZT4+KG1fZGVjb2RpbmdNb2RlT3JTaXplKTsKICAgICB9CiAKICAgICBz
dGF0aWMgaW50IG1heERpbWVuc2lvbihjb25zdCBJbnRTaXplJiBzaXplKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAppbmRleCBiMmExMzY5OTMzNzYxNjg5MDFlNTNl
NWFmOWU2N2Y3MDRmMWRmZGQ1Li40OTc3N2JiODdhYjVhMzhjMjZjYjUxNzgxNjM1ZjE0NDY5ZDNk
YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcApAQCAtMTc2
LDEzICsxNzYsMTMgQEAgdm9pZCBQYXRoOjphcHBseShjb25zdCBQYXRoQXBwbGllckZ1bmN0aW9u
JiBmdW5jdGlvbikgY29uc3QKICAgICBpZiAoaGFzSW5saW5lRGF0YTxNb3ZlRGF0YT4oKSkgewog
ICAgICAgICBQYXRoRWxlbWVudCBlbGVtZW50OwogICAgICAgICBlbGVtZW50LnR5cGUgPSBQYXRo
RWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ7Ci0gICAgICAgIGVsZW1lbnQucG9pbnRzWzBdID0g
V1RGOjpnZXQ8TW92ZURhdGE+KG1faW5saW5lRGF0YSkubG9jYXRpb247CisgICAgICAgIGVsZW1l
bnQucG9pbnRzWzBdID0gc3RkOjpnZXQ8TW92ZURhdGE+KG1faW5saW5lRGF0YSkubG9jYXRpb247
CiAgICAgICAgIGZ1bmN0aW9uKGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKGhhc0lubGluZURhdGE8TGluZURhdGE+KCkpIHsKLSAgICAgICAgYXV0byYgbGluZSA9
IFdURjo6Z2V0PExpbmVEYXRhPihtX2lubGluZURhdGEpOworICAgICAgICBhdXRvJiBsaW5lID0g
c3RkOjpnZXQ8TGluZURhdGE+KG1faW5saW5lRGF0YSk7CiAgICAgICAgIFBhdGhFbGVtZW50IGVs
ZW1lbnQ7CiAgICAgICAgIGVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50OjpUeXBlOjpNb3ZlVG9Q
b2ludDsKICAgICAgICAgZWxlbWVudC5wb2ludHNbMF0gPSBsaW5lLnN0YXJ0OwpAQCAtMTk0LDcg
KzE5NCw3IEBAIHZvaWQgUGF0aDo6YXBwbHkoY29uc3QgUGF0aEFwcGxpZXJGdW5jdGlvbiYgZnVu
Y3Rpb24pIGNvbnN0CiAgICAgfQogCiAgICAgaWYgKGhhc0lubGluZURhdGE8QmV6aWVyQ3VydmVE
YXRhPigpKSB7Ci0gICAgICAgIGF1dG8mIGN1cnZlID0gV1RGOjpnZXQ8QmV6aWVyQ3VydmVEYXRh
PihtX2lubGluZURhdGEpOworICAgICAgICBhdXRvJiBjdXJ2ZSA9IHN0ZDo6Z2V0PEJlemllckN1
cnZlRGF0YT4obV9pbmxpbmVEYXRhKTsKICAgICAgICAgUGF0aEVsZW1lbnQgZWxlbWVudDsKICAg
ICAgICAgZWxlbWVudC50eXBlID0gUGF0aEVsZW1lbnQ6OlR5cGU6Ok1vdmVUb1BvaW50OwogICAg
ICAgICBlbGVtZW50LnBvaW50c1swXSA9IGN1cnZlLnN0YXJ0UG9pbnQ7CkBAIC0yMDgsNyArMjA4
LDcgQEAgdm9pZCBQYXRoOjphcHBseShjb25zdCBQYXRoQXBwbGllckZ1bmN0aW9uJiBmdW5jdGlv
bikgY29uc3QKICAgICB9CiAKICAgICBpZiAoaGFzSW5saW5lRGF0YTxRdWFkQ3VydmVEYXRhPigp
KSB7Ci0gICAgICAgIGF1dG8mIGN1cnZlID0gV1RGOjpnZXQ8UXVhZEN1cnZlRGF0YT4obV9pbmxp
bmVEYXRhKTsKKyAgICAgICAgYXV0byYgY3VydmUgPSBzdGQ6OmdldDxRdWFkQ3VydmVEYXRhPiht
X2lubGluZURhdGEpOwogICAgICAgICBQYXRoRWxlbWVudCBlbGVtZW50OwogICAgICAgICBlbGVt
ZW50LnR5cGUgPSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ7CiAgICAgICAgIGVsZW1l
bnQucG9pbnRzWzBdID0gY3VydmUuc3RhcnRQb2ludDsKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lk
IFBhdGg6OmFkZFF1YWRDdXJ2ZVRvKGNvbnN0IEZsb2F0UG9pbnQmIGNvbnRyb2xQb2ludCwgY29u
c3QgRmxvYXRQb2ludCYgZW5kUAogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGlm
IChpc051bGwoKSB8fCBoYXNJbmxpbmVEYXRhPE1vdmVEYXRhPigpKSB7CiAgICAgICAgIFF1YWRD
dXJ2ZURhdGEgY3VydmU7Ci0gICAgICAgIGN1cnZlLnN0YXJ0UG9pbnQgPSBoYXNJbmxpbmVEYXRh
KCkgPyBXVEY6OmdldDxNb3ZlRGF0YT4obV9pbmxpbmVEYXRhKS5sb2NhdGlvbiA6IEZsb2F0UG9p
bnQoKTsKKyAgICAgICAgY3VydmUuc3RhcnRQb2ludCA9IGhhc0lubGluZURhdGEoKSA/IHN0ZDo6
Z2V0PE1vdmVEYXRhPihtX2lubGluZURhdGEpLmxvY2F0aW9uIDogRmxvYXRQb2ludCgpOwogICAg
ICAgICBjdXJ2ZS5jb250cm9sUG9pbnQgPSBjb250cm9sUG9pbnQ7CiAgICAgICAgIGN1cnZlLmVu
ZFBvaW50ID0gZW5kUG9pbnQ7CiAgICAgICAgIG1faW5saW5lRGF0YSA9IHsgV1RGTW92ZShjdXJ2
ZSkgfTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFBhdGg6OmFkZEJlemllckN1cnZlVG8oY29u
c3QgRmxvYXRQb2ludCYgY29udHJvbFBvaW50MSwgY29uc3QgRmxvYXRQb2ludCYgYwogI2lmIEVO
QUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGlmIChpc051bGwoKSB8fCBoYXNJbmxpbmVEYXRh
PE1vdmVEYXRhPigpKSB7CiAgICAgICAgIEJlemllckN1cnZlRGF0YSBjdXJ2ZTsKLSAgICAgICAg
Y3VydmUuc3RhcnRQb2ludCA9IGhhc0lubGluZURhdGEoKSA/IFdURjo6Z2V0PE1vdmVEYXRhPiht
X2lubGluZURhdGEpLmxvY2F0aW9uIDogRmxvYXRQb2ludCgpOworICAgICAgICBjdXJ2ZS5zdGFy
dFBvaW50ID0gaGFzSW5saW5lRGF0YSgpID8gc3RkOjpnZXQ8TW92ZURhdGE+KG1faW5saW5lRGF0
YSkubG9jYXRpb24gOiBGbG9hdFBvaW50KCk7CiAgICAgICAgIGN1cnZlLmNvbnRyb2xQb2ludDEg
PSBjb250cm9sUG9pbnQxOwogICAgICAgICBjdXJ2ZS5jb250cm9sUG9pbnQyID0gY29udHJvbFBv
aW50MjsKICAgICAgICAgY3VydmUuZW5kUG9pbnQgPSBlbmRQb2ludDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BhdGguaAppbmRleCAyZDAxYzU2YWRlOTBiM2VlOGRkMTA5YjVhOTc4
NWUxOTkyYjk3NzdlLi43ZjNjODE4ODY1NjkxMGI4NGZhYTYwNjViZDZmMzMxNTkxNjI5NDRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCkBAIC00MjQsMTIgKzQyNCwx
MiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGF0YVR5cGU+IGlubGluZSBib29sIFBhdGg6Omhhc0lu
bGluZURhdGEoKSBjb25zdAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4gaW5saW5lIGNv
bnN0IERhdGFUeXBlJiBQYXRoOjppbmxpbmVEYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RG
OjpnZXQ8RGF0YVR5cGU+KG1faW5saW5lRGF0YSk7CisgICAgcmV0dXJuIHN0ZDo6Z2V0PERhdGFU
eXBlPihtX2lubGluZURhdGEpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEYXRhVHlwZT4gaW5s
aW5lIERhdGFUeXBlJiBQYXRoOjppbmxpbmVEYXRhKCkKIHsKLSAgICByZXR1cm4gV1RGOjpnZXQ8
RGF0YVR5cGU+KG1faW5saW5lRGF0YSk7CisgICAgcmV0dXJuIHN0ZDo6Z2V0PERhdGFUeXBlPiht
X2lubGluZURhdGEpOwogfQogCiBpbmxpbmUgYm9vbCBQYXRoOjpoYXNJbmxpbmVEYXRhKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDEzYWU4Nzk4YjI3NGZjODA0
MzFiYmViMzUxNTFlNTZiMzgyOGZiYTMuLjI3NDdkYzg3ZWVmMjRiYzk1MzdjOTQ3ODZkM2M4YTMx
MzhiNTVmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjQyOSw3ICsy
NDI5LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogfTsKIAotdXNpbmcgRGlzcGxheUxpc3RJdGVtID0gVmFyaWFudAordXNpbmcgRGlz
cGxheUxpc3RJdGVtID0gc3RkOjp2YXJpYW50CiAgICAgPCBBcHBseURldmljZVNjYWxlRmFjdG9y
CiAgICAgLCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcwogICAgICwgQmVnaW5UcmFuc3BhcmVu
Y3lMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAppbmRleCBhOGRlNjk4YjBmOWYxZDg5YTdhYWY2YTM4ODJlMjE2MDcxZWYzMmExLi4yZGUzMzQ5
NjhkMmE4MGExODEzYjYyYzk2NzgzZDdhODZhOTYzZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTkzLDcgKzk5Myw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKCkKICAgICBB
U1NFUlQobV9pc0xlZ2FjeVBsYXliaW4pOwogCiAgICAgdXNpbmcgVHJhY2tUeXBlID0gVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlOwotICAgIFZhcmlhbnQ8SGFzaE1hcDxBdG9t
U3RyaW5nLCBSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI+PiosIEhhc2hNYXA8QXRv
bVN0cmluZywgUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyPj4qLCBIYXNoTWFwPEF0
b21TdHJpbmcsIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPj4qPiB2YXJp
YW50VHJhY2tzID0gc3RhdGljX2Nhc3Q8SGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VHJhY2tQ
cml2YXRlVHlwZT4+Kj4oMCk7CisgICAgc3RkOjp2YXJpYW50PEhhc2hNYXA8QXRvbVN0cmluZywg
UmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPj4qLCBIYXNoTWFwPEF0b21TdHJpbmcs
IFJlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+KiwgSGFzaE1hcDxBdG9tU3RyaW5n
LCBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+Kj4gdmFyaWFudFRyYWNr
cyA9IHN0YXRpY19jYXN0PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5
cGU+Pio+KDApOwogICAgIGF1dG8gdHlwZShzdGF0aWNfY2FzdDxUcmFja1R5cGU+KHZhcmlhbnRU
cmFja3MuaW5kZXgoKSkpOwogICAgIGNvbnN0IGNoYXIqIHR5cGVOYW1lOwogICAgIGJvb2wqIGhh
c1R5cGU7CkBAIC0xMDcxLDcgKzEwNzEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bm90aWZ5UGxheWVyT2ZUcmFjaygpCiAgICAgICAgIEFTU0VSVChzdHJlYW1JZCA9PSB0
cmFjay0+aWQoKSk7CiAgICAgICAgIHRyYWNrcy5hZGQoc3RyZWFtSWQsIHRyYWNrLmNvcHlSZWYo
KSk7CiAKLSAgICAgICAgVmFyaWFudDxBdWRpb1RyYWNrUHJpdmF0ZSosIFZpZGVvVHJhY2tQcml2
YXRlKiwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSo+IHZhcmlhbnRUcmFjaygmdHJhY2suZ2V0KCkp
OworICAgICAgICBzdGQ6OnZhcmlhbnQ8QXVkaW9UcmFja1ByaXZhdGUqLCBWaWRlb1RyYWNrUHJp
dmF0ZSosIEluYmFuZFRleHRUcmFja1ByaXZhdGUqPiB2YXJpYW50VHJhY2soJnRyYWNrLmdldCgp
KTsKICAgICAgICAgc3dpdGNoICh2YXJpYW50VHJhY2suaW5kZXgoKSkgewogICAgICAgICBjYXNl
IFRyYWNrVHlwZTo6QXVkaW86CiAgICAgICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9UcmFjaygq
V1RGOjpnZXQ8QXVkaW9UcmFja1ByaXZhdGUqPih2YXJpYW50VHJhY2spKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKaW5kZXggNGI0NWJiZTIyNGRm
N2RmYWRmMzg2MGU1NGZlNzgwZTUyNGI3ZTI1YS4uYjYwODc2NTIyYTI1NGM5OGEzYjRjYTMxN2Vm
ZGNkMGRiMjc5Zjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBFeHRlcm5h
bE9FU1RleHR1cmUgewogICAgICAgICBHTHVpbnQgaWQ7CiAgICAgfTsKLSAgICB1c2luZyBUZXh0
dXJlVmFyaWFudCA9IFdURjo6VmFyaWFudDxSR0JUZXh0dXJlLCBZVVZUZXh0dXJlLCBFeHRlcm5h
bE9FU1RleHR1cmU+OworICAgIHVzaW5nIFRleHR1cmVWYXJpYW50ID0gc3RkOjp2YXJpYW50PFJH
QlRleHR1cmUsIFlVVlRleHR1cmUsIEV4dGVybmFsT0VTVGV4dHVyZT47CiAKICAgICBUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcihUZXh0dXJlVmFyaWFudCYmLCBjb25zdCBJbnRTaXpl
JiwgVGV4dHVyZU1hcHBlckdMOjpGbGFncywgR0xpbnQgaW50ZXJuYWxGb3JtYXQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQppbmRleCA2NjRmYzE5NDYyZGEyMmQyNWIxZjhhNWM4ZWIxNmQ5OGUyZGU2YTc3Li5lMGQxYWUx
ZjgyYzk4OWM5OWQxZjg2YTYyY2MxZjNiYTdmYjcxNmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTY1NywxMCAr
NjU3LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5m
b0xpc3Q+IGNyZWF0ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPih2YWx1ZSkpIHsKLSAg
ICAgICAgICAgIGlmIChXVEY6OmdldDxTdHJpbmc+KHZhbHVlKS5pc051bGwoKSkKKyAgICAgICAg
ICAgIGlmIChzdGQ6OmdldDxTdHJpbmc+KHZhbHVlKS5pc051bGwoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIE5TU3RyaW5nICpuc1N0cmluZ1ZhbHVlID0gV1RGOjpn
ZXQ8U3RyaW5nPih2YWx1ZSk7CisgICAgICAgICAgICBOU1N0cmluZyAqbnNTdHJpbmdWYWx1ZSA9
IHN0ZDo6Z2V0PFN0cmluZz4odmFsdWUpOwogICAgICAgICAgICAgYXV0byBjZlR5cGUgPSBjb2Nv
YVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiAgICAgICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIGtVVFR5
cGVVUkwpKQpAQCAtNjczLDcgKzY3Myw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4odmFsdWUpOworICAgICAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+Pih2YWx1ZSk7CiAgICAgICAgIFtyZXBy
ZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERhdGE6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSBmb3JUeXBlOihOU1N0cmluZyAqKWNvY29hVHlwZV07CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4
IGI1ZDBkMjJiODZmOTI2OTNiODhhM2EwM2UwNDk1NThlYjIzNzI4ZDguLmQ1ZDRkNjBmZmU1ZjUz
NjJjYmY5ZmJiYWUwZTVjNmJmMWUzNDA1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtMjY0LDEwICsyNjQsMTAg
QEAgaW50NjRfdCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRDdXN0
b21EYXRhJiBkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikpIHsKLSAg
ICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IFdURjo6Z2V0PFJlZjxTaGFyZWRCdWZm
ZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgpKQorICAgICAgICAgICAgaWYgKGF1
dG8gcGxhdGZvcm1EYXRhID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHN0cmluZ09yQnVm
ZmVyKS0+Y3JlYXRlTlNEYXRhKCkpCiAgICAgICAgICAgICAgICAgW21fcGFzdGVib2FyZCBzZXRE
YXRhOnBsYXRmb3JtRGF0YS5nZXQoKSBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0g
ZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSkg
ewotICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBXVEY6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKTsKKyAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RkOjpnZXQ8U3RyaW5nPihzdHJpbmdP
ckJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAoISFzdHJpbmcpCiAgICAgICAgICAgICAgICAgW21f
cGFzdGVib2FyZCBzZXRTdHJpbmc6c3RyaW5nIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAg
ICAgfQpAQCAtNTA2LDEwICs1MDYsMTAgQEAgc3RhdGljIFJldGFpblB0cjxOU1Bhc3RlYm9hcmRJ
dGVtPiBjcmVhdGVQYXN0ZWJvYXJkSXRlbShjb25zdCBQYXN0ZWJvYXJkQ3VzdG9tRGEKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBw
bGF0Zm9ybURhdGEgPSBXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIp
LT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRmb3JtRGF0YSA9IHN0
ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNyZWF0ZU5TRGF0YSgp
KQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRhLmdldCgpIGZvclR5
cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBhdXRvIHN0cmluZyA9
IFdURjo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOworICAgICAgICAgICAgYXV0byBzdHJp
bmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKICAgICAgICAgICAgIGlmICgh
IXN0cmluZykKICAgICAgICAgICAgICAgICBbaXRlbSBzZXRTdHJpbmc6c3RyaW5nIGZvclR5cGU6
cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbQppbmRl
eCBlMDY2N2VmYzU2MjNkNjhkNGY3NDg1M2JhMTVkNGM1NTE2ZjdiMjc4Li42MjcyYTUzNjAwYjA3
YmQ0NWQyZmRiZWQ5NDE4MWI2MGEyZjIzOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja0F1ZGlvU2hhcmVkVW5pdC5t
bQpAQCAtMTA5LDcgKzEwOSw3IEBAIE1vY2tBdWRpb1NoYXJlZFVuaXQ6Ok1vY2tBdWRpb1NoYXJl
ZFVuaXQoKQogdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0OjpyZXNldFNhbXBsZVJhdGUoKQogewog
ICAgIGlmIChhdXRvIGRldmljZSA9IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjptb2Nr
RGV2aWNlV2l0aFBlcnNpc3RlbnRJRChwZXJzaXN0ZW50SUQoKSkpCi0gICAgICAgIHNldFNhbXBs
ZVJhdGUoV1RGOjpnZXQ8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihkZXZpY2UtPnByb3BlcnRp
ZXMpLmRlZmF1bHRTYW1wbGVSYXRlKTsKKyAgICAgICAgc2V0U2FtcGxlUmF0ZShzdGQ6OmdldDxN
b2NrTWljcm9waG9uZVByb3BlcnRpZXM+KGRldmljZS0+cHJvcGVydGllcykuZGVmYXVsdFNhbXBs
ZVJhdGUpOwogfQogCiBib29sIE1vY2tBdWRpb1NoYXJlZFVuaXQ6Omhhc0F1ZGlvVW5pdCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbQppbmRleCA4OWFh
YmJmMzM5ZmViNjQxNDE5YjViZDc0ZGFiODMwZDRmZDFmNWIyLi43Y2IxM2JiMzVlNWVhNGUxOGYz
NjRiYTZkYjhjNmRiNmQxN2M5NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQ29jb2EubW0KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlk
ZXJDb2NvYTo6cHJlcGFyZShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIGZvcgog
dm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2E6OnJlY2VpdmVkTmV3QXVkaW9TYW1wbGVz
KGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IGZyYW1lQ291bnQpCiB7CiAgICAgQVNTRVJUKGRlc2Ny
aXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3JtRGVzY3JpcHRpb246
OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOwotICAgIGF1dG8mIGJhc2ljRGVzY3JpcHRpb24gPSAq
V1RGOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24u
cGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKTsKKyAgICBhdXRvJiBiYXNpY0Rlc2Ny
aXB0aW9uID0gKnN0ZDo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRl
c2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CiAgICAgaWYgKCFt
X2lucHV0RGVzY3JpcHRpb24gfHwgbV9pbnB1dERlc2NyaXB0aW9uLT5zdHJlYW1EZXNjcmlwdGlv
bigpICE9IGJhc2ljRGVzY3JpcHRpb24pCiAgICAgICAgIHByZXBhcmUoYmFzaWNEZXNjcmlwdGlv
bik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlh
RGV2aWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5o
CmluZGV4IDE0MWEyMGFkOTM1MTNkOGE0NmY5MDVmODNhZGVmNjZjZjczMzlmZTguLmNmNWFiZWI0
YjJiMmQ4YTAyNDcxYzJhYTM0YmY1NWQ4MmMxYWZhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaApAQCAtMTg4LDEyICsxODgsMTIgQEAgc3Ry
dWN0IE1vY2tNZWRpYURldmljZSB7CiAgICAgICAgICAgICByZXR1cm4gQ2FwdHVyZURldmljZTo6
RGV2aWNlVHlwZTo6Q2FtZXJhOwogCiAgICAgICAgIEFTU0VSVChpc0Rpc3BsYXkoKSk7Ci0gICAg
ICAgIHJldHVybiBXVEY6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KHByb3BlcnRpZXMpLnR5
cGU7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KHByb3Bl
cnRpZXMpLnR5cGU7CiAgICAgfQogCiAgICAgY29uc3QgTW9ja1NwZWFrZXJQcm9wZXJ0aWVzKiBz
cGVha2VyUHJvcGVydGllcygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaXNTcGVha2Vy
KCkgPyAmV1RGOjpnZXQ8TW9ja1NwZWFrZXJQcm9wZXJ0aWVzPihwcm9wZXJ0aWVzKSA6IG51bGxw
dHI7CisgICAgICAgIHJldHVybiBpc1NwZWFrZXIoKSA/ICZzdGQ6OmdldDxNb2NrU3BlYWtlclBy
b3BlcnRpZXM+KHByb3BlcnRpZXMpIDogbnVsbHB0cjsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAppbmRleCAyNDI1ZmFhMGI1ZTNiOWQwOTZjYjI2
MWQwNjI3OGJkMWVlMTAyZmM0Li5kMDg5NGQ1ZDRmZTgyNWY4YjA2ZDZjOTI4YWFmMDk4NjM3N2Nj
NGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlLmNwcApAQCAtNzEsNyArNzEsNyBAQCBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoU3RyaW5nJiYgZGV2aWNlSUQsIFN0cmlu
ZyYmIG5hbQogICAgIEFTU0VSVChkZXZpY2UpOwogICAgIG1fZGV2aWNlID0gKmRldmljZTsKIAot
ICAgIHNldFNhbXBsZVJhdGUoV1RGOjpnZXQ8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihtX2Rl
dmljZS5wcm9wZXJ0aWVzKS5kZWZhdWx0U2FtcGxlUmF0ZSk7CisgICAgc2V0U2FtcGxlUmF0ZShz
dGQ6OmdldDxNb2NrTWljcm9waG9uZVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpLmRl
ZmF1bHRTYW1wbGVSYXRlKTsKICAgICBpbml0aWFsaXplRWNob0NhbmNlbGxhdGlvbih0cnVlKTsK
IH0KIApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0
YXJ0UHJvZHVjaW5nRGF0YSgpCiAjZW5kaWYKIAogICAgIGlmICghc2FtcGxlUmF0ZSgpKQotICAg
ICAgICBzZXRTYW1wbGVSYXRlKFdURjo6Z2V0PE1vY2tNaWNyb3Bob25lUHJvcGVydGllcz4obV9k
ZXZpY2UucHJvcGVydGllcykuZGVmYXVsdFNhbXBsZVJhdGUpOworICAgICAgICBzZXRTYW1wbGVS
YXRlKHN0ZDo6Z2V0PE1vY2tNaWNyb3Bob25lUHJvcGVydGllcz4obV9kZXZpY2UucHJvcGVydGll
cykuZGVmYXVsdFNhbXBsZVJhdGUpOwogCiAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKTsKICAgICBtX3RpbWVyLnN0YXJ0UmVwZWF0aW5nKHJlbmRlckludGVydmFsKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAppbmRleCBiYmUyOGUwYjFmOTllNTI1Mjg2NmJhZGQ5
ODFhODY0YzI4OTQ1MGYzLi4zMWQ5MjE0ODgwZGYzNDI4OWZmYTllNmFiNmNkYWYxYzMwMGExZGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIEludFNp
emUgTW9ja0Rpc3BsYXlDYXB0dXJlcjo6aW50cmluc2ljU2l6ZSgpIGNvbnN0CiAgICAgaWYgKCFk
ZXZpY2UtPmlzRGlzcGxheSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byYgcHJv
cGVydGllcyA9IFdURjo6Z2V0PE1vY2tEaXNwbGF5UHJvcGVydGllcz4oZGV2aWNlLT5wcm9wZXJ0
aWVzKTsKKyAgICBhdXRvJiBwcm9wZXJ0aWVzID0gc3RkOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0
aWVzPihkZXZpY2UtPnByb3BlcnRpZXMpOwogICAgIHJldHVybiBwcm9wZXJ0aWVzLmRlZmF1bHRT
aXplOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggNTY3
YjU4ZWMyNTIyYTRhMzkxMDYwMmJiOGY3MTMxZTJlMDNhZmE5Yi4uMzhhYjIxZGVlMzhlOTk5NWRh
M2E2NmE2MTM3OTZjNjZkNDUzNTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTg5LDE0ICs4OSwx
NCBAQCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UoU3Ry
aW5nJiYgZGV2aWNlSUQsIFN0cmluZyYmIG5hbQogICAgIG1fZGFzaFdpZHRocy51bmNoZWNrZWRB
cHBlbmQoNik7CiAKICAgICBpZiAobW9ja0Rpc3BsYXkoKSkgewotICAgICAgICBhdXRvJiBwcm9w
ZXJ0aWVzID0gV1RGOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0
aWVzKTsKKyAgICAgICAgYXV0byYgcHJvcGVydGllcyA9IHN0ZDo6Z2V0PE1vY2tEaXNwbGF5UHJv
cGVydGllcz4obV9kZXZpY2UucHJvcGVydGllcyk7CiAgICAgICAgIHNldEludHJpbnNpY1NpemUo
cHJvcGVydGllcy5kZWZhdWx0U2l6ZSk7CiAgICAgICAgIHNldFNpemUocHJvcGVydGllcy5kZWZh
dWx0U2l6ZSk7CiAgICAgICAgIG1fZmlsbENvbG9yID0gcHJvcGVydGllcy5maWxsQ29sb3I7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvJiBwcm9wZXJ0aWVzID0gV1RGOjpnZXQ8
TW9ja0NhbWVyYVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpOworICAgIGF1dG8mIHBy
b3BlcnRpZXMgPSBzdGQ6OmdldDxNb2NrQ2FtZXJhUHJvcGVydGllcz4obV9kZXZpY2UucHJvcGVy
dGllcyk7CiAgICAgc2V0RnJhbWVSYXRlKHByb3BlcnRpZXMuZGVmYXVsdEZyYW1lUmF0ZSk7CiAg
ICAgc2V0RmFjaW5nTW9kZShwcm9wZXJ0aWVzLmZhY2luZ01vZGUpOwogICAgIG1fZmlsbENvbG9y
ID0gcHJvcGVydGllcy5maWxsQ29sb3I7CkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6c2V0U2l6ZUFuZEZyYW1lUmF0ZShzdGQ6Om9wdGlvbmFsPGludD4g
d2lkdGgsIHN0ZDoKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlUHJlc2V0
cygpCiB7CiAgICAgQVNTRVJUKG1vY2tDYW1lcmEoKSk7Ci0gICAgc2V0U3VwcG9ydGVkUHJlc2V0
cyhXVEZNb3ZlKFdURjo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0
aWVzKS5wcmVzZXRzKSk7CisgICAgc2V0U3VwcG9ydGVkUHJlc2V0cyhXVEZNb3ZlKHN0ZDo6Z2V0
PE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0aWVzKS5wcmVzZXRzKSk7CiB9
CiAKIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpjYXBhYmlsaXRpZXMoKQpAQCAtMTQyLDEzICsxNDIsMTMgQEAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNh
cGFiaWxpdGllcygpCiAgICAgICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMgY2Fw
YWJpbGl0aWVzKHNldHRpbmdzKCkuc3VwcG9ydGVkQ29uc3RyYWludHMoKSk7CiAKICAgICAgICAg
aWYgKG1vY2tDYW1lcmEoKSkgewotICAgICAgICAgICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01v
ZGUoV1RGOjpnZXQ8TW9ja0NhbWVyYVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpLmZh
Y2luZ01vZGUpOworICAgICAgICAgICAgY2FwYWJpbGl0aWVzLmFkZEZhY2luZ01vZGUoc3RkOjpn
ZXQ8TW9ja0NhbWVyYVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpLmZhY2luZ01vZGUp
OwogICAgICAgICAgICAgY2FwYWJpbGl0aWVzLnNldERldmljZUlkKGhhc2hlZElkKCkpOwogICAg
ICAgICAgICAgdXBkYXRlQ2FwYWJpbGl0aWVzKGNhcGFiaWxpdGllcyk7CiAgICAgICAgICAgICBj
YXBhYmlsaXRpZXMuc2V0RGV2aWNlSWQoaGFzaGVkSWQoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
bW9ja0Rpc3BsYXkoKSkgewotICAgICAgICAgICAgY2FwYWJpbGl0aWVzLnNldFdpZHRoKENhcGFi
aWxpdHlWYWx1ZU9yUmFuZ2UoNzIsIFdURjo6Z2V0PE1vY2tEaXNwbGF5UHJvcGVydGllcz4obV9k
ZXZpY2UucHJvcGVydGllcykuZGVmYXVsdFNpemUud2lkdGgoKSkpOwotICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDQ1LCBXVEY6OmdldDxN
b2NrRGlzcGxheVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpLmRlZmF1bHRTaXplLmhl
aWdodCgpKSk7CisgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZh
bHVlT3JSYW5nZSg3Miwgc3RkOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihtX2RldmljZS5w
cm9wZXJ0aWVzKS5kZWZhdWx0U2l6ZS53aWR0aCgpKSk7CisgICAgICAgICAgICBjYXBhYmlsaXRp
ZXMuc2V0SGVpZ2h0KENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoNDUsIHN0ZDo6Z2V0PE1vY2tEaXNw
bGF5UHJvcGVydGllcz4obV9kZXZpY2UucHJvcGVydGllcykuZGVmYXVsdFNpemUuaGVpZ2h0KCkp
KTsKICAgICAgICAgICAgIGNhcGFiaWxpdGllcy5zZXRGcmFtZVJhdGUoQ2FwYWJpbGl0eVZhbHVl
T3JSYW5nZSguMDEsIDYwLjApKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNhcGFi
aWxpdGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDcyLCAyODgwKSk7CkBAIC00
ODgsNyArNDg4LDcgQEAgYm9vbCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6bW9ja0Rpc3BsYXlU
eXBlKENhcHR1cmVEZXZpY2U6OkRldmljZVR5cGUgdHlwZSkgY28KICAgICBpZiAoIXN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0aWVz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIFdURjo6Z2V0PE1vY2tEaXNw
bGF5UHJvcGVydGllcz4obV9kZXZpY2UucHJvcGVydGllcykudHlwZSA9PSB0eXBlOworICAgIHJl
dHVybiBzdGQ6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMp
LnR5cGUgPT0gdHlwZTsKIH0KIAogdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6b3JpZW50
YXRpb25DaGFuZ2VkKGludCBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRE5TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0ROUy5oCmluZGV4IGY0YzBiZGRjN2IwYmYxN2Y4MzA3ODU0ZDVjMjBmOWMwY2EwMTQzYTcuLmM0
NWFlMWJjOGEwZDdjZjM1YmNkMTM3ZTg3NzI0NGZhNTc0M2FmYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ETlMuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0lQdjQoKSBjb25zdCB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0cnVjdCBpbl9h
ZGRyPihtX2FkZHJlc3MpOyB9CiAgICAgYm9vbCBpc0lQdjYoKSBjb25zdCB7IHJldHVybiBzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPHN0cnVjdCBpbjZfYWRkcj4obV9hZGRyZXNzKTsgfQogCi0gICAg
Y29uc3Qgc3RydWN0IGluX2FkZHImIGlwdjRBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpn
ZXQ8c3RydWN0IGluX2FkZHI+KG1fYWRkcmVzcyk7IH0KLSAgICBjb25zdCBzdHJ1Y3QgaW42X2Fk
ZHImIGlwdjZBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpnZXQ8c3RydWN0IGluNl9hZGRy
PihtX2FkZHJlc3MpOyB9CisgICAgY29uc3Qgc3RydWN0IGluX2FkZHImIGlwdjRBZGRyZXNzKCkg
Y29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8c3RydWN0IGluX2FkZHI+KG1fYWRkcmVzcyk7IH0KKyAg
ICBjb25zdCBzdHJ1Y3QgaW42X2FkZHImIGlwdjZBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gc3Rk
OjpnZXQ8c3RydWN0IGluNl9hZGRyPihtX2FkZHJlc3MpOyB9CiAKIHByaXZhdGU6CiAgICAgc3Rk
Ojp2YXJpYW50PHN0cnVjdCBpbl9hZGRyLCBzdHJ1Y3QgaW42X2FkZHI+IG1fYWRkcmVzczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggYjEwNGU3
YjE3ZmYyY2Q1ZDAyMGE2NjhiYmIwMWFjMDA3ZTRjMjE1OS4uMzczMWExYWQ4NTRhNmM4M2Q2Y2Yw
NGU2ZTEyNjJlN2QwMDhmNzkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAKQEAgLTI1NSw5ICsyNTUsOSBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRN
dWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYgZm9ybURhdGEpCiAg
ICAgICAgIEZvcm1EYXRhQnVpbGRlcjo6YmVnaW5NdWx0aVBhcnRIZWFkZXIoaGVhZGVyLCBtX2Jv
dW5kYXJ5LmRhdGEoKSwgbm9ybWFsaXplZE5hbWUpOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZlB0cjxGaWxlPj4oaXRlbS5kYXRhKSkKLSAgICAgICAgICAgIGFwcGVu
ZE11bHRpUGFydEZpbGVWYWx1ZSgqV1RGOjpnZXQ8UmVmUHRyPEZpbGU+PihpdGVtLmRhdGEpLCBo
ZWFkZXIsIGVuY29kaW5nKTsKKyAgICAgICAgICAgIGFwcGVuZE11bHRpUGFydEZpbGVWYWx1ZSgq
c3RkOjpnZXQ8UmVmUHRyPEZpbGU+PihpdGVtLmRhdGEpLCBoZWFkZXIsIGVuY29kaW5nKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgYXBwZW5kTXVsdGlQYXJ0U3RyaW5nVmFsdWUoV1RGOjpn
ZXQ8U3RyaW5nPihpdGVtLmRhdGEpLCBoZWFkZXIsIGVuY29kaW5nKTsKKyAgICAgICAgICAgIGFw
cGVuZE11bHRpUGFydFN0cmluZ1ZhbHVlKHN0ZDo6Z2V0PFN0cmluZz4oaXRlbS5kYXRhKSwgaGVh
ZGVyLCBlbmNvZGluZyk7CiAKICAgICAgICAgYXBwZW5kRGF0YSgiXHJcbiIsIDIpOwogICAgIH0K
QEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmROb25NdWx0aVBhcnRLZXlW
YWx1ZVBhaXJJdGVtcyhjb25zdCBET01Gb3JtRGF0YSYgZm9ybURhdGEsCiAgICAgICAgIEFTU0VS
VChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oaXRlbS5kYXRhKSk7CiAKICAgICAgICAg
YXV0byBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZVN0cmluZ0RhdGEoZW5jb2RpbmcsIGl0ZW0u
bmFtZSk7Ci0gICAgICAgIGF1dG8gbm9ybWFsaXplZFN0cmluZ0RhdGEgPSBub3JtYWxpemVTdHJp
bmdEYXRhKGVuY29kaW5nLCBXVEY6OmdldDxTdHJpbmc+KGl0ZW0uZGF0YSkpOworICAgICAgICBh
dXRvIG5vcm1hbGl6ZWRTdHJpbmdEYXRhID0gbm9ybWFsaXplU3RyaW5nRGF0YShlbmNvZGluZywg
c3RkOjpnZXQ8U3RyaW5nPihpdGVtLmRhdGEpKTsKICAgICAgICAgRm9ybURhdGFCdWlsZGVyOjph
ZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKGVuY29kZWREYXRhLCBub3JtYWxpemVkTmFtZSwgbm9y
bWFsaXplZFN0cmluZ0RhdGEsIGVuY29kaW5nVHlwZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuaAppbmRleCBj
ZmZmZDA1NWY4YWY5YWQ0NDRkMDkxYzFmZGJiYjhiZDk3MWJlZjQ0Li41ZjBlYWMyMjkxZjg1OWU2
NDlhOWYzZWMzOWNjNTk0MzM4MzQ1ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFNTTEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xh
c3MgQ3VybFNTTEhhbmRsZSB7CiAgICAgdXNpbmcgQ2xpZW50Q2VydGlmaWNhdGUgPSBzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+OwogCiBwdWJsaWM6Ci0gICAgdXNpbmcgQ0FDZXJ0SW5mbyA9IFZh
cmlhbnQ8c3RkOjptb25vc3RhdGUsIFN0cmluZywgQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0
ZT47CisgICAgdXNpbmcgQ0FDZXJ0SW5mbyA9IHN0ZDo6dmFyaWFudDxzdGQ6Om1vbm9zdGF0ZSwg
U3RyaW5nLCBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlPjsKIAogICAgIEN1cmxTU0xIYW5k
bGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1Y
Ui5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IDVlMDYy
ZWM3YzhmN2U0YjkyZmM0OWZlZmIzMWM5MDU4ZDE1NDViMDIuLjUwMDU5YzQ2M2RmMjMyNjg2NTNk
MTUxMTFjYTRjYmVjYmEzZDc0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9y
bVhSLmgKQEAgLTM2NSwxNCArMzY1LDE0IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OlZpZXc6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGJvb2wgaGFzRm92ID0gc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92Pihwcm9q
ZWN0aW9uKTsKICAgICBlbmNvZGVyIDw8IGhhc0ZvdjsKICAgICBpZiAoaGFzRm92KSB7Ci0gICAg
ICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkZv
dj4ocHJvamVjdGlvbik7CisgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8UGxhdGZvcm1YUjo6
RGV2aWNlOjpGcmFtZURhdGE6OkZvdj4ocHJvamVjdGlvbik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBib29sIGhhc1Byb2plY3Rpb25NYXRyaXggPSBzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpQcm9qZWN0aW9uTWF0cml4Pihwcm9q
ZWN0aW9uKTsKICAgICBlbmNvZGVyIDw8IGhhc1Byb2plY3Rpb25NYXRyaXg7CiAgICAgaWYgKGhh
c1Byb2plY3Rpb25NYXRyaXgpIHsKLSAgICAgICAgZm9yIChmbG9hdCBmIDogV1RGOjpnZXQ8UGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlByb2plY3Rpb25NYXRyaXg+KHByb2plY3Rpb24p
KQorICAgICAgICBmb3IgKGZsb2F0IGYgOiBzdGQ6OmdldDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YTo6UHJvamVjdGlvbk1hdHJpeD4ocHJvamVjdGlvbikpCiAgICAgICAgICAgICBlbmNv
ZGVyIDw8IGY7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggNjlhOTM3ZjExY2FkOGU2YjQyMWQ1NzU1YWIzMWEx
ZDg4MjE0ZThjOC4uZTBjNzk3MzA5Mzg3OWRlZjRmZGJhNmQyYmRhZjQ3NDJjMTkxZTFjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNjA4LDEyICs2
MDgsMTIgQEAgaW5saW5lIGJvb2wgUmVuZGVyQmxvY2tGbG93OjpoYXNMZWdhY3lMaW5lTGF5b3V0
KCkgY29uc3QKIAogaW5saW5lIGNvbnN0IExlZ2FjeUxpbmVMYXlvdXQqIFJlbmRlckJsb2NrRmxv
dzo6bGVnYWN5TGluZUxheW91dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc0xlZ2FjeUxpbmVM
YXlvdXQoKSA/IFdURjo6Z2V0PHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lMaW5lTGF5b3V0Pj4obV9s
aW5lTGF5b3V0KS5nZXQoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGhhc0xlZ2FjeUxpbmVMYXlv
dXQoKSA/IHN0ZDo6Z2V0PHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lMaW5lTGF5b3V0Pj4obV9saW5l
TGF5b3V0KS5nZXQoKSA6IG51bGxwdHI7CiB9CiAKIGlubGluZSBMZWdhY3lMaW5lTGF5b3V0KiBS
ZW5kZXJCbG9ja0Zsb3c6OmxlZ2FjeUxpbmVMYXlvdXQoKQogewotICAgIHJldHVybiBoYXNMZWdh
Y3lMaW5lTGF5b3V0KCkgPyBXVEY6OmdldDxzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5TGluZUxheW91
dD4+KG1fbGluZUxheW91dCkuZ2V0KCkgOiBudWxscHRyOworICAgIHJldHVybiBoYXNMZWdhY3lM
aW5lTGF5b3V0KCkgPyBzdGQ6OmdldDxzdGQ6OnVuaXF1ZV9wdHI8TGVnYWN5TGluZUxheW91dD4+
KG1fbGluZUxheW91dCkuZ2V0KCkgOiBudWxscHRyOwogfQogCiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCkBAIC02MjQsMTIgKzYyNCwxMiBAQCBpbmxpbmUgYm9vbCBSZW5k
ZXJCbG9ja0Zsb3c6Omhhc01vZGVybkxpbmVMYXlvdXQoKSBjb25zdAogCiBpbmxpbmUgY29uc3Qg
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQqIFJlbmRlckJsb2NrRmxvdzo6bW9kZXJuTGlu
ZUxheW91dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc01vZGVybkxpbmVMYXlvdXQoKSA/IFdU
Rjo6Z2V0PHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dD4+KG1f
bGluZUxheW91dCkuZ2V0KCkgOiBudWxscHRyOworICAgIHJldHVybiBoYXNNb2Rlcm5MaW5lTGF5
b3V0KCkgPyBzdGQ6OmdldDxzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0SW50ZWdyYXRpb246OkxpbmVM
YXlvdXQ+PihtX2xpbmVMYXlvdXQpLmdldCgpIDogbnVsbHB0cjsKIH0KIAogaW5saW5lIExheW91
dEludGVncmF0aW9uOjpMaW5lTGF5b3V0KiBSZW5kZXJCbG9ja0Zsb3c6Om1vZGVybkxpbmVMYXlv
dXQoKQogewotICAgIHJldHVybiBoYXNNb2Rlcm5MaW5lTGF5b3V0KCkgPyBXVEY6OmdldDxzdGQ6
OnVuaXF1ZV9wdHI8TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ+PihtX2xpbmVMYXlvdXQp
LmdldCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gaGFzTW9kZXJuTGluZUxheW91dCgpID8gc3Rk
OjpnZXQ8c3RkOjp1bmlxdWVfcHRyPExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Pj4obV9s
aW5lTGF5b3V0KS5nZXQoKSA6IG51bGxwdHI7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggN2VlOTQ0MjZjYzUyYmFkYjQwZmZj
NGNiN2NmYmQxMjc3NGJjZTczYS4uYzY3MzRlYjg5NmEzNDg2OGIwNmZhODU5ODRlMWFlM2IzMmNi
MjMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgYm9vbCBSZW5kZXJSZXBsYWNlZDo6c2hvdWxkRHJhd1NlbGVjdGlv
blRpbnQoKSBjb25zdAogaW5saW5lIHN0YXRpYyBib29sIGRyYWdnZWRDb250ZW50Q29udGFpbnNS
ZXBsYWNlZEVsZW1lbnQoY29uc3QgVmVjdG9yPFJlbmRlcmVkRG9jdW1lbnRNYXJrZXIqPiYgbWFy
a2VycywgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBmb3IgKGF1dG8qIG1hcmtlciA6
IG1hcmtlcnMpIHsKLSAgICAgICAgaWYgKFdURjo6Z2V0PFJlZlB0cjxOb2RlPj4obWFya2VyLT5k
YXRhKCkpID09ICZlbGVtZW50KQorICAgICAgICBpZiAoc3RkOjpnZXQ8UmVmUHRyPE5vZGU+Piht
YXJrZXItPmRhdGEoKSkgPT0gJmVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAK
aW5kZXggMDRlNzg3NjU1OWQ1NDUzNDc3N2EyZjBlMmQ1NmY4ZDQ4YmRmNzcxNy4uYjZiZGFlY2Ux
NGVlNzM5MGFhNDdlZDk0NTc0MWNkYjVkYzRmN2ZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXIuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBCdWlsZGVyOjphcHBseVByb3Bl
cnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiB2YWx1ZSwgU2VsZWN0b3JDaGVja2VyOjoK
ICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5
VmFsdWU+KHZhbHVlVG9BcHBseS5wdHIoKSk7CiAgICAgICAgIEFTU0VSVChjdXN0b21Qcm9wZXJ0
eVZhbHVlLT5pc1Jlc29sdmVkKCkpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxDU1NWYWx1ZUlEPihjdXN0b21Qcm9wZXJ0eVZhbHVlLT52YWx1ZSgpKSkKLSAgICAgICAgICAg
IGN1c3RvbVByb3BlcnR5VmFsdWVJRCA9IFdURjo6Z2V0PENTU1ZhbHVlSUQ+KGN1c3RvbVByb3Bl
cnR5VmFsdWUtPnZhbHVlKCkpOworICAgICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlEID0g
c3RkOjpnZXQ8Q1NTVmFsdWVJRD4oY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSk7CiAgICAg
ICAgIGF1dG8mIG5hbWUgPSBjdXN0b21Qcm9wZXJ0eVZhbHVlLT5uYW1lKCk7CiAgICAgICAgIGN1
c3RvbVByb3BlcnR5UmVnaXN0ZXJlZCA9IG1fc3RhdGUuZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3Rl
cmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQobmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKaW5k
ZXggNjQwZWRiZTVhOTA5M2U0Y2U2ZTRkMzYwM2FmYmZhYzdmNzAyYWI3Zi4uMjI1NmUyZjE1ZjQ3
OTE4NTU5ZGUyYWQyOGIwODAxOGI4NDA5OWU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmtlckpvYkRhdGE6
OnJlZ2lzdHJhdGlvbktleSgpIGNvbnN0CiBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6c2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKCkgY29uc3QKIHsKICAgICBpZiAoaXNGcm9tU2VydmljZVdvcmtlclBhZ2UgJiYgc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4oc291cmNl
Q29udGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6OmdldDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllcj4oc291cmNlQ29udGV4dCk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcj4oc291cmNlQ29udGV4dCk7CiAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBjZmJiZTBkYmE1
N2I5YTFjYjJjMzk0N2JkMzA2NGVjODZkOWQ4OTBmLi5mNmRkZjg4YmMzMjM0YzQ1ODllMzQyYWVm
NzIxNTI3MmE4ODhmNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMTQ2LDE0
ICsxNDYsMTQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb1Bvc3RNZXNz
YWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2EKICAgICAgICAgVVJMIHNvdXJjZVVS
TDsKICAgICAgICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2U7CiAgICAgICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPihzb3Vy
Y2VEYXRhKSkgewotICAgICAgICAgICAgUmVmUHRyPFNlcnZpY2VXb3JrZXJDbGllbnQ+IHNvdXJj
ZUNsaWVudCA9IFNlcnZpY2VXb3JrZXJDbGllbnQ6OmdldE9yQ3JlYXRlKHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSwgV1RGTW92ZShXVEY6OmdldDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4oc291
cmNlRGF0YSkpKTsKKyAgICAgICAgICAgIFJlZlB0cjxTZXJ2aWNlV29ya2VyQ2xpZW50PiBzb3Vy
Y2VDbGllbnQgPSBTZXJ2aWNlV29ya2VyQ2xpZW50OjpnZXRPckNyZWF0ZShzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUsIFdURk1vdmUoc3RkOjpnZXQ8U2VydmljZVdvcmtlckNsaWVudERhdGE+KHNv
dXJjZURhdGEpKSk7CiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFzb3VyY2VDbGllbnQt
PnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCAhc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLT51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgcHJvdG9jb2xIb3N0QW5kUG9y
dEFyZUVxdWFsKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dXJsKCksIHNvdXJjZUNsaWVudC0+
dXJsKCkpKTsKIAogICAgICAgICAgICAgc291cmNlVVJMID0gc291cmNlQ2xpZW50LT51cmwoKTsK
ICAgICAgICAgICAgIHNvdXJjZSA9IFdURk1vdmUoc291cmNlQ2xpZW50KTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxTZXJ2aWNlV29ya2VyPiBzb3VyY2VXb3JrZXIgPSBT
ZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZShzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIFdURk1v
dmUoV1RGOjpnZXQ8U2VydmljZVdvcmtlckRhdGE+KHNvdXJjZURhdGEpKSk7CisgICAgICAgICAg
ICBSZWZQdHI8U2VydmljZVdvcmtlcj4gc291cmNlV29ya2VyID0gU2VydmljZVdvcmtlcjo6Z2V0
T3JDcmVhdGUoc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKHN0ZDo6Z2V0PFNlcnZp
Y2VXb3JrZXJEYXRhPihzb3VyY2VEYXRhKSkpOwogCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VCghc291cmNlV29ya2VyLT5zY3JpcHRVUkwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwg
IXNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
IHx8IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUt
PnVybCgpLCBzb3VyY2VXb3JrZXItPnNjcmlwdFVSTCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CmluZGV4IDg5YTdmNGZkNzA4N2UxZjNlODYzOTk3YzBiNGFlNDdkZDkxODNjNmQuLjc4Yzc3Mzg1
NDU3ZDYxOTY2ZDFlMTI0YWYzM2VkZDMzODkxOGVmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApA
QCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6Y2FuY2VsSm9ic0Zyb21D
b25uZWN0aW9uKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29uCiB2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OmNhbmNlbEpvYnNGcm9tU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsKICAgICByZW1vdmVBbGxKb2JzTWF0Y2hp
bmcoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShhdXRvJiBqb2IpIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2VydmljZVdvcmtlcklkZW50aWZpZXI+KGpvYi5zb3Vy
Y2VDb250ZXh0KSAmJiBXVEY6OmdldDxTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4oam9iLnNvdXJj
ZUNvbnRleHQpID09IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOworICAgICAgICByZXR1cm4gc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4oam9iLnNvdXJjZUNv
bnRleHQpICYmIHN0ZDo6Z2V0PFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPihqb2Iuc291cmNlQ29u
dGV4dCkgPT0gc2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJjZUhl
YXAuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJj
ZUhlYXAuaAppbmRleCBiNWY2Njc0MTBhYTFkYzRiZGNlZTFlMjA4ZjU4ZjNiZTRkMjk0NGQ5Li5l
NzNkMjJhMDIyNDlmNzdmY2ZkOWQ5ODA5YjZmM2RiNjA5NDQ4MzI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUXVhbGlmaWVkUmVzb3VyY2VIZWFwLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVh
cC5oCkBAIC0xNjAsNyArMTYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGl0ZXJhdG9yID09
IG1fcmVzb3VyY2VzLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IEFTU0VSVChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVlKSk7
Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxSZWY8VD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7
CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxSZWY8VD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3Bw
CmluZGV4IDNiZDg5MDhhMTQyZjA1MmE2Njc4ZjFmOTIzZTNjZTM3MWMyMTcyMjEuLmQ0OGFiMjkw
NGM3MDlmODYyNjdhNzUwZDRkYmRmNmM1MjRiOWUwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3Bw
CkBAIC0zMiwxNCArMzIsMTQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3BhY2UgTmV0d29y
a0NhY2hlIHsKIAogRGF0YTo6RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkK
LSAgICA6IG1fYnVmZmVyKEJveDxWYXJpYW50PFZlY3Rvcjx1aW50OF90PiwgRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGE+Pjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PihzaXplKSkpCisgICAgOiBt
X2J1ZmZlcihCb3g8c3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90PiwgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGE+Pjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90PihzaXplKSkpCiAgICAgLCBtX3Np
emUoc2l6ZSkKIHsKICAgICBtZW1jcHkoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PigqbV9idWZm
ZXIpLmRhdGEoKSwgZGF0YSwgc2l6ZSk7CiB9CiAKLURhdGE6OkRhdGEoVmFyaWFudDxWZWN0b3I8
dWludDhfdD4sIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPiYmIGRhdGEpCi0gICAgOiBtX2J1
ZmZlcihCb3g8VmFyaWFudDxWZWN0b3I8dWludDhfdD4sIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhPj46OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKSkKK0RhdGE6OkRhdGEoc3RkOjp2YXJpYW50PFZl
Y3Rvcjx1aW50OF90PiwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+JiYgZGF0YSkKKyAgICA6
IG1fYnVmZmVyKEJveDxzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YT4+OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkpCiAgICAgLCBtX2lzTWFwKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KCptX2J1ZmZl
cikpCiB7CiAgICAgbV9zaXplID0gV1RGOjpzd2l0Y2hPbigqbV9idWZmZXIsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNTBhOGM0NGFlYjRlMWQ5NjkxZjc4Y2Y2ZjBiNzIyYzFi
MmIzMWMzNC4uY2E0NjZiYWNkODg1MzkzZmM5NmFiYzE5ZjY3ZGI3YTE2YWZiNDc0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXll
ciwgTGF5ZXJDb250CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFtsYXllciBzZXRWYWx1
ZTpAMSBmb3JLZXlQYXRoOldLQ0dEaXNwbGF5TGlzdEVuYWJsZWRLZXldOwogICAgICAgICBbbGF5
ZXIgc2V0VmFsdWU6QDEgZm9yS2V5UGF0aDpXS0NHRGlzcGxheUxpc3RCaWZ1cmNhdGlvbkVuYWJs
ZWRLZXldOwotICAgICAgICBhdXRvIGRhdGEgPSBXVEY6OmdldDxJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk+KCptX2Rpc3BsYXlMaXN0QnVmZmVySGFuZGxlKS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7
CisgICAgICAgIGF1dG8gZGF0YSA9IHN0ZDo6Z2V0PElQQzo6U2hhcmVkQnVmZmVyQ29weT4oKm1f
ZGlzcGxheUxpc3RCdWZmZXJIYW5kbGUpLmJ1ZmZlcigpLT5jcmVhdGVDRkRhdGEoKTsKICAgICAg
ICAgWyhXS0NvbXBvc2l0aW5nTGF5ZXIgKilsYXllciBfc2V0V0tDb250ZW50czpjb250ZW50cy5n
ZXQoKSB3aXRoRGlzcGxheUxpc3Q6ZGF0YS5nZXQoKV07CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCAxZGI1NmU2ZjRhMGE4MmJjMWU5MjJlODY5MjI0OTA0OTc5YmNkNDVlLi4yYmI1OGZmYjc0Mjg3
MjY1Y2NjMzg1NTc0NGZhZDVkZDAxZTJjOTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE1NDQsMTIgKzE1NDQsMTIgQEAgdm9pZCBB
cmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRhOjpFbnRyeT46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdAogICAgIGJvb2wgaGFzU3RyaW5nID0gc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxTdHJpbmc+KHBsYXRmb3JtRGF0YSk7CiAgICAgZW5jb2RlciA8PCBoYXNTdHJpbmc7CiAg
ICAgaWYgKGhhc1N0cmluZykKLSAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxTdHJpbmc+KHBs
YXRmb3JtRGF0YSk7CisgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihwbGF0Zm9y
bURhdGEpOwogCiAgICAgYm9vbCBoYXNCdWZmZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZjxTaGFyZWRCdWZmZXI+PihwbGF0Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFzQnVmZmVy
OwogICAgIGlmIChoYXNCdWZmZXIpCi0gICAgICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVy
LCBXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CisgICAg
ICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4ocGxhdGZvcm1EYXRhKS5wdHIoKSk7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6RW50cnk+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2Fy
ZEN1c3RvbURhdGE6OkVudHJ5JiBkYXRhKQpAQCAtMjc0NSw5ICsyNzQ1LDkgQEAgdm9pZCBBcmd1
bWVudENvZGVyPElEQktleVBhdGg+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSURC
S2V5UGF0aCYga2V5UGEKICAgICBib29sIGlzU3RyaW5nID0gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KGtleVBhdGgpOwogICAgIGVuY29kZXIgPDwgaXNTdHJpbmc7CiAgICAgaWYgKGlz
U3RyaW5nKQotICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0PFN0cmluZz4oa2V5UGF0aCk7Cisg
ICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihrZXlQYXRoKTsKICAgICBlbHNlCi0g
ICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8VmVjdG9yPFN0cmluZz4+KGtleVBhdGgpOworICAg
ICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFZlY3RvcjxTdHJpbmc+PihrZXlQYXRoKTsKIH0KIAog
Ym9vbCBBcmd1bWVudENvZGVyPElEQktleVBhdGg+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
SURCS2V5UGF0aCYga2V5UGF0aCkKQEAgLTI3NzUsOSArMjc3NSw5IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFNlCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJEYXRhID0gc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxTZXJ2aWNlV29ya2VyRGF0YT4oZGF0YSk7CiAgICAgZW5jb2RlciA8PCBpc1NlcnZp
Y2VXb3JrZXJEYXRhOwogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJEYXRhKQotICAgICAgICBlbmNv
ZGVyIDw8IFdURjo6Z2V0PFNlcnZpY2VXb3JrZXJEYXRhPihkYXRhKTsKKyAgICAgICAgZW5jb2Rl
ciA8PCBzdGQ6OmdldDxTZXJ2aWNlV29ya2VyRGF0YT4oZGF0YSk7CiAgICAgZWxzZQotICAgICAg
ICBlbmNvZGVyIDw8IFdURjo6Z2V0PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPihkYXRhKTsKKyAg
ICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4oZGF0YSk7
CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmIGRhdGEpCkBA
IC0yODA4LDkgKzI4MDgsOSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlck9yQ2xp
ZW50SWRlbnRpZmllcj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjbwogICAgIGJvb2wgaXNT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2VydmljZVdv
cmtlcklkZW50aWZpZXI+KGlkZW50aWZpZXIpOwogICAgIGVuY29kZXIgPDwgaXNTZXJ2aWNlV29y
a2VySWRlbnRpZmllcjsKICAgICBpZiAoaXNTZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLSAgICAg
ICAgZW5jb2RlciA8PCBXVEY6OmdldDxTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4oaWRlbnRpZmll
cik7CisgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U2VydmljZVdvcmtlcklkZW50aWZpZXI+
KGlkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgZW5jb2RlciA8PCBXVEY6OmdldDxTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4oaWRlbnRpZmllcik7CisgICAgICAgIGVuY29kZXIg
PDwgc3RkOjpnZXQ8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+KGlkZW50aWZpZXIpOwog
fQogCiBib29sIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
LmNwcAppbmRleCA3OGZmNzMyMDkxZTVlMzU2ZTQyMjlhNTMzZjQ5YTE4MzUyZWQ1NjkzLi45MTM4
NzIzMDE3NmY5ODVmZGIzNjA0OTUwZGQ3YmE2MWY3ZjQ1ZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmNwcApAQCAtODEsMTYgKzgxLDE2IEBAIHN0YXRp
YyBNYXBwZWRUeXBlIHZhbHVlRm9yS2V5KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVl
TWFwJiB2YWx1ZXMsIGNvbnN0CiB7CiAgICAgYXV0byB2YWx1ZXNJdCA9IHZhbHVlcy5maW5kKGtl
eSk7CiAgICAgaWYgKHZhbHVlc0l0ICE9IHZhbHVlcy5lbmQoKSAmJiBzdGQ6OmhvbGRzX2FsdGVy
bmF0aXZlPE1hcHBlZFR5cGU+KHZhbHVlc0l0LT52YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6
OmdldDxNYXBwZWRUeXBlPih2YWx1ZXNJdC0+dmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpn
ZXQ8TWFwcGVkVHlwZT4odmFsdWVzSXQtPnZhbHVlKTsKIAogICAgIGF1dG8gb3ZlcnJpZGRlbkRl
ZmF1bHRzSXQgPSBvdmVycmlkZGVuRGVmYXVsdHMuZmluZChrZXkpOwogICAgIGlmIChvdmVycmlk
ZGVuRGVmYXVsdHNJdCAhPSBvdmVycmlkZGVuRGVmYXVsdHMuZW5kKCkgJiYgc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihvdmVycmlkZGVuRGVmYXVsdHNJdC0+dmFsdWUpKQotICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8TWFwcGVkVHlwZT4ob3ZlcnJpZGRlbkRlZmF1bHRzSXQtPnZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PE1hcHBlZFR5cGU+KG92ZXJyaWRkZW5EZWZh
dWx0c0l0LT52YWx1ZSk7CiAKICAgICBhdXRvJiBkZWZhdWx0c01hcCA9IFdlYlByZWZlcmVuY2Vz
U3RvcmU6OmRlZmF1bHRzKCk7CiAgICAgYXV0byBkZWZhdWx0c0l0ID0gZGVmYXVsdHNNYXAuZmlu
ZChrZXkpOwogICAgIGlmIChkZWZhdWx0c0l0ICE9IGRlZmF1bHRzTWFwLmVuZCgpICYmIHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8TWFwcGVkVHlwZT4oZGVmYXVsdHNJdC0+dmFsdWUpKQotICAgICAg
ICByZXR1cm4gV1RGOjpnZXQ8TWFwcGVkVHlwZT4oZGVmYXVsdHNJdC0+dmFsdWUpOworICAgICAg
ICByZXR1cm4gc3RkOjpnZXQ8TWFwcGVkVHlwZT4oZGVmYXVsdHNJdC0+dmFsdWUpOwogCiAgICAg
cmV0dXJuIE1hcHBlZFR5cGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS93cGUvVG91Y2hHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9Ub3VjaEdlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggODQ0ZmQ5NzE4ZmY0
ZjJhZGUzZTg0MTExMWI0MWRiMTFkYWJmMWE3Mi4uNzQyOGY1OTliZjA3ZDc1NDRmNjJhYWNkYzcz
NGY5MmFjOTMyMTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9Ub3VjaEdlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9Ub3VjaEdlc3R1cmVDb250cm9sbGVyLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgICAgICBXZWJXaGVlbEV2ZW50OjpQaGFzZSBwaGFzZTsKICAgICB9OwogCi0gICAgdXNp
bmcgRXZlbnRWYXJpYW50ID0gVmFyaWFudDxOb0V2ZW50LCBDbGlja0V2ZW50LCBBeGlzRXZlbnQ+
OworICAgIHVzaW5nIEV2ZW50VmFyaWFudCA9IHN0ZDo6dmFyaWFudDxOb0V2ZW50LCBDbGlja0V2
ZW50LCBBeGlzRXZlbnQ+OwogCiAgICAgR2VzdHVyZWRFdmVudCBnZXN0dXJlZEV2ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9nZXN0dXJlZEV2ZW50OyB9CiAgICAgRXZlbnRWYXJpYW50IGhhbmRsZUV2
ZW50KGNvbnN0IHN0cnVjdCB3cGVfaW5wdXRfdG91Y2hfZXZlbnRfcmF3Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vz
c2lvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJB
dXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKaW5kZXggYjg4Y2EyNjNhNDc0N2FhYzBlOWM0YzQzYzkx
ZTJjYmZhMWE1NWU5NC4uNTYxMmRkNTdjMDAxMzE2M2I5MDI0ZDRmOGEzYWYwOGJiMDFkZDlhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0
b21hdGlvblNlc3Npb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vZ3RrL1dlYkF1dG9tYXRpb25TZXNzaW9uR3RrLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBA
IHN0YXRpYyB1bnNpZ25lZCBtb2RpZmllcnNGb3JLZXlDb2RlKHVuc2lnbmVkIGtleUNvZGUpCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2lt
dWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRl
cmFjdGlvbiBpbnRlcmFjdGlvbiwgV1RGOjpWYXJpYW50PFZpcnR1YWxLZXksIENoYXJLZXk+JiYg
a2V5KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJk
SW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVy
YWN0aW9uLCBzdGQ6OnZhcmlhbnQ8VmlydHVhbEtleSwgQ2hhcktleT4mJiBrZXkpCiB7CiAgICAg
dW5zaWduZWQga2V5Q29kZTsKICAgICBXVEY6OnN3aXRjaE9uKGtleSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vd3BlL1dlYkF1dG9tYXRpb25TZXNzaW9u
V1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vd3BlL1dlYkF1dG9t
YXRpb25TZXNzaW9uV1BFLmNwcAppbmRleCA3N2RjNGU0ZjNlNzBiMWM0ODUzOWU0YTIyN2MzNGVm
N2NjYWEyZWFlLi41YzU1MjMxOWYzNWIxMTI5ZTFlNTJkMmU2ODI2OGYyMjIyZjQyZmRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL3dwZS9XZWJBdXRvbWF0
aW9uU2Vzc2lvbldQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi93cGUvV2ViQXV0b21hdGlvblNlc3Npb25XUEUuY3BwCkBAIC0zMjcsNyArMzI3LDcgQEAgc3Rh
dGljIHVpbnQzMl90IG1vZGlmaWVyc0ZvcktleUNvZGUodW5zaWduZWQga2V5Q29kZSkKICAgICBy
ZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0
ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0
aW9uIGludGVyYWN0aW9uLCBXVEY6OlZhcmlhbnQ8VmlydHVhbEtleSwgQ2hhcktleT4mJiBrZXkp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5Ym9hcmRJbnRl
cmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvYXJkSW50ZXJhY3Rpb24gaW50ZXJhY3Rp
b24sIHN0ZDo6dmFyaWFudDxWaXJ0dWFsS2V5LCBDaGFyS2V5PiYmIGtleSkKIHsKICAgICB1aW50
MzJfdCBrZXlDb2RlOwogICAgIFdURjo6c3dpdGNoT24oa2V5LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclBy
b3h5LmNwcAppbmRleCBjODEwZjEwZDA5Y2MwODg4MDNmMzNjMDZjMDdhZjY2MWQ3YTc4NDNhLi4w
YTNhYjc3MTU4YTYzNDlhMGJkNTgzNjAxNTIzNmM4ZGQ0NTQ4ZmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Vc2VyTWVkaWFDYXB0dXJlTWFu
YWdlclByb3h5LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBt
X3N0YXJ0VGltZSA9IHRpbWU7CiAgICAgICAgICAgICBtX2NhcHR1cmVTZW1hcGhvcmUgPSBtYWtl
VW5pcXVlPElQQzo6U2VtYXBob3JlPigpOwogICAgICAgICAgICAgQVNTRVJUKGRlc2NyaXB0aW9u
LnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3JtRGVzY3JpcHRpb246OkNBQXVk
aW9TdHJlYW1CYXNpY1R5cGUpOwotICAgICAgICAgICAgbV9kZXNjcmlwdGlvbiA9ICpXVEY6Omdl
dDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9y
bURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOworICAgICAgICAgICAgbV9kZXNjcmlwdGlvbiA9
ICpzdGQ6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlv
bi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOwogCiAgICAgICAgICAgICBtX2Zy
YW1lQ2h1bmtTaXplID0gc3RkOjptYXgoV2ViQ29yZTo6QXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1
YW50dW1TaXplLCBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5wcmVmZXJyZWRCdWZmZXJT
aXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhy
b3R0bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3Bw
CmluZGV4IDI1ZjM1MGUyYzZiN2JlMjczNTUxODdmZTI3YzhlYjBmYTliNWY1N2IuLmI2OWI2NDk2
ZmFjODAyYWI0M2VmYmY4MjdmZGQzMmE5YjBmZDE1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCkBAIC0yNDcsMTQgKzI0NywxNCBAQCBib29sIFBy
b2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkoY29uc3QgUHJvY2Vzc1Ro
cm90dGxlcjo6QWN0aXZpdAogewogICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxVbmlx
dWVSZWY8UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5Pj4oYWN0aXZpdHkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFdURjo6Z2V0PFVuaXF1ZVJlZjxQcm9j
ZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0eSktPmlzVmFsaWQoKTsK
KyAgICByZXR1cm4gc3RkOjpnZXQ8VW5pcXVlUmVmPFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eT4+KGFjdGl2aXR5KS0+aXNWYWxpZCgpOwogfQogCiBib29sIFByb2Nlc3NUaHJv
dHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkoY29uc3QgUHJvY2Vzc1Rocm90dGxlcjo6
QWN0aXZpdHlWYXJpYW50JiBhY3Rpdml0eSkKIHsKICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8VW5pcXVlUmVmPFByb2Nlc3NUaHJvdHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4+KGFj
dGl2aXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBXVEY6OmdldDxVbmlx
dWVSZWY8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5Pj4oYWN0aXZpdHkpLT5p
c1ZhbGlkKCk7CisgICAgcmV0dXJuIHN0ZDo6Z2V0PFVuaXF1ZVJlZjxQcm9jZXNzVGhyb3R0bGVy
OjpGb3JlZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0eSktPmlzVmFsaWQoKTsKIH0KIAogUHJvY2Vz
c1Rocm90dGxlcjo6VGltZWRBY3Rpdml0eTo6VGltZWRBY3Rpdml0eShTZWNvbmRzIHRpbWVvdXQs
IFByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5VmFyaWFudCYmIGFjdGl2aXR5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRv
ck1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuY3BwCmluZGV4IDM3NzExNjFhMjk1NmJlNGM4ODdkMDFjYTU2
MWFmNmI4OGI3NThkYTUuLjkwN2NmOTVmMjUwNGZiZjFkOGQyZjFkOGQzNGVhZWFlMmY2OTgzYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAKQEAgLTE1MCwxNCArMTUwLDE0
IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24o
Y29uc3Qgc3RkOjpvcHRpb25hbDxBdXRoZW50CiBzdGF0aWMgU3RyaW5nIGdldFJwSWQoY29uc3Qg
c3RkOjp2YXJpYW50PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMsIFB1YmxpY0tl
eUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4mIG9wdGlvbnMpCiB7CiAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ob3B0aW9u
cykpCi0gICAgICAgIHJldHVybiBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zPihvcHRpb25zKS5ycC5pZDsKLSAgICByZXR1cm4gV1RGOjpnZXQ8UHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zPihvcHRpb25zKS5ycElkOworICAgICAgICByZXR1cm4gc3Rk
OjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ob3B0aW9ucykucnAuaWQ7
CisgICAgcmV0dXJuIHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4o
b3B0aW9ucykucnBJZDsKIH0KIAogc3RhdGljIFN0cmluZyBnZXRVc2VyTmFtZShjb25zdCBzdGQ6
OnZhcmlhbnQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucywgUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zPiYgb3B0aW9ucykKIHsKICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihvcHRpb25zKSkK
LSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KG9wdGlvbnMpLnVzZXIubmFtZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KG9wdGlvbnMpLnVzZXIubmFtZTsKICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIH0KIApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgQXV0aGVudGlj
YXRvck1hbmFnZXI6OnJlc3BvbmRSZWNlaXZlZChSZXNwb25kJiYgcmVzcG9uZCkKIAogICAgIGF1
dG8gc2hvdWxkQ29tcGxldGUgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBdXRoZW50aWNh
dG9yUmVzcG9uc2U+PihyZXNwb25kKTsKICAgICBpZiAoIXNob3VsZENvbXBsZXRlKQotICAgICAg
ICBzaG91bGRDb21wbGV0ZSA9IFdURjo6Z2V0PEV4Y2VwdGlvbkRhdGE+KHJlc3BvbmQpLmNvZGUg
PT0gSW52YWxpZFN0YXRlRXJyb3I7CisgICAgICAgIHNob3VsZENvbXBsZXRlID0gc3RkOjpnZXQ8
RXhjZXB0aW9uRGF0YT4ocmVzcG9uZCkuY29kZSA9PSBJbnZhbGlkU3RhdGVFcnJvcjsKICAgICBp
ZiAoc2hvdWxkQ29tcGxldGUpIHsKICAgICAgICAgaW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVzcG9uZCkpOwogICAgICAgICBjbGVhclN0YXRlQXN5bmMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCBkZjExMmM4ZmI4YzdmOGU0
ZjIwYTQzNDc4ZTAxOTIwMzYxMDVlNDQ4Li5hZGFhNjZlZTNjOTg5ODZiNjljM2VjMjIyMzZiYTU4
NDA0NDQ3YzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBA
IC0xOTcsNyArMTk3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFs
KCkKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7CiAgICAg
QVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkluaXQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVx
dWVzdFJlY2VpdmVkOwotICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7Cisg
ICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAogICAgIC8vIFRoZSBmb2xs
b3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLW1ha2Ut
Y3JlZCBhcyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVwIDQtNSBhcyByZXF1
aXJlUmVzaWRlbnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGFyZSBlbmZvcmNlZC4K
QEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyRGVjaWRlUG9saWN5KExvY2FsQXV0aGVudGljYQogICAgIEFTU0VSVCht
X3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6
UG9saWN5RGVjaWRlZDsKIAotICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7
CisgICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAogICAgIGlmIChwb2xp
Y3kgPT0gTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5OjpEaXNhbGxvdykgewogICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCAiRGlzYWxsb3cgbG9jYWwg
YXV0aGVudGljYXRvci4iX3MgfSk7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2Vj
QWNjZXNzQ28KIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpQb2xpY3lEZWNpZGVkKTsK
ICAgICBtX3N0YXRlID0gU3RhdGU6OlVzZXJWZXJpZmllZDsKLSAgICBhdXRvJiBjcmVhdGlvbk9w
dGlvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1
ZXN0RGF0YSgpLm9wdGlvbnMpOworICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IHN0ZDo6Z2V0
PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9u
cyk7CiAKICAgICBpZiAoIXZhbGlkYXRlVXNlclZlcmlmaWNhdGlvbih2ZXJpZmljYXRpb24pKQog
ICAgICAgICByZXR1cm47CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFZlY3Rvcjx1aW50OF90PiYm
IGMKIAogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpVc2VyVmVyaWZpZWQpOwogICAgIG1f
c3RhdGUgPSBTdGF0ZTo6QXR0ZXN0ZWQ7Ci0gICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RG
OjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5v
cHRpb25zKTsKKyAgICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBzdGQ6OmdldDxQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogCiAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1h
a2VTdHJpbmcoIkNvdWxkbid0IGF0dGVzdDogIiwgU3RyaW5nKGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKSkgfSk7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmdldEFzc2VydGlvbigpCiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvcklu
dGVybmFsOwogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpJbml0KTsKICAgICBtX3N0YXRl
ID0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZDsKLSAgICBhdXRvJiByZXF1ZXN0T3B0aW9ucyA9IFdU
Rjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVxdWVzdERhdGEoKS5v
cHRpb25zKTsKKyAgICBhdXRvJiByZXF1ZXN0T3B0aW9ucyA9IHN0ZDo6Z2V0PFB1YmxpY0tleUNy
ZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAogICAgIC8v
IFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4v
I29wLWdldC1hc3NlcnRpb24gYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFNraXAgU3Rl
cCAyIGFzIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGlzIGVuZm9yY2VkLgpAQCAtNTQ5LDcgKzU0
OSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVy
UmVzcG9uc2VTZWxlY3RlZChSZWY8V2ViQ29yZTo6CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvJiByZXF1ZXN0T3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxS
ZXF1ZXN0T3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAgICBhdXRvJiByZXF1ZXN0
T3B0aW9ucyA9IHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVx
dWVzdERhdGEoKS5vcHRpb25zKTsKIAogICAgIGF1dG8gYWNjZXNzQ29udHJvbFJlZiA9IHJlc3Bv
bnNlLT5hY2Nlc3NDb250cm9sKCk7CiAgICAgYXV0byBjYWxsYmFjayA9IFsKQEAgLTU3NSw3ICs1
NzUsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRBc3NlcnRpb25BZnRl
clVzZXJWZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OgogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBTdGVwIDEwLgotICAgIGF1dG8gcmVxdWVzdE9wdGlvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CisgICAgYXV0
byByZXF1ZXN0T3B0aW9ucyA9IHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRB
dXRoRGF0YShyZXF1ZXN0T3B0aW9ucy5ycElkLCB2ZXJpZmljYXRpb24gPT0gTG9jYWxDb25uZWN0
aW9uOjpVc2VyVmVyaWZpY2F0aW9uOjpQcmVzZW5jZSA/IG90aGVyR2V0QXNzZXJ0aW9uRmxhZ3Mg
OiBnZXRBc3NlcnRpb25GbGFncywgY291bnRlciwgeyB9KTsKIAogICAgIC8vIFN0ZXAgMTEuCkBA
IC02NzEsNyArNjcxLDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmRlbGV0ZUR1cGxpY2F0
ZUNyZWRlbnRpYWwoKSBjb25zdAogewogICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRp
Y2F0b3JJbnRlcm5hbDsKIAotICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7
CisgICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKICAgICBtX2V4aXN0aW5n
Q3JlZGVudGlhbHMuZmluZE1hdGNoaW5nKFtjcmVhdGlvbk9wdGlvbnNdIChhdXRvJiBjcmVkZW50
aWFsKSB7CiAgICAgICAgIGF1dG8qIHVzZXJIYW5kbGUgPSBjcmVkZW50aWFsLT51c2VySGFuZGxl
KCk7CiAgICAgICAgIEFTU0VSVCh1c2VySGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERh
dGEuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRpb25SZXF1ZXN0RGF0YS5jcHAKaW5kZXggMDc3ZWM2YWUzMjA0NTE2MjVlMWI3MmEw
YzE1MGRkYzM4MTM2YjAwOS4uMTU1MmFjNDUxMWUxZjk2YWI5ZWUxMmIwMjQzOWEzMWYwODBmNzMz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
V2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5jcHAK
QEAgLTQzLDEyICs0MywxMiBAQCBDbGllbnREYXRhVHlwZSBnZXRDbGllbnREYXRhVHlwZShjb25z
dCBzdGQ6OnZhcmlhbnQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uTwogVXNlclZlcmlmaWNh
dGlvblJlcXVpcmVtZW50IGdldFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudChjb25zdCBzdGQ6
OnZhcmlhbnQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucywgUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zPiYgb3B0aW9ucykKIHsKICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihvcHRpb25zKSkg
ewotICAgICAgICBpZiAoYXV0byBhdXRoZW50aWNhdG9yU2VsZWN0aW9uID0gV1RGOjpnZXQ8UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ob3B0aW9ucykuYXV0aGVudGljYXRvclNl
bGVjdGlvbikKKyAgICAgICAgaWYgKGF1dG8gYXV0aGVudGljYXRvclNlbGVjdGlvbiA9IHN0ZDo6
Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KG9wdGlvbnMpLmF1dGhlbnRp
Y2F0b3JTZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gYXV0aGVudGljYXRvclNlbGVjdGlv
bi0+dXNlclZlcmlmaWNhdGlvbjsKICAgICAgICAgcmV0dXJuIFVzZXJWZXJpZmljYXRpb25SZXF1
aXJlbWVudDo6UHJlZmVycmVkOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6OmdldDxQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KG9wdGlvbnMpLnVzZXJWZXJpZmljYXRpb247Cisg
ICAgcmV0dXJuIHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ob3B0
aW9ucykudXNlclZlcmlmaWNhdGlvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0
YXBBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCmluZGV4IGJmNjhlZGNlZWIxOWY3MjI2
NmMwMmRhMGM5MGFkYmNlYjE4ZDU5NWYuLjQ3YjFmNmE5MjBmMjgxNWZiMWI1YjkzZTM4MTM1OTg0
N2QyNDU1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vQ3RhcEF1dGhlbnRpY2F0b3IuY3BwCkBAIC05
Myw3ICs5Myw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAg
ICBpZiAocHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbigpKQogICAgICAg
ICByZXR1cm47CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNib3JDbWQ7Ci0gICAgYXV0byYgb3B0aW9u
cyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3RE
YXRhKCkub3B0aW9ucyk7CisgICAgYXV0byYgb3B0aW9ucyA9IHN0ZDo6Z2V0PFB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAgICAgYXV0
byBpbnRlcm5hbFVWQXZhaWxhYmlsaXR5ID0gbV9pbmZvLm9wdGlvbnMoKS51c2VyVmVyaWZpY2F0
aW9uQXZhaWxhYmlsaXR5KCk7CiAgICAgLy8gSWYgVVYgaXMgcmVxdWlyZWQsIHRoZW4gZWl0aGVy
IGJ1aWx0LWluIHV2IG9yIGEgcGluIHdpbGwgd29yay4KICAgICBpZiAoaW50ZXJuYWxVVkF2YWls
YWJpbGl0eSA9PSBVVkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZENvbmZpZ3VyZWQgJiYgKCFv
cHRpb25zLmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24gfHwgb3B0aW9ucy5hdXRoZW50aWNhdG9yU2Vs
ZWN0aW9uLT51c2VyVmVyaWZpY2F0aW9uICE9IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudDo6
RGlzY291cmFnZWQpKQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgQ3RhcEF1dGhlbnRpY2F0b3I6
Om1ha2VDcmVkZW50aWFsKCkKIAogdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyUmVzcG9uc2VSZWNlaXZlZChWZWN0b3I8dWludDhfdD4mJiBkYXRhKQog
ewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVzcG9uc2UoZGF0
YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIFdURjo6Z2V0PFB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykuYXR0
ZXN0YXRpb24pOworICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkQ1RBUE1ha2VDcmVkZW50aWFsUmVz
cG9uc2UoZGF0YSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIHN0ZDo6
Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0
aW9ucykuYXR0ZXN0YXRpb24pOwogICAgIGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgYXV0byBl
cnJvciA9IGdldFJlc3BvbnNlQ29kZShkYXRhKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQg
Q3RhcEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiB7CiAgICAgQVNTRVJUKCFtX2lzRG93
bmdyYWRlZCk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNib3JDbWQ7Ci0gICAgYXV0byYgb3B0aW9u
cyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVxdWVzdERh
dGEoKS5vcHRpb25zKTsKKyAgICBhdXRvJiBvcHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogICAgIGF1dG8g
aW50ZXJuYWxVVkF2YWlsYWJpbGl0eSA9IG1faW5mby5vcHRpb25zKCkudXNlclZlcmlmaWNhdGlv
bkF2YWlsYWJpbGl0eSgpOwogICAgIC8vIElmIFVWIGlzIHJlcXVpcmVkLCB0aGVuIGVpdGhlciBi
dWlsdC1pbiB1diBvciBhIHBpbiB3aWxsIHdvcmsuCiAgICAgaWYgKGludGVybmFsVVZBdmFpbGFi
aWxpdHkgPT0gVVZBdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRBbmRDb25maWd1cmVkICYmIG9wdGlv
bnMudXNlclZlcmlmaWNhdGlvbiAhPSBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OkRpc2Nv
dXJhZ2VkKQpAQCAtMzc1LDcgKzM3NSw3IEBAIGJvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnRyeURv
d25ncmFkZSgpCiAvLyBPbmx5IFUyRiBwcm90b2NvbCBpcyBzdXBwb3J0ZWQgZm9yIEdvb2dsZSBs
ZWdhY3kgQXBwSUQgc3VwcG9ydC4KIGJvb2wgQ3RhcEF1dGhlbnRpY2F0b3I6OnByb2Nlc3NHb29n
bGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24oKQogewotICAgIGF1dG8mIGV4dGVuc2lvbnMg
PSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0
YSgpLm9wdGlvbnMpLmV4dGVuc2lvbnM7CisgICAgYXV0byYgZXh0ZW5zaW9ucyA9IHN0ZDo6Z2V0
PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9u
cykuZXh0ZW5zaW9uczsKICAgICBpZiAoIWV4dGVuc2lvbnMpIHsKICAgICAgICAgLy8gQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjpjcmVhdGUgc2hvdWxkIGFsd2F5cyBzZXQgaXQuCiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5j
cHAKaW5kZXggMDg4MDZjZjRlNmJmZmNlNzk3MzljM2Y0Yzk3ZDMzNmVkN2Q2MDI3OS4uNDlmMjIy
ZWM4YzFlOTJlNTY2MTk4OGZjOGRhNWEwOTY3MDFkNGQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1Uy
ZkF1dGhlbnRpY2F0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFUyZkF1dGhlbnRpY2F0b3I6OlUy
ZkF1dGhlbnRpY2F0b3Ioc3RkOjp1bmlxdWVfcHRyPEN0YXBEcml2ZXI+JiYgZHJpdmVyKQogCiB2
b2lkIFUyZkF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKIHsKLSAgICBhdXRvJiBjcmVh
dGlvbk9wdGlvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
PihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOworICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IHN0
ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCku
b3B0aW9ucyk7CiAgICAgaWYgKCFpc0NvbnZlcnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQoY3Jl
YXRpb25PcHRpb25zKSkgewogICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsg
Tm90U3VwcG9ydGVkRXJyb3IsICJDYW5ub3QgY29udmVydCB0aGUgcmVxdWVzdCB0byBVMkYgY29t
bWFuZC4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBVMmZB
dXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAKIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6
Y2hlY2tFeGNsdWRlTGlzdChzaXplX3QgaW5kZXgpCiB7Ci0gICAgYXV0byYgY3JlYXRpb25PcHRp
b25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVz
dERhdGEoKS5vcHRpb25zKTsKKyAgICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBzdGQ6OmdldDxQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMp
OwogICAgIGlmIChpbmRleCA+PSBjcmVhdGlvbk9wdGlvbnMuZXhjbHVkZUNyZWRlbnRpYWxzLnNp
emUoKSkgewogICAgICAgICBpc3N1ZVJlZ2lzdGVyQ29tbWFuZCgpOwogICAgICAgICByZXR1cm47
CkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpjaGVja0V4Y2x1ZGVM
aXN0KHNpemVfdCBpbmRleCkKIAogdm9pZCBVMmZBdXRoZW50aWNhdG9yOjppc3N1ZVJlZ2lzdGVy
Q29tbWFuZCgpCiB7Ci0gICAgYXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZSZWdpc3RlckNvbW1h
bmQocmVxdWVzdERhdGEoKS5oYXNoLCBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpKTsKKyAgICBhdXRvIHUyZkNtZCA9IGNv
bnZlcnRUb1UyZlJlZ2lzdGVyQ29tbWFuZChyZXF1ZXN0RGF0YSgpLmhhc2gsIHN0ZDo6Z2V0PFB1
YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykp
OwogICAgIEFTU0VSVCh1MmZDbWQpOwogICAgIGlzc3VlTmV3Q29tbWFuZChXVEZNb3ZlKCp1MmZD
bWQpLCBDb21tYW5kVHlwZTo6UmVnaXN0ZXJDb21tYW5kKTsKIH0KIAogdm9pZCBVMmZBdXRoZW50
aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogewotICAgIGlmICghaXNDb252ZXJ0aWJsZVRvVTJmU2ln
bkNvbW1hbmQoV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1
ZXN0RGF0YSgpLm9wdGlvbnMpKSkgeworICAgIGlmICghaXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNv
bW1hbmQoc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0
RGF0YSgpLm9wdGlvbnMpKSkgewogICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgTm90U3VwcG9ydGVkRXJyb3IsICJDYW5ub3QgY29udmVydCB0aGUgcmVxdWVzdCB0byBVMkYg
Y29tbWFuZC4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBA
IHZvaWQgVTJmQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKIAogdm9pZCBVMmZBdXRoZW50
aWNhdG9yOjppc3N1ZVNpZ25Db21tYW5kKHNpemVfdCBpbmRleCkKIHsKLSAgICBhdXRvJiByZXF1
ZXN0T3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4o
cmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAgICBhdXRvJiByZXF1ZXN0T3B0aW9ucyA9IHN0ZDo6
Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRp
b25zKTsKICAgICBpZiAoaW5kZXggPj0gcmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5z
aXplKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2ZXIoKSkK
ICAgICAgICAgICAgIG9ic2VydmVyLT5hdXRoZW50aWNhdG9yU3RhdHVzVXBkYXRlZChXZWJBdXRo
ZW50aWNhdGlvblN0YXR1czo6Tm9DcmVkZW50aWFsc0ZvdW5kKTsKQEAgLTE1NSw3ICsxNTUsNyBA
QCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlUmVnaXN0ZXJDb21tYW5kQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZQogewogICAgIHN3aXRjaCAoYXBkdVJlc3BvbnNlLnN0
YXR1cygpKSB7CiAgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0YXR1czo6U1dfTk9fRVJST1I6IHsK
LSAgICAgICAgYXV0byYgb3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CisgICAgICAgIGF1dG8mIG9wdGlv
bnMgPSBzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0
RGF0YSgpLm9wdGlvbnMpOwogICAgICAgICBhdXRvIGFwcElkID0gcHJvY2Vzc0dvb2dsZUxlZ2Fj
eUFwcElkU3VwcG9ydEV4dGVuc2lvbihvcHRpb25zLmV4dGVuc2lvbnMpOwogICAgICAgICBhdXRv
IHJlc3BvbnNlID0gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoIWFwcElkID8gb3B0aW9ucy5ycC5p
ZCA6IGFwcElkLCBhcGR1UmVzcG9uc2UuZGF0YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6
Q3Jvc3NQbGF0Zm9ybSwgb3B0aW9ucy5hdHRlc3RhdGlvbik7CiAgICAgICAgIGlmICghcmVzcG9u
c2UpIHsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVl
Qm9ndXNDb21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKEFwZHVSZXNwb25zZSYmCiAKIHZvaWQg
VTJmQXV0aGVudGljYXRvcjo6Y29udGludWVTaWduQ29tbWFuZEFmdGVyUmVzcG9uc2VSZWNlaXZl
ZChBcGR1UmVzcG9uc2UmJiBhcGR1UmVzcG9uc2UpCiB7Ci0gICAgYXV0byYgcmVxdWVzdE9wdGlv
bnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3RE
YXRhKCkub3B0aW9ucyk7CisgICAgYXV0byYgcmVxdWVzdE9wdGlvbnMgPSBzdGQ6OmdldDxQdWJs
aWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAg
ICAgc3dpdGNoIChhcGR1UmVzcG9uc2Uuc3RhdHVzKCkpIHsKICAgICBjYXNlIEFwZHVSZXNwb25z
ZTo6U3RhdHVzOjpTV19OT19FUlJPUjogewogICAgICAgICBSZWZQdHI8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiByZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBiMTZhNWQ3YzBlMmFkOTkxMmU4MTFjY2JmOGM3
OTVkNDI5OWFhN2YxLi4yN2VjYjZiMWVmODVlYWM2M2M4MzEzMjVjMDUxNGI1NDE1ZmQ2YTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBA
IC0xMDMsNyArMTAzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWMKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShXVEZNb3ZlKFdURjo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUpKSk7
CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShXVEZNb3ZlKHN0ZDo6
Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUpKSk7CiAgICAgaWYgKCFiaXRtYXAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggNmQzMzk1MzA2
YTE2OGZiNTFjMWNlY2ZhMmViMmQzMzAwODlkNjFmZS4uYTVjYjkxYjU2ODAwOGYwMDdkOTJmOTZl
NTJhZGM4M2NjZDg5Y2M0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUlPU3VyZgogCiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihtX2hhbmRs
ZSkuY29weVNlbmRSaWdodCgpOworICAgIHJldHVybiBzdGQ6OmdldDxNYWNoU2VuZFJpZ2h0Piht
X2hhbmRsZSkuY29weVNlbmRSaWdodCgpOwogfQogCiBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJm
YWNlQmFja2VuZC5jcHAKaW5kZXggMTAwZDY0YjVmOTcyODA4YTAxN2RlYjNjYjM3OTJiYjZlMjVk
OGVmZC4uYWZkMmM3YzA1Y2ZhZmQxMzk5MzQ0ZjVjNmE3NjRlNDg4MGQyOGJkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlclNoYXJl
YWJsZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHN1cmZhY2Ug
PSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2Vu
ZFJpZ2h0PihoYW5kbGUpKSwgcGFyYW1ldGVycy5jb2xvclNwYWNlKTsKKyAgICBhdXRvIHN1cmZh
Y2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzdGQ6OmdldDxNYWNo
U2VuZFJpZ2h0PihoYW5kbGUpKSwgcGFyYW1ldGVycy5jb2xvclNwYWNlKTsKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJpdmF0ZS5jcHAK
aW5kZXggMDk3NzkxZWE4YjQ3ZDZlNTBmNjdlZGRkZmY2Y2U1MjYxYTViNjQ0Ni4uMDc1MTM3Yzc1
ZjVlOGQwY2E0NGVmMWQ3ZWJhZWM5NGRmMDRkNTcwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNw
cApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGU6OmF1ZGlvU2Ft
cGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsCiAKICAgICBpZiAo
bV9kZXNjcmlwdGlvbiAhPSBkZXNjcmlwdGlvbikgewogICAgICAgICBBU1NFUlQoZGVzY3JpcHRp
b24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FB
dWRpb1N0cmVhbUJhc2ljVHlwZSk7Ci0gICAgICAgIG1fZGVzY3JpcHRpb24gPSAqV1RGOjpnZXQ8
Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24ucGxhdGZvcm1E
ZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKTsKKyAgICAgICAgbV9kZXNjcmlwdGlvbiA9ICpzdGQ6
OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0
Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOwogCiAgICAgICAgIC8vIEFsbG9jYXRlIGEg
cmluZyBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gMiBzZWNvbmRzIG9mIGF1ZGlvLgog
ICAgICAgICBtX251bWJlck9mRnJhbWVzID0gbV9kZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01IVE1MU2VsZWN0
RWxlbWVudC5jcHAKaW5kZXggOTFhODEwZDAwMjBhMDU5MDhiNDhiYjJjMTk1MjZmMTEzYjBmZmYz
Zi4uYzZhNGE0NmQ2ZjQ4OThkNWFhNmZlYTZkOTJjM2U5OTcwMTBlNjU2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTUhUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2VsZW1lbnRf
YWRkKFdlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50KiBzZWxmLCBXZWJLaXQKICAgICBXZWJDb3Jl
OjpIVE1MU2VsZWN0RWxlbWVudCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJD
b3JlOjpIVE1MRWxlbWVudCogY29udmVydGVkRWxlbWVudCA9IFdlYktpdDo6Y29yZShlbGVtZW50
KTsKICAgICBXZWJDb3JlOjpIVE1MRWxlbWVudCogY29udmVydGVkQmVmb3JlID0gV2ViS2l0Ojpj
b3JlKGJlZm9yZSk7Ci0gICAgVmFyaWFudDxSZWZQdHI8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1l
bnQ+LCBSZWZQdHI8V2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudD4+IHZhcmlhbnRFbGVtZW50
OworICAgIHN0ZDo6dmFyaWFudDxSZWZQdHI8V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+LCBS
ZWZQdHI8V2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudD4+IHZhcmlhbnRFbGVtZW50OwogICAg
IGlmIChpczxXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4oY29udmVydGVkRWxlbWVudCkpCiAg
ICAgICAgIHZhcmlhbnRFbGVtZW50ID0gJmRvd25jYXN0PFdlYkNvcmU6OkhUTUxPcHRpb25FbGVt
ZW50PigqY29udmVydGVkRWxlbWVudCk7CiAgICAgZWxzZSBpZiAoaXM8V2ViQ29yZTo6SFRNTE9w
dEdyb3VwRWxlbWVudD4oY29udmVydGVkRWxlbWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3BlZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAppbmRleCAwODA3MjY2NWU0YjUy
MDkwOGRjNDYwY2NmMTQ4YjE2ZjVlYWI5Y2FlLi5lMGMyOWMxMDFjNTIyMzAxNDA2YjgxMzczMmYy
OTJjZmZjZjRiYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1l
ZGlhU291cmNlTWFuYWdlci5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgICAg
ICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIHNjb3BlOwog
ICAgICAgICBpZiAobV9kZXNjcmlwdGlvbiAhPSBkZXNjcmlwdGlvbikgewogICAgICAgICAgICAg
QVNTRVJUKGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBlID09IFBsYXRmb3Jt
RGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpOwotICAgICAgICAgICAgbV9kZXNj
cmlwdGlvbiA9ICpXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihk
ZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOworICAgICAgICAg
ICAgbV9kZXNjcmlwdGlvbiA9ICpzdGQ6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOwog
CiAgICAgICAgICAgICBtX251bWJlck9mRnJhbWVzID0gbV9kZXNjcmlwdGlvbi5zYW1wbGVSYXRl
KCkgKiAyOwogICAgICAgICAgICAgbV9yaW5nQnVmZmVyLmFsbG9jYXRlKG1fZGVzY3JpcHRpb24u
c3RyZWFtRGVzY3JpcHRpb24oKSwgbV9udW1iZXJPZkZyYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IGM5ZTJjY2Y3MDlmYWYzYjQzYWUzY2U1OWYzMWIy
ZTQxMjg2YWU3OTQuLmZlZThmZWE3YmNjOGQ1OWMwN2UzYzViYTRkNjA5NTUyYTRkNjI4YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQogICAgICAgICAgICAgbV9y
ZXNwb25zZURhdGEgPSBidWZmZXItPmNvcHkoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
V1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1v
dmUoYnVmZmVyKSk7CisgICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9y
ZXNwb25zZURhdGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IDBkOTlhZGUx
NDhmNjYwMzMyNzRhOWQ1ZDE3MDVlZjM5YzVmMGYxMDkuLjAwNzgyZjE4OTJlYjA5OTUyM2YzZDQ2
OWQzYzQxN2E4ZGUwZWU4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUd0a0VkaXRvckNv
bW1hbmQoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIGNvbW1hbmQKIAogYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoRnJhbWUmIGZyYW1lLCBjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwZW5kaW5nRWRpdG9yQ29tbWFuZHMsIGJvb2wgYWxsb3dU
ZXh0SW5zZXJ0aW9uKQogewotICAgIFZlY3RvcjxWYXJpYW50PEVkaXRvcjo6Q29tbWFuZCwgU3Ry
aW5nPj4gY29tbWFuZHM7CisgICAgVmVjdG9yPHN0ZDo6dmFyaWFudDxFZGl0b3I6OkNvbW1hbmQs
IFN0cmluZz4+IGNvbW1hbmRzOwogICAgIGZvciAoYXV0byYgY29tbWFuZFN0cmluZyA6IHBlbmRp
bmdFZGl0b3JDb21tYW5kcykgewogICAgICAgICBpZiAoY29tbWFuZFN0cmluZy5zdGFydHNXaXRo
KCJHdGsiKSkKICAgICAgICAgICAgIGNvbW1hbmRzLmFwcGVuZChjb21tYW5kU3RyaW5nKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQppbmRleCA2NjRlOTgxNTI4NzQ3
YWMzYzFhZjM0YTM0MTNjZTdlOWVhMTNlNDI1Li5lYjU0ZjE5NmQzY2M3YjMyNjAxNGQwZDhhZDE3
M2NiOWFlMzc0Njg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1t
CkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFubm90YXRpb25SZWxhdGl2ZVRvU2VsZWN0aW9uKGNvbnN0IFN0cmkKICAgICBkb2N1bWVu
dC0+bWFya2VycygpLmZpbHRlck1hcmtlcnMocmFuZ2VBbmRPZmZzZXQtPnJhbmdlLCBbJl0gKGNv
bnN0IERvY3VtZW50TWFya2VyJiBtYXJrZXIpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpQbGF0Zm9ybVRleHRDaGVja2luZ0Rh
dGE+KG1hcmtlci5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBy
ZXR1cm4gV1RGOjpnZXQ8V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNr
aW5nRGF0YT4obWFya2VyLmRhdGEoKSkua2V5ICE9IGFubm90YXRpb247CisgICAgICAgIHJldHVy
biBzdGQ6OmdldDxXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6UGxhdGZvcm1UZXh0Q2hlY2tpbmdE
YXRhPihtYXJrZXIuZGF0YSgpKS5rZXkgIT0gYW5ub3RhdGlvbjsKICAgICB9LCB0eXBlcyk7CiB9
CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBXZWJDb3JlOjpBdHRyaWJ1dGVkU3RyaW5nIFRleHRDaGVj
a2luZ0NvbnRyb2xsZXJQcm94eTo6YW5ub3RhdGVkU3Vic3RyaW5nQmV0d2VlbgogICAgICAgICBb
c3RyaW5nIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6aXQudGV4dCgpLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENv
cHlpbmcoKS5nZXQoKV0pLmdldCgpXTsKICAgICAgICAgYXV0byByYW5nZSA9IGl0LnJhbmdlKCk7
CiAgICAgICAgIGZvciAoYXV0byogbWFya2VyIDogcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJr
ZXJzKCkubWFya2Vyc0luUmFuZ2UocmFuZ2UsIERvY3VtZW50TWFya2VyOjpQbGF0Zm9ybVRleHRD
aGVja2luZykpIHsKLSAgICAgICAgICAgIGF1dG8mIGRhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1h
cmtlcjo6UGxhdGZvcm1UZXh0Q2hlY2tpbmdEYXRhPihtYXJrZXItPmRhdGEoKSk7CisgICAgICAg
ICAgICBhdXRvJiBkYXRhID0gc3RkOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENo
ZWNraW5nRGF0YT4obWFya2VyLT5kYXRhKCkpOwogICAgICAgICAgICAgYXV0byBzdWJyYW5nZSA9
IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5nZSwgeyBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1h
cmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgfSk7CiAgICAgICAgICAg
ICBbc3RyaW5nIGFkZEF0dHJpYnV0ZTpkYXRhLmtleSB2YWx1ZTpkYXRhLnZhbHVlIHJhbmdlOmNo
YXJhY3RlclJhbmdlKCplbnRpcmVSYW5nZSwgc3VicmFuZ2UpXTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCA4MGRlODYwYjkwN2UyZWFhYzExY2MxYzQxMjE5ZjQ3ZDQ0NGQ5NDA4Li4xZTNjYjExODhlYWVl
MmFlNDhhNGE0NjVlMTNjNGZhY2ZmMmZkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzMwLDcgKzMzMCw3IEBAIHZv
aWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0
YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgaWYgKHNlbGVjdGVkUmFuZ2UpIHsKICAgICAgICAgYXV0
byBtYXJrZXJzID0gZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNJblJhbmdlKCpz
ZWxlY3RlZFJhbmdlLCBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZTo6RGljdGF0aW9uQWx0ZXJu
YXRpdmVzKTsKICAgICAgICAgcG9zdExheW91dERhdGEuZGljdGF0aW9uQ29udGV4dHNGb3JTZWxl
Y3Rpb24gPSBXVEY6Om1hcChtYXJrZXJzLCBbXSAoYXV0byogbWFya2VyKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gV1RGOjpnZXQ8RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci0+
ZGF0YSgpKS5jb250ZXh0OworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PERvY3VtZW50TWFy
a2VyOjpEaWN0YXRpb25EYXRhPihtYXJrZXItPmRhdGEoKSkuY29udGV4dDsKICAgICAgICAgfSk7
CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KaW5kZXggZDg3ZDFmOWMxZDUy
ZDBkNmY5ZDRmNGI1NTk2NzBkZDkzNjExNjA0OS4uMjNjN2QzMzk2NTljZTUzNjY5MGFiYzBmY2Nj
OWE1ZmRhYTQyZjFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQpAQCAtNDE0LDcgKzQxNCw3
IEBAIHN0YXRpYyBpbmxpbmUgU2VsZWN0aW9uRGlyZWN0aW9uIHRvU2VsZWN0aW9uRGlyZWN0aW9u
KFdlYlRleHRBZGp1c3RtZW50RGlyZWN0aW9uCiAgICAgYXV0byYgZG9jdW1lbnQgPSBub2RlLT5k
b2N1bWVudCgpOwogICAgIGZvciAoYXV0byBtYXJrZXIgOiBkb2N1bWVudC5tYXJrZXJzKCkubWFy
a2Vyc0Zvcigqbm9kZSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5h
dGl2ZXMpKSB7CiAgICAgICAgIGlmIChtYXJrZXItPnN0YXJ0T2Zmc2V0KCkgPD0gb2Zmc2V0ICYm
IG1hcmtlci0+ZW5kT2Zmc2V0KCkgPj0gb2Zmc2V0KSB7Ci0gICAgICAgICAgICAqYWx0ZXJuYXRp
dmVzID0gY3JlYXRlTlNBcnJheShXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4obWFya2VyLT5kYXRh
KCkpKS5hdXRvcmVsZWFzZSgpOworICAgICAgICAgICAgKmFsdGVybmF0aXZlcyA9IGNyZWF0ZU5T
QXJyYXkoc3RkOjpnZXQ8VmVjdG9yPFN0cmluZz4+KG1hcmtlci0+ZGF0YSgpKSkuYXV0b3JlbGVh
c2UoKTsKICAgICAgICAgICAgIHJldHVybiBraXQobWFrZVNpbXBsZVJhbmdlKCpub2RlLCAqbWFy
a2VyKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQppbmRleCA3YjFkN2FjNzdiOTE0ZTYwNTJlNzcwZjYxZjAzZjBkMzgyYzY5
ZWJhLi5lMTY2MTI4OTRmZTM1MTdmYWQ5Nzk2NWJhYzY3ZTI1ZGZlMjNmMmMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTE3MjQsNyArMTcyNCw3
IEBAIHN0YXRpYyBXZWJGcmFtZUxvYWRUeXBlIHRvV2ViRnJhbWVMb2FkVHlwZShXZWJDb3JlOjpG
cmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiAgICAgICAgICAgICBpZiAobWFya2VyLT50eXBl
KCkgIT0gV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblJlc3VsdCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWQgbWV0YWRhdGEgPSBXVEY6OmdldDxS
ZXRhaW5QdHI8aWQ+PihtYXJrZXItPmRhdGEoKSkuZ2V0KCk7CisgICAgICAgICAgICBpZCBtZXRh
ZGF0YSA9IHN0ZDo6Z2V0PFJldGFpblB0cjxpZD4+KG1hcmtlci0+ZGF0YSgpKS5nZXQoKTsKIAog
ICAgICAgICAgICAgLy8gQWxsIHJlc3VsdCBtYXJrZXJzIHNob3VsZCBoYXZlIG1ldGFkYXRhLgog
ICAgICAgICAgICAgQVNTRVJUKG1ldGFkYXRhKTsKQEAgLTE3NjksNyArMTc2OSw3IEBAIHN0YXRp
YyBXZWJGcmFtZUxvYWRUeXBlIHRvV2ViRnJhbWVMb2FkVHlwZShXZWJDb3JlOjpGcmFtZUxvYWRU
eXBlIGZyYW1lTG9hZFR5cGUpCiAgICAgaWYgKG1hcmtlcnMuc2l6ZSgpID09IDApCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gV1RGOjpnZXQ8UmV0YWluUHRyPGlkPj4obWFya2Vy
c1swXS0+ZGF0YSgpKS5nZXQoKTsKKyAgICByZXR1cm4gc3RkOjpnZXQ8UmV0YWluUHRyPGlkPj4o
bWFya2Vyc1swXS0+ZGF0YSgpKS5nZXQoKTsKIH0KIAogLSAodm9pZClyZWN1cnNpdmVTZXRVcGRh
dGVBcHBlYXJhbmNlRW5hYmxlZDooQk9PTCllbmFibGVkCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODdhYTNjNzg1MmFlMDAwZDA0MmI4MzcwMjJh
YTM0N2U4Zjc0YmVmZS4uYTQyZDYwZjFiOTBiYzY0NTJhMTQzMzdiYzE1NTVhMDU5ZGZhNGZkNiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDIxLTEwLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6VmFyaWFudCBhbmQgV1RGOjpnZXQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTY3NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9WYXJpYW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Lm1tOgorICAgICAgICAoYWRkVmFsdWVzVG9UYWJsZSk6CisKIDIw
MjEtMTAtMTIgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtBcHBsZVNpbGljb25dIFN1cHBvcnQgbmF0aXZlIHNpbXVsYXRvciB0ZXN0aW5nCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA0ZDMxNGRiOTJjZjQ0ZTI5NmJjNjFjNTlkZTgxZjUx
Y2M0ZTE0MmFlLi5lZWUzYWU3MjQxNTkyNmRlZjAyNzdhYTQzZTVkNTg0YmYzMjhmZjRhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTEwNiw3ICsxMDYsNiBAQCBzZXQoVGVzdFdU
Rl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKICAgICBUZXN0cy9XVEYvVW5p
cXVlQXJyYXkuY3BwCiAgICAgVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKLSAgICBUZXN0cy9XVEYv
VmFyaWFudC5jcHAKICAgICBUZXN0cy9XVEYvVmVjdG9yLmNwcAogICAgIFRlc3RzL1dURi9XVEZT
dHJpbmcuY3BwCiAgICAgVGVzdHMvV1RGL1dlYWtQdHIuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDgwMWU0NzQwNTg3MmU4MDkwNThkMDQzZDJhNmRmNzM1ZjBjZWI3ODYuLmM4OTE3MjU0
ZTE1MTUyZWZhMzVjNDJlNjg4ZDhjNTIwOWJjMzhmMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02ODYsNyArNjg2LDYgQEAKIAkJN0M4M0UwQzQxRDBBNjU0MjAwRkVCQ0YzIC8qIFJlcXVp
cmVzVXNlckFjdGlvbkZvclBsYXliYWNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q5RTI5MkIxQzkwQTcxRjAwMEJCODAwIC8qIFJlcXVpcmVzVXNl
ckFjdGlvbkZvclBsYXliYWNrLm1tICovOyB9OwogCQk3QzgzRTBDNTFEMEE2NTQ2MDBGRUJDRjMg
LyogU2hyaW5rVG9GaXQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDlBNTNBRTFCMzFGQThEMDA3NEQ1QUEgLyogU2hyaW5rVG9GaXQubW0gKi87IH07
CiAJCTdDODNFMEM2MUQwQTY1NEUwMEZFQkNGMyAvKiBWaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTk0M0YxMUNE
M0U4N0UwMEFDMDhDMiAvKiBWaWRlb0NvbnRyb2xzTWFuYWdlci5tbSAqLzsgfTsKLQkJN0M4M0ZD
NzExRDU1MzVBODAwMURGQkNEIC8qIFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NEMEQ1QUExRDU1MzRERTAwMENDOUUxIC8qIFZhcmlh
bnQuY3BwICovOyB9OwogCQk3Qzg4MkUwOTFDODBDNjMwMDA2QkY3MzEgLyogVXNlckNvbnRlbnRX
b3JsZFBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDODgyRTA0MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1t
ICovOyB9OwogCQk3Qzg4MkUwQTFDODBDNzY0MDA2QkY3MzEgLyogVXNlckNvbnRlbnRXb3JsZC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODgyRTAz
MUM4MEM2MjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkLm1tICovOyB9OwogCQk3Qzg5RDJB
QzFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzg5RDJBQTFBNjlCODBEMDAzQTVG
REUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAgKi87IH07CkBAIC0yNTQwLDcgKzI1MzksNiBA
QAogCQk3Q0NCOTkyMjFEM0I0NEU3MDAzOTIyRjYgLyogb3Blbi1tdWx0aXBsZS1leHRlcm5hbC11
cmwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuLW11bHRpcGxlLWV4dGVy
bmFsLXVybC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDRTdFOEMxQTQx
MTQ0RTAwNDQ3QzRDIC8qIGxpYlRlc3RXZWJLaXRBUEkuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gbGliVGVzdFdlYktpdEFQSS5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk3Q0NFN0VBMzFBNDExNUNCMDA0NDdDNEMgLyogVGVzdFdlYktpdEFQSUxpYnJh
cnkueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVGVzdFdlYktpdEFQSUxpYnJhcnkueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDRDBENUFBMUQ1NTM0REUwMDBDQzlFMSAv
KiBWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZhcmlh
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0Q0QzI2QzFFMkMwRTZFMDA5
Mjk0NzAgLyogU3RyaW5nQ29uY2F0ZW5hdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RyaW5nQ29uY2F0ZW5hdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3Q0Q3MEM0RTI0QTQzNkVFMDBFNjEwNDAgLyogU3RyaW5nUGFyc2luZ0J1ZmZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdQYXJzaW5nQnVmZmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NFQjYyQTkyMjM2MDg2QzAwNjlDQkIwIC8qIEl0ZXJhdG9y
UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSXRlcmF0b3JSYW5nZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjA2LDcgKzQ2MDQsNiBAQAogCQkJCUUzQTFFNzgwMjFC
MjVCNzkwMDhDNjAwNyAvKiBVUkwuY3BwICovLAogCQkJCUUzQTFFNzg0MjFCMjVCOTEwMDhDNjAw
NyAvKiBVUkxQYXJzZXIuY3BwICovLAogCQkJCTE0NEQ0MEVDMjIxQjQ2QTcwMDRCNDc0RiAvKiBV
VUlELmNwcCAqLywKLQkJCQk3Q0QwRDVBQTFENTUzNERFMDAwQ0M5RTEgLyogVmFyaWFudC5jcHAg
Ki8sCiAJCQkJQkM1NUY1RjgxNEFENzhFRTAwNDg0QkUxIC8qIFZlY3Rvci5jcHAgKi8sCiAJCQkJ
MUNCOUJDMzcxQTY3NDgyMzAwRkU1Njc4IC8qIFdlYWtQdHIuY3BwICovLAogCQkJCUUzODg4ODcw
MjBDOTA5ODEwMEU2MzJCQyAvKiBXb3JrZXJQb29sLmNwcCAqLywKQEAgLTUzODgsNyArNTM4NSw2
IEBACiAJCQkJRTNDMjFBN0MyMUIyNUNBMjAwM0IzMUEzIC8qIFVSTEV4dHJhcy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUUzQTFFNzg1MjFCMjVCOTEwMDhDNjAwNyAvKiBVUkxQYXJzZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwM0IxRDBBNjAyNzAwRkVCQ0YzIC8qIFV0aWxpdGllc0Nv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJN0M4M0ZDNzExRDU1MzVBODAwMURGQkNEIC8qIFZh
cmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNEMxRDBBNTkwQzAwRkVCQ0YzIC8q
IFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0M3Q0MyRDFFQTQxNDZCMDA3QkQ5NTYg
LyogV2Vha0xpbmtpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdDM0ZBNjYxRjdDMjQ4RjAw
OUQ0QjgwIC8qIFdlYWtQdHIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1ZhcmlhbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWRi
Yjk0YTk0MWVkMTllMGJjYWQ4MTFhZTYwODg2MjZmNmUwZjIzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1ZhcmlhbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjc1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJDb3VudGVycy5oIgotI2luY2x1ZGUg
IlJlZkxvZ2dlci5oIgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKLQotVEVTVChXVEZfVmFyaWFudCwgSW5pdGlhbCkKLXsKLSAgICBWYXJpYW50PGlu
dCwgZG91YmxlPiB2MTsKLSAgICBFWFBFQ1RfVFJVRSh2MS5pbmRleCgpID09IDApOwotICAgIEVY
UEVDVF9UUlVFKFdURjo6Z2V0PGludD4odjEpID09IDApOwotCi0gICAgc3RydWN0IFQgewotICAg
ICAgICBUKCkgOiB2YWx1ZSgxNSkgeyB9Ci0gICAgICAgIGludCB2YWx1ZTsKLSAgICB9OwotCi0g
ICAgVmFyaWFudDxULCBpbnQ+IHYyOwotICAgIEVYUEVDVF9UUlVFKHYyLmluZGV4KCkgPT0gMCk7
Ci0gICAgRVhQRUNUX1RSVUUoV1RGOjpnZXQ8VD4odjIpLnZhbHVlID09IDE1KTsKLX0KLQotVEVT
VChXVEZfVmFyaWFudCwgQmFzaWMpCi17Ci0gICAgVmFyaWFudDxpbnQsIGRvdWJsZT4gdmFyaWFu
dCA9IDE7Ci0gICAgRVhQRUNUX1RSVUUodmFyaWFudC5pbmRleCgpID09IDApOwotICAgIEVYUEVD
VF9UUlVFKFdURjo6Z2V0PGludD4odmFyaWFudCkgPT0gMSk7Ci0gICAgRVhQRUNUX0VRKCpzdGQ6
OmdldF9pZjxpbnQ+KCZ2YXJpYW50KSwgMSk7Ci0gICAgRVhQRUNUX0VRKHN0ZDo6Z2V0X2lmPGRv
dWJsZT4oJnZhcmlhbnQpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfVFJVRShzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPGludD4odmFyaWFudCkpOwotICAgIEVYUEVDVF9GQUxTRShzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPGRvdWJsZT4odmFyaWFudCkpOwotCi0gICAgdmFyaWFudCA9IDEuMDsKLSAgICBF
WFBFQ1RfVFJVRSh2YXJpYW50LmluZGV4KCkgPT0gMSk7Ci0gICAgRVhQRUNUX1RSVUUoV1RGOjpn
ZXQ8ZG91YmxlPih2YXJpYW50KSA9PSAxKTsKLSAgICBFWFBFQ1RfRVEoKnN0ZDo6Z2V0X2lmPGRv
dWJsZT4oJnZhcmlhbnQpLCAxLjApOwotICAgIEVYUEVDVF9FUShzdGQ6OmdldF9pZjxpbnQ+KCZ2
YXJpYW50KSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1RSVUUoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxkb3VibGU+KHZhcmlhbnQpKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxpbnQ+KHZhcmlhbnQpKTsKLX0KLQotVEVTVChXVEZfVmFyaWFudCwgQmFzaWNWaXNpdG9y
KQotewotICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIE5vbmUsCi0gICAgICAgIEludCwK
LSAgICAgICAgRmxvYXQsCi0gICAgICAgIFN0cmluZywKLSAgICB9OwotCi0gICAgc3RydWN0IFZp
c2l0b3IgewotICAgICAgICBWaXNpdG9yKFR5cGUmIHQpCi0gICAgICAgICAgICA6IHR5cGUodCkK
LSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBUeXBlJiB0eXBlOwotCi0g
ICAgICAgIHZvaWQgb3BlcmF0b3IoKShpbnQpIGNvbnN0IHsgdHlwZSA9IFR5cGU6OkludDsgfQot
ICAgICAgICB2b2lkIG9wZXJhdG9yKCkoZmxvYXQpIGNvbnN0IHsgdHlwZSA9IFR5cGU6OkZsb2F0
OyAgfQotICAgICAgICB2b2lkIG9wZXJhdG9yKCkoU3RyaW5nKSBjb25zdCB7IHR5cGUgPSBUeXBl
OjpTdHJpbmc7ICB9Ci0gICAgfTsKLQotICAgIFR5cGUgdHlwZSA9IFR5cGU6Ok5vbmU7Ci0KLSAg
ICBWYXJpYW50PGludCwgZmxvYXQsIFN0cmluZz4gdmFyaWFudCA9IDg7Ci0gICAgc3RkOjp2aXNp
dChWaXNpdG9yKHR5cGUpLCB2YXJpYW50KTsKLSAgICBFWFBFQ1RfVFJVRShUeXBlOjpJbnQgPT0g
dHlwZSk7Ci0KLQotICAgIHZhcmlhbnQgPSAxLjBmOwotICAgIHN0ZDo6dmlzaXQoVmlzaXRvcih0
eXBlKSwgdmFyaWFudCk7Ci0gICAgRVhQRUNUX1RSVUUoVHlwZTo6RmxvYXQgPT0gdHlwZSk7Ci0K
LQotICAgIHZhcmlhbnQgPSAiaGVsbG8iOwotICAgIHN0ZDo6dmlzaXQoVmlzaXRvcih0eXBlKSwg
dmFyaWFudCk7Ci0gICAgRVhQRUNUX1RSVUUoVHlwZTo6U3RyaW5nID09IHR5cGUpOwotfQotCi0j
aWYgVVNFKENGKQotVEVTVChXVEZfVmFyaWFudCwgUmV0YWluUHRyKQotewotICAgIGVudW0gY2xh
c3MgVHlwZSB7Ci0gICAgICAgIE5vbmUsCi0gICAgICAgIFJlZlB0ciwKLSAgICAgICAgUmV0YWlu
UHRyLAotICAgIH07Ci0gICAgCi0gICAgVHlwZSB0eXBlID0gVHlwZTo6Tm9uZTsKLSAgICAKLSAg
ICBhdXRvIHZpc2l0b3IgPSBXVEY6Om1ha2VWaXNpdG9yKAotICAgICAgICBbJl0oY29uc3QgUmVm
UHRyPFJlZkxvZ2dlcj4mKSB7IHR5cGUgPSBUeXBlOjpSZWZQdHI7IH0sCi0gICAgICAgIFsmXShj
b25zdCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYpIHsgdHlwZSA9IFR5cGU6OlJldGFpblB0cjsgfQot
ICAgICk7Ci0gICAgCi0gICAgUmVmUHRyPFJlZkxvZ2dlcj4gcmVmUHRyOwotICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IHJldGFpblB0cjsKLSAgICBWYXJpYW50PFJlZlB0cjxSZWZMb2dnZXI+LCBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gdmFyaWFudChXVEZNb3ZlKHJlZlB0cikpOwotICAgIHN0ZDo6
dmlzaXQodmlzaXRvciwgdmFyaWFudCk7Ci0gICAgRVhQRUNUX1RSVUUoVHlwZTo6UmVmUHRyID09
IHR5cGUpOwotICAgIAotICAgIHZhcmlhbnQgPSBXVEZNb3ZlKHJldGFpblB0cik7Ci0gICAgc3Rk
Ojp2aXNpdCh2aXNpdG9yLCB2YXJpYW50KTsKLSAgICBFWFBFQ1RfVFJVRShUeXBlOjpSZXRhaW5Q
dHIgPT0gdHlwZSk7Ci19Ci0jZW5kaWYKLQotVEVTVChXVEZfVmFyaWFudCwgVmlzaXRvclVzaW5n
TWFrZVZpc2l0b3IpCi17Ci0gICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgTm9uZSwKLSAg
ICAgICAgSW50LAotICAgICAgICBGbG9hdCwKLSAgICAgICAgU3RyaW5nLAotICAgIH07Ci0KLSAg
ICBUeXBlIHR5cGUgPSBUeXBlOjpOb25lOwotCi0gICAgYXV0byB2aXNpdG9yID0gV1RGOjptYWtl
VmlzaXRvcigKLSAgICAgICAgWyZdKGludCkgeyB0eXBlID0gVHlwZTo6SW50OyB9LAotICAgICAg
ICBbJl0oZmxvYXQpIHsgdHlwZSA9IFR5cGU6OkZsb2F0OyB9LAotICAgICAgICBbJl0oU3RyaW5n
KSB7IHR5cGUgPSBUeXBlOjpTdHJpbmc7IH0KLSAgICApOwotCi0gICAgVmFyaWFudDxpbnQsIGZs
b2F0LCBTdHJpbmc+IHZhcmlhbnQgPSA4OwotICAgIHN0ZDo6dmlzaXQodmlzaXRvciwgdmFyaWFu
dCk7Ci0gICAgRVhQRUNUX1RSVUUoVHlwZTo6SW50ID09IHR5cGUpOwotCi0KLSAgICB2YXJpYW50
ID0gMS4wZjsKLSAgICBzdGQ6OnZpc2l0KHZpc2l0b3IsIHZhcmlhbnQpOwotICAgIEVYUEVDVF9U
UlVFKFR5cGU6OkZsb2F0ID09IHR5cGUpOwotCi0KLSAgICB2YXJpYW50ID0gImhlbGxvIjsKLSAg
ICBzdGQ6OnZpc2l0KHZpc2l0b3IsIHZhcmlhbnQpOwotICAgIEVYUEVDVF9UUlVFKFR5cGU6OlN0
cmluZyA9PSB0eXBlKTsKLX0KLQotVEVTVChXVEZfVmFyaWFudCwgVmlzaXRvclVzaW5nU3dpdGNo
T24pCi17Ci0gICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgTm9uZSwKLSAgICAgICAgSW50
LAotICAgICAgICBGbG9hdCwKLSAgICAgICAgU3RyaW5nLAotICAgIH07Ci0KLSAgICBUeXBlIHR5
cGUgPSBUeXBlOjpOb25lOwotCi0gICAgVmFyaWFudDxpbnQsIGZsb2F0LCBTdHJpbmc+IHZhcmlh
bnQgPSA4OwotICAgIHR5cGUgPSBXVEY6OnN3aXRjaE9uKHZhcmlhbnQsCi0gICAgICAgIFtdKGlu
dCkgeyByZXR1cm4gVHlwZTo6SW50OyB9LAotICAgICAgICBbXShmbG9hdCkgeyByZXR1cm4gVHlw
ZTo6RmxvYXQ7IH0sCi0gICAgICAgIFtdKFN0cmluZykgeyByZXR1cm4gVHlwZTo6U3RyaW5nOyB9
Ci0gICAgKTsKLSAgICBFWFBFQ1RfVFJVRShUeXBlOjpJbnQgPT0gdHlwZSk7Ci0KLQotICAgIHZh
cmlhbnQgPSAxLjBmOwotICAgIHR5cGUgPSBXVEY6OnN3aXRjaE9uKHZhcmlhbnQsCi0gICAgICAg
IFtdKGludCkgeyByZXR1cm4gVHlwZTo6SW50OyB9LAotICAgICAgICBbXShmbG9hdCkgeyByZXR1
cm4gVHlwZTo6RmxvYXQ7IH0sCi0gICAgICAgIFtdKFN0cmluZykgeyByZXR1cm4gVHlwZTo6U3Ry
aW5nOyB9Ci0gICAgKTsKLSAgICBFWFBFQ1RfVFJVRShUeXBlOjpGbG9hdCA9PSB0eXBlKTsKLQot
Ci0gICAgdmFyaWFudCA9ICJoZWxsbyI7Ci0gICAgdHlwZSA9IFdURjo6c3dpdGNoT24odmFyaWFu
dCwKLSAgICAgICAgW10oaW50KSB7IHJldHVybiBUeXBlOjpJbnQ7IH0sCi0gICAgICAgIFtdKGZs
b2F0KSB7IHJldHVybiBUeXBlOjpGbG9hdDsgfSwKLSAgICAgICAgW10oU3RyaW5nKSB7IHJldHVy
biBUeXBlOjpTdHJpbmc7IH0KLSAgICApOwotICAgIEVYUEVDVF9UUlVFKFR5cGU6OlN0cmluZyA9
PSB0eXBlKTsKLX0KLQotVEVTVChXVEZfVmFyaWFudCwgQ29uc3RydWN0b3JEZXN0cnVjdG9yKQot
ewotICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OlRlc3RpbmdTY29wZSBzY29wZTsK
LQotICAgIHsKLSAgICAgICAgYXV0byB1bmlxdWVQdHIgPSBtYWtlVW5pcXVlPENvbnN0cnVjdG9y
RGVzdHJ1Y3RvckNvdW50ZXI+KCk7Ci0gICAgICAgIFZhcmlhbnQ8c3RkOjp1bmlxdWVfcHRyPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+LCBpbnQ+IHYgPSBXVEZNb3ZlKHVuaXF1ZVB0cik7
Ci0KLSAgICAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpj
b25zdHJ1Y3Rpb25Db3VudCk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgQ29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcjo6ZGVzdHJ1Y3Rpb25Db3VudCk7Ci0gICAgfQotICAgIAotICAgIEVYUEVD
VF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9uQ291bnQp
OwotICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6ZGVzdHJ1
Y3Rpb25Db3VudCk7Ci19Ci0KLVRFU1QoV1RGX1ZhcmlhbnQsIFJlZlB0cikKLXsKLSAgICB7Ci0g
ICAgICAgIFJlZkxvZ2dlciBhKCJhIik7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHJlZigm
YSk7Ci0gICAgICAgIFZhcmlhbnQ8UmVmUHRyPFJlZkxvZ2dlcj4sIGludD4gdiA9IHJlZjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotCi0gICAgewotICAgICAgICBSZWZMb2dnZXIgYSgi
YSIpOwotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiByZWYoJmEpOwotICAgICAgICBWYXJpYW50
PFJlZlB0cjxSZWZMb2dnZXI+LCBpbnQ+IHYgPSBXVEZNb3ZlKHJlZik7Ci0gICAgfQotCi0gICAg
QVNTRVJUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwot
fQotCi1URVNUKFdURl9WYXJpYW50LCBSZWYpCi17Ci0gICAgewotICAgICAgICBSZWZMb2dnZXIg
YSgiYSIpOwotICAgICAgICBSZWY8UmVmTG9nZ2VyPiByZWYoYSk7Ci0gICAgICAgIFZhcmlhbnQ8
UmVmPFJlZkxvZ2dlcj4sIGludD4gdiA9IFdURk1vdmUocmVmKTsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Ci19Ci0K
LXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyBIb2xkZXIgewotcHVibGljOgotICAgIFQgZGF0YTsK
LQotICAgIEhvbGRlcihUIGRhdGEpIDogZGF0YShkYXRhKSB7IH0KLQotICAgIFQqIG9wZXJhdG9y
JigpIHsgcmV0dXJuICZkYXRhOyB9Ci19OwotCi1URVNUKFdURl9WYXJpYW50LCBPcGVyYXRvckFt
cGVyc2FuZCkKLXsKLSAgICBWYXJpYW50PEhvbGRlcjxpbnQ+LCBpbnQ+IHYgPSBIb2xkZXI8aW50
PigxMCk7Ci0gICAgRVhQRUNUX1RSVUUoV1RGOjpnZXQ8SG9sZGVyPGludD4+KHYpLmRhdGEgPT0g
MTApOwotCi0gICAgdiA9IDIwOwotICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0PGludD4odikgPT0g
MjApOwotfQotCi19CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRGlzcGxheUxpc3RUZXN0cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRGlzcGxheUxpc3RUZXN0cy5jcHAKaW5kZXggNWExNjBhZTZmYmUxMGI2NWM5MmQxYmRhNmFm
ZDJiYmVkNjk5YmMwNi4uZjI1OWVmOWZjNmY0ZTAwODMwNmI1MGI0MmY2YTYxYjVmNGQ1MzJmYSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0
VGVzdHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5
TGlzdFRlc3RzLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywg
SXRlbUJ1ZmZlckNsaWVudCkKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZW5jb2RlSXRl
bU91dE9mTGluZShjb25zdCBEaXNwbGF5TGlzdEl0ZW0mIGRpc3BsYXlMaXN0SXRlbSkgY29uc3Qg
ZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgYXV0byBpbmRleCA9IG1faXRlbXMuc2l6ZSgp
OwotICAgICAgICAgICAgbV9pdGVtcy5hcHBlbmQoV1RGOjpnZXQ8U3Ryb2tlUGF0aD4oZGlzcGxh
eUxpc3RJdGVtKSk7CisgICAgICAgICAgICBtX2l0ZW1zLmFwcGVuZChzdGQ6OmdldDxTdHJva2VQ
YXRoPihkaXNwbGF5TGlzdEl0ZW0pKTsKICAgICAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmaW5kZXgpLCBzaXplb2Yoc2l6ZV90
KSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQubW0KaW5kZXggYjQ3
MGRmNzQ5MTA2Y2IwZWEyMDE2MDQ1MTg4ZTI4YjgyOWEzNjY4Ny4uNmE5OGNhMmM1MDFmMDA5ODlm
ODEzZmI0YWRhY2FlNDBiMzE5YTI5MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1t
CkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3V2l0
aFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkSW5OZXR3b3JrUHJvCiB9CiAKIHRlbXBsYXRl
PHNpemVfdCBzaXplPgotdm9pZCBhZGRWYWx1ZXNUb1RhYmxlKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlJiBkYXRhYmFzZSwgQVNDSUlMaXRlcmFsIHF1ZXJ5LCBzdGQ6OmFycmF5PFZhcmlhbnQ8U3Ry
aW5nVmlldywgaW50LCBkb3VibGU+LCBzaXplPiB2YWx1ZXMpCit2b2lkIGFkZFZhbHVlc1RvVGFi
bGUoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCBBU0NJSUxpdGVyYWwgcXVlcnks
IHN0ZDo6YXJyYXk8c3RkOjp2YXJpYW50PFN0cmluZ1ZpZXcsIGludCwgZG91YmxlPiwgc2l6ZT4g
dmFsdWVzKQogewogICAgIGF1dG8gc3RhdGVtZW50ID0gZGF0YWJhc2UucHJlcGFyZVN0YXRlbWVu
dChxdWVyeSk7CiAgICAgRVhQRUNUX1RSVUUoISFzdGF0ZW1lbnQpOwo=
</data>
<flag name="commit-queue"
          id="465206"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441076</attachid>
            <date>2021-10-13 07:34:22 -0700</date>
            <delta_ts>2021-10-13 09:18:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231675-20211013083421.patch</filename>
            <type>text/plain</type>
            <size>216294</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDIxLTEwLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmVtb3ZlIFdURjo6VmFyaWFudCBhbmQgV1RGOjpnZXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTY3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRzT25T
dHJ1Y3R1cmVTdHViSW5mbzo6ZW5zdXJlUmVmZXJlbmNlQW5kSW5zdGFsbFdhdGNocG9pbnQpOgor
ICAgICAgICAoSlNDOjpXYXRjaHBvaW50c09uU3RydWN0dXJlU3R1YkluZm86OmVuc3VyZVJlZmVy
ZW5jZUFuZEFkZFdhdGNocG9pbnQpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVmFsdWUpOgorICAgICAg
ICAqIGppdC9TbmlwcGV0UmVnLmg6CisgICAgICAgIChKU0M6OlNuaXBwZXRSZWc6OmdwciBjb25z
dCk6CisgICAgICAgIChKU0M6OlNuaXBwZXRSZWc6OmZwciBjb25zdCk6CisgICAgICAgIChKU0M6
OlNuaXBwZXRSZWc6OmpzVmFsdWVSZWdzIGNvbnN0KToKKyAgICAgICAgKiBqc2MuY3BwOgorICAg
ICAgICAoSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4V2l0aG91dENsZWFyaW5nTGluZVRlcm1p
bmF0b3IpOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29tcGFjdFREWkVudmlyb25tZW50Ojp0b1REWkVudmlyb25tZW50U2xvdyBjb25z
dCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpT
Qzo6Q29tcGFjdFREWkVudmlyb25tZW50Ojp0b1REWkVudmlyb25tZW50IGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0NhY2hlVXBkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVVcGRhdGU6
OmFzR2xvYmFsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVVcGRhdGU6OmFzRnVuY3Rpb24g
Y29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlND
OjpDYWNoZWRDb21wYWN0VERaRW52aXJvbm1lbnQ6OmVuY29kZSk6CisgICAgICAgICogd2FzbS9X
YXNtTExJbnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRv
cjo6Q29udHJvbFR5cGU6OmlzQ2F0Y2gpOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVy
YXRvcjo6Q29udHJvbFR5cGU6OnRhcmdldExhYmVsRm9yQnJhbmNoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZExvb3ApOgorICAgICAgICAoSlNDOjpXYXNt
OjpMTEludEdlbmVyYXRvcjo6YWRkRWxzZVRvVW5yZWFjaGFibGUpOgorICAgICAgICAoSlNDOjpX
YXNtOjpMTEludEdlbmVyYXRvcjo6YWRkQ2F0Y2hUb1VucmVhY2hhYmxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZENhdGNoQWxsVG9VbnJlYWNoYWJsZSk6CisgICAg
ICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGREZWxlZ2F0ZVRvVW5yZWFjaGFibGUp
OgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkUmV0aHJvdyk6CisKIDIw
MjEtMTAtMTMgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBVbnJldmlld2VkLCBidWlsZCBmaXggZm9yIFVidW50dSAxOC4wNCBhZnRlciByMjgz
ODUyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNDksNyArMjE0OSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckEKICAgICBhdXRvIGNv
bnRlbnQgPSBtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IChbJl0oKSAtPiBKU1ZhbHVlIHsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
QXJyYXlCdWZmZXJDb250ZW50cz4oY29udGVudCkpIHsKLSAgICAgICAgICAgIGF1dG8gbmF0aXZl
QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShXVEY6OmdldDxBcnJheUJ1ZmZlckNvbnRlbnRz
PihXVEZNb3ZlKGNvbnRlbnQpKSk7CisgICAgICAgICAgICBhdXRvIG5hdGl2ZUJ1ZmZlciA9IEFy
cmF5QnVmZmVyOjpjcmVhdGUoc3RkOjpnZXQ8QXJyYXlCdWZmZXJDb250ZW50cz4oV1RGTW92ZShj
b250ZW50KSkpOwogICAgICAgICAgICAgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9k
ZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01vZGUoKTsKICAgICAgICAgICAgIHJldHVybiBKU0Fy
cmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUo
c2hhcmluZ01vZGUpLCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikpOwogICAgICAgICB9CkBAIC0yMTU3
LDcgKzIxNTcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJBCiAg
ICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxXYXNtOjpNZW1vcnlIYW5kbGU+
Pihjb250ZW50KSkgewogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1lbW9yeSoganNNZW1vcnkg
PSBKU0M6OkpTV2ViQXNzZW1ibHlNZW1vcnk6OnRyeUNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBn
bG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TWVtb3J5U3RydWN0dXJlKCkpOwogICAgICAgICAgICAg
c2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBSZWY8V2FzbTo6
TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmNyZWF0ZShXVEY6OmdldDxSZWY8V2FzbTo6
TWVtb3J5SGFuZGxlPj4oV1RGTW92ZShjb250ZW50KSksCisgICAgICAgICAgICBSZWY8V2FzbTo6
TWVtb3J5PiBtZW1vcnkgPSBXYXNtOjpNZW1vcnk6OmNyZWF0ZShzdGQ6OmdldDxSZWY8V2FzbTo6
TWVtb3J5SGFuZGxlPj4oV1RGTW92ZShjb250ZW50KSksCiAgICAgICAgICAgICAgICAgWyZ2bV0g
KFdhc206Ok1lbW9yeTo6Tm90aWZ5UHJlc3N1cmUpIHsgdm0uaGVhcC5jb2xsZWN0QXN5bmMoQ29s
bGVjdGlvblNjb3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtXSAoV2FzbTo6TWVt
b3J5OjpTeW5jVHJ5VG9SZWNsYWltKSB7IHZtLmhlYXAuY29sbGVjdFN5bmMoQ29sbGVjdGlvblNj
b3BlOjpGdWxsKTsgfSwKICAgICAgICAgICAgICAgICBbJnZtLCBqc01lbW9yeV0gKFdhc206Ok1l
bW9yeTo6R3Jvd1N1Y2Nlc3MsIFdhc206OlBhZ2VDb3VudCBvbGRQYWdlQ291bnQsIFdhc206OlBh
Z2VDb3VudCBuZXdQYWdlQ291bnQpIHsganNNZW1vcnktPmdyb3dTdWNjZXNzQ2FsbGJhY2sodm0s
IG9sZFBhZ2VDb3VudCwgbmV3UGFnZUNvdW50KTsgfSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDEwICs4NCwxMCBAQCB2b2lkIFdhdGNocG9pbnRzT25TdHJ1Y3R1cmVT
dHViSW5mbzo6ZW5zCiAgICAgQVNTRVJUKCEha2V5KTsKICAgICBhdXRvJiB3YXRjaHBvaW50VmFy
aWFudCA9IGhvbGRlclJlZi0+YWRkV2F0Y2hwb2ludChrZXkpOwogICAgIGlmIChrZXkua2luZCgp
ID09IFByb3BlcnR5Q29uZGl0aW9uOjpFcXVpdmFsZW5jZSkgewotICAgICAgICBhdXRvJiBhZGFw
dGl2ZVdhdGNocG9pbnQgPSBXVEY6OmdldDxBZGFwdGl2ZVZhbHVlU3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludD4od2F0Y2hwb2ludFZhcmlhbnQpOworICAgICAgICBhdXRvJiBhZGFwdGl2
ZVdhdGNocG9pbnQgPSBzdGQ6OmdldDxBZGFwdGl2ZVZhbHVlU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludD4od2F0Y2hwb2ludFZhcmlhbnQpOwogICAgICAgICBhZGFwdGl2ZVdhdGNocG9p
bnQuaW5zdGFsbChjb2RlQmxvY2stPnZtKCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8q
IHN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50ID0gJldURjo6Z2V0PFN0cnVjdHVyZVRyYW5z
aXRpb25TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Pih3YXRjaHBvaW50VmFyaWFudCk7
CisgICAgICAgIGF1dG8qIHN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50ID0gJnN0ZDo6Z2V0
PFN0cnVjdHVyZVRyYW5zaXRpb25TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Pih3YXRj
aHBvaW50VmFyaWFudCk7CiAgICAgICAgIGtleS5vYmplY3QoKS0+c3RydWN0dXJlKCktPmFkZFRy
YW5zaXRpb25XYXRjaHBvaW50KHN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50KTsKICAgICB9
CiB9CkBAIC0xMDMsNyArMTAzLDcgQEAgV2F0Y2hwb2ludCogV2F0Y2hwb2ludHNPblN0cnVjdHVy
ZVN0dWJJbgogICAgICAgICBBU1NFUlQoaG9sZGVyUmVmLT5tX3N0dWJJbmZvID09IHN0dWJJbmZv
KTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuICZXVEY6OmdldDxTdHJ1Y3R1cmVUcmFuc2l0aW9u
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludD4oaG9sZGVyUmVmLT5hZGRXYXRjaHBvaW50
KE9iamVjdFByb3BlcnR5Q29uZGl0aW9uKCkpKTsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PFN0cnVj
dHVyZVRyYW5zaXRpb25TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Pihob2xkZXJSZWYt
PmFkZFdhdGNocG9pbnQoT2JqZWN0UHJvcGVydHlDb25kaXRpb24oKSkpOwogfQogCiB2b2lkIEFk
YXB0aXZlVmFsdWVTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpoYW5kbGVGaXJlKFZN
JiwgY29uc3QgRmlyZURldGFpbCYpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzMSw5
ICs5MzEsOSBAQCBBc3NlbWJseUhlbHBlcnM6Okp1bXBMaXN0IEFzc2VtYmx5SGVscGVyCiAgICAg
ICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5hcHBlbmQoYnJhbmNoVGVzdDgoWmVybywg
QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgICAgIGVtaXRM
b2FkU3RydWN0dXJlKHZtLCB2YWx1ZS5wYXlsb2FkR1BSKCksIHNjcmF0Y2gsIHNjcmF0Y2hJZlNo
b3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPEpTR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSkKLSAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihXVEY6OmdldDxKU0dsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpLCBzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOworICAgICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHN0ZDo6Z2V0PEpTR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSksIHNjcmF0Y2hJZlNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1vdmUoV1RGOjpnZXQ8R1BSUmVnPihnbG9iYWxPYmpl
Y3QpLCBzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQpOworICAgICAg
ICAgICAgbW92ZShzdGQ6OmdldDxHUFJSZWc+KGdsb2JhbE9iamVjdCksIHNjcmF0Y2hJZlNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCk7CiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0
cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCBzY3JhdGNoSWZTaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAogICAgICAgICAvLyBXZSBhY3QgbGlrZSB3ZSBhcmUgInVu
ZGVmaW5lZCIgaGVyZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU25pcHBldFJl
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU25pcHBldFJlZy5o
CShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NuaXBwZXRS
ZWcuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTcgKzcyLDE3IEBAIHB1YmxpYzoKICAgICBHUFJS
ZWcgZ3ByKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0dQUigpKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6Z2V0PEdQUlJlZz4obV92YXJpYW50KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
Z2V0PEdQUlJlZz4obV92YXJpYW50KTsKICAgICB9CiAgICAgRlBSUmVnIGZwcigpIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlQoaXNGUFIoKSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxG
UFJSZWc+KG1fdmFyaWFudCk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxGUFJSZWc+KG1fdmFy
aWFudCk7CiAgICAgfQogICAgIEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzKCkgY29uc3QKICAgICB7
CiAgICAgICAgIEFTU0VSVChpc0pTVmFsdWVSZWdzKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpn
ZXQ8SlNWYWx1ZVJlZ3M+KG1fdmFyaWFudCk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxKU1Zh
bHVlUmVncz4obV92YXJpYW50KTsKICAgICB9CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOTgsMTEg
KzIyOTgsMTEgQEAgc3RhcnQ6CiAgICAgICAgICAgICBpZiAoIXBhcnNlTnVtYmVyUmVzdWx0KQog
ICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSAwOwogICAgICAgICAgICAg
ZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJlc3Vs
dCkpCi0gICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IFdURjo6Z2V0PGRv
dWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlID0gc3RkOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBCSUdJTlQ7CiAgICAgICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9
IFdURjo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOworICAgICAg
ICAgICAgICAgIHRva2VuRGF0YS0+YmlnSW50U3RyaW5nID0gc3RkOjpnZXQ8Y29uc3QgSWRlbnRp
Zmllcio+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5y
YWRpeCA9IDE2OwogICAgICAgICAgICAgfQogCkBAIC0yMzM3LDExICsyMzM3LDExIEBAIHN0YXJ0
OgogICAgICAgICAgICAgaWYgKCFwYXJzZU51bWJlclJlc3VsdCkKICAgICAgICAgICAgICAgICB0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gMDsKICAgICAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKQotICAgICAgICAgICAg
ICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJl
clJlc3VsdCk7CisgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHN0ZDo6
Z2V0PGRvdWJsZT4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgIHRva2VuID0gQklHSU5UOwogICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJ
ZGVudGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRh
dGEtPmJpZ0ludFN0cmluZyA9IHN0ZDo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1i
ZXJSZXN1bHQpOwogICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSAyOwogICAgICAg
ICAgICAgfQogCkBAIC0yMzc3LDExICsyMzc3LDExIEBAIHN0YXJ0OgogICAgICAgICAgICAgaWYg
KCFwYXJzZU51bWJlclJlc3VsdCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gMDsKICAgICAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91
YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKQotICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91
YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CisgICAgICAg
ICAgICAgICAgdG9rZW5EYXRhLT5kb3VibGVWYWx1ZSA9IHN0ZDo6Z2V0PGRvdWJsZT4oKnBhcnNl
TnVtYmVyUmVzdWx0KTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRva2Vu
ID0gQklHSU5UOwogICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9r
ZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJZGVudGlmaWVyKj4oKnBhcnNl
TnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmJpZ0ludFN0cmluZyA9
IHN0ZDo6Z2V0PGNvbnN0IElkZW50aWZpZXIqPigqcGFyc2VOdW1iZXJSZXN1bHQpOwogICAgICAg
ICAgICAgICAgIHRva2VuRGF0YS0+cmFkaXggPSA4OwogICAgICAgICAgICAgfQogCkBAIC0yNDE4
LDcgKzI0MTgsNyBAQCBzdGFydDoKICAgICAgICAgaWYgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3Vy
cmVudCkpIHsKICAgICAgICAgICAgIGF1dG8gcGFyc2VOdW1iZXJSZXN1bHQgPSBwYXJzZU9jdGFs
KCk7CiAgICAgICAgICAgICBpZiAocGFyc2VOdW1iZXJSZXN1bHQgJiYgc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCkpIHsKLSAgICAgICAgICAgICAgICB0
b2tlbkRhdGEtPmRvdWJsZVZhbHVlID0gV1RGOjpnZXQ8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1
bHQpOworICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBzdGQ6OmdldDxk
b3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tl
blR5cGVGb3JJbnRlZ2VyTGlrZVRva2VuKHRva2VuRGF0YS0+ZG91YmxlVmFsdWUpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0yNDI4LDEyICsyNDI4LDEyIEBAIHN0YXJ0OgogICAgICAg
ICAgICAgYXV0byBwYXJzZU51bWJlclJlc3VsdCA9IHBhcnNlRGVjaW1hbCgpOwogICAgICAgICAg
ICAgaWYgKHBhcnNlTnVtYmVyUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPigqcGFyc2VOdW1iZXJSZXN1bHQpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KCpwYXJz
ZU51bWJlclJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+ZG91YmxlVmFs
dWUgPSBzdGQ6OmdldDxkb3VibGU+KCpwYXJzZU51bWJlclJlc3VsdCk7CiAgICAgICAgICAgICAg
ICAgICAgIHRva2VuID0gdG9rZW5UeXBlRm9ySW50ZWdlckxpa2VUb2tlbih0b2tlbkRhdGEtPmRv
dWJsZVZhbHVlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICB0b2tlbiA9IEJJR0lOVDsKICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgdG9rZW5EYXRhLT5iaWdJbnRTdHJpbmcgPSBXVEY6OmdldDxjb25zdCBJZGVu
dGlmaWVyKj4oKnBhcnNlTnVtYmVyUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5E
YXRhLT5iaWdJbnRTdHJpbmcgPSBzdGQ6OmdldDxjb25zdCBJZGVudGlmaWVyKj4oKnBhcnNlTnVt
YmVyUmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5yYWRpeCA9IDEwOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAJKHJl
dmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NywxNCArMjc3LDE0IEBAIFREWkVu
dmlyb25tZW50JiBDb21wYWN0VERaRW52aXJvbm1lbnQ6OnQKIHsKICAgICBJbmZsYXRlZCBpbmZs
YXRlZDsKICAgICB7Ci0gICAgICAgIGF1dG8mIGNvbXBhY3QgPSBXVEY6OmdldDxDb21wYWN0Piht
X3ZhcmlhYmxlcyk7CisgICAgICAgIGF1dG8mIGNvbXBhY3QgPSBzdGQ6OmdldDxDb21wYWN0Piht
X3ZhcmlhYmxlcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tcGFjdC5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBpbmZsYXRlZC5hZGQoY29t
cGFjdFtpXSk7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0
LmlzTmV3RW50cnkpOwogICAgICAgICB9CiAgICAgfQogICAgIG1fdmFyaWFibGVzID0gVmFyaWFi
bGVzKFdURk1vdmUoaW5mbGF0ZWQpKTsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxJbmZsYXRlZCY+
KFdURjo6Z2V0PEluZmxhdGVkPihtX3ZhcmlhYmxlcykpOworICAgIHJldHVybiBjb25zdF9jYXN0
PEluZmxhdGVkJj4oc3RkOjpnZXQ8SW5mbGF0ZWQ+KG1fdmFyaWFibGVzKSk7CiB9CiAKIENvbXBh
Y3RURFpFbnZpcm9ubWVudE1hcDo6SGFuZGxlIENvbXBhY3RURFpFbnZpcm9ubWVudE1hcDo6Z2V0
KGNvbnN0IFREWkVudmlyb25tZW50JiBlbnYpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAkocmV2aXNpb24gMjg0MDkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1Niw3ICszNTYsNyBAQCBwdWJsaWM6CiAgICAgVERaRW52aXJvbm1l
bnQmIHRvVERaRW52aXJvbm1lbnQoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHN0ZDo6aG9s
ZHNfYWx0ZXJuYXRpdmU8SW5mbGF0ZWQ+KG1fdmFyaWFibGVzKSkKLSAgICAgICAgICAgIHJldHVy
biBjb25zdF9jYXN0PFREWkVudmlyb25tZW50Jj4oV1RGOjpnZXQ8SW5mbGF0ZWQ+KG1fdmFyaWFi
bGVzKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxURFpFbnZpcm9ubWVudCY+KHN0
ZDo6Z2V0PEluZmxhdGVkPihtX3ZhcmlhYmxlcykpOwogICAgICAgICByZXR1cm4gdG9URFpFbnZp
cm9ubWVudFNsb3coKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlVXBkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZVVwZGF0ZS5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlVXBkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQs
MTMgKzU0LDEzIEBAIGJvb2wgQ2FjaGVVcGRhdGU6OmlzR2xvYmFsKCkgY29uc3QKIGNvbnN0IENh
Y2hlVXBkYXRlOjpHbG9iYWxVcGRhdGUmIENhY2hlVXBkYXRlOjphc0dsb2JhbCgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzR2xvYmFsKCkpOwotICAgIHJldHVybiBXVEY6OmdldDxHbG9iYWxVcGRh
dGU+KG1fdXBkYXRlKTsKKyAgICByZXR1cm4gc3RkOjpnZXQ8R2xvYmFsVXBkYXRlPihtX3VwZGF0
ZSk7CiB9CiAKIGNvbnN0IENhY2hlVXBkYXRlOjpGdW5jdGlvblVwZGF0ZSYgQ2FjaGVVcGRhdGU6
OmFzRnVuY3Rpb24oKSBjb25zdAogewogICAgIEFTU0VSVCghaXNHbG9iYWwoKSk7Ci0gICAgcmV0
dXJuIFdURjo6Z2V0PEZ1bmN0aW9uVXBkYXRlPihtX3VwZGF0ZSk7CisgICAgcmV0dXJuIHN0ZDo6
Z2V0PEZ1bmN0aW9uVXBkYXRlPihtX3VwZGF0ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAko
cmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM4LDEwICsxMDM4LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDb21wYWN0VERaRW52aXJv
bm1lbnQmIGVudikKICAgICB7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENv
bXBhY3RURFpFbnZpcm9ubWVudDo6Q29tcGFjdD4oZW52Lm1fdmFyaWFibGVzKSkKLSAgICAgICAg
ICAgIG1fdmFyaWFibGVzLmVuY29kZShlbmNvZGVyLCBXVEY6OmdldDxDb21wYWN0VERaRW52aXJv
bm1lbnQ6OkNvbXBhY3Q+KGVudi5tX3ZhcmlhYmxlcykpOworICAgICAgICAgICAgbV92YXJpYWJs
ZXMuZW5jb2RlKGVuY29kZXIsIHN0ZDo6Z2V0PENvbXBhY3RURFpFbnZpcm9ubWVudDo6Q29tcGFj
dD4oZW52Lm1fdmFyaWFibGVzKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQ29tcGFj
dFREWkVudmlyb25tZW50OjpDb21wYWN0IGNvbXBhY3Q7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IGtleSA6IFdURjo6Z2V0PENvbXBhY3RURFpFbnZpcm9ubWVudDo6SW5mbGF0ZWQ+KGVudi5tX3Zh
cmlhYmxlcykpCisgICAgICAgICAgICBmb3IgKGF1dG8mIGtleSA6IHN0ZDo6Z2V0PENvbXBhY3RU
RFpFbnZpcm9ubWVudDo6SW5mbGF0ZWQ+KGVudi5tX3ZhcmlhYmxlcykpCiAgICAgICAgICAgICAg
ICAgY29tcGFjdC5hcHBlbmQoa2V5KTsKICAgICAgICAgICAgIG1fdmFyaWFibGVzLmVuY29kZShl
bmNvZGVyLCBjb21wYWN0KTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyODQwOTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbENhdGNoPihjb250cm9sKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDb250cm9sQ2F0Y2gg
Y2F0Y2hEYXRhID0gV1RGOjpnZXQ8Q29udHJvbENhdGNoPihjb250cm9sKTsKKyAgICAgICAgICAg
IENvbnRyb2xDYXRjaCBjYXRjaERhdGEgPSBzdGQ6OmdldDxDb250cm9sQ2F0Y2g+KGNvbnRyb2wp
OwogICAgICAgICAgICAgcmV0dXJuIGNhdGNoRGF0YS5tX2tpbmQgPT0gQ2F0Y2hLaW5kOjpDYXRj
aDsKICAgICAgICAgfQogCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogICAgICAgICBSZWZQ
dHI8TGFiZWw+IHRhcmdldExhYmVsRm9yQnJhbmNoKCkgY29uc3QKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbExvb3A+KCp0aGlzKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8Q29udHJvbExvb3A+KCp0aGlzKS5tX2JvZHku
cHRyKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PENvbnRyb2xMb29wPigqdGhp
cykubV9ib2R5LnB0cigpOwogICAgICAgICAgICAgcmV0dXJuIG1fY29udGludWF0aW9uOwogICAg
ICAgICB9CiAKQEAgLTEwMDAsNyArMTAwMCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZExv
b3AoQmxvY2tTaWduYXQKICAgICAgICAgZm9yIChUeXBlZEV4cHJlc3Npb24gZXhwcmVzc2lvbiA6
IGV4cHJlc3Npb25TdGFjaykKICAgICAgICAgICAgIG9zckVudHJ5RGF0YS5hcHBlbmQoZXhwcmVz
c2lvbik7CiAgICAgICAgIGlmIChDb250cm9sVHlwZTo6aXNBbnlDYXRjaChkYXRhKSkKLSAgICAg
ICAgICAgIG9zckVudHJ5RGF0YS5hcHBlbmQoV1RGOjpnZXQ8Q29udHJvbENhdGNoPihkYXRhKS5t
X2V4Y2VwdGlvbik7CisgICAgICAgICAgICBvc3JFbnRyeURhdGEuYXBwZW5kKHN0ZDo6Z2V0PENv
bnRyb2xDYXRjaD4oZGF0YSkubV9leGNlcHRpb24pOwogICAgIH0KICAgICBmb3IgKFR5cGVkRXhw
cmVzc2lvbiBleHByZXNzaW9uIDogZW5jbG9zaW5nU3RhY2spCiAgICAgICAgIG9zckVudHJ5RGF0
YS5hcHBlbmQoZXhwcmVzc2lvbik7CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBhdXRvIExMSW50R2Vu
ZXJhdG9yOjphZGRFbHNlVG9VbnJlYWNoYWJsCiB7CiAgICAgbV9zdGFja1NpemUgPSBkYXRhLnN0
YWNrU2l6ZSgpICsgZGF0YS5tX3NpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpOwogCi0gICAgQ29u
dHJvbElmJiBjb250cm9sID0gV1RGOjpnZXQ8Q29udHJvbElmPihkYXRhKTsKKyAgICBDb250cm9s
SWYmIGNvbnRyb2wgPSBzdGQ6OmdldDxDb250cm9sSWY+KGRhdGEpOwogICAgIGVtaXRMYWJlbChj
b250cm9sLm1fYWx0ZXJuYXRlLmdldCgpKTsKICAgICBkYXRhID0gQ29udHJvbFR5cGU6OmJsb2Nr
KGRhdGEubV9zaWduYXR1cmUsIG1fc3RhY2tTaXplLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRp
b24pKTsKICAgICByZXR1cm4geyB9OwpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgYXV0byBMTEludEdl
bmVyYXRvcjo6YWRkQ2F0Y2hUb1VucmVhY2hhYgogICAgIG1fc3RhY2tTaXplID0gZGF0YS5zdGFj
a1NpemUoKTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgZXhjZXB0aW9uID0gcHVzaCgpOwogICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbnRyb2xUcnk+KGRhdGEpKSB7Ci0gICAgICAgIENv
bnRyb2xUcnkmIHRyeURhdGEgPSBXVEY6OmdldDxDb250cm9sVHJ5PihkYXRhKTsKKyAgICAgICAg
Q29udHJvbFRyeSYgdHJ5RGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xUcnk+KGRhdGEpOwogICAgICAg
ICBkYXRhID0gQ29udHJvbFR5cGU6OmNyZWF0ZUNhdGNoKGRhdGEubV9zaWduYXR1cmUsIGRhdGEu
c3RhY2tTaXplKCksIFdURk1vdmUodHJ5RGF0YS5tX3RyeSksIFdURk1vdmUoZGF0YS5tX2NvbnRp
bnVhdGlvbiksIGNhdGNoTGFiZWwsIHRyeURhdGEubV90cnlEZXB0aCwgZXhjZXB0aW9uKTsKICAg
ICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4Y2VwdGlvblNpZ25hdHVyZS5hcmd1
bWVudENvdW50KCk7ICsraSkKQEAgLTExMzMsNyArMTEzMyw3IEBAIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmFkZENhdGNoVG9VbnJlYWNoYWIKICAgICAgICAgfQogICAgIH0KIAotICAgIENvbnRyb2xD
YXRjaCYgY2F0Y2hEYXRhID0gV1RGOjpnZXQ8Q29udHJvbENhdGNoPihkYXRhKTsKKyAgICBDb250
cm9sQ2F0Y2gmIGNhdGNoRGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xDYXRjaD4oZGF0YSk7CiAgICAg
Y2F0Y2hEYXRhLm1fa2luZCA9IENhdGNoS2luZDo6Q2F0Y2g7CiAgICAgbV9jb2RlQmxvY2stPmFk
ZEV4Y2VwdGlvbkhhbmRsZXIoeyBIYW5kbGVyVHlwZTo6Q2F0Y2gsIGNhdGNoRGF0YS5tX3RyeVN0
YXJ0LT5sb2NhdGlvbigpLCBjYXRjaERhdGEubV90cnlFbmQtPmxvY2F0aW9uKCksIGNhdGNoTGFi
ZWwtPmxvY2F0aW9uKCksIG1fdHJ5RGVwdGgsIGV4Y2VwdGlvbkluZGV4IH0pOwogCkBAIC0xMTU0
LDEwICsxMTU0LDEwIEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhdGNoQWxsVG9VbnJlYWMK
ICAgICBtX3N0YWNrU2l6ZSA9IGRhdGEuc3RhY2tTaXplKCk7CiAgICAgVmlydHVhbFJlZ2lzdGVy
IGV4Y2VwdGlvbiA9IHB1c2goKTsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDb250
cm9sVHJ5PihkYXRhKSkgewotICAgICAgICBDb250cm9sVHJ5JiB0cnlEYXRhID0gV1RGOjpnZXQ8
Q29udHJvbFRyeT4oZGF0YSk7CisgICAgICAgIENvbnRyb2xUcnkmIHRyeURhdGEgPSBzdGQ6Omdl
dDxDb250cm9sVHJ5PihkYXRhKTsKICAgICAgICAgZGF0YSA9IENvbnRyb2xUeXBlOjpjcmVhdGVD
YXRjaChkYXRhLm1fc2lnbmF0dXJlLCBkYXRhLnN0YWNrU2l6ZSgpLCBXVEZNb3ZlKHRyeURhdGEu
bV90cnkpLCBXVEZNb3ZlKGRhdGEubV9jb250aW51YXRpb24pLCBjYXRjaExhYmVsLCB0cnlEYXRh
Lm1fdHJ5RGVwdGgsIGV4Y2VwdGlvbik7CiAgICAgfQotICAgIENvbnRyb2xDYXRjaCYgY2F0Y2hE
YXRhID0gV1RGOjpnZXQ8Q29udHJvbENhdGNoPihkYXRhKTsKKyAgICBDb250cm9sQ2F0Y2gmIGNh
dGNoRGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xDYXRjaD4oZGF0YSk7CiAgICAgY2F0Y2hEYXRhLm1f
a2luZCA9IENhdGNoS2luZDo6Q2F0Y2hBbGw7CiAKICAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRM
UygpKQpAQCAtMTE4MCw5ICsxMTgwLDkgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkRGVsZWdh
dGVUb1VucmVhYwogICAgIFJlZjxMYWJlbD4gZGVsZWdhdGVMYWJlbCA9IG5ld0VtaXR0ZWRMYWJl
bCgpOwogCiAgICAgQVNTRVJUKENvbnRyb2xUeXBlOjppc1RyeSh0YXJnZXQpIHx8IENvbnRyb2xU
eXBlOjppc1RvcExldmVsKHRhcmdldCkpOwotICAgIHVuc2lnbmVkIHRhcmdldERlcHRoID0gQ29u
dHJvbFR5cGU6OmlzVHJ5KHRhcmdldCkgPyBXVEY6OmdldDxDb250cm9sVHJ5Pih0YXJnZXQpLm1f
dHJ5RGVwdGggOiAwOworICAgIHVuc2lnbmVkIHRhcmdldERlcHRoID0gQ29udHJvbFR5cGU6Omlz
VHJ5KHRhcmdldCkgPyBzdGQ6OmdldDxDb250cm9sVHJ5Pih0YXJnZXQpLm1fdHJ5RGVwdGggOiAw
OwogCi0gICAgQ29udHJvbFRyeSYgdHJ5RGF0YSA9IFdURjo6Z2V0PENvbnRyb2xUcnk+KGRhdGEp
OworICAgIENvbnRyb2xUcnkmIHRyeURhdGEgPSBzdGQ6OmdldDxDb250cm9sVHJ5PihkYXRhKTsK
ICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcih7IEhhbmRsZXJUeXBlOjpEZWxl
Z2F0ZSwgdHJ5RGF0YS5tX3RyeS0+bG9jYXRpb24oKSwgZGVsZWdhdGVMYWJlbC0+bG9jYXRpb24o
KSwgMCwgbV90cnlEZXB0aCwgdGFyZ2V0RGVwdGggfSk7CiAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwogICAgIHJldHVybiB7IH07CkBAIC0xMjA1LDcgKzEyMDUsNyBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRSZXRocm93KHVuc2lnbmVkCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7
CiAgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29udHJvbENhdGNoPihkYXRhKSk7
Ci0gICAgQ29udHJvbENhdGNoIGNhdGNoRGF0YSA9IFdURjo6Z2V0PENvbnRyb2xDYXRjaD4oZGF0
YSk7CisgICAgQ29udHJvbENhdGNoIGNhdGNoRGF0YSA9IHN0ZDo6Z2V0PENvbnRyb2xDYXRjaD4o
ZGF0YSk7CiAgICAgV2FzbVJldGhyb3c6OmVtaXQodGhpcywgY2F0Y2hEYXRhLm1fZXhjZXB0aW9u
KTsKICAgICByZXR1cm4geyB9OwogfQpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTAt
MTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBSZW1vdmUgV1RGOjpWYXJpYW50IGFuZCBXVEY6OmdldAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvVmFyaWFudC5oOgorICAgICAgICAoV1RG
OjpnZXQpOiBEZWxldGVkLgorCiAyMDIxLTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHN0ZDo6dmFyaWFudCBpbnN0ZWFkIG9m
IFdURjo6VmFyaWFudApJbmRleDogU291cmNlL1dURi93dGYvVmFyaWFudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1ZhcmlhbnQuaAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNl
L1dURi93dGYvVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywzMyArNTMsNiBAQAogCiBu
YW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUuLi4gVHlwZXM+Ci11c2luZyBWYXJp
YW50ID0gc3RkOjp2YXJpYW50PFR5cGVzLi4uPjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgX1R5cGUs
dHlwZW5hbWUgLi4uIF9UeXBlcz4KLWNvbnN0ZXhwciBfVHlwZSYgZ2V0KFZhcmlhbnQ8X1R5cGVz
Li4uPiYgX192KQotewotICAgIHJldHVybiBzdGQ6OmdldDxfVHlwZT4oX192KTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgX1R5cGUsdHlwZW5hbWUgLi4uIF9UeXBlcz4KLWNvbnN0ZXhwciBfVHlw
ZSYmIGdldChWYXJpYW50PF9UeXBlcy4uLj4mJiBfX3YpCi17Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0
PF9UeXBlPihXVEZNb3ZlKF9fdikpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBl
bmFtZSAuLi4gX1R5cGVzPgotY29uc3RleHByIF9UeXBlIGNvbnN0JiBnZXQoVmFyaWFudDxfVHlw
ZXMuLi4+IGNvbnN0JiBfX3YpCi17Ci0gICAgcmV0dXJuIHN0ZDo6Z2V0PF9UeXBlPihfX3YpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBfVHlwZSx0eXBlbmFtZSAuLi4gX1R5cGVzPgotY29uc3Rl
eHByIGNvbnN0IF9UeXBlJiYgZ2V0KFZhcmlhbnQ8X1R5cGVzLi4uPiBjb25zdCYmIF9fdikKLXsK
LSAgICByZXR1cm4gc3RkOjpnZXQ8X1R5cGU+KFdURk1vdmUoX192KSk7Ci19Ci0KIC8vIC0tIFdl
YktpdCBBZGRpdGlvbnMgLS0KIAogdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MuLi4gRj4KQEAgLTg5
LDUgKzYyLDMgQEAgYXV0byBzd2l0Y2hPbihWJiYgdiwgRiYmLi4uIGYpIC0+IGRlY2x0eQogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpWYXJpYW50OwpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjM2IEBACisyMDIxLTEwLTEzICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6VmFyaWFudCBh
bmQgV1RGOjpnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSBub3cgdXNpbmcgc3RkOjp2YXJpYW50IGFuZCBzdGQ6OmdldCBpbnN0ZWFkLgor
CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1l
bnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6
OmhhbmRsZXNJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhh
bmRsZXI6OnZhbGlkYXRlTWVyY2hhbnQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXlt
ZW50SGFuZGxlcjo6ZGlkQXV0aG9yaXplUGF5bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
ZVBheVBheW1lbnRIYW5kbGVyOjpkaWRTZWxlY3RQYXltZW50TWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRpZENoYW5nZUNvdXBvbkNvZGUpOgorICAg
ICAgICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNv
dXJjZTo6aW52b2tlQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0
aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpyZXF1ZXN0RnJvbUluZm8pOgorICAgICAgICAq
IE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6
OmJsb2JCb2R5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Zm9ybURhdGFC
b2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Zm9ybURhdGFCb2R5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YXJyYXlCdWZmZXJCb2R5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YXJyYXlCdWZmZXJWaWV3Qm9keSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRleHRCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keTo6dGV4dEJvZHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
Ojp1cmxTZWFyY2hQYXJhbXNCb2R5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoSGVhZGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaWxsSGVhZGVyTWFwKToKKyAgICAg
ICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaFJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmNvbXBhcmUg
Y29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCS2V5OjphcnJheSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6
OnN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXk6OmRhdGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpudW1iZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCS2V5OjpiaW5hcnkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QktleURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6SURCS2V5RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjptYXliZUNyZWF0ZUlEQktleSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjppc29sYXRlZENvcHkpOgorICAgICAgICAo
V2ViQ29yZTo6SURCS2V5RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleURhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpjb21wYXJl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmxvZ2dpbmdTdHJpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpzaXplIGNvbnN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRh
OjpoYXNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OnN0cmluZyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhOjpkYXRlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQktleURhdGE6Om51bWJlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJLZXlEYXRhOjpiaW5hcnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6
YXJyYXkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OmRlY29kZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Y2VydGlmaWNhdGVUeXBlRnJvbUFsZ29yaXRobUlkZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFNGcmFtZVRyYW5zZm9ybTo6c2V0RW5jcnlwdGlvbktleSk6CisgICAgICAgICog
YW5pbWF0aW9uL0FuaW1hdGlvbkVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRp
b25FZmZlY3Q6OnVwZGF0ZVRpbWluZyk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NJdGVyYWJsZUtleWZyYW1lcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpwcm9jZXNzUHJvcGVydHlJbmRleGVkS2V5ZnJhbWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0SURC
S2V5SW50b1NjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Om1heWJlQ3JlYXRlSURCS2V5
RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpjYW5JbmplY3RJ
REJLZXlJbnRvU2NyaXB0VmFsdWUpOgorICAgICAgICAqIGNyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpTdWJ0bGVDcnlwdG86OmV4cG9ydEtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJ0bGVDcnlwdG86OndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtQUVTX0NCQzo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobUFFU19DRkI6OmltcG9ydEtleSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1BRVNfQ1RSOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19HQ00uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtQUVTX0dDTTo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1BRVNfS1cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
QUVTX0tXOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDREguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNESDo6
aW1wb3J0S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RTQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6aW1wb3J0
S2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OmltcG9ydEtleSk6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjppbXBvcnRLZXkpOgorICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1QQktERjI6OmltcG9ydEtleSk6CisgICAgICAgICogY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjppbXBvcnRLZXkp
OgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81OjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJT
QV9PQUVQOjppbXBvcnRLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQV9QU1MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNB
X1BTUzo6aW1wb3J0S2V5KToKKyAgICAgICAgKiBjc3MvQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjplcXVhbHMgY29u
c3QpOgorICAgICAgICAqIGNzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmg6CisgICAgICAgICog
Y3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZVdpdGhWYXJpYWJsZVJlZmVyZW5j
ZXMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRNYXJrZXI6OmRlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEluc2VydEFz
U2VwYXJhdGVNYXJrZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmFuaW1hdGUpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1l
ckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJl
c3BvbmRUb01hcmtlckF0RW5kT2ZXb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0aXZl
VGV4dENvbnRyb2xsZXI6OnJlbW92ZURpY3RhdGlvbkFsdGVybmF0aXZlc0Zvck1hcmtlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpkaWN0YXRpb25BbHRl
cm5hdGl2ZXNGb3JNYXJrZXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNT
dHlsZTo6aXNFcXVpdmFsZW50Q29sb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
U3R5bGU6OmlzRXF1aXZhbGVudCBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpvdmVycmlkZUFscGhhIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjYW52YXNHcmFkaWVudCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Y2FudmFzUGF0dGVybiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Y29sb3IgY29uc3QpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yU2NvcGVkU2hhZGVyUHJvZ3JhbUhpZ2hsaWdodDo6c2F2ZUJsZW5kVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU2NvcGVkU2hhZGVyUHJvZ3JhbUhpZ2hs
aWdodDo6aGFzQnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTY29w
ZWRTaGFkZXJQcm9ncmFtSGlnaGxpZ2h0OjpoYXNGcmFtZWJ1ZmZlclBhcmFtZXRlckF0dGFjaG1l
bnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlZUVEN1ZTo6c2V0TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpWVFRDdWU6OnNldFBvc2l0aW9u
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lSXRlcmF0b3I6OkJveDo6bW9kZXJuUGF0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94OjpsZWdhY3lQYXRoIGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUl0ZXJhdG9yOjpCb3g6OmxlZ2FjeUlubGluZUJveCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVJdGVyYXRvcjo6Qm94OjppbmxpbmVCb3ggY29u
c3QpOgorICAgICAgICAqIHBhZ2UvaW9zL0ZyYW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6OmludGVycHJldGF0aW9uc0ZvckN1cnJlbnRSb290IGNvbnN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3B5
UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpy
ZWFkQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRh
OjpyZWFkU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21E
YXRhOjpmb3JFYWNoUGxhdGZvcm1TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZEN1c3RvbURhdGE6OmZvckVhY2hQbGF0Zm9ybVN0cmluZ09yQnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjp0YWtlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vY29jb2Ev
Q0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNBQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TWVkaWFVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQXVkaW9Gb3JtYXRE
ZXNjcmlwdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5l
cmljLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRlY29kaW5nT3B0aW9uczo6aXNBdXRvIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlY29kaW5nT3B0aW9uczo6aXNTeW5jaHJvbm91cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEZWNvZGluZ09wdGlvbnM6OmlzQXN5bmNocm9ub3VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY29kaW5nT3B0aW9uczo6c2l6ZUZvckRyYXdpbmcgY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGF0aDo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkUXVhZEN1cnZl
VG8pOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6YWRkQmV6aWVyQ3VydmVUbyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6aW5s
aW5lRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjppbmxpbmVEYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpub3RpZnlQbGF5ZXJPZlRyYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUGFzdGVib2FyZEl0
ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRV
bml0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvU2hhcmVkVW5pdDo6cmVzZXRTYW1w
bGVSYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92
aWRlckNvY29hOjpyZWNlaXZlZE5ld0F1ZGlvU2FtcGxlcyk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrTWVkaWFEZXZpY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYURldmlj
ZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2U6OnNwZWFr
ZXJQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291
cmNlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tEaXNwbGF5Q2FwdHVyZXI6OmludHJpbnNpY1NpemUgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpnZW5lcmF0ZVByZXNl
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNhcGFiaWxp
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6bW9ja0Rp
c3BsYXlUeXBlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0ROUy5oOgorICAg
ICAgICAoV2ViQ29yZTo6SVBBZGRyZXNzOjppcHY0QWRkcmVzcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJUEFkZHJlc3M6OmlwdjZBZGRyZXNzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBl
bmRNdWx0aVBhcnRLZXlWYWx1ZVBhaXJJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0
YTo6YXBwZW5kTm9uTXVsdGlQYXJ0S2V5VmFsdWVQYWlySXRlbXMpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsU1NMSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0veHIv
UGxhdGZvcm1YUi5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlZp
ZXc6OmVuY29kZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsZWdhY3lMaW5lTGF5b3V0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGVnYWN5TGluZUxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Om1vZGVybkxpbmVMYXlvdXQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojptb2Rlcm5MaW5lTGF5
b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhZ2dlZENvbnRlbnRDb250YWluc1JlcGxhY2VkRWxlbWVudCk6CisgICAgICAg
ICogc3R5bGUvU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWls
ZGVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6
OnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6Y2FuY2VsSm9ic0Zyb21TZXJ2aWNlV29ya2VyKToK
KwogMjAyMS0xMC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dTdHJlYW1lcl0gQ3Jhc2ggaW4gV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpzb3VyY2VTZXR1cCB3aGVuIGxvYWRpbmcgcmVkZGl0IHZpZGVvCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBw
bGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAJKHJldmlzaW9u
IDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVl
c3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3ICsx
MDUsNyBAQCBib29sIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmhhbmRsZXNJZGVuCiAgICAgaWYg
KCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFVSTD4oaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8mIHVybCA9IFdURjo6Z2V0PFVSTD4oaWRlbnRpZmllcik7Cisg
ICAgYXV0byYgdXJsID0gc3RkOjpnZXQ8VVJMPihpZGVudGlmaWVyKTsKICAgICByZXR1cm4gdXJs
Lmhvc3QoKSA9PSAiYXBwbGUuY29tIiAmJiB1cmwucGF0aCgpID09ICIvYXBwbGUtcGF5IjsKIH0K
IApAQCAtNzExLDcgKzcxMSw3IEBAIHVuc2lnbmVkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnZl
cnNpb24KIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6dmFsaWRhdGVNZXJjaGFudChVUkwm
JiB2YWxpZGF0aW9uVVJMKQogewogICAgIGlmICh2YWxpZGF0aW9uVVJMLmlzVmFsaWQoKSkKLSAg
ICAgICAgbV9wYXltZW50UmVxdWVzdC0+ZGlzcGF0Y2hFdmVudChNZXJjaGFudFZhbGlkYXRpb25F
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tZXJjaGFudHZhbGlkYXRpb25FdmVudCwgV1RGOjpn
ZXQ8VVJMPihtX2lkZW50aWZpZXIpLnN0cmluZygpLCBXVEZNb3ZlKHZhbGlkYXRpb25VUkwpKS5n
ZXQoKSk7CisgICAgICAgIG1fcGF5bWVudFJlcXVlc3QtPmRpc3BhdGNoRXZlbnQoTWVyY2hhbnRW
YWxpZGF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubWVyY2hhbnR2YWxpZGF0aW9uRXZl
bnQsIHN0ZDo6Z2V0PFVSTD4obV9pZGVudGlmaWVyKS5zdHJpbmcoKSwgV1RGTW92ZSh2YWxpZGF0
aW9uVVJMKSkuZ2V0KCkpOwogfQogCiBzdGF0aWMgUmVmPFBheW1lbnRBZGRyZXNzPiBjb252ZXJ0
KGNvbnN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3QmIGNvbnRhY3QpCkBAIC03MzYsNyArNzM2LDcg
QEAgdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkaWRBdXRob3JpegogICAgICAgICByZXR1
cm4gdG9KU0RpY3Rpb25hcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgYXBwbGVQYXlQYXltZW50KTsK
ICAgICB9OwogCi0gICAgbV9wYXltZW50UmVxdWVzdC0+YWNjZXB0KFdURjo6Z2V0PFVSTD4obV9p
ZGVudGlmaWVyKS5zdHJpbmcoKSwgV1RGTW92ZShkZXRhaWxzRnVuY3Rpb24pLCBjb252ZXJ0KHNo
aXBwaW5nQ29udGFjdCksIHNoaXBwaW5nQ29udGFjdC5sb2NhbGl6ZWROYW1lLCBzaGlwcGluZ0Nv
bnRhY3QuZW1haWxBZGRyZXNzLCBzaGlwcGluZ0NvbnRhY3QucGhvbmVOdW1iZXIpOworICAgIG1f
cGF5bWVudFJlcXVlc3QtPmFjY2VwdChzdGQ6OmdldDxVUkw+KG1faWRlbnRpZmllcikuc3RyaW5n
KCksIFdURk1vdmUoZGV0YWlsc0Z1bmN0aW9uKSwgY29udmVydChzaGlwcGluZ0NvbnRhY3QpLCBz
aGlwcGluZ0NvbnRhY3QubG9jYWxpemVkTmFtZSwgc2hpcHBpbmdDb250YWN0LmVtYWlsQWRkcmVz
cywgc2hpcHBpbmdDb250YWN0LnBob25lTnVtYmVyKTsKIH0KIAogdm9pZCBBcHBsZVBheVBheW1l
bnRIYW5kbGVyOjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZChjb25zdCBBcHBsZVBheVNoaXBwaW5n
TWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKQEAgLTc2Miw3ICs3NjIsNyBAQCB2b2lkIEFwcGxlUGF5
UGF5bWVudEhhbmRsZXI6OmRpZFNlbGVjdFBhCiAKICAgICBhdXRvIGFwcGxlUGF5UGF5bWVudE1l
dGhvZCA9IHBheW1lbnRNZXRob2QudG9BcHBsZVBheVBheW1lbnRNZXRob2QoKTsKICAgICBtX3Nl
bGVjdGVkUGF5bWVudE1ldGhvZFR5cGUgPSBhcHBsZVBheVBheW1lbnRNZXRob2QudHlwZTsKLSAg
ICBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50TWV0aG9kQ2hhbmdlZChXVEY6OmdldDxVUkw+KG1f
aWRlbnRpZmllcikuc3RyaW5nKCksIFthcHBsZVBheVBheW1lbnRNZXRob2QgPSBXVEZNb3ZlKGFw
cGxlUGF5UGF5bWVudE1ldGhvZCldKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QpIHsKKyAgICBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50TWV0aG9kQ2hhbmdlZChzdGQ6
OmdldDxVUkw+KG1faWRlbnRpZmllcikuc3RyaW5nKCksIFthcHBsZVBheVBheW1lbnRNZXRob2Qg
PSBXVEZNb3ZlKGFwcGxlUGF5UGF5bWVudE1ldGhvZCldKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QpIHsKICAgICAgICAgcmV0dXJuIHRvSlNEaWN0aW9uYXJ5KGxleGlj
YWxHbG9iYWxPYmplY3QsIGFwcGxlUGF5UGF5bWVudE1ldGhvZCk7CiAgICAgfSk7CiB9CkBAIC03
NzUsNyArNzc1LDcgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkaWRDaGFuZ2VDbwog
ICAgIG1fdXBkYXRlU3RhdGUgPSBVcGRhdGVTdGF0ZTo6Q291cG9uQ29kZTsKIAogICAgIEFwcGxl
UGF5Q291cG9uQ29kZURldGFpbHMgYXBwbGVQYXlDb3Vwb25Db2RlRGV0YWlscyB7IFdURk1vdmUo
Y291cG9uQ29kZSkgfTsKLSAgICBtX3BheW1lbnRSZXF1ZXN0LT5wYXltZW50TWV0aG9kQ2hhbmdl
ZChXVEY6OmdldDxVUkw+KG1faWRlbnRpZmllcikuc3RyaW5nKCksIFthcHBsZVBheUNvdXBvbkNv
ZGVEZXRhaWxzID0gV1RGTW92ZShhcHBsZVBheUNvdXBvbkNvZGVEZXRhaWxzKV0gKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QpIHsKKyAgICBtX3BheW1lbnRSZXF1ZXN0
LT5wYXltZW50TWV0aG9kQ2hhbmdlZChzdGQ6OmdldDxVUkw+KG1faWRlbnRpZmllcikuc3RyaW5n
KCksIFthcHBsZVBheUNvdXBvbkNvZGVEZXRhaWxzID0gV1RGTW92ZShhcHBsZVBheUNvdXBvbkNv
ZGVEZXRhaWxzKV0gKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QpIHsK
ICAgICAgICAgcmV0dXJuIHRvSlNEaWN0aW9uYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIGFwcGxl
UGF5Q291cG9uQ29kZURldGFpbHMpOwogICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQv
Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5k
aW5nc0RhdGFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTAgKzIxMiwxMCBAQCB2
b2lkIENsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OmluCiAgICAgZm9yIChhdXRvJiBp
dGVtVHlwZUxvYWRlciA6IGl0ZW1UeXBlTG9hZGVycykgewogICAgICAgICBhdXRvIHR5cGUgPSBp
dGVtVHlwZUxvYWRlci0+dHlwZSgpOwogICAgICAgICBhdXRvJiBkYXRhID0gaXRlbVR5cGVMb2Fk
ZXItPmRhdGEoKTsKLSAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihk
YXRhKSAmJiAhIVdURjo6Z2V0PFN0cmluZz4oZGF0YSkpCi0gICAgICAgICAgICBjdXN0b21EYXRh
LndyaXRlU3RyaW5nKHR5cGUsIFdURjo6Z2V0PFN0cmluZz4oZGF0YSkpOworICAgICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGRhdGEpICYmICEhc3RkOjpnZXQ8U3RyaW5n
PihkYXRhKSkKKyAgICAgICAgICAgIGN1c3RvbURhdGEud3JpdGVTdHJpbmcodHlwZSwgc3RkOjpn
ZXQ8U3RyaW5nPihkYXRhKSk7CiAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpKQotICAgICAgICAgICAgY3VzdG9tRGF0YS53cml0
ZURhdGEodHlwZSwgV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRhdGEpLmNvcHlSZWYoKSk7
CisgICAgICAgICAgICBjdXN0b21EYXRhLndyaXRlRGF0YSh0eXBlLCBzdGQ6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4oZGF0YSkuY29weVJlZigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjY0LDEwICsyNjQsMTAgQEAgdm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNl
OjpDbAogICAgIGlmIChtX3R5cGUgPT0gInRleHQvaHRtbCJfcykgewogICAgICAgICBTdHJpbmcg
bWFya3VwVG9TYW5pdGl6ZTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
PFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGJ1ZmZlciA9IFdU
Rjo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihtX2RhdGEpOworICAgICAgICAgICAgYXV0byYgYnVm
ZmVyID0gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSk7CiAgICAgICAgICAgICBt
YXJrdXBUb1Nhbml0aXplID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXItPmRhdGEoKSwgYnVmZmVy
LT5zaXplKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3Ry
aW5nPihtX2RhdGEpKQotICAgICAgICAgICAgbWFya3VwVG9TYW5pdGl6ZSA9IFdURjo6Z2V0PFN0
cmluZz4obV9kYXRhKTsKKyAgICAgICAgICAgIG1hcmt1cFRvU2FuaXRpemUgPSBzdGQ6OmdldDxT
dHJpbmc+KG1fZGF0YSk7CiAKICAgICAgICAgaWYgKG1hcmt1cFRvU2FuaXRpemUuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc4LDkgKzI3OCw5IEBAIHZvaWQgQ2xpcGJvYXJk
SXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKICAgICBpZiAobV90eXBlID09ICJpbWFnZS9wbmci
X3MpIHsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyVG9TYW5pdGl6ZTsKICAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0
YSkpCi0gICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1
ZmZlcj4+KG1fZGF0YSkucHRyKCk7CisgICAgICAgICAgICBidWZmZXJUb1Nhbml0aXplID0gc3Rk
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fZGF0YSkucHRyKCk7CiAgICAgICAgIGVsc2UgaWYg
KHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2RhdGEpKQotICAgICAgICAgICAgYnVm
ZmVyVG9TYW5pdGl6ZSA9IHV0ZjhCdWZmZXIoV1RGOjpnZXQ8U3RyaW5nPihtX2RhdGEpKTsKKyAg
ICAgICAgICAgIGJ1ZmZlclRvU2FuaXRpemUgPSB1dGY4QnVmZmVyKHN0ZDo6Z2V0PFN0cmluZz4o
bV9kYXRhKSk7CiAKICAgICAgICAgaWYgKCFidWZmZXJUb1Nhbml0aXplIHx8IGJ1ZmZlclRvU2Fu
aXRpemUtPmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA3LDcgKzIwNyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBET01DYWNoZToK
IHsKICAgICBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiByZXF1ZXN0OwogICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZlB0cjxGZXRjaFJlcXVlc3Q+PihpbmZvKSkgewotICAgICAgICByZXF1
ZXN0ID0gV1RGOjpnZXQ8UmVmUHRyPEZldGNoUmVxdWVzdD4+KGluZm8pLnJlbGVhc2VOb25OdWxs
KCk7CisgICAgICAgIHJlcXVlc3QgPSBzdGQ6OmdldDxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5m
bykucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgaWYgKHJlcXVlc3QtPm1ldGhvZCgpICE9ICJH
RVQiICYmICFpZ25vcmVNZXRob2QpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiUmVxdWVzdCBtZXRob2QgaXMgbm90IEdFVCJfcyB9OwogICAgIH0gZWxzZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCShyZXZpc2lvbiAyODQw
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTAsMTQgKzExMCwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNVUkxTZWFy
Y2hQYXJhbXMoKSBjb25zdCB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxjb25z
dCBVUkxTZWFyY2hQYXJhbXM+PihtX2RhdGEpOyB9CiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7
IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4obV9kYXRhKTsgfQogCi0gICAg
Y29uc3QgQmxvYiYgYmxvYkJvZHkoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxSZWY8Y29uc3Qg
QmxvYj4+KG1fZGF0YSkuZ2V0KCk7IH0KLSAgICBGb3JtRGF0YSYgZm9ybURhdGFCb2R5KCkgeyBy
ZXR1cm4gV1RGOjpnZXQ8UmVmPEZvcm1EYXRhPj4obV9kYXRhKS5nZXQoKTsgfQotICAgIGNvbnN0
IEZvcm1EYXRhJiBmb3JtRGF0YUJvZHkoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxSZWY8Rm9y
bURhdGE+PihtX2RhdGEpLmdldCgpOyB9Ci0gICAgY29uc3QgQXJyYXlCdWZmZXImIGFycmF5QnVm
ZmVyQm9keSgpIGNvbnN0IHsgcmV0dXJuIFdURjo6Z2V0PFJlZjxjb25zdCBBcnJheUJ1ZmZlcj4+
KG1fZGF0YSkuZ2V0KCk7IH0KLSAgICBjb25zdCBBcnJheUJ1ZmZlclZpZXcmIGFycmF5QnVmZmVy
Vmlld0JvZHkoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxSZWY8Y29uc3QgQXJyYXlCdWZmZXJW
aWV3Pj4obV9kYXRhKS5nZXQoKTsgfQotICAgIFN0cmluZyYgdGV4dEJvZHkoKSB7IHJldHVybiBX
VEY6OmdldDxTdHJpbmc+KG1fZGF0YSk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHRleHRCb2R5KCkg
Y29uc3QgeyByZXR1cm4gV1RGOjpnZXQ8U3RyaW5nPihtX2RhdGEpOyB9Ci0gICAgY29uc3QgVVJM
U2VhcmNoUGFyYW1zJiB1cmxTZWFyY2hQYXJhbXNCb2R5KCkgY29uc3QgeyByZXR1cm4gV1RGOjpn
ZXQ8UmVmPGNvbnN0IFVSTFNlYXJjaFBhcmFtcz4+KG1fZGF0YSkuZ2V0KCk7IH0KKyAgICBjb25z
dCBCbG9iJiBibG9iQm9keSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxjb25zdCBCbG9i
Pj4obV9kYXRhKS5nZXQoKTsgfQorICAgIEZvcm1EYXRhJiBmb3JtRGF0YUJvZHkoKSB7IHJldHVy
biBzdGQ6OmdldDxSZWY8Rm9ybURhdGE+PihtX2RhdGEpLmdldCgpOyB9CisgICAgY29uc3QgRm9y
bURhdGEmIGZvcm1EYXRhQm9keSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxGb3JtRGF0
YT4+KG1fZGF0YSkuZ2V0KCk7IH0KKyAgICBjb25zdCBBcnJheUJ1ZmZlciYgYXJyYXlCdWZmZXJC
b2R5KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8UmVmPGNvbnN0IEFycmF5QnVmZmVyPj4obV9k
YXRhKS5nZXQoKTsgfQorICAgIGNvbnN0IEFycmF5QnVmZmVyVmlldyYgYXJyYXlCdWZmZXJWaWV3
Qm9keSgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6Z2V0PFJlZjxjb25zdCBBcnJheUJ1ZmZlclZpZXc+
PihtX2RhdGEpLmdldCgpOyB9CisgICAgU3RyaW5nJiB0ZXh0Qm9keSgpIHsgcmV0dXJuIHN0ZDo6
Z2V0PFN0cmluZz4obV9kYXRhKTsgfQorICAgIGNvbnN0IFN0cmluZyYgdGV4dEJvZHkoKSBjb25z
dCB7IHJldHVybiBzdGQ6OmdldDxTdHJpbmc+KG1fZGF0YSk7IH0KKyAgICBjb25zdCBVUkxTZWFy
Y2hQYXJhbXMmIHVybFNlYXJjaFBhcmFtc0JvZHkoKSBjb25zdCB7IHJldHVybiBzdGQ6OmdldDxS
ZWY8Y29uc3QgVVJMU2VhcmNoUGFyYW1zPj4obV9kYXRhKS5nZXQoKTsgfQogCiAgICAgdXNpbmcg
RGF0YSA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgUmVmPGNvbnN0IEJsb2I+LCBSZWY8
Rm9ybURhdGE+LCBSZWY8Y29uc3QgQXJyYXlCdWZmZXI+LCBSZWY8Y29uc3QgQXJyYXlCdWZmZXJW
aWV3PiwgUmVmPGNvbnN0IFVSTFNlYXJjaFBhcmFtcz4sIFN0cmluZz47CiAgICAgRGF0YSBtX2Rh
dGEgeyBudWxscHRyIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
SGVhZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEhlYWRlcnMuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDcgKzk5LDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZFRvSGVhZGVyTQogc3RhdGljIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGZpbGxIZWFkZXJNYXAoSFRUUEhlYWRlck1hcCYgaGVhZGVycywgY29uc3Qg
RmV0Y2hIZWFkZXJzOjpJbml0JiBoZWFkZXJzSW5pdCwgRmV0Y2hIZWFkZXJzOjpHdWFyZCBndWFy
ZCkKIHsKICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8VmVjdG9yPFN0cmlu
Zz4+PihoZWFkZXJzSW5pdCkpIHsKLSAgICAgICAgYXV0byYgc2VxdWVuY2UgPSBXVEY6OmdldDxW
ZWN0b3I8VmVjdG9yPFN0cmluZz4+PihoZWFkZXJzSW5pdCk7CisgICAgICAgIGF1dG8mIHNlcXVl
bmNlID0gc3RkOjpnZXQ8VmVjdG9yPFZlY3RvcjxTdHJpbmc+Pj4oaGVhZGVyc0luaXQpOwogICAg
ICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IHNlcXVlbmNlKSB7CiAgICAgICAgICAgICBpZiAoaGVh
ZGVyLnNpemUoKSAhPSAyKQogICAgICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBl
RXJyb3IsICJIZWFkZXIgc3ViLXNlcXVlbmNlIG11c3QgY29udGFpbiBleGFjdGx5IHR3byBpdGVt
cyIgfTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8dm9pZD4gZmlsbEhl
YWRlck1hcChICiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBhdXRvJiByZWNvcmQgPSBXVEY6
OmdldDxWZWN0b3I8V1RGOjpLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+Pj4oaGVhZGVyc0lu
aXQpOworICAgICAgICBhdXRvJiByZWNvcmQgPSBzdGQ6OmdldDxWZWN0b3I8V1RGOjpLZXlWYWx1
ZVBhaXI8U3RyaW5nLCBTdHJpbmc+Pj4oaGVhZGVyc0luaXQpOwogICAgICAgICBmb3IgKGF1dG8m
IGhlYWRlciA6IHJlY29yZCkgewogICAgICAgICAgICAgYXV0byByZXN1bHQgPSBhcHBlbmRUb0hl
YWRlck1hcChoZWFkZXIua2V5LCBoZWFkZXIudmFsdWUsIGhlYWRlcnMsIGd1YXJkKTsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3NiwxMSArMjc2LDExIEBAIEV4Y2VwdGlvbk9yPFJlZjxGZXRjaFJlcXVlc3Q+PiBG
ZXRjaFJlcXUKICAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVxdWVzdChj
b250ZXh0LCBzdGQ6Om51bGxvcHQsIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6
R3VhcmQ6OlJlcXVlc3QpLCB7IH0sIHsgfSwgeyB9KSk7CiAKICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxTdHJpbmc+KGlucHV0KSkgewotICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcXVl
c3QtPmluaXRpYWxpemVXaXRoKFdURjo6Z2V0PFN0cmluZz4oaW5wdXQpLCBXVEZNb3ZlKGluaXQp
KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByZXF1ZXN0LT5pbml0aWFsaXplV2l0aChzdGQ6Omdl
dDxTdHJpbmc+KGlucHV0KSwgV1RGTW92ZShpbml0KSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcXVlc3QtPmluaXRpYWxp
emVXaXRoKCpXVEY6OmdldDxSZWZQdHI8RmV0Y2hSZXF1ZXN0Pj4oaW5wdXQpLCBXVEZNb3ZlKGlu
aXQpKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByZXF1ZXN0LT5pbml0aWFsaXplV2l0aCgqc3Rk
OjpnZXQ8UmVmUHRyPEZldGNoUmVxdWVzdD4+KGlucHV0KSwgV1RGTW92ZShpbml0KSk7CiAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBFeGNlcHRpb25PcjxSZWY8SURCT2JqZWN0U3RvcmU+
PiBJREJEYXRhCiAgICAgaWYgKG1faW5mby5oYXNPYmplY3RTdG9yZShuYW1lKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IENvbnN0cmFpbnRFcnJvciwgIkZhaWxlZCB0byBleGVjdXRlICdj
cmVhdGVPYmplY3RTdG9yZScgb24gJ0lEQkRhdGFiYXNlJzogQW4gb2JqZWN0IHN0b3JlIHdpdGgg
dGhlIHNwZWNpZmllZCBuYW1lIGFscmVhZHkgZXhpc3RzLiJfcyB9OwogCi0gICAgaWYgKGtleVBh
dGggJiYgcGFyYW1ldGVycy5hdXRvSW5jcmVtZW50ICYmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxTdHJpbmc+KGtleVBhdGgudmFsdWUoKSkgJiYgV1RGOjpnZXQ8U3RyaW5nPihrZXlQYXRoLnZh
bHVlKCkpLmlzRW1wdHkoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8U3RyaW5n
Pj4oa2V5UGF0aC52YWx1ZSgpKSkpCisgICAgaWYgKGtleVBhdGggJiYgcGFyYW1ldGVycy5hdXRv
SW5jcmVtZW50ICYmICgoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGtleVBhdGgudmFs
dWUoKSkgJiYgc3RkOjpnZXQ8U3RyaW5nPihrZXlQYXRoLnZhbHVlKCkpLmlzRW1wdHkoKSkgfHwg
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8U3RyaW5nPj4oa2V5UGF0aC52YWx1ZSgpKSkp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IsICJGYWlsZWQg
dG8gZXhlY3V0ZSAnY3JlYXRlT2JqZWN0U3RvcmUnIG9uICdJREJEYXRhYmFzZSc6IFRoZSBhdXRv
SW5jcmVtZW50IG9wdGlvbiB3YXMgc2V0IGJ1dCB0aGUga2V5UGF0aCBvcHRpb24gd2FzIGVtcHR5
IG9yIGFuIGFycmF5LiJfcyB9OwogCiAgICAgLy8gSW5zdGFsbCB0aGUgbmV3IE9iamVjdFN0b3Jl
IGludG8gdGhlIGNvbm5lY3Rpb24ncyBtZXRhZGF0YS4KQEAgLTE3Niw5ICsxNzYsOSBAQCBFeGNl
cHRpb25PcjxSZWY8SURCVHJhbnNhY3Rpb24+PiBJREJEYXRhCiAKICAgICBWZWN0b3I8U3RyaW5n
PiBvYmplY3RTdG9yZXM7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPFN0
cmluZz4+KHN0b3JlTmFtZXMpKQotICAgICAgICBvYmplY3RTdG9yZXMgPSBXVEZNb3ZlKFdURjo6
Z2V0PFZlY3RvcjxTdHJpbmc+PihzdG9yZU5hbWVzKSk7CisgICAgICAgIG9iamVjdFN0b3JlcyA9
IFdURk1vdmUoc3RkOjpnZXQ8VmVjdG9yPFN0cmluZz4+KHN0b3JlTmFtZXMpKTsKICAgICBlbHNl
Ci0gICAgICAgIG9iamVjdFN0b3Jlcy5hcHBlbmQoV1RGTW92ZShXVEY6OmdldDxTdHJpbmc+KHN0
b3JlTmFtZXMpKSk7CisgICAgICAgIG9iamVjdFN0b3Jlcy5hcHBlbmQoV1RGTW92ZShzdGQ6Omdl
dDxTdHJpbmc+KHN0b3JlTmFtZXMpKSk7CiAKICAgICAvLyBJdCBpcyB2YWxpZCBmb3IgamF2YXNj
cmlwdCB0byBwYXNzIGluIGEgbGlzdCBvZiBvYmplY3Qgc3RvcmUgbmFtZXMgd2l0aCB0aGUgc2Ft
ZSBuYW1lIGxpc3RlZCB0d2ljZSwKICAgICAvLyBzbyB3ZSBuZWVkIHRvIHB1dCB0aGVtIGFsbCBp
biBhIHNldCB0byBnZXQgYSB1bmlxdWUgbGlzdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQs
NyArOTQsNyBAQCBib29sIElEQktleTo6aXNWYWxpZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmIChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheSkgewot
ICAgICAgICBmb3IgKGF1dG8mIGtleSA6IFdURjo6Z2V0PElEQktleVZlY3Rvcj4obV92YWx1ZSkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBrZXkgOiBzdGQ6OmdldDxJREJLZXlWZWN0b3I+KG1fdmFs
dWUpKSB7CiAgICAgICAgICAgICBpZiAoIWtleS0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTEwLDggKzExMCw4IEBAIGludCBJREJLZXk6
OmNvbXBhcmUoY29uc3QgSURCS2V5JiBvdGhlcikKIAogICAgIHN3aXRjaCAobV90eXBlKSB7CiAg
ICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7Ci0gICAgICAgIGF1dG8mIGFycmF5
ID0gV1RGOjpnZXQ8SURCS2V5VmVjdG9yPihtX3ZhbHVlKTsKLSAgICAgICAgYXV0byYgb3RoZXJB
cnJheSA9IFdURjo6Z2V0PElEQktleVZlY3Rvcj4ob3RoZXIubV92YWx1ZSk7CisgICAgICAgIGF1
dG8mIGFycmF5ID0gc3RkOjpnZXQ8SURCS2V5VmVjdG9yPihtX3ZhbHVlKTsKKyAgICAgICAgYXV0
byYgb3RoZXJBcnJheSA9IHN0ZDo6Z2V0PElEQktleVZlY3Rvcj4ob3RoZXIubV92YWx1ZSk7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpICYmIGkgPCBvdGhlckFy
cmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoaW50IHJlc3VsdCA9IGFycmF5W2ld
LT5jb21wYXJlKCpvdGhlckFycmF5W2ldKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtMTIzLDEzICsxMjMsMTMgQEAgaW50IElEQktleTo6Y29tcGFyZShjb25zdCBJREJLZXkm
IG90aGVyKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgY2FzZSBJbmRleGVkREI6Oktl
eVR5cGU6OkJpbmFyeToKLSAgICAgICAgcmV0dXJuIGNvbXBhcmVCaW5hcnlLZXlEYXRhKFdURjo6
Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSwgV1RGOjpnZXQ8VGhyZWFkU2FmZURh
dGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVCaW5hcnlL
ZXlEYXRhKHN0ZDo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSwgc3RkOjpnZXQ8
VGhyZWFkU2FmZURhdGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICByZXR1cm4gLWNvZGVQb2ludENvbXBhcmUoV1RG
OjpnZXQ8U3RyaW5nPihvdGhlci5tX3ZhbHVlKSwgV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSk7
CisgICAgICAgIHJldHVybiAtY29kZVBvaW50Q29tcGFyZShzdGQ6OmdldDxTdHJpbmc+KG90aGVy
Lm1fdmFsdWUpLCBzdGQ6OmdldDxTdHJpbmc+KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6RGF0ZToKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOiB7
Ci0gICAgICAgIGF1dG8gbnVtYmVyID0gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKLSAgICAg
ICAgYXV0byBvdGhlck51bWJlciA9IFdURjo6Z2V0PGRvdWJsZT4ob3RoZXIubV92YWx1ZSk7Cisg
ICAgICAgIGF1dG8gbnVtYmVyID0gc3RkOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKKyAgICAgICAg
YXV0byBvdGhlck51bWJlciA9IHN0ZDo6Z2V0PGRvdWJsZT4ob3RoZXIubV92YWx1ZSk7CiAgICAg
ICAgIHJldHVybiAobnVtYmVyIDwgb3RoZXJOdW1iZXIpID8gLTEgOiAoKG51bWJlciA+IG90aGVy
TnVtYmVyKSA/IDEgOiAwKTsKICAgICB9CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Oklu
dmFsaWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaAko
cmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
S2V5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSwzMSArMTExLDMxIEBAIHB1YmxpYzoKICAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4+JiBhcnJheSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXkpOwotICAgICAgICBy
ZXR1cm4gV1RGOjpnZXQ8VmVjdG9yPFJlZlB0cjxJREJLZXk+Pj4obV92YWx1ZSk7CisgICAgICAg
IHJldHVybiBzdGQ6OmdldDxWZWN0b3I8UmVmUHRyPElEQktleT4+PihtX3ZhbHVlKTsKICAgICB9
CiAKICAgICBjb25zdCBTdHJpbmcmIHN0cmluZygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nKTsKLSAgICAgICAgcmV0dXJu
IFdURjo6Z2V0PFN0cmluZz4obV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxTdHJp
bmc+KG1fdmFsdWUpOwogICAgIH0KIAogICAgIGRvdWJsZSBkYXRlKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlKTsKLSAgICAg
ICAgcmV0dXJuIFdURjo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6
OmdldDxkb3VibGU+KG1fdmFsdWUpOwogICAgIH0KIAogICAgIGRvdWJsZSBudW1iZXIoKSBjb25z
dAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6Ok51
bWJlcik7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUpOworICAgICAg
ICByZXR1cm4gc3RkOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKTsKICAgICB9CiAKICAgICBjb25zdCBU
aHJlYWRTYWZlRGF0YUJ1ZmZlciYgYmluYXJ5KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnkpOwotICAgICAgICByZXR1cm4g
V1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpOworICAgICAgICByZXR1cm4g
c3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpOwogICAgIH0KIAogICAgIGlu
dCBjb21wYXJlKGNvbnN0IElEQktleSYgb3RoZXIpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAJKHJldmlzaW9uIDI4NDA5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIElEQktleURhdGE6OklEQktleURhdGEoY29u
c3QgSURCS2V5KiBrZXkKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5
cGU6OkFycmF5OiB7CiAgICAgICAgIG1fdmFsdWUgPSBWZWN0b3I8SURCS2V5RGF0YT4oKTsKLSAg
ICAgICAgYXV0byYgYXJyYXkgPSBXVEY6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUp
OworICAgICAgICBhdXRvJiBhcnJheSA9IHN0ZDo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92
YWx1ZSk7CiAgICAgICAgIGZvciAoYXV0byYga2V5MiA6IGtleS0+YXJyYXkoKSkKICAgICAgICAg
ICAgIGFycmF5LmFwcGVuZChJREJLZXlEYXRhKGtleTIuZ2V0KCkpKTsKICAgICAgICAgYnJlYWs7
CkBAIC04MCwyMCArODAsMjAgQEAgUmVmUHRyPElEQktleT4gSURCS2V5RGF0YTo6bWF5YmVDcmVh
dGVJRAogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVJbnZhbGlkKCk7CiAgICAgY2FzZSBJ
bmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5
Pj4gYXJyYXk7Ci0gICAgICAgIGZvciAoYXV0byYga2V5RGF0YSA6IFdURjo6Z2V0PFZlY3RvcjxJ
REJLZXlEYXRhPj4obV92YWx1ZSkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBrZXlEYXRhIDogc3Rk
OjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKSkgewogICAgICAgICAgICAgYXJyYXku
YXBwZW5kKGtleURhdGEubWF5YmVDcmVhdGVJREJLZXkoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
YXJyYXkubGFzdCgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVB
cnJheShhcnJheSk7CiAgICAgfQogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6
Ci0gICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUJpbmFyeShXVEY6OmdldDxUaHJlYWRTYWZl
RGF0YUJ1ZmZlcj4obV92YWx1ZSkpOworICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVCaW5h
cnkoc3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpKTsKICAgICBjYXNlIElu
ZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVT
dHJpbmcoV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSk7CisgICAgICAgIHJldHVybiBJREJLZXk6
OmNyZWF0ZVN0cmluZyhzdGQ6OmdldDxTdHJpbmc+KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6RGF0ZToKLSAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlRGF0ZShX
VEY6OmdldDxkb3VibGU+KG1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRl
RGF0ZShzdGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5
VHlwZTo6TnVtYmVyOgotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIoV1RGOjpn
ZXQ8ZG91YmxlPihtX3ZhbHVlKSk7CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZU51bWJl
cihzdGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlw
ZTo6TWF4OgogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNaW46CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTI0LDIwICsxMjQsMjAgQEAgdm9pZCBJREJLZXlEYXRhOjpp
c29sYXRlZENvcHkoY29uc3QgSURCSwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6OkFycmF5OiB7CiAgICAgICAgIGRlc3RpbmF0aW9uLm1fdmFsdWUgPSBWZWN0
b3I8SURCS2V5RGF0YT4oKTsKLSAgICAgICAgYXV0byYgZGVzdGluYXRpb25BcnJheSA9IFdURjo6
Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4oZGVzdGluYXRpb24ubV92YWx1ZSk7Ci0gICAgICAgIGZv
ciAoYXV0byYga2V5IDogV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+Pihzb3VyY2UubV92YWx1
ZSkpCisgICAgICAgIGF1dG8mIGRlc3RpbmF0aW9uQXJyYXkgPSBzdGQ6OmdldDxWZWN0b3I8SURC
S2V5RGF0YT4+KGRlc3RpbmF0aW9uLm1fdmFsdWUpOworICAgICAgICBmb3IgKGF1dG8mIGtleSA6
IHN0ZDo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4oc291cmNlLm1fdmFsdWUpKQogICAgICAgICAg
ICAgZGVzdGluYXRpb25BcnJheS5hcHBlbmQoa2V5Lmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5OgotICAg
ICAgICBkZXN0aW5hdGlvbi5tX3ZhbHVlID0gV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+
KHNvdXJjZS5tX3ZhbHVlKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV92YWx1ZSA9IHN0ZDo6Z2V0
PFRocmVhZFNhZmVEYXRhQnVmZmVyPihzb3VyY2UubV92YWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICBkZXN0aW5hdGlv
bi5tX3ZhbHVlID0gV1RGOjpnZXQ8U3RyaW5nPihzb3VyY2UubV92YWx1ZSkuaXNvbGF0ZWRDb3B5
KCk7CisgICAgICAgIGRlc3RpbmF0aW9uLm1fdmFsdWUgPSBzdGQ6OmdldDxTdHJpbmc+KHNvdXJj
ZS5tX3ZhbHVlKS5pc29sYXRlZENvcHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5k
ZXhlZERCOjpLZXlUeXBlOjpEYXRlOgogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1i
ZXI6Ci0gICAgICAgIGRlc3RpbmF0aW9uLm1fdmFsdWUgPSBXVEY6OmdldDxkb3VibGU+KHNvdXJj
ZS5tX3ZhbHVlKTsKKyAgICAgICAgZGVzdGluYXRpb24ubV92YWx1ZSA9IHN0ZDo6Z2V0PGRvdWJs
ZT4oc291cmNlLm1fdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJbmRleGVkREI6
OktleVR5cGU6Ok1heDoKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgpAQCAtMTU5
LDI1ICsxNTksMjUgQEAgdm9pZCBJREJLZXlEYXRhOjplbmNvZGUoS2V5ZWRFbmNvZGVyJiBlbgog
ICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkOgogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7Ci0gICAgICAgIGF1dG8mIGFycmF5
ID0gV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKTsKKyAgICAgICAgYXV0byYg
YXJyYXkgPSBzdGQ6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUpOwogICAgICAgICBl
bmNvZGVyLmVuY29kZU9iamVjdHMoImFycmF5IiwgYXJyYXkuYmVnaW4oKSwgYXJyYXkuZW5kKCks
IFtdKEtleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSURCS2V5RGF0YSYga2V5KSB7CiAgICAg
ICAgICAgICBrZXkuZW5jb2RlKGVuY29kZXIpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5OiB7Ci0gICAgICAg
IGF1dG8qIGRhdGEgPSBXVEY6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkuZGF0
YSgpOworICAgICAgICBhdXRvKiBkYXRhID0gc3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+
KG1fdmFsdWUpLmRhdGEoKTsKICAgICAgICAgZW5jb2Rlci5lbmNvZGVCb29sKCJoYXNCaW5hcnki
LCAhIWRhdGEpOwogICAgICAgICBpZiAoZGF0YSkKICAgICAgICAgICAgIGVuY29kZXIuZW5jb2Rl
Qnl0ZXMoImJpbmFyeSIsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAg
ICBlbmNvZGVyLmVuY29kZVN0cmluZygic3RyaW5nIiwgV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVl
KSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKCJzdHJpbmciLCBzdGQ6OmdldDxTdHJp
bmc+KG1fdmFsdWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlU
eXBlOjpEYXRlOgogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6Ci0gICAgICAg
IGVuY29kZXIuZW5jb2RlRG91YmxlKCJudW1iZXIiLCBXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUp
KTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVEb3VibGUoIm51bWJlciIsIHN0ZDo6Z2V0PGRvdWJs
ZT4obV92YWx1ZSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5
cGU6Ok1heDoKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgpAQCAtMjE5LDEyICsy
MTksMTIgQEAgYm9vbCBJREJLZXlEYXRhOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZQogCiAgICAg
aWYgKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmcpIHsKICAgICAg
ICAgcmVzdWx0Lm1fdmFsdWUgPSBTdHJpbmcoKTsKLSAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVj
b2RlU3RyaW5nKCJzdHJpbmciLCBXVEY6OmdldDxTdHJpbmc+KHJlc3VsdC5tX3ZhbHVlKSk7Cisg
ICAgICAgIHJldHVybiBkZWNvZGVyLmRlY29kZVN0cmluZygic3RyaW5nIiwgc3RkOjpnZXQ8U3Ry
aW5nPihyZXN1bHQubV92YWx1ZSkpOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQubV90eXBlID09
IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyIHx8IHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERC
OjpLZXlUeXBlOjpEYXRlKSB7CiAgICAgICAgIHJlc3VsdC5tX3ZhbHVlID0gMC4wOwotICAgICAg
ICByZXR1cm4gZGVjb2Rlci5kZWNvZGVEb3VibGUoIm51bWJlciIsIFdURjo6Z2V0PGRvdWJsZT4o
cmVzdWx0Lm1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlRG91YmxlKCJu
dW1iZXIiLCBzdGQ6OmdldDxkb3VibGU+KHJlc3VsdC5tX3ZhbHVlKSk7CiAgICAgfQogCiAgICAg
aWYgKHJlc3VsdC5tX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnkpIHsKQEAgLTI1
Miw3ICsyNTIsNyBAQCBib29sIElEQktleURhdGE6OmRlY29kZShLZXllZERlY29kZXImIGRlCiAg
ICAgfTsKICAgICAKICAgICByZXN1bHQubV92YWx1ZSA9IFZlY3RvcjxJREJLZXlEYXRhPigpOwot
ICAgIHJldHVybiBkZWNvZGVyLmRlY29kZU9iamVjdHMoImFycmF5IiwgV1RGOjpnZXQ8VmVjdG9y
PElEQktleURhdGE+PihyZXN1bHQubV92YWx1ZSksIGFycmF5RnVuY3Rpb24pOworICAgIHJldHVy
biBkZWNvZGVyLmRlY29kZU9iamVjdHMoImFycmF5Iiwgc3RkOjpnZXQ8VmVjdG9yPElEQktleURh
dGE+PihyZXN1bHQubV92YWx1ZSksIGFycmF5RnVuY3Rpb24pOwogfQogCiBpbnQgSURCS2V5RGF0
YTo6Y29tcGFyZShjb25zdCBJREJLZXlEYXRhJiBvdGhlcikgY29uc3QKQEAgLTI3Niw4ICsyNzYs
OCBAQCBpbnQgSURCS2V5RGF0YTo6Y29tcGFyZShjb25zdCBJREJLZXlEYXRhCiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIEluZGV4ZWRE
Qjo6S2V5VHlwZTo6QXJyYXk6IHsKLSAgICAgICAgYXV0byYgYXJyYXkgPSBXVEY6OmdldDxWZWN0
b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUpOwotICAgICAgICBhdXRvJiBvdGhlckFycmF5ID0gV1RG
OjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihvdGhlci5tX3ZhbHVlKTsKKyAgICAgICAgYXV0byYg
YXJyYXkgPSBzdGQ6OmdldDxWZWN0b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUpOworICAgICAgICBh
dXRvJiBvdGhlckFycmF5ID0gc3RkOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihvdGhlci5tX3Zh
bHVlKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS5zaXplKCkgJiYgaSA8
IG90aGVyQXJyYXkuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChpbnQgcmVzdWx0ID0g
YXJyYXlbaV0uY29tcGFyZShvdGhlckFycmF5W2ldKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtMjg5LDEzICsyODksMTMgQEAgaW50IElEQktleURhdGE6OmNvbXBhcmUoY29u
c3QgSURCS2V5RGF0YQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgY2FzZSBJbmRleGVk
REI6OktleVR5cGU6OkJpbmFyeToKLSAgICAgICAgcmV0dXJuIGNvbXBhcmVCaW5hcnlLZXlEYXRh
KFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSwgV1RGOjpnZXQ8VGhyZWFk
U2FmZURhdGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVC
aW5hcnlLZXlEYXRhKHN0ZDo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSwgc3Rk
OjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpKTsKICAgICBjYXNlIElu
ZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFy
ZShXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUpLCBXVEY6OmdldDxTdHJpbmc+KG90aGVyLm1fdmFs
dWUpKTsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoc3RkOjpnZXQ8U3RyaW5nPiht
X3ZhbHVlKSwgc3RkOjpnZXQ8U3RyaW5nPihvdGhlci5tX3ZhbHVlKSk7CiAgICAgY2FzZSBJbmRl
eGVkREI6OktleVR5cGU6OkRhdGU6CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJl
cjogewotICAgICAgICBhdXRvIG51bWJlciA9IFdURjo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7Ci0g
ICAgICAgIGF1dG8gb3RoZXJOdW1iZXIgPSBXVEY6OmdldDxkb3VibGU+KG90aGVyLm1fdmFsdWUp
OworICAgICAgICBhdXRvIG51bWJlciA9IHN0ZDo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7CisgICAg
ICAgIGF1dG8gb3RoZXJOdW1iZXIgPSBzdGQ6OmdldDxkb3VibGU+KG90aGVyLm1fdmFsdWUpOwog
CiAgICAgICAgIGlmIChudW1iZXIgPT0gb3RoZXJOdW1iZXIpCiAgICAgICAgICAgICByZXR1cm4g
MDsKQEAgLTMyNCw3ICszMjQsNyBAQCBTdHJpbmcgSURCS2V5RGF0YTo6bG9nZ2luZ1N0cmluZygp
IGNvbnN0CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkFycmF5OiB7CiAgICAgICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjxhcnJheT4gLSB7
ICIpOwotICAgICAgICBhdXRvJiBhcnJheSA9IFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4o
bV92YWx1ZSk7CisgICAgICAgIGF1dG8mIGFycmF5ID0gc3RkOjpnZXQ8VmVjdG9yPElEQktleURh
dGE+PihtX3ZhbHVlKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS5zaXpl
KCk7ICsraSkgewogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJyYXlbaV0ubG9nZ2luZ1N0
cmluZygpKTsKICAgICAgICAgICAgIGlmIChpIDwgYXJyYXkuc2l6ZSgpIC0gMSkKQEAgLTMzOCw3
ICszMzgsNyBAQCBTdHJpbmcgSURCS2V5RGF0YTo6bG9nZ2luZ1N0cmluZygpIGNvbnN0CiAgICAg
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoIjxiaW5h
cnk+IC0gIik7CiAKLSAgICAgICAgYXV0byogZGF0YSA9IFdURjo6Z2V0PFRocmVhZFNhZmVEYXRh
QnVmZmVyPihtX3ZhbHVlKS5kYXRhKCk7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGQ6OmdldDxU
aHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkuZGF0YSgpOwogICAgICAgICBpZiAoIWRhdGEp
IHsKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIobnVsbCkiKTsKICAgICAgICAgICAgIHJl
c3VsdCA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTM1OSwxMiArMzU5LDEyIEBAIFN0cmluZyBJ
REJLZXlEYXRhOjpsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6Ci0gICAgICAgIHJlc3VsdCA9ICI8
c3RyaW5nPiAtICIgKyBXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUpOworICAgICAgICByZXN1bHQg
PSAiPHN0cmluZz4gLSAiICsgc3RkOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6Ci0gICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKCI8ZGF0ZT4gLSAiLCBXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoIjxkYXRlPiAtICIsIHN0ZDo6Z2V0PGRvdWJsZT4obV92YWx1
ZSkpOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6Ci0gICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCI8bnVtYmVyPiAtICIsIFdURjo6Z2V0PGRvdWJsZT4obV92YWx1ZSkpOwor
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiPG51bWJlcj4gLSAiLCBzdGQ6OmdldDxkb3VibGU+
KG1fdmFsdWUpKTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4OgogICAgICAgICBy
ZXR1cm4gIjxtYXhpbXVtPiJfczsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgpA
QCAtNDUxLDEzICs0NTEsMTMgQEAgYm9vbCBJREJLZXlEYXRhOjpvcGVyYXRvcj09KGNvbnN0IElE
QktleQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6
TnVtYmVyOgogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlOgotICAgICAgICByZXR1
cm4gV1RGOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKSA9PSBXVEY6OmdldDxkb3VibGU+KG90aGVyLm1f
dmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpnZXQ8ZG91YmxlPihtX3ZhbHVlKSA9PSBzdGQ6
OmdldDxkb3VibGU+KG90aGVyLm1fdmFsdWUpOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBl
OjpTdHJpbmc6Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxTdHJpbmc+KG1fdmFsdWUpID09IFdU
Rjo6Z2V0PFN0cmluZz4ob3RoZXIubV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxT
dHJpbmc+KG1fdmFsdWUpID09IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIubV92YWx1ZSk7CiAgICAg
Y2FzZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeToKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0
PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKSA9PSBXVEY6OmdldDxUaHJlYWRTYWZlRGF0
YUJ1ZmZlcj4ob3RoZXIubV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxUaHJlYWRT
YWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkgPT0gc3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+
KG90aGVyLm1fdmFsdWUpOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheToKLSAg
ICAgICAgcmV0dXJuIFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSkgPT0gV1RG
OjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihvdGhlci5tX3ZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSkgPT0gc3RkOjpnZXQ8VmVjdG9y
PElEQktleURhdGE+PihvdGhlci5tX3ZhbHVlKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KQEAgLTQ3MywxNCArNDczLDE0IEBAIHNpemVfdCBJREJLZXlEYXRh
OjpzaXplKCkgY29uc3QKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6IHsKICAg
ICAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBhcnJheTsKICAgICAgICAgc2l6ZV90IHRvdGFs
U2l6ZSA9IDA7Ci0gICAgICAgIGZvciAoYXV0byYga2V5RGF0YSA6IFdURjo6Z2V0PFZlY3RvcjxJ
REJLZXlEYXRhPj4obV92YWx1ZSkpCisgICAgICAgIGZvciAoYXV0byYga2V5RGF0YSA6IHN0ZDo6
Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSkpCiAgICAgICAgICAgICB0b3RhbFNpemUg
Kz0ga2V5RGF0YS5zaXplKCk7CiAgICAgICAgIHJldHVybiB0b3RhbFNpemU7CiAgICAgfQogICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6Ci0gICAgICAgIHJldHVybiBXVEY6Omdl
dDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkuc2l6ZSgpOworICAgICAgICByZXR1cm4g
c3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpLnNpemUoKTsKICAgICBjYXNl
IEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8U3Ry
aW5nPihtX3ZhbHVlKS5zaXplSW5CeXRlcygpOworICAgICAgICByZXR1cm4gc3RkOjpnZXQ8U3Ry
aW5nPihtX3ZhbHVlKS5zaXplSW5CeXRlcygpOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBl
OjpEYXRlOgogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJl
dHVybiBzaXplb2YoZG91YmxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlEYXRhLmgJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDEz
ICsxMzAsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW5k
ZXhlZERCOjpLZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBl
OjpEYXRlOgotICAgICAgICAgICAgaGFzaENvZGVzLmFwcGVuZChTdHJpbmdIYXNoZXI6Omhhc2hN
ZW1vcnk8c2l6ZW9mKGRvdWJsZSk+KCZXVEY6OmdldDxkb3VibGU+KG1fdmFsdWUpKSk7CisgICAg
ICAgICAgICBoYXNoQ29kZXMuYXBwZW5kKFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2Yo
ZG91YmxlKT4oJnN0ZDo6Z2V0PGRvdWJsZT4obV92YWx1ZSkpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICAgICAg
aGFzaENvZGVzLmFwcGVuZChTdHJpbmdIYXNoOjpoYXNoKFdURjo6Z2V0PFN0cmluZz4obV92YWx1
ZSkpKTsKKyAgICAgICAgICAgIGhhc2hDb2Rlcy5hcHBlbmQoU3RyaW5nSGFzaDo6aGFzaChzdGQ6
OmdldDxTdHJpbmc+KG1fdmFsdWUpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBJbmRleGVkREI6OktleVR5cGU6OkJpbmFyeTogewotICAgICAgICAgICAgYXV0byogZGF0YSA9
IFdURjo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKS5kYXRhKCk7CisgICAgICAg
ICAgICBhdXRvKiBkYXRhID0gc3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1fdmFsdWUp
LmRhdGEoKTsKICAgICAgICAgICAgIGlmICghZGF0YSkKICAgICAgICAgICAgICAgICBoYXNoQ29k
ZXMuYXBwZW5kKDApOwogICAgICAgICAgICAgZWxzZQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSW5kZXhlZERC
OjpLZXlUeXBlOjpBcnJheToKLSAgICAgICAgICAgIGZvciAoYXV0byYga2V5IDogV1RGOjpnZXQ8
VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKSkKKyAgICAgICAgICAgIGZvciAoYXV0byYga2V5
IDogc3RkOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihtX3ZhbHVlKSkKICAgICAgICAgICAgICAg
ICBoYXNoQ29kZXMuYXBwZW5kKGtleS5oYXNoKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTE1NSwzMSArMTU1LDMxIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc3RyaW5nKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gSW5kZXhlZERCOjpLZXlUeXBl
OjpTdHJpbmcpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFN0cmluZz4obV92YWx1ZSk7CiAgICAgfQogCiAgICAgZG91
YmxlIGRhdGUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbmRleGVk
REI6OktleVR5cGU6OkRhdGUpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8ZG91YmxlPihtX3Zh
bHVlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7CiAgICAgfQog
CiAgICAgZG91YmxlIG51bWJlcigpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBl
ID09IEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyKTsKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0
PGRvdWJsZT4obV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxkb3VibGU+KG1fdmFs
dWUpOwogICAgIH0KIAogICAgIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiBiaW5hcnkoKSBj
b25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBJbmRleGVkREI6OktleVR5cGU6
OkJpbmFyeSk7Ci0gICAgICAgIHJldHVybiBXVEY6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4o
bV92YWx1ZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4o
bV92YWx1ZSk7CiAgICAgfQogCiAgICAgY29uc3QgVmVjdG9yPElEQktleURhdGE+JiBhcnJheSgp
IGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IEluZGV4ZWREQjo6S2V5VHlw
ZTo6QXJyYXkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8VmVjdG9yPElEQktleURhdGE+Piht
X3ZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92
YWx1ZSk7CiAgICAgfQogCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdDsKQEAgLTIzNSwxNyArMjM1
LDE3IEBAIHZvaWQgSURCS2V5RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIKICAgICBjYXNl
IEluZGV4ZWREQjo6S2V5VHlwZTo6TWluOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6QXJyYXk6Ci0gICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8VmVjdG9y
PElEQktleURhdGE+PihtX3ZhbHVlKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxWZWN0
b3I8SURCS2V5RGF0YT4+KG1fdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluZGV4
ZWREQjo6S2V5VHlwZTo6QmluYXJ5OgotICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0PFRocmVh
ZFNhZmVEYXRhQnVmZmVyPihtX3ZhbHVlKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxU
aHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
SW5kZXhlZERCOjpLZXlUeXBlOjpTdHJpbmc6Ci0gICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8
U3RyaW5nPihtX3ZhbHVlKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxTdHJpbmc+KG1f
dmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0
ZToKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TnVtYmVyOgotICAgICAgICBlbmNvZGVy
IDw8IFdURjo6Z2V0PGRvdWJsZT4obV92YWx1ZSk7CisgICAgICAgIGVuY29kZXIgPDwgc3RkOjpn
ZXQ8ZG91YmxlPihtX3ZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMjcwLDIz
ICsyNzAsMjMgQEAgc3RkOjpvcHRpb25hbDxJREJLZXlEYXRhPiBJREJLZXlEYXRhOjpkZQogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6CiAgICAgICAg
IGtleURhdGEubV92YWx1ZSA9IFZlY3RvcjxJREJLZXlEYXRhPigpOwotICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKFdURjo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4oa2V5RGF0YS5tX3ZhbHVl
KSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RkOjpnZXQ8VmVjdG9yPElEQktleURh
dGE+PihrZXlEYXRhLm1fdmFsdWUpKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6CiAg
ICAgICAgIGtleURhdGEubV92YWx1ZSA9IFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7Ci0gICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoV1RGOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KGtleURh
dGEubV92YWx1ZSkpKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0ZDo6Z2V0PFRocmVh
ZFNhZmVEYXRhQnVmZmVyPihrZXlEYXRhLm1fdmFsdWUpKSkKICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBl
OjpTdHJpbmc6CiAgICAgICAgIGtleURhdGEubV92YWx1ZSA9IFN0cmluZygpOwotICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKFdURjo6Z2V0PFN0cmluZz4oa2V5RGF0YS5tX3ZhbHVlKSkpCisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RkOjpnZXQ8U3RyaW5nPihrZXlEYXRhLm1fdmFs
dWUpKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpEYXRlOgogICAgIGNhc2UgSW5kZXhlZERCOjpL
ZXlUeXBlOjpOdW1iZXI6CiAgICAgICAgIGtleURhdGEubV92YWx1ZSA9IDAuMDsKLSAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShXVEY6OmdldDxkb3VibGU+KGtleURhdGEubV92YWx1ZSkpKQor
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0ZDo6Z2V0PGRvdWJsZT4oa2V5RGF0YS5tX3Zh
bHVlKSkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBicmVhazsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNj
ZWl2ZXI+PiBSVENQCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHdpdGhUcmFjaykpIHsKLSAgICAgICAgY29uc3Qg
U3RyaW5nJiBraW5kID0gV1RGOjpnZXQ8U3RyaW5nPih3aXRoVHJhY2spOworICAgICAgICBjb25z
dCBTdHJpbmcmIGtpbmQgPSBzdGQ6OmdldDxTdHJpbmc+KHdpdGhUcmFjayk7CiAgICAgICAgIGlm
IChraW5kICE9ICJhdWRpbyJfcyAmJiBraW5kICE9ICJ2aWRlbyJfcykKICAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIApAQCAtMTk2LDcgKzE5Niw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IFJUQ1AKICAgICBpZiAoaXNDbG9zZWQoKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICBh
dXRvIHRyYWNrID0gV1RGOjpnZXQ8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+Pih3aXRoVHJhY2sp
LnJlbGVhc2VOb25OdWxsKCk7CisgICAgYXV0byB0cmFjayA9IHN0ZDo6Z2V0PFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPj4od2l0aFRyYWNrKS5yZWxlYXNlTm9uTnVsbCgpOwogICAgIHJldHVybiBt
X2JhY2tlbmQtPmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhY2spLCBpbml0KTsKIH0KIApAQCAt
ODQ2LDcgKzg0Niw3IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8UGVlckNvbm5lY3Rpb24K
ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGFsZ29yaXRobUlkZW50aWZp
ZXIpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJBbGdv
cml0aG0gaXMgbm90IHN1cHBvcnRlZCJfcyB9OwogCi0gICAgYXV0byYgdmFsdWUgPSBXVEY6Omdl
dDxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4oYWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAg
YXV0byYgdmFsdWUgPSBzdGQ6OmdldDxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4oYWxnb3Jp
dGhtSWRlbnRpZmllcik7CiAKICAgICBKU0M6OlZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qu
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTRnJhbWVUcmFuc2Zvcm0uY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFtZVRyYW5zZm9ybS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSVENSdHBTRnJhbWVUcmFuc2Zvcm06OnNldEVu
Y3J5cHRpbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFdURjo6Z2V0PENyeXB0
b0tleUFsZ29yaXRobT4oYWxnb3JpdGhtKS5uYW1lICE9ICJIS0RGIikgeworICAgIGlmIChzdGQ6
OmdldDxDcnlwdG9LZXlBbGdvcml0aG0+KGFsZ29yaXRobSkubmFtZSAhPSAiSEtERiIpIHsKICAg
ICAgICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiT25seSBIS0RGIGlz
IHN1cHBvcnRlZCJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25FZmZlY3QuY3BwCShyZXZpc2lvbiAyODQwOTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uRWZmZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzg1LDExICszODUsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQW5pbWF0aW9u
RWZmZWN0Ojp1cGRhdAogICAgIC8vIEZJWE1FOiBzaG91bGQgaXQgbm90IHRocm93IGFuIGV4Y2Vw
dGlvbiBvbiBhIHN0cmluZyBvdGhlciB0aGFuICJhdXRvIj8KICAgICBpZiAodGltaW5nLT5kdXJh
dGlvbikgewogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHRpbWlu
Zy0+ZHVyYXRpb24udmFsdWUoKSkpIHsKLSAgICAgICAgICAgIGF1dG8gZHVyYXRpb25Bc0RvdWJs
ZSA9IFdURjo6Z2V0PGRvdWJsZT4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKTsKKyAgICAgICAg
ICAgIGF1dG8gZHVyYXRpb25Bc0RvdWJsZSA9IHN0ZDo6Z2V0PGRvdWJsZT4odGltaW5nLT5kdXJh
dGlvbi52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChkdXJhdGlvbkFzRG91YmxlIDwgMCB8fCBz
dGQ6OmlzbmFuKGR1cmF0aW9uQXNEb3VibGUpKQogICAgICAgICAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IgfTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChX
VEY6OmdldDxTdHJpbmc+KHRpbWluZy0+ZHVyYXRpb24udmFsdWUoKSkgIT0gImF1dG8iKQorICAg
ICAgICAgICAgaWYgKHN0ZDo6Z2V0PFN0cmluZz4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSAh
PSAiYXV0byIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9
OwogICAgICAgICB9CiAgICAgfQpAQCAtNDI5LDcgKzQyOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEFuaW1hdGlvbkVmZmVjdDo6dXBkYXQKICAgICAgICAgbV9pdGVyYXRpb25zID0gdGltaW5nLT5p
dGVyYXRpb25zLnZhbHVlKCk7CiAKICAgICBpZiAodGltaW5nLT5kdXJhdGlvbikKLSAgICAgICAg
bV9pdGVyYXRpb25EdXJhdGlvbiA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPih0aW1p
bmctPmR1cmF0aW9uLnZhbHVlKCkpID8gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyhXVEY6Omdl
dDxkb3VibGU+KHRpbWluZy0+ZHVyYXRpb24udmFsdWUoKSkpIDogMF9zOworICAgICAgICBtX2l0
ZXJhdGlvbkR1cmF0aW9uID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KHRpbWluZy0+
ZHVyYXRpb24udmFsdWUoKSkgPyBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKHN0ZDo6Z2V0PGRv
dWJsZT4odGltaW5nLT5kdXJhdGlvbi52YWx1ZSgpKSkgOiAwX3M7CiAKICAgICBpZiAodGltaW5n
LT5kaXJlY3Rpb24pCiAgICAgICAgIG1fZGlyZWN0aW9uID0gdGltaW5nLT5kaXJlY3Rpb24udmFs
dWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNw
cAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI0LDIwICszMjQsMjAgQEAgc3RhdGljIGlu
bGluZSBFeGNlcHRpb25Pcjx2b2lkPiBwcm9jZXNzSQogICAgICAgICAvLyBXaGVuIGNhbGxpbmcg
cHJvY2Vzc0tleWZyYW1lTGlrZU9iamVjdCgpIHdpdGggdGhlICJhbGxvdyBsaXN0cyIgZmxhZyBz
ZXQgdG8gZmFsc2UsIHRoZSBvbmx5IG9mZnNldAogICAgICAgICAvLyBhbHRlcm5hdGl2ZXMgd2Ug
c2hvdWxkIGV4cGVjdCBhcmUgZG91YmxlIGFuZCBudWxscHRyLgogICAgICAgICBpZiAoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxkb3VibGU+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJvcGVydGll
cy5vZmZzZXQpKQotICAgICAgICAgICAga2V5ZnJhbWVPdXRwdXQub2Zmc2V0ID0gV1RGOjpnZXQ8
ZG91YmxlPihrZXlmcmFtZUxpa2VPYmplY3QuYmFzZVByb3BlcnRpZXMub2Zmc2V0KTsKKyAgICAg
ICAgICAgIGtleWZyYW1lT3V0cHV0Lm9mZnNldCA9IHN0ZDo6Z2V0PGRvdWJsZT4oa2V5ZnJhbWVM
aWtlT2JqZWN0LmJhc2VQcm9wZXJ0aWVzLm9mZnNldCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIEFTU0VSVChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6bnVsbHB0cl90PihrZXlmcmFt
ZUxpa2VPYmplY3QuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSk7CiAKICAgICAgICAgLy8gV2hlbiBj
YWxsaW5nIHByb2Nlc3NLZXlmcmFtZUxpa2VPYmplY3QoKSB3aXRoIHRoZSAiYWxsb3cgbGlzdHMi
IGZsYWcgc2V0IHRvIGZhbHNlLCB0aGUgb25seSBlYXNpbmcKICAgICAgICAgLy8gYWx0ZXJuYXRp
dmUgd2Ugc2hvdWxkIGV4cGVjdCBpcyBTdHJpbmcuCiAgICAgICAgIEFTU0VSVChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFN0cmluZz4oa2V5ZnJhbWVMaWtlT2JqZWN0LmJhc2VQcm9wZXJ0aWVzLmVh
c2luZykpOwotICAgICAgICBrZXlmcmFtZU91dHB1dC5lYXNpbmcgPSBXVEY6OmdldDxTdHJpbmc+
KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJvcGVydGllcy5lYXNpbmcpOworICAgICAgICBrZXlm
cmFtZU91dHB1dC5lYXNpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KGtleWZyYW1lTGlrZU9iamVjdC5i
YXNlUHJvcGVydGllcy5lYXNpbmcpOwogCiAgICAgICAgIC8vIFdoZW4gY2FsbGluZyBwcm9jZXNz
S2V5ZnJhbWVMaWtlT2JqZWN0KCkgd2l0aCB0aGUgImFsbG93IGxpc3RzIiBmbGFnIHNldCB0byBm
YWxzZSwgdGhlIG9ubHkgY29tcG9zaXRlCiAgICAgICAgIC8vIGFsdGVybmF0aXZlcyB3ZSBzaG91
bGQgZXhwZWN0IGlzIENvbXBvc2l0ZU9wZXJhdGlvbkF1dG8uCiAgICAgICAgIGlmIChkb2N1bWVu
dC5zZXR0aW5ncygpLndlYkFuaW1hdGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZCgpKSB7
CiAgICAgICAgICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDb21wb3NpdGVPcGVy
YXRpb25PckF1dG8+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJvcGVydGllcy5jb21wb3NpdGUp
KTsKLSAgICAgICAgICAgIGtleWZyYW1lT3V0cHV0LmNvbXBvc2l0ZSA9IFdURjo6Z2V0PENvbXBv
c2l0ZU9wZXJhdGlvbk9yQXV0bz4oa2V5ZnJhbWVMaWtlT2JqZWN0LmJhc2VQcm9wZXJ0aWVzLmNv
bXBvc2l0ZSk7CisgICAgICAgICAgICBrZXlmcmFtZU91dHB1dC5jb21wb3NpdGUgPSBzdGQ6Omdl
dDxDb21wb3NpdGVPcGVyYXRpb25PckF1dG8+KGtleWZyYW1lTGlrZU9iamVjdC5iYXNlUHJvcGVy
dGllcy5jb21wb3NpdGUpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0
eUFuZFZhbHVlIDoga2V5ZnJhbWVMaWtlT2JqZWN0LnByb3BlcnRpZXNBbmRWYWx1ZXMpIHsKQEAg
LTQzOCw5ICs0MzgsOSBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NQ
CiAgICAgLy8gICAgLSBkb3VibGU/LCBhIHNlcXVlbmNlIG9mIGxlbmd0aCBvbmUgd2l0aCB0aGUg
dmFsdWUgb2Yg4oCcb2Zmc2V04oCdIGFzIGl0cyBzaW5nbGUgaXRlbSwgaS5lLiDCqyBvZmZzZXQg
wrssCiAgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4gb2Zmc2V0czsKICAgICBpZiAo
c3RkOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8c3RkOjpvcHRpb25hbDxkb3VibGU+Pj4ocHJv
cGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKLSAgICAgICAgb2Zm
c2V0cyA9IFdURjo6Z2V0PFZlY3RvcjxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+Pihwcm9wZXJ0eUlu
ZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5vZmZzZXQpOworICAgICAgICBvZmZzZXRzID0g
c3RkOjpnZXQ8VmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4+KHByb3BlcnR5SW5kZXhlZEtl
eWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCk7CiAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxkb3VibGU+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVz
Lm9mZnNldCkpCi0gICAgICAgIG9mZnNldHMuYXBwZW5kKFdURjo6Z2V0PGRvdWJsZT4ocHJvcGVy
dHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSk7CisgICAgICAgIG9mZnNl
dHMuYXBwZW5kKHN0ZDo6Z2V0PGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVBy
b3BlcnRpZXMub2Zmc2V0KSk7CiAgICAgZWxzZSBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxz
dGQ6Om51bGxwdHJfdD4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zm
c2V0KSkKICAgICAgICAgb2Zmc2V0cy5hcHBlbmQoc3RkOjpudWxsb3B0KTsKIApAQCAtNDUzLDkg
KzQ1Myw5IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc1AKICAgICAv
LyAgICAtIERPTVN0cmluZywgYSBzZXF1ZW5jZSBvZiBsZW5ndGggb25lIHdpdGggdGhlIHZhbHVl
IG9mIOKAnGVhc2luZ+KAnSBhcyBpdHMgc2luZ2xlIGl0ZW0sIGkuZS4gwqsgZWFzaW5nIMK7LAog
ICAgIFZlY3RvcjxTdHJpbmc+IGVhc2luZ3M7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8VmVjdG9yPFN0cmluZz4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVz
LmVhc2luZykpCi0gICAgICAgIGVhc2luZ3MgPSBXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4ocHJv
cGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMuZWFzaW5nKTsKKyAgICAgICAgZWFz
aW5ncyA9IHN0ZDo6Z2V0PFZlY3RvcjxTdHJpbmc+Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5i
YXNlUHJvcGVydGllcy5lYXNpbmcpOwogICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5lYXNpbmcp
KQotICAgICAgICBlYXNpbmdzLmFwcGVuZChXVEY6OmdldDxTdHJpbmc+KHByb3BlcnR5SW5kZXhl
ZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLmVhc2luZykpOworICAgICAgICBlYXNpbmdzLmFwcGVu
ZChzdGQ6OmdldDxTdHJpbmc+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVz
LmVhc2luZykpOwogCiAgICAgLy8gOC4gSWYgZWFzaW5ncyBpcyBhbiBlbXB0eSBzZXF1ZW5jZSwg
bGV0IGl0IGJlIGEgc2VxdWVuY2Ugb2YgbGVuZ3RoIG9uZSBjb250YWluaW5nIHRoZSBzaW5nbGUg
dmFsdWUg4oCcbGluZWFy4oCdLCBpLmUuIMKrICJsaW5lYXIiIMK7LgogICAgIGlmIChlYXNpbmdz
LmlzRW1wdHkoKSkKQEAgLTQ4Miw5ICs0ODIsOSBAQCBzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9y
PHZvaWQ+IHByb2Nlc3NQCiAgICAgaWYgKGRvY3VtZW50LnNldHRpbmdzKCkud2ViQW5pbWF0aW9u
c0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkKCkpIHsKICAgICAgICAgVmVjdG9yPENvbXBvc2l0
ZU9wZXJhdGlvbk9yQXV0bz4gY29tcG9zaXRlTW9kZXM7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFZlY3RvcjxDb21wb3NpdGVPcGVyYXRpb25PckF1dG8+Pihwcm9wZXJ0eUlu
ZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5jb21wb3NpdGUpKQotICAgICAgICAgICAgY29t
cG9zaXRlTW9kZXMgPSBXVEY6OmdldDxWZWN0b3I8Q29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvPj4o
cHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMuY29tcG9zaXRlKTsKKyAgICAg
ICAgICAgIGNvbXBvc2l0ZU1vZGVzID0gc3RkOjpnZXQ8VmVjdG9yPENvbXBvc2l0ZU9wZXJhdGlv
bk9yQXV0bz4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLmNvbXBvc2l0
ZSk7CiAgICAgICAgIGVsc2UgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q29tcG9zaXRlT3Bl
cmF0aW9uT3JBdXRvPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5jb21w
b3NpdGUpKQotICAgICAgICAgICAgY29tcG9zaXRlTW9kZXMuYXBwZW5kKFdURjo6Z2V0PENvbXBv
c2l0ZU9wZXJhdGlvbk9yQXV0bz4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRp
ZXMuY29tcG9zaXRlKSk7CisgICAgICAgICAgICBjb21wb3NpdGVNb2Rlcy5hcHBlbmQoc3RkOjpn
ZXQ8Q29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNl
UHJvcGVydGllcy5jb21wb3NpdGUpKTsKICAgICAgICAgaWYgKCFjb21wb3NpdGVNb2Rlcy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIC8vIDEuIExldCBjb21wb3NpdGUgbW9kZXMgYmUgYSBzZXF1
ZW5jZSBvZiBDb21wb3NpdGVPcGVyYXRpb25PckF1dG8gdmFsdWVzIGFzc2lnbmVkIGZyb20gdGhl
IOKAnGNvbXBvc2l0ZeKAnSBtZW1iZXIgb2YgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZS4gSWYg
dGhhdCBtZW1iZXIgaXMgYSBzaW5nbGUKICAgICAgICAgICAgIC8vICAgIENvbXBvc2l0ZU9wZXJh
dGlvbk9yQXV0byB2YWx1ZSBvcGVyYXRpb24sIGxldCBjb21wb3NpdGUgbW9kZXMgYmUgYSBzZXF1
ZW5jZSBvZiBsZW5ndGggb25lLCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUg4oCcY29tcG9zaXRl4oCd
IGFzIGl0cyBzaW5nbGUgaXRlbS4KQEAgLTUxNSwxMCArNTE1LDEwIEBAIEV4Y2VwdGlvbk9yPFJl
ZjxLZXlmcmFtZUVmZmVjdD4+IEtleWZyYW0KICAgICAgICAgT3B0aW9uYWxFZmZlY3RUaW1pbmcg
dGltaW5nOwogICAgICAgICBhdXRvIG9wdGlvbnNWYWx1ZSA9IG9wdGlvbnMudmFsdWUoKTsKICAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8ZG91YmxlPihvcHRpb25zVmFsdWUpKSB7
Ci0gICAgICAgICAgICBzdGQ6OnZhcmlhbnQ8ZG91YmxlLCBTdHJpbmc+IGR1cmF0aW9uID0gV1RG
OjpnZXQ8ZG91YmxlPihvcHRpb25zVmFsdWUpOworICAgICAgICAgICAgc3RkOjp2YXJpYW50PGRv
dWJsZSwgU3RyaW5nPiBkdXJhdGlvbiA9IHN0ZDo6Z2V0PGRvdWJsZT4ob3B0aW9uc1ZhbHVlKTsK
ICAgICAgICAgICAgIHRpbWluZy5kdXJhdGlvbiA9IGR1cmF0aW9uOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgYXV0byBrZXlmcmFtZUVmZmVjdE9wdGlvbnMgPSBXVEY6OmdldDxLZXlm
cmFtZUVmZmVjdE9wdGlvbnM+KG9wdGlvbnNWYWx1ZSk7CisgICAgICAgICAgICBhdXRvIGtleWZy
YW1lRWZmZWN0T3B0aW9ucyA9IHN0ZDo6Z2V0PEtleWZyYW1lRWZmZWN0T3B0aW9ucz4ob3B0aW9u
c1ZhbHVlKTsKIAogICAgICAgICAgICAgYXV0byBzZXRQc2V1ZG9FbGVtZW50UmVzdWx0ID0ga2V5
ZnJhbWVFZmZlY3QtPnNldFBzZXVkb0VsZW1lbnQoa2V5ZnJhbWVFZmZlY3RPcHRpb25zLnBzZXVk
b0VsZW1lbnQpOwogICAgICAgICAgICAgaWYgKHNldFBzZXVkb0VsZW1lbnRSZXN1bHQuaGFzRXhj
ZXB0aW9uKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
MSw3ICszMzEsNyBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShKU0dsb2JhCiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBrZXlQYXRoRWxlbWVudHM7CiAgICAgSURCS2V5UGF0aFBhcnNl
RXJyb3IgZXJyb3I7Ci0gICAgSURCUGFyc2VLZXlQYXRoKFdURjo6Z2V0PFN0cmluZz4oa2V5UGF0
aCksIGtleVBhdGhFbGVtZW50cywgZXJyb3IpOworICAgIElEQlBhcnNlS2V5UGF0aChzdGQ6Omdl
dDxTdHJpbmc+KGtleVBhdGgpLCBrZXlQYXRoRWxlbWVudHMsIGVycm9yKTsKICAgICBBU1NFUlQo
ZXJyb3IgPT0gSURCS2V5UGF0aFBhcnNlRXJyb3I6Ok5vbmUpOwogCiAgICAgaWYgKGtleVBhdGhF
bGVtZW50cy5pc0VtcHR5KCkpCkBAIC0zNTksNyArMzU5LDcgQEAgYm9vbCBpbmplY3RJREJLZXlJ
bnRvU2NyaXB0VmFsdWUoSlNHbG9iYQogUmVmUHRyPElEQktleT4gbWF5YmVDcmVhdGVJREJLZXlG
cm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoKQogewogICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxTdHJpbmc+PihrZXlQYXRoKSkgewotICAg
ICAgICBhdXRvJiBhcnJheSA9IFdURjo6Z2V0PFZlY3RvcjxTdHJpbmc+PihrZXlQYXRoKTsKKyAg
ICAgICAgYXV0byYgYXJyYXkgPSBzdGQ6OmdldDxWZWN0b3I8U3RyaW5nPj4oa2V5UGF0aCk7CiAg
ICAgICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4gcmVzdWx0OwogICAgICAgICByZXN1bHQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShhcnJheS5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIHN0
cmluZyA6IGFycmF5KSB7CkBAIC0zNzEsNyArMzcxLDcgQEAgUmVmUHRyPElEQktleT4gbWF5YmVD
cmVhdGVJREJLZXlGcm9tU2NyaQogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVBcnJheShX
VEZNb3ZlKHJlc3VsdCkpOwogICAgIH0KIAotICAgIHJldHVybiBpbnRlcm5hbENyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIFdU
Rjo6Z2V0PFN0cmluZz4oa2V5UGF0aCkpOworICAgIHJldHVybiBpbnRlcm5hbENyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIHN0
ZDo6Z2V0PFN0cmluZz4oa2V5UGF0aCkpOwogfQogCiBib29sIGNhbkluamVjdElEQktleUludG9T
Y3JpcHRWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSBz
Y3JpcHRWYWx1ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKQEAgLTM4MSw3ICszODEsNyBA
QCBib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShKU0dsCiAgICAgQVNTRVJUKHN0
ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihrZXlQYXRoKSk7CiAgICAgVmVjdG9yPFN0cmlu
Zz4ga2V5UGF0aEVsZW1lbnRzOwogICAgIElEQktleVBhdGhQYXJzZUVycm9yIGVycm9yOwotICAg
IElEQlBhcnNlS2V5UGF0aChXVEY6OmdldDxTdHJpbmc+KGtleVBhdGgpLCBrZXlQYXRoRWxlbWVu
dHMsIGVycm9yKTsKKyAgICBJREJQYXJzZUtleVBhdGgoc3RkOjpnZXQ8U3RyaW5nPihrZXlQYXRo
KSwga2V5UGF0aEVsZW1lbnRzLCBlcnJvcik7CiAgICAgQVNTRVJUKGVycm9yID09IElEQktleVBh
dGhQYXJzZUVycm9yOjpOb25lKTsKIAogICAgIGlmICgha2V5UGF0aEVsZW1lbnRzLnNpemUoKSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCShyZXZpc2lvbiAyODQw
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTUsMTIgKzk1LDEyIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHQKIAogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oYWxnb3Jp
dGhtSWRlbnRpZmllcikpIHsKICAgICAgICAgYXV0byBuZXdQYXJhbXMgPSBTdHJvbmc8SlNPYmpl
Y3Q+KHZtLCBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmc3RhdGUpKTsKLSAgICAgICAgbmV3UGFyYW1z
LT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJuYW1lIiksIGpzU3Ry
aW5nKHZtLCBXVEY6OmdldDxTdHJpbmc+KGFsZ29yaXRobUlkZW50aWZpZXIpKSk7CisgICAgICAg
IG5ld1BhcmFtcy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibmFt
ZSIpLCBqc1N0cmluZyh2bSwgc3RkOjpnZXQ8U3RyaW5nPihhbGdvcml0aG1JZGVudGlmaWVyKSkp
OwogICAgICAgICAKICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZUNyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnMoc3RhdGUsIG5ld1BhcmFtcywgb3BlcmF0aW9uKTsKICAgICB9CiAKLSAgICBhdXRvJiB2
YWx1ZSA9IFdURjo6Z2V0PEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PihhbGdvcml0aG1JZGVu
dGlmaWVyKTsKKyAgICBhdXRvJiB2YWx1ZSA9IHN0ZDo6Z2V0PEpTQzo6U3Ryb25nPEpTQzo6SlNP
YmplY3Q+PihhbGdvcml0aG1JZGVudGlmaWVyKTsKIAogICAgIGF1dG8gcGFyYW1zID0gY29udmVy
dERpY3Rpb25hcnk8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4oc3RhdGUsIHZhbHVlLmdldCgp
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwpAQCAtOTQ5LDEyICs5NDksMTIgQEAgdm9pZCBTdWJ0bGVDcnlwdG86
OmV4cG9ydEtleShLZXlGb3JtYXQgZgogICAgICAgICAgICAgY2FzZSBTdWJ0bGVDcnlwdG86Oktl
eUZvcm1hdDo6U3BraToKICAgICAgICAgICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6
OlBrY3M4OgogICAgICAgICAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6UmF3OiB7
Ci0gICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiByYXdLZXkgPSBXVEY6OmdldDxWZWN0
b3I8dWludDhfdD4+KGtleSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiByYXdL
ZXkgPSBzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGtleSk7CiAgICAgICAgICAgICAgICAgZnVs
ZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlzZS5yZWxlYXNlTm9uTnVsbCgpLCByYXdL
ZXkuZGF0YSgpLCByYXdLZXkuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0OjpKd2s6
Ci0gICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExEaWN0aW9uYXJ5PEpzb25XZWJL
ZXk+PihXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGtleSkpKTsKKyAgICAgICAgICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlPElETERpY3Rpb25hcnk8SnNvbldlYktleT4+KFdURk1vdmUoc3Rk
OjpnZXQ8SnNvbldlYktleT4oa2V5KSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTAyNSwxMSAr
MTAyNSwxMSBAQCB2b2lkIFN1YnRsZUNyeXB0bzo6d3JhcEtleShKU0M6OkpTR2xvYmFsCiAgICAg
ICAgICAgICAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6U3BraToKICAgICAgICAg
ICAgICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0OjpQa2NzODoKICAgICAgICAgICAg
ICAgICBjYXNlIFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0OjpSYXc6Ci0gICAgICAgICAgICAgICAg
ICAgIGJ5dGVzID0gV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihrZXkpOworICAgICAgICAgICAg
ICAgICAgICBieXRlcyA9IHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oa2V5KTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBTdWJ0bGVDcnlwdG86Oktl
eUZvcm1hdDo6SndrOiB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDb252ZXJ0aW5n
IHRvIEpTIGp1c3QgdG8gSlNPTi1TdHJpbmdpZnkgc2VlbXMgaW5lZmZpY2llbnQuIFdlIHNob3Vs
ZCBmaW5kIGEgd2F5IHRvIGdvIGRpcmVjdGx5IGZyb20gdGhlIHN0cnVjdCB0byBKU09OLgotICAg
ICAgICAgICAgICAgICAgICBhdXRvIGp3ayA9IHRvSlM8SURMRGljdGlvbmFyeTxKc29uV2ViS2V5
Pj4oKihwcm9taXNlLT5nbG9iYWxPYmplY3QoKSksICoocHJvbWlzZS0+Z2xvYmFsT2JqZWN0KCkp
LCBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGtleSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBqd2sgPSB0b0pTPElETERpY3Rpb25hcnk8SnNvbldlYktleT4+KCoocHJvbWlzZS0+
Z2xvYmFsT2JqZWN0KCkpLCAqKHByb21pc2UtPmdsb2JhbE9iamVjdCgpKSwgV1RGTW92ZShzdGQ6
OmdldDxKc29uV2ViS2V5PihrZXkpKSk7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBqd2tT
dHJpbmcgPSBKU09OU3RyaW5naWZ5KHByb21pc2UtPmdsb2JhbE9iamVjdCgpLCBqd2ssIDApOwog
ICAgICAgICAgICAgICAgICAgICBDU3RyaW5nIGp3a1V0ZjhTdHJpbmcgPSBqd2tTdHJpbmcudXRm
OChTdHJpY3RDb252ZXJzaW9uKTsKICAgICAgICAgICAgICAgICAgICAgYnl0ZXMuYXBwZW5kKGp3
a1V0ZjhTdHJpbmcuZGF0YSgpLCBqd2tVdGY4U3RyaW5nLmxlbmd0aCgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DQkMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUFFU19DQkMuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6aW1wb3J0S2V5
KEMKICAgICBSZWZQdHI8Q3J5cHRvS2V5QUVTPiByZXN1bHQ7CiAgICAgc3dpdGNoIChmb3JtYXQp
IHsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UmF3OgotICAgICAgICByZXN1bHQgPSBDcnlw
dG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAg
ICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IFdURk1vdmUoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6SndrOiB7
CiAgICAgICAgIGF1dG8gY2hlY2tBbGdDYWxsYmFjayA9IFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0
IFN0cmluZyYgYWxnKSAtPiBib29sIHsKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobUFFU19DQkM6OmltcG9ydEtleShDCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH07Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6
aW1wb3J0SndrKHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2Vi
S2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFj
aykpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIFdURk1vdmUoc3RkOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpLCBleHRyYWN0
YWJsZSwgdXNhZ2VzLCBXVEZNb3ZlKGNoZWNrQWxnQ2FsbGJhY2spKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0ZCLmNwcAkocmV2aXNp
b24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtQUVTX0NGQi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobUFFU19DRkI6OmltcG9ydEtleShDCiAgICAgUmVmUHRyPENyeXB0b0tl
eUFFUz4gcmVzdWx0OwogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9LZXlG
b3JtYXQ6OlJhdzoKLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRSYXcocGFy
YW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0
YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVT
OjppbXBvcnRSYXcocGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKHN0ZDo6Z2V0PFZlY3Rv
cjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6Okp3azogewogICAgICAgICBhdXRvIGNoZWNrQWxn
Q2FsbGJhY2sgPSBbXShzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIGFsZykgLT4gYm9vbCB7
CkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZCOjppbXBvcnRL
ZXkoQwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
OwotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpLCBleHRyYWN0YWJs
ZSwgdXNhZ2VzLCBXVEZNb3ZlKGNoZWNrQWxnQ2FsbGJhY2spKTsKKyAgICAgICAgcmVzdWx0ID0g
Q3J5cHRvS2V5QUVTOjppbXBvcnRKd2socGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKHN0
ZDo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShj
aGVja0FsZ0NhbGxiYWNrKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0NUUi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtQUVTX0NUUi5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19DVFIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ1RS
OjppbXBvcnRLZXkoQwogICAgIFJlZlB0cjxDcnlwdG9LZXlBRVM+IHJlc3VsdDsKICAgICBzd2l0
Y2ggKGZvcm1hdCkgewogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpSYXc6Ci0gICAgICAgIHJl
c3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0UmF3KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RG
TW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0UmF3KHBhcmFtZXRlcnMu
aWRlbnRpZmllciwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0
cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3J5cHRvS2V5Rm9y
bWF0OjpKd2s6IHsKICAgICAgICAgYXV0byBjaGVja0FsZ0NhbGxiYWNrID0gW10oc2l6ZV90IGxl
bmd0aCwgY29uc3QgU3RyaW5nJiBhbGcpIC0+IGJvb2wgewpAQCAtMTQyLDcgKzE0Miw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUjo6aW1wb3J0S2V5KEMKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfTsKLSAgICAgICAgcmVzdWx0ID0gQ3J5
cHRvS2V5QUVTOjppbXBvcnRKd2socGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKFdURjo6
Z2V0PEpzb25XZWJLZXk+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGTW92ZShjaGVj
a0FsZ0NhbGxiYWNrKSk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0Sndr
KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShzdGQ6OmdldDxKc29uV2ViS2V5PihkYXRh
KSksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFjaykpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19HQ00u
Y3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1BRVNfR0NNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDcgKzE2
Nyw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTTo6aW1wb3J0S2V5KEMKICAgICBSZWZQ
dHI8Q3J5cHRvS2V5QUVTPiByZXN1bHQ7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNl
IENyeXB0b0tleUZvcm1hdDo6UmF3OgotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6Omlt
cG9ydFJhdyhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVp
bnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICByZXN1bHQgPSBD
cnlwdG9LZXlBRVM6OmltcG9ydFJhdyhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoc3Rk
OjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6SndrOiB7CiAgICAgICAgIGF1
dG8gY2hlY2tBbGdDYWxsYmFjayA9IFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgYWxn
KSAtPiBib29sIHsKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19H
Q006OmltcG9ydEtleShDCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH07Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0SndrKHBh
cmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxKc29uV2ViS2V5PihkYXRhKSks
IGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFjaykpOworICAgICAg
ICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9ydEp3ayhwYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IFdURk1vdmUoc3RkOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2Vz
LCBXVEZNb3ZlKGNoZWNrQWxnQ2FsbGJhY2spKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1BRVNfS1cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4MywxMCBAQCB2b2lkIENyeXB0b0FsZ29yaXRo
bUFFU19LVzo6aW1wb3J0S2V5KENyCiAgICAgUmVmUHRyPENyeXB0b0tleUFFUz4gcmVzdWx0Owog
ICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlJhdzoKLSAg
ICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRSYXcocGFyYW1ldGVycy5pZGVudGlm
aWVyLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJs
ZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5QUVTOjppbXBvcnRSYXcocGFy
YW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0
YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDcnlw
dG9LZXlGb3JtYXQ6Okp3azogewotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlBRVM6OmltcG9y
dEp3ayhwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8SnNvbldlYktleT4o
ZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBbXShzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJp
bmcmIGFsZykgLT4gYm9vbCB7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUFFUzo6aW1wb3J0
SndrKHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShzdGQ6OmdldDxKc29uV2ViS2V5Pihk
YXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFtdKHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgYWxnKSAtPiBib29sIHsKICAgICAgICAgICAgIHN3aXRjaCAobGVuZ3RoKSB7CiAgICAgICAg
ICAgICBjYXNlIENyeXB0b0tleUFFUzo6c19sZW5ndGgxMjg6CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGFsZy5pc051bGwoKSB8fCBhbGcgPT0gQUxHMTI4OwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5jcHAJ
KHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUVDREguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RIOjppbXBvcnRLZXkoQ3J5cAogICAgIFJlZlB0cjxDcnlw
dG9LZXlFQz4gcmVzdWx0OwogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9L
ZXlGb3JtYXQ6Okp3azogewotICAgICAgICBKc29uV2ViS2V5IGtleSA9IFdURk1vdmUoV1RGOjpn
ZXQ8SnNvbldlYktleT4oZGF0YSkpOworICAgICAgICBKc29uV2ViS2V5IGtleSA9IFdURk1vdmUo
c3RkOjpnZXQ8SnNvbldlYktleT4oZGF0YSkpOwogCiAgICAgICAgIGJvb2wgaXNVc2FnZXNBbGxv
d2VkID0gZmFsc2U7CiAgICAgICAgIGlmICgha2V5LmQuaXNOdWxsKCkpIHsKQEAgLTE1MywyMSAr
MTUzLDIxIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6aW1wb3J0S2V5KENyeXAKICAgICAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRheEVycm9yKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlFQzo6aW1wb3J0UmF3KGVj
UGFyYW1ldGVycy5pZGVudGlmaWVyLCBlY1BhcmFtZXRlcnMubmFtZWRDdXJ2ZSwgV1RGTW92ZShX
VEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7Cisg
ICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjppbXBvcnRSYXcoZWNQYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIGVjUGFyYW1ldGVycy5uYW1lZEN1cnZlLCBXVEZNb3ZlKHN0ZDo6Z2V0PFZlY3Rvcjx1
aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlNwa2k6CiAgICAgICAgIGlmICh1c2FnZXMpIHsKICAg
ICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRheEVycm9yKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlFQzo6aW1wb3J0U3Br
aShlY1BhcmFtZXRlcnMuaWRlbnRpZmllciwgZWNQYXJhbWV0ZXJzLm5hbWVkQ3VydmUsIFdURk1v
dmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMp
OworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlFQzo6aW1wb3J0U3BraShlY1BhcmFtZXRlcnMu
aWRlbnRpZmllciwgZWNQYXJhbWV0ZXJzLm5hbWVkQ3VydmUsIFdURk1vdmUoc3RkOjpnZXQ8VmVj
dG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENyeXB0b0tleUZvcm1hdDo6UGtjczg6CiAgICAgICAgIGlmICh1c2FnZXMg
JiYgKHVzYWdlcyBeIENyeXB0b0tleVVzYWdlRGVyaXZlS2V5KSAmJiAodXNhZ2VzIF4gQ3J5cHRv
S2V5VXNhZ2VEZXJpdmVCaXRzKSAmJiAodXNhZ2VzIF4gKENyeXB0b0tleVVzYWdlRGVyaXZlS2V5
IHwgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzKSkpIHsKICAgICAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKFN5bnRheEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICByZXN1bHQgPSBDcnlwdG9LZXlFQzo6aW1wb3J0UGtjczgoZWNQYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIGVjUGFyYW1ldGVycy5uYW1lZEN1cnZlLCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1
aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0g
Q3J5cHRvS2V5RUM6OmltcG9ydFBrY3M4KGVjUGFyYW1ldGVycy5pZGVudGlmaWVyLCBlY1BhcmFt
ZXRlcnMubmFtZWRDdXJ2ZSwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEp
KSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAo
IXJlc3VsdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtRUNEU0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysg
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1F
Q0RTQTo6aW1wb3J0S2V5KENyeQogICAgIFJlZlB0cjxDcnlwdG9LZXlFQz4gcmVzdWx0OwogICAg
IHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6Okp3azogewotICAg
ICAgICBKc29uV2ViS2V5IGtleSA9IFdURk1vdmUoV1RGOjpnZXQ8SnNvbldlYktleT4oZGF0YSkp
OworICAgICAgICBKc29uV2ViS2V5IGtleSA9IFdURk1vdmUoc3RkOjpnZXQ8SnNvbldlYktleT4o
ZGF0YSkpOwogCiAgICAgICAgIGlmICh1c2FnZXMgJiYgKCgha2V5LmQuaXNOdWxsKCkgJiYgKHVz
YWdlcyBeIENyeXB0b0tleVVzYWdlU2lnbikpIHx8IChrZXkuZC5pc051bGwoKSAmJiAodXNhZ2Vz
IF4gQ3J5cHRvS2V5VXNhZ2VWZXJpZnkpKSkpIHsKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKFN5bnRheEVycm9yKTsKQEAgLTE0MSwyMSArMTQxLDIxIEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtRUNEU0E6OmltcG9ydEtleShDcnkKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5
bnRheEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXN1
bHQgPSBDcnlwdG9LZXlFQzo6aW1wb3J0UmF3KGVjUGFyYW1ldGVycy5pZGVudGlmaWVyLCBlY1Bh
cmFtZXRlcnMubmFtZWRDdXJ2ZSwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRh
dGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVD
OjppbXBvcnRSYXcoZWNQYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVjUGFyYW1ldGVycy5uYW1lZEN1
cnZlLCBXVEZNb3ZlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJs
ZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlNw
a2k6CiAgICAgICAgIGlmICh1c2FnZXMgJiYgKHVzYWdlcyBeIENyeXB0b0tleVVzYWdlVmVyaWZ5
KSkgewogICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soU3ludGF4RXJyb3IpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjpp
bXBvcnRTcGtpKGVjUGFyYW1ldGVycy5pZGVudGlmaWVyLCBlY1BhcmFtZXRlcnMubmFtZWRDdXJ2
ZSwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUs
IHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjppbXBvcnRTcGtpKGVjUGFy
YW1ldGVycy5pZGVudGlmaWVyLCBlY1BhcmFtZXRlcnMubmFtZWRDdXJ2ZSwgV1RGTW92ZShzdGQ6
OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpQa2NzODoKICAgICAgICAgaWYg
KHVzYWdlcyAmJiAodXNhZ2VzIF4gQ3J5cHRvS2V5VXNhZ2VTaWduKSkgewogICAgICAgICAgICAg
ZXhjZXB0aW9uQ2FsbGJhY2soU3ludGF4RXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IENyeXB0b0tleUVDOjppbXBvcnRQa2NzOChlY1BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgZWNQYXJhbWV0ZXJzLm5hbWVkQ3VydmUsIFdURk1vdmUoV1RGOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAg
ICByZXN1bHQgPSBDcnlwdG9LZXlFQzo6aW1wb3J0UGtjczgoZWNQYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGVjUGFyYW1ldGVycy5uYW1lZEN1cnZlLCBXVEZNb3ZlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50
OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGlmICghcmVzdWx0KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmNwcAkocmV2aXNpb24gMjg0
MDkxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
SEtERi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDcnlwdG9BbGdv
cml0aG1IS0RGOjppbXBvcnRLZXkoQ3J5cAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Y2FsbGJhY2soQ3J5cHRvS2V5UmF3OjpjcmVhdGUocGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZN
b3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCB1c2FnZXMpKTsKKyAgICBjYWxs
YmFjayhDcnlwdG9LZXlSYXc6OmNyZWF0ZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1vdmUo
c3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIHVzYWdlcykpOwogfQogCiBFeGNlcHRp
b25PcjxzaXplX3Q+IENyeXB0b0FsZ29yaXRobUhLREY6OmdldEtleUxlbmd0aChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCShyZXZpc2lvbiAy
ODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtSE1BQzo6aW1wb3J0S2V5KENyeXAKICAgICBSZWZQdHI8Q3J5cHRvS2V5SE1BQz4g
cmVzdWx0OwogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6
OlJhdzoKLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5SE1BQzo6aW1wb3J0UmF3KGhtYWNQYXJh
bWV0ZXJzLmxlbmd0aC52YWx1ZV9vcigwKSwgaG1hY1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIs
IFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRSYXcoaG1hY1Bh
cmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmll
ciwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUs
IHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKd2s6
IHsKICAgICAgICAgYXV0byBjaGVja0FsZ0NhbGxiYWNrID0gW10oQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBoYXNoLCBjb25zdCBTdHJpbmcmIGFsZykgLT4gYm9vbCB7CkBAIC0xMzAsNyArMTMw
LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjppbXBvcnRLZXkoQ3J5cAogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9OwotICAgICAgICByZXN1
bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRKd2soaG1hY1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVl
X29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxK
c29uV2ViS2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdD
YWxsYmFjaykpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlITUFDOjppbXBvcnRKd2soaG1h
Y1BhcmFtZXRlcnMubGVuZ3RoLnZhbHVlX29yKDApLCBobWFjUGFyYW1ldGVycy5oYXNoSWRlbnRp
ZmllciwgV1RGTW92ZShzdGQ6OmdldDxKc29uV2ViS2V5PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1
c2FnZXMsIFdURk1vdmUoY2hlY2tBbGdDYWxsYmFjaykpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVBCS0RGMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNwcAkocmV2aXNpb24gMjg0MDkx
KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJL
REYyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIENyeXB0b0FsZ29y
aXRobVBCS0RGMjo6aW1wb3J0S2V5KENyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBj
YWxsYmFjayhDcnlwdG9LZXlSYXc6OmNyZWF0ZShwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIFdURk1v
dmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIHVzYWdlcykpOworICAgIGNhbGxi
YWNrKENyeXB0b0tleVJhdzo6Y3JlYXRlKHBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShz
dGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgdXNhZ2VzKSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHNpemVfdD4gQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpnZXRLZXlMZW5ndGgoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81LmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92
MV81OjppbQogICAgIFJlZlB0cjxDcnlwdG9LZXlSU0E+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGZv
cm1hdCkgewogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKd2s6IHsKLSAgICAgICAgSnNvbldl
YktleSBrZXkgPSBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKTsKKyAgICAgICAg
SnNvbldlYktleSBrZXkgPSBXVEZNb3ZlKHN0ZDo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKTsKICAg
ICAgICAgaWYgKHVzYWdlcyAmJiAoKCFrZXkuZC5pc051bGwoKSAmJiAodXNhZ2VzIF4gQ3J5cHRv
S2V5VXNhZ2VEZWNyeXB0KSkgfHwgKGtleS5kLmlzTnVsbCgpICYmICh1c2FnZXMgXiBDcnlwdG9L
ZXlVc2FnZUVuY3J5cHQpKSkpIHsKICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRh
eEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIENy
eXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmltCiAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhTeW50YXhFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRTcGtpKHBhcmFtZXRlcnMuaWRlbnRp
Zmllciwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0
YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsKKyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNB
OjppbXBvcnRTcGtpKHBhcmFtZXRlcnMuaWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBXVEZNb3Zl
KHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpQa2NzODog
ewpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NTo6aW0KICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKFN5bnRheEVycm9yKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6
OmltcG9ydFBrY3M4KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBXVEZNb3Zl
KFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oZGF0YSkpLCBleHRyYWN0YWJsZSwgdXNhZ2VzKTsK
KyAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRQa2NzOChwYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+
KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBkZWZhdWx0OgpJbmRleDogU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNw
cAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDksNyArMTA5LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6aQog
ICAgIFJlZlB0cjxDcnlwdG9LZXlSU0E+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewog
ICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKd2s6IHsKLSAgICAgICAgSnNvbldlYktleSBrZXkg
PSBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKTsKKyAgICAgICAgSnNvbldlYktl
eSBrZXkgPSBXVEZNb3ZlKHN0ZDo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKTsKIAogICAgICAgICBp
ZiAodXNhZ2VzICYmICgoIWtleS5kLmlzTnVsbCgpICYmICh1c2FnZXMgXiBDcnlwdG9LZXlVc2Fn
ZVNpZ24pKSB8fCAoa2V5LmQuaXNOdWxsKCkgJiYgKHVzYWdlcyBeIENyeXB0b0tleVVzYWdlVmVy
aWZ5KSkpKSB7CiAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhTeW50YXhFcnJvcik7CkBA
IC0xNTQsNyArMTU0LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6
aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiA8d2Vi
a2l0Lm9yZy9iLzE2NTQzNj4KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjppbXBvcnRT
cGtpKHJzYVBhcmFtZXRlcnMuaWRlbnRpZmllciwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmll
ciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUs
IHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1wb3J0U3BraShyc2FQ
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJzYVBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIFdURk1v
dmUoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxlLCB1c2FnZXMp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OlBrY3M4
OiB7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFf
djFfNTo6aQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1F
OiA8d2Via2l0Lm9yZy9iLzE2NTQzNj4KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNBOjpp
bXBvcnRQa2NzOChwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJzYVBhcmFtZXRlcnMuaGFzaElkZW50
aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6OmltcG9ydFBrY3M4
KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgV1RG
TW92ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFibGUsIHVzYWdl
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6aW1wb3J0S2V5
KAogICAgIFJlZlB0cjxDcnlwdG9LZXlSU0E+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGZvcm1hdCkg
ewogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKd2s6IHsKLSAgICAgICAgSnNvbldlYktleSBr
ZXkgPSBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKTsKKyAgICAgICAgSnNvbldl
YktleSBrZXkgPSBXVEZNb3ZlKHN0ZDo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKTsKIAogICAgICAg
ICBib29sIGlzVXNhZ2VzQWxsb3dlZCA9IGZhbHNlOwogICAgICAgICBpZiAoIWtleS5kLmlzTnVs
bCgpKSB7CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
aW1wb3J0S2V5KAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJ
WE1FOiA8d2Via2l0Lm9yZy9iLzE2NTQzNj4KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNB
OjppbXBvcnRTcGtpKHJzYVBhcmFtZXRlcnMuaWRlbnRpZmllciwgcnNhUGFyYW1ldGVycy5oYXNo
SWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0
cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1wb3J0
U3BraShyc2FQYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJzYVBhcmFtZXRlcnMuaGFzaElkZW50aWZp
ZXIsIFdURk1vdmUoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxl
LCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDcnlwdG9LZXlGb3Jt
YXQ6OlBrY3M4OiB7CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUDo6aW1wb3J0S2V5KAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE2NTQzNj4KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRv
S2V5UlNBOjppbXBvcnRQa2NzOChwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJzYVBhcmFtZXRlcnMu
aGFzaElkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSks
IGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6Omlt
cG9ydFBrY3M4KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRp
ZmllciwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFi
bGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUlNBX1BTUy5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9QU1MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjppbXBv
cnRLZXkoQwogICAgIFJlZlB0cjxDcnlwdG9LZXlSU0E+IHJlc3VsdDsKICAgICBzd2l0Y2ggKGZv
cm1hdCkgewogICAgIGNhc2UgQ3J5cHRvS2V5Rm9ybWF0OjpKd2s6IHsKLSAgICAgICAgSnNvbldl
YktleSBrZXkgPSBXVEZNb3ZlKFdURjo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKTsKKyAgICAgICAg
SnNvbldlYktleSBrZXkgPSBXVEZNb3ZlKHN0ZDo6Z2V0PEpzb25XZWJLZXk+KGRhdGEpKTsKIAog
ICAgICAgICBpZiAodXNhZ2VzICYmICgoIWtleS5kLmlzTnVsbCgpICYmICh1c2FnZXMgXiBDcnlw
dG9LZXlVc2FnZVNpZ24pKSB8fCAoa2V5LmQuaXNOdWxsKCkgJiYgKHVzYWdlcyBeIENyeXB0b0tl
eVVzYWdlVmVyaWZ5KSkpKSB7CiAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhTeW50YXhF
cnJvcik7CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpp
bXBvcnRLZXkoQwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJ
WE1FOiA8d2Via2l0Lm9yZy9iLzE2NTQzNj4KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5UlNB
OjppbXBvcnRTcGtpKHJzYVBhcmFtZXRlcnMuaWRlbnRpZmllciwgcnNhUGFyYW1ldGVycy5oYXNo
SWRlbnRpZmllciwgV1RGTW92ZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0
cmFjdGFibGUsIHVzYWdlcyk7CisgICAgICAgIHJlc3VsdCA9IENyeXB0b0tleVJTQTo6aW1wb3J0
U3BraShyc2FQYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJzYVBhcmFtZXRlcnMuaGFzaElkZW50aWZp
ZXIsIFdURk1vdmUoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSksIGV4dHJhY3RhYmxl
LCB1c2FnZXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDcnlwdG9LZXlGb3Jt
YXQ6OlBrY3M4OiB7CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0Ff
UFNTOjppbXBvcnRLZXkoQwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE2NTQzNj4KLSAgICAgICAgcmVzdWx0ID0gQ3J5cHRv
S2V5UlNBOjppbXBvcnRQa2NzOChwYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJzYVBhcmFtZXRlcnMu
aGFzaElkZW50aWZpZXIsIFdURk1vdmUoV1RGOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PihkYXRhKSks
IGV4dHJhY3RhYmxlLCB1c2FnZXMpOworICAgICAgICByZXN1bHQgPSBDcnlwdG9LZXlSU0E6Omlt
cG9ydFBrY3M4KHBhcmFtZXRlcnMuaWRlbnRpZmllciwgcnNhUGFyYW1ldGVycy5oYXNoSWRlbnRp
ZmllciwgV1RGTW92ZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGRhdGEpKSwgZXh0cmFjdGFi
bGUsIHVzYWdlcyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXN0b21Qcm9wZXJ0eVZhbHVlLmNwcAkocmV2aXNp
b24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVByb3BlcnR5VmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNSArNDIsMTUgQEAgYm9vbCBDU1NDdXN0b21Qcm9w
ZXJ0eVZhbHVlOjplcXVhbHMoY29ucwogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fdmFsdWUs
IFsmXShjb25zdCBzdGQ6Om1vbm9zdGF0ZSYpIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fSwgWyZdKGNvbnN0IFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPiYgdmFsdWUpIHsKLSAg
ICAgICAgcmV0dXJuIHZhbHVlLmdldCgpID09IFdURjo6Z2V0PFJlZjxDU1NWYXJpYWJsZVJlZmVy
ZW5jZVZhbHVlPj4ob3RoZXIubV92YWx1ZSkuZ2V0KCk7CisgICAgICAgIHJldHVybiB2YWx1ZS5n
ZXQoKSA9PSBzdGQ6OmdldDxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KG90aGVyLm1f
dmFsdWUpLmdldCgpOwogICAgIH0sIFsmXShjb25zdCBDU1NWYWx1ZUlEJiB2YWx1ZSkgewotICAg
ICAgICByZXR1cm4gdmFsdWUgPT0gV1RGOjpnZXQ8Q1NTVmFsdWVJRD4ob3RoZXIubV92YWx1ZSk7
CisgICAgICAgIHJldHVybiB2YWx1ZSA9PSBzdGQ6OmdldDxDU1NWYWx1ZUlEPihvdGhlci5tX3Zh
bHVlKTsKICAgICB9LCBbJl0oY29uc3QgUmVmPENTU1ZhcmlhYmxlRGF0YT4mIHZhbHVlKSB7Ci0g
ICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBXVEY6OmdldDxSZWY8Q1NTVmFyaWFibGVEYXRh
Pj4ob3RoZXIubV92YWx1ZSkuZ2V0KCk7CisgICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBz
dGQ6OmdldDxSZWY8Q1NTVmFyaWFibGVEYXRhPj4ob3RoZXIubV92YWx1ZSkuZ2V0KCk7CiAgICAg
fSwgWyZdKGNvbnN0IExlbmd0aCYgdmFsdWUpIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlID09IFdU
Rjo6Z2V0PExlbmd0aD4ob3RoZXIubV92YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZSA9PSBz
dGQ6OmdldDxMZW5ndGg+KG90aGVyLm1fdmFsdWUpOwogICAgIH0sIFsmXShjb25zdCBSZWY8U3R5
bGVJbWFnZT4mIHZhbHVlKSB7Ci0gICAgICAgIHJldHVybiB2YWx1ZS5nZXQoKSA9PSBXVEY6Omdl
dDxSZWY8U3R5bGVJbWFnZT4+KG90aGVyLm1fdmFsdWUpLmdldCgpOworICAgICAgICByZXR1cm4g
dmFsdWUuZ2V0KCkgPT0gc3RkOjpnZXQ8UmVmPFN0eWxlSW1hZ2U+PihvdGhlci5tX3ZhbHVlKS5n
ZXQoKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1c3RvbVBy
b3BlcnR5VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3VzdG9t
UHJvcGVydHlWYWx1ZS5oCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4NCw4IEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWU7IH0KICAgICBib29sIGlzUmVzb2x2ZWQoKSBjb25zdCB7IHJldHVybiAhc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KG1fdmFsdWUpOyB9
Ci0gICAgYm9vbCBpc1Vuc2V0KCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2
ZTxDU1NWYWx1ZUlEPihtX3ZhbHVlKSAmJiBXVEY6OmdldDxDU1NWYWx1ZUlEPihtX3ZhbHVlKSA9
PSBDU1NWYWx1ZVVuc2V0OyB9Ci0gICAgYm9vbCBpc0ludmFsaWQoKSBjb25zdCB7IHJldHVybiBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPENTU1ZhbHVlSUQ+KG1fdmFsdWUpICYmIFdURjo6Z2V0PENT
U1ZhbHVlSUQ+KG1fdmFsdWUpID09IENTU1ZhbHVlSW52YWxpZDsgfQorICAgIGJvb2wgaXNVbnNl
dCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8Q1NTVmFsdWVJRD4obV92
YWx1ZSkgJiYgc3RkOjpnZXQ8Q1NTVmFsdWVJRD4obV92YWx1ZSkgPT0gQ1NTVmFsdWVVbnNldDsg
fQorICAgIGJvb2wgaXNJbnZhbGlkKCkgY29uc3QgeyByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxDU1NWYWx1ZUlEPihtX3ZhbHVlKSAmJiBzdGQ6OmdldDxDU1NWYWx1ZUlEPihtX3ZhbHVl
KSA9PSBDU1NWYWx1ZUludmFsaWQ7IH0KIAogICAgIGNvbnN0IFZhcmlhbnRWYWx1ZSYgdmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgJ
KHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAwLDggKzMwMCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTdGF0
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxDYXNj
YWRlTGF5ZXJOYW1lPj4obV9uYW1lVmFyaWFudCk7IH0KIAotICAgIGF1dG8mIG5hbWUoKSBjb25z
dCB7IHJldHVybiBXVEY6OmdldDxDYXNjYWRlTGF5ZXJOYW1lPihtX25hbWVWYXJpYW50KTsgfQot
ICAgIGF1dG8mIG5hbWVMaXN0KCkgY29uc3QgeyByZXR1cm4gV1RGOjpnZXQ8VmVjdG9yPENhc2Nh
ZGVMYXllck5hbWU+PihtX25hbWVWYXJpYW50KTsgfQorICAgIGF1dG8mIG5hbWUoKSBjb25zdCB7
IHJldHVybiBzdGQ6OmdldDxDYXNjYWRlTGF5ZXJOYW1lPihtX25hbWVWYXJpYW50KTsgfQorICAg
IGF1dG8mIG5hbWVMaXN0KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8VmVjdG9yPENhc2NhZGVM
YXllck5hbWU+PihtX25hbWVWYXJpYW50KTsgfQogCiBwcml2YXRlOgogICAgIFN0eWxlUnVsZUxh
eWVyKFZlY3RvcjxDYXNjYWRlTGF5ZXJOYW1lPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3
IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlV2kKICAgICB9CiAKICAg
ICBjb25zdCBhdXRvJiBjdXN0b21Qcm9wVmFsdWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPih2YWx1ZSk7Ci0gICAgY29uc3QgYXV0byYgdmFsdWVXaXRoUmVmZXJlbmNlcyA9IFdU
Rjo6Z2V0PFJlZjxDU1NWYXJpYWJsZVJlZmVyZW5jZVZhbHVlPj4oY3VzdG9tUHJvcFZhbHVlLnZh
bHVlKCkpLmdldCgpOworICAgIGNvbnN0IGF1dG8mIHZhbHVlV2l0aFJlZmVyZW5jZXMgPSBzdGQ6
OmdldDxSZWY8Q1NTVmFyaWFibGVSZWZlcmVuY2VWYWx1ZT4+KGN1c3RvbVByb3BWYWx1ZS52YWx1
ZSgpKS5nZXQoKTsKIAogICAgIGF1dG8mIG5hbWUgPSBkb3duY2FzdDxDU1NDdXN0b21Qcm9wZXJ0
eVZhbHVlPih2YWx1ZSkubmFtZSgpOwogICAgIGF1dG8qIHJlZ2lzdGVyZWQgPSBidWlsZGVyU3Rh
dGUuZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlTZXQoKS5nZXQobmFt
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXIuaAkocmV2aXNpb24gMjg0MDkx
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3NSw3ICsxNzUsNyBAQCBpbmxpbmUgdm9pZCBEb2N1bWVudE1hcmtlcjo6c2hpZnRPZmZz
ZXRzCiAKIGlubGluZSBjb25zdCBTdHJpbmcmIERvY3VtZW50TWFya2VyOjpkZXNjcmlwdGlvbigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihtX2Rh
dGEpID8gV1RGOjpnZXQ8U3RyaW5nPihtX2RhdGEpIDogZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1
cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KG1fZGF0YSkgPyBzdGQ6OmdldDxTdHJp
bmc+KG1fZGF0YSkgOiBlbXB0eVN0cmluZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFy
a2VyQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw3ICsyMzgsNyBAQCBzdGF0
aWMgYm9vbCBzaG91bGRJbnNlcnRBc1NlcGFyYXRlTWFya2VyCiAjZW5kaWYKIAogICAgIGlmICht
YXJrZXIudHlwZSgpID09IERvY3VtZW50TWFya2VyOjpEcmFnZ2VkQ29udGVudCkKLSAgICAgICAg
cmV0dXJuIGlzPFJlbmRlclJlcGxhY2VkPihXVEY6OmdldDxSZWZQdHI8Tm9kZT4+KG1hcmtlci5k
YXRhKCkpLT5yZW5kZXJlcigpKTsKKyAgICAgICAgcmV0dXJuIGlzPFJlbmRlclJlcGxhY2VkPihz
dGQ6OmdldDxSZWZQdHI8Tm9kZT4+KG1hcmtlci5kYXRhKCkpLT5yZW5kZXJlcigpKTsKIAogICAg
IHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4
NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTIxLDggKzkyMSw4IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoc3RkOjpvcHRp
b24KICAgICBpZiAoYXJnKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBhcmcudmFsdWUoKTsKICAg
ICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U2Nyb2xsSW50b1ZpZXdPcHRpb25zPih2
YWx1ZSkpCi0gICAgICAgICAgICBvcHRpb25zID0gV1RGOjpnZXQ8U2Nyb2xsSW50b1ZpZXdPcHRp
b25zPih2YWx1ZSk7Ci0gICAgICAgIGVsc2UgaWYgKCFXVEY6OmdldDxib29sPih2YWx1ZSkpCisg
ICAgICAgICAgICBvcHRpb25zID0gc3RkOjpnZXQ8U2Nyb2xsSW50b1ZpZXdPcHRpb25zPih2YWx1
ZSk7CisgICAgICAgIGVsc2UgaWYgKCFzdGQ6OmdldDxib29sPih2YWx1ZSkpCiAgICAgICAgICAg
ICBvcHRpb25zLmJsb2NrUG9zaXRpb24gPSBTY3JvbGxMb2dpY2FsUG9zaXRpb246OkVuZDsKICAg
ICB9CiAKQEAgLTQ2MzAsOSArNDYzMCw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJBbmltYXRpb24+
PiBFbGVtZW50OjoKICAgICAgICAgYXV0byBvcHRpb25zVmFsdWUgPSBvcHRpb25zLnZhbHVlKCk7
CiAgICAgICAgIHN0ZDo6dmFyaWFudDxkb3VibGUsIEtleWZyYW1lRWZmZWN0T3B0aW9ucz4ga2V5
ZnJhbWVFZmZlY3RPcHRpb25zVmFyaWFudDsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJu
YXRpdmU8ZG91YmxlPihvcHRpb25zVmFsdWUpKQotICAgICAgICAgICAga2V5ZnJhbWVFZmZlY3RP
cHRpb25zVmFyaWFudCA9IFdURjo6Z2V0PGRvdWJsZT4ob3B0aW9uc1ZhbHVlKTsKKyAgICAgICAg
ICAgIGtleWZyYW1lRWZmZWN0T3B0aW9uc1ZhcmlhbnQgPSBzdGQ6OmdldDxkb3VibGU+KG9wdGlv
bnNWYWx1ZSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgYXV0byBrZXlmcmFtZUVmZmVj
dE9wdGlvbnMgPSBXVEY6OmdldDxLZXlmcmFtZUFuaW1hdGlvbk9wdGlvbnM+KG9wdGlvbnNWYWx1
ZSk7CisgICAgICAgICAgICBhdXRvIGtleWZyYW1lRWZmZWN0T3B0aW9ucyA9IHN0ZDo6Z2V0PEtl
eWZyYW1lQW5pbWF0aW9uT3B0aW9ucz4ob3B0aW9uc1ZhbHVlKTsKICAgICAgICAgICAgIGlkID0g
a2V5ZnJhbWVFZmZlY3RPcHRpb25zLmlkOwogICAgICAgICAgICAga2V5ZnJhbWVFZmZlY3RPcHRp
b25zVmFyaWFudCA9IFdURk1vdmUoa2V5ZnJhbWVFZmZlY3RPcHRpb25zKTsKICAgICAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyAr
MjUwLDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjp0aW1lckZpcgogICAgIGNh
c2UgQWx0ZXJuYXRpdmVUZXh0VHlwZVJldmVyc2lvbjogewogICAgICAgICBpZiAoIW1fcmFuZ2VX
aXRoQWx0ZXJuYXRpdmUpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgU3RyaW5nIHJlcGxh
Y2VtZW50U3RyaW5nID0gV1RGOjpnZXQ8QXV0b2NvcnJlY3Rpb25SZXBsYWNlbWVudD4obV9kZXRh
aWxzKTsKKyAgICAgICAgU3RyaW5nIHJlcGxhY2VtZW50U3RyaW5nID0gc3RkOjpnZXQ8QXV0b2Nv
cnJlY3Rpb25SZXBsYWNlbWVudD4obV9kZXRhaWxzKTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50
U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBtX2lzQWN0aXZl
ID0gdHJ1ZTsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xs
ZXI6OnRpbWVyRmlyCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCiAgICAgICAgIGlm
ICghbV9yYW5nZVdpdGhBbHRlcm5hdGl2ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
YXV0byBkaWN0YXRpb25Db250ZXh0ID0gV1RGOjpnZXQ8RGljdGF0aW9uQ29udGV4dD4obV9kZXRh
aWxzKTsKKyAgICAgICAgYXV0byBkaWN0YXRpb25Db250ZXh0ID0gc3RkOjpnZXQ8RGljdGF0aW9u
Q29udGV4dD4obV9kZXRhaWxzKTsKICAgICAgICAgaWYgKCFkaWN0YXRpb25Db250ZXh0KQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGJvdW5kaW5nQm94ID0gcm9vdFZpZXdSZWN0
Rm9yUmFuZ2UoKm1fcmFuZ2VXaXRoQWx0ZXJuYXRpdmUpOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIGJv
b2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFQKICAgICAgICAgc3RhcnRBbHRl
cm5hdGl2ZVRleHRVSVRpbWVyKEFsdGVybmF0aXZlVGV4dFR5cGVSZXZlcnNpb24pOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXM6
IHsKLSAgICAgICAgYXV0byYgbWFya2VyRGF0YSA9IFdURjo6Z2V0PERvY3VtZW50TWFya2VyOjpE
aWN0YXRpb25EYXRhPihtYXJrZXIuZGF0YSgpKTsKKyAgICAgICAgYXV0byYgbWFya2VyRGF0YSA9
IHN0ZDo6Z2V0PERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25EYXRhPihtYXJrZXIuZGF0YSgpKTsK
ICAgICAgICAgaWYgKGN1cnJlbnRXb3JkICE9IG1hcmtlckRhdGEub3JpZ2luYWxUZXh0KQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBtX3JhbmdlV2l0aEFsdGVybmF0aXZlID0g
V1RGTW92ZSh3b3JkUmFuZ2UpOwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgQWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlcjo6cmVtb3ZlRGkKIHsKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKICAgICBpZiAoYXV0byogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkpCi0gICAg
ICAgIGNsaWVudC0+cmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKFdURjo6Z2V0PERvY3VtZW50
TWFya2VyOjpEaWN0YXRpb25EYXRhPihtYXJrZXIuZGF0YSgpKS5jb250ZXh0KTsKKyAgICAgICAg
Y2xpZW50LT5yZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXMoc3RkOjpnZXQ8RG9jdW1lbnRNYXJr
ZXI6OkRpY3RhdGlvbkRhdGE+KG1hcmtlci5kYXRhKCkpLmNvbnRleHQpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0obWFya2VyKTsKICNlbmRpZgpAQCAtNjU4LDcgKzY1OCw3IEBAIFZlY3RvcjxT
dHJpbmc+IEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIKIHsKICNpZiBVU0UoRElDVEFUSU9OX0FM
VEVSTkFUSVZFUykKICAgICBpZiAoYXV0byogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KCkpCi0gICAgICAgIHJldHVybiBjbGllbnQtPmRpY3RhdGlvbkFsdGVybmF0aXZlcyhXVEY6Omdl
dDxEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uRGF0YT4obWFya2VyLmRhdGEoKSkuY29udGV4dCk7
CisgICAgICAgIHJldHVybiBjbGllbnQtPmRpY3RhdGlvbkFsdGVybmF0aXZlcyhzdGQ6OmdldDxE
b2N1bWVudE1hcmtlcjo6RGljdGF0aW9uRGF0YT4obWFya2VyLmRhdGEoKSkuY29udGV4dCk7CiAg
ICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXJr
ZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjg0MDkxKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Mjc3LDcgKzIyNzcsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
CiAgICAgICAgIGlmIChhdXRvKiB3b3JkID0gc3RkOjpnZXRfaWY8VGV4dENoZWNraW5nSGVscGVy
OjpNaXNzcGVsbGVkV29yZD4oJmZvdW5kSXRlbSkpCiAgICAgICAgICAgICBtaXNzcGVsbGVkV29y
ZCA9IFdURk1vdmUoKndvcmQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB1bmdyYW1tYXRp
Y2FsUGhyYXNlID0gV1RGOjpnZXQ8VGV4dENoZWNraW5nSGVscGVyOjpVbmdyYW1tYXRpY2FsUGhy
YXNlPihXVEZNb3ZlKGZvdW5kSXRlbSkpOworICAgICAgICAgICAgdW5ncmFtbWF0aWNhbFBocmFz
ZSA9IHN0ZDo6Z2V0PFRleHRDaGVja2luZ0hlbHBlcjo6VW5ncmFtbWF0aWNhbFBocmFzZT4oV1RG
TW92ZShmb3VuZEl0ZW0pKTsKICAgICB9IGVsc2UgewogICAgICAgICBtaXNzcGVsbGVkV29yZCA9
IFRleHRDaGVja2luZ0hlbHBlcigqY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRG
aXJzdE1pc3NwZWxsZWRXb3JkKCk7CiAKQEAgLTIzMDQsNyArMjMwNCw3IEBAIHZvaWQgRWRpdG9y
OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm8KICAgICAgICAgICAgIGlmIChhdXRvKiB3b3Jk
ID0gc3RkOjpnZXRfaWY8VGV4dENoZWNraW5nSGVscGVyOjpNaXNzcGVsbGVkV29yZD4oJmZvdW5k
SXRlbSkpCiAgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdvcmQgPSBXVEZNb3ZlKCp3b3JkKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1bmdyYW1tYXRpY2FsUGhyYXNlID0g
V1RGOjpnZXQ8VGV4dENoZWNraW5nSGVscGVyOjpVbmdyYW1tYXRpY2FsUGhyYXNlPihXVEZNb3Zl
KGZvdW5kSXRlbSkpOworICAgICAgICAgICAgICAgIHVuZ3JhbW1hdGljYWxQaHJhc2UgPSBzdGQ6
OmdldDxUZXh0Q2hlY2tpbmdIZWxwZXI6OlVuZ3JhbW1hdGljYWxQaHJhc2U+KFdURk1vdmUoZm91
bmRJdGVtKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9
IFRleHRDaGVja2luZ0hlbHBlcigqY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRG
aXJzdE1pc3NwZWxsZWRXb3JkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDE0ICsxNDMs
MTQgQEAgQ2FudmFzU3R5bGUgQ2FudmFzU3R5bGU6OmNyZWF0ZUZyb21TdHJpbgogYm9vbCBDYW52
YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3IoY29uc3QgQ2FudmFzU3R5bGUmIG90aGVyKSBjb25z
dAogewogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9yPihtX3N0eWxlKSAmJiBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9yPihvdGhlci5tX3N0eWxlKSkKLSAgICAgICAgcmV0
dXJuIFdURjo6Z2V0PENvbG9yPihtX3N0eWxlKSA9PSBXVEY6OmdldDxDb2xvcj4ob3RoZXIubV9z
dHlsZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxDb2xvcj4obV9zdHlsZSkgPT0gc3RkOjpn
ZXQ8Q29sb3I+KG90aGVyLm1fc3R5bGUpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29s
IENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnQoY29uc3QgU1JHQkE8ZmxvYXQ+JiBjb21wb25lbnRz
KSBjb25zdAogewotICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPENvbG9yPihtX3N0
eWxlKSAmJiBXVEY6OmdldDxDb2xvcj4obV9zdHlsZSkgPT0gY29udmVydENvbG9yPFNSR0JBPHVp
bnQ4X3Q+Pihjb21wb25lbnRzKTsKKyAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxD
b2xvcj4obV9zdHlsZSkgJiYgc3RkOjpnZXQ8Q29sb3I+KG1fc3R5bGUpID09IGNvbnZlcnRDb2xv
cjxTUkdCQTx1aW50OF90Pj4oY29tcG9uZW50cyk7CiB9CiAKIHZvaWQgQ2FudmFzU3R5bGU6OmFw
cGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCShyZXZpc2lvbiAyODQwOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuICFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEludmFsaWQ+KG1fc3R5bGUpOyB9CiAgICAg
Ym9vbCBpc0N1cnJlbnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8Q3VycmVudENvbG9yPihtX3N0eWxlKTsgfQotICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IG92
ZXJyaWRlQWxwaGEoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxDdXJyZW50Q29sb3I+KG1fc3R5
bGUpLm92ZXJyaWRlQWxwaGE7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBvdmVycmlkZUFs
cGhhKCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8Q3VycmVudENvbG9yPihtX3N0eWxlKS5vdmVy
cmlkZUFscGhhOyB9CiAKICAgICBTdHJpbmcgY29sb3IoKSBjb25zdDsKICAgICBSZWZQdHI8Q2Fu
dmFzR3JhZGllbnQ+IGNhbnZhc0dyYWRpZW50KCkgY29uc3Q7CkBAIC05MCwxOSArOTAsMTkgQEAg
aW5saW5lIFJlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzU3R5bAogewogICAgIGlmICghc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8Q2FudmFzR3JhZGllbnQ+PihtX3N0eWxlKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxDYW52YXNH
cmFkaWVudD4+KG1fc3R5bGUpOworICAgIHJldHVybiBzdGQ6OmdldDxSZWZQdHI8Q2FudmFzR3Jh
ZGllbnQ+PihtX3N0eWxlKTsKIH0KIAogaW5saW5lIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiBDYW52
YXNTdHlsZTo6Y2FudmFzUGF0dGVybigpIGNvbnN0CiB7CiAgICAgaWYgKCFzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4obV9zdHlsZSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBXVEY6OmdldDxSZWZQdHI8Q2FudmFzUGF0dGVybj4+KG1f
c3R5bGUpOworICAgIHJldHVybiBzdGQ6OmdldDxSZWZQdHI8Q2FudmFzUGF0dGVybj4+KG1fc3R5
bGUpOwogfQogCiBpbmxpbmUgU3RyaW5nIENhbnZhc1N0eWxlOjpjb2xvcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JIVE1MKFdURjo6Z2V0PENvbG9yPihtX3N0eWxlKSk7
CisgICAgcmV0dXJuIHNlcmlhbGl6YXRpb25Gb3JIVE1MKHN0ZDo6Z2V0PENvbG9yPihtX3N0eWxl
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShy
ZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMxLDE2ICs3MzEsMTYgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIFdlYkdMQW55IHBhcmFtID0gbV9jb250ZXh0LmdldFBh
cmFtZXRlcihhdHRhY2htZW50KTsKICAgICAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
VD4ocGFyYW0pKQotICAgICAgICAgICAgZGVzdGluYXRpb24gPSBXVEY6OmdldDxUPihwYXJhbSk7
CisgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHN0ZDo6Z2V0PFQ+KHBhcmFtKTsKICAgICB9CiAK
ICAgICBib29sIGhhc0J1ZmZlckJpbmRpbmcoR0NHTGVudW0gcG5hbWUpCiAgICAgewogICAgICAg
ICBXZWJHTEFueSBiaW5kaW5nID0gbV9jb250ZXh0LmdldFBhcmFtZXRlcihwbmFtZSk7CiAgICAg
ICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVCVUZGRVJfQklORElORykK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxXZWJHTEZy
YW1lYnVmZmVyPj4oYmluZGluZykgJiYgV1RGOjpnZXQ8UmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+
PihiaW5kaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZlB0cjxXZWJHTEZyYW1lYnVmZmVyPj4oYmluZGluZykgJiYgc3RkOjpnZXQ8UmVmUHRyPFdlYkdM
RnJhbWVidWZmZXI+PihiaW5kaW5nKTsKICAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29u
dGV4dEdMOjpSRU5ERVJCVUZGRVJfQklORElORykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4+KGJpbmRpbmcpICYmIFdU
Rjo6Z2V0PFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4+KGJpbmRpbmcpOworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPj4o
YmluZGluZykgJiYgc3RkOjpnZXQ8UmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPj4oYmluZGluZyk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTc0OSw3ICs3NDksNyBAQCBwcml2
YXRlOgogICAgICAgICBXZWJHTEFueSBhdHRhY2htZW50UGFyYW1ldGVyID0gbV9jb250ZXh0Lmdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihHcmFwaGljc0NvbnRleHRHTDo6RlJBTUVC
VUZGRVIsIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dEdMOjpGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX09CSkVDVF9UWVBFKTsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHVu
c2lnbmVkPihhdHRhY2htZW50UGFyYW1ldGVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKFdURjo6Z2V0PHVuc2lnbmVkPihhdHRhY2htZW50UGFyYW1ldGVyKSAhPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oR3JhcGhpY3NDb250ZXh0R0w6OlJFTkRFUkJVRkZFUikpCisg
ICAgICAgIGlmIChzdGQ6OmdldDx1bnNpZ25lZD4oYXR0YWNobWVudFBhcmFtZXRlcikgIT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEdyYXBoaWNzQ29udGV4dEdMOjpSRU5ERVJCVUZGRVIpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
OCw3ICszOTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldExpbmUoY29uc3QgCiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBsaW5lUG9zaXRpb24gPSBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGxp
bmVQb3NpdGlvbiA9IFdURjo6Z2V0PGRvdWJsZT4ocG9zaXRpb24pOworICAgICAgICBsaW5lUG9z
aXRpb24gPSBzdGQ6OmdldDxkb3VibGU+KHBvc2l0aW9uKTsKIAogICAgICAgICBpZiAobV9saW5l
UG9zaXRpb24gPT0gbGluZVBvc2l0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQ3
MCw3ICs0NzAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldFBvc2l0aW9uKGNvCiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB0ZXh0UG9zaXRpb24gPSBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRl
eHRQb3NpdGlvbiA9IFdURjo6Z2V0PGRvdWJsZT4ocG9zaXRpb24pOworICAgICAgICB0ZXh0UG9z
aXRpb24gPSBzdGQ6OmdldDxkb3VibGU+KHBvc2l0aW9uKTsKICAgICAgICAgaWYgKCEodGV4dFBv
c2l0aW9uID49IDAgJiYgdGV4dFBvc2l0aW9uIDw9IDEwMCkpCiAgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW5kZXhTaXplRXJyb3IgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIx
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
YXV0byBkYXRhYmFzZVJlc3VsdCA9IFdURjo6Z2V0PFJlZlB0cjxJREJEYXRhYmFzZT4+KHJlc3Vs
dFZhbHVlKTsKKyAgICAgICAgYXV0byBkYXRhYmFzZVJlc3VsdCA9IHN0ZDo6Z2V0PFJlZlB0cjxJ
REJEYXRhYmFzZT4+KHJlc3VsdFZhbHVlKTsKICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFi
YXNlLT5leGVjdXRlKCpkYXRhYmFzZVJlc3VsdCk7CiAgICAgICAgIGRhdGFiYXNlUmVzdWx0LT5j
bG9zZSgpOwogICAgIH0KQEAgLTM2Nyw3ICszNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGN1cnNvciA9IFdURjo6Z2V0PFJlZlB0
cjxJREJDdXJzb3I+PihyZXN1bHRWYWx1ZSk7CisgICAgICAgIGF1dG8gY3Vyc29yID0gc3RkOjpn
ZXQ8UmVmUHRyPElEQkN1cnNvcj4+KHJlc3VsdFZhbHVlKTsKIAogICAgICAgICBpZiAobV9za2lw
Q291bnQpIHsKICAgICAgICAgICAgIGlmIChjdXJzb3ItPmFkdmFuY2UobV9za2lwQ291bnQpLmhh
c0V4Y2VwdGlvbigpKQpJbmRleDogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTIsMTMgKzE5MiwxMyBAQCBMZWFmQm94SXRlcmF0b3IgYm94Rm9y
KGNvbnN0IExheW91dEludGVnCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQp
CiBjb25zdCBCb3hNb2Rlcm5QYXRoJiBCb3g6Om1vZGVyblBhdGgoKSBjb25zdAogewotICAgIHJl
dHVybiBXVEY6OmdldDxCb3hNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KTsKKyAgICByZXR1cm4g
c3RkOjpnZXQ8Qm94TW9kZXJuUGF0aD4obV9wYXRoVmFyaWFudCk7CiB9CiAjZW5kaWYKIAogY29u
c3QgQm94TGVnYWN5UGF0aCYgQm94OjpsZWdhY3lQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V1RGOjpnZXQ8Qm94TGVnYWN5UGF0aD4obV9wYXRoVmFyaWFudCk7CisgICAgcmV0dXJuIHN0ZDo6
Z2V0PEJveExlZ2FjeVBhdGg+KG1fcGF0aFZhcmlhbnQpOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3gu
aAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw3ICsyNDYsNyBAQCBp
bmxpbmUgY29uc3QgTGVnYWN5SW5saW5lQm94KiBCb3g6OmxlZ2FjCiB7CiAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPEJveExlZ2FjeVBhdGg+KG1fcGF0aFZhcmlhbnQpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gV1RGOjpnZXQ8Qm94TGVnYWN5UGF0aD4obV9w
YXRoVmFyaWFudCkubGVnYWN5SW5saW5lQm94KCk7CisgICAgcmV0dXJuIHN0ZDo6Z2V0PEJveExl
Z2FjeVBhdGg+KG1fcGF0aFZhcmlhbnQpLmxlZ2FjeUlubGluZUJveCgpOwogfQogCiAjaWYgRU5B
QkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCkBAIC0yNTQsNyArMjU0LDcgQEAgaW5saW5l
IGNvbnN0IElubGluZURpc3BsYXk6OkJveCogQm94OjppbgogewogICAgIGlmICghc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxCb3hNb2Rlcm5QYXRoPihtX3BhdGhWYXJpYW50KSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuICZXVEY6OmdldDxCb3hNb2Rlcm5QYXRoPihtX3BhdGhW
YXJpYW50KS5ib3goKTsKKyAgICByZXR1cm4gJnN0ZDo6Z2V0PEJveE1vZGVyblBhdGg+KG1fcGF0
aFZhcmlhbnQpLmJveCgpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
aW9zL0ZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0Zy
YW1lSU9TLm1tCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9G
cmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzI4LDcgKzcyOCw3IEBAIE5TQXJyYXkgKkZy
YW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW4KICAgICBzaXplX3QgaW50ZXJwcmV0YXRpb25z
Q291bnQgPSAxOwogCiAgICAgZm9yIChhdXRvKiBtYXJrZXIgOiBtYXJrZXJzSW5Sb290KQotICAg
ICAgICBpbnRlcnByZXRhdGlvbnNDb3VudCAqPSBXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4obWFy
a2VyLT5kYXRhKCkpLnNpemUoKSArIDE7CisgICAgICAgIGludGVycHJldGF0aW9uc0NvdW50ICo9
IHN0ZDo6Z2V0PFZlY3RvcjxTdHJpbmc+PihtYXJrZXItPmRhdGEoKSkuc2l6ZSgpICsgMTsKIAog
ICAgIFZlY3RvcjxWZWN0b3I8VUNoYXI+PiBpbnRlcnByZXRhdGlvbnM7CiAgICAgaW50ZXJwcmV0
YXRpb25zLmdyb3coaW50ZXJwcmV0YXRpb25zQ291bnQpOwpAQCAtNzM5LDcgKzczOSw3IEBAIE5T
QXJyYXkgKkZyYW1lOjppbnRlcnByZXRhdGlvbnNGb3JDdXJyZW4KIAogICAgIGZvciAoYXV0byYg
bm9kZSA6IGludGVyc2VjdGluZ05vZGVzKHJhbmdlT2ZSb290Q29udGVudHMpKSB7CiAgICAgICAg
IGZvciAoYXV0byogbWFya2VyIDogZG9jdW1lbnQoKS0+bWFya2VycygpLm1hcmtlcnNGb3Iobm9k
ZSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvblBocmFzZVdpdGhBbHRlcm5hdGl2ZXMpKSB7Ci0g
ICAgICAgICAgICBhdXRvJiBhbHRlcm5hdGl2ZXMgPSBXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4o
bWFya2VyLT5kYXRhKCkpOworICAgICAgICAgICAgYXV0byYgYWx0ZXJuYXRpdmVzID0gc3RkOjpn
ZXQ8VmVjdG9yPFN0cmluZz4+KG1hcmtlci0+ZGF0YSgpKTsKIAogICAgICAgICAgICAgYXV0byBy
YW5nZUZvck1hcmtlciA9IG1ha2VTaW1wbGVSYW5nZShub2RlLCAqbWFya2VyKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmNwcAko
cmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RhdGljIHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRCdWZmZXI+
PiBjb3B5UGxhdGZvcm1EYXRhKGNvbnN0IHN0ZDo6dmFyaWFudDxTdHJpbmcsIFJlZjxTaGFyZWRC
dWZmZXI+PiYgb3RoZXIpCiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5n
PihvdGhlcikpCi0gICAgICAgIHJldHVybiB7IFdURjo6Z2V0PFN0cmluZz4ob3RoZXIpIH07Cisg
ICAgICAgIHJldHVybiB7IHN0ZDo6Z2V0PFN0cmluZz4ob3RoZXIpIH07CiAKICAgICBpZiAoc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpKQotICAgICAgICBy
ZXR1cm4geyBXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlSZWYoKSB9Owor
ICAgICAgICByZXR1cm4geyBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4ob3RoZXIpLmNvcHlS
ZWYoKSB9OwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTIwOSw3ICsyMDksNyBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBQYXN0ZWJvYXJkQ3VzdG9tRGF0CiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4o
ZW50cnkucGxhdGZvcm1EYXRhKSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6OmdldDxSZWY8U2hh
cmVkQnVmZmVyPj4oZW50cnkucGxhdGZvcm1EYXRhKS5jb3B5UmVmKCk7CisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KGVudHJ5LnBsYXRmb3JtRGF0YSkuY29w
eVJlZigpOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTIyMyw3ICsyMjMs
NyBAQCBTdHJpbmcgUGFzdGVib2FyZEN1c3RvbURhdGE6OnJlYWRTdHJpbmcoCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+
KGVudHJ5LnBsYXRmb3JtRGF0YSkpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpnZXQ8U3RyaW5n
PihlbnRyeS5wbGF0Zm9ybURhdGEpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFN0cmlu
Zz4oZW50cnkucGxhdGZvcm1EYXRhKTsKIAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAg
LTI1MSw3ICsyNTEsNyBAQCB2b2lkIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpmb3JFYWNoUGxhdGZv
CiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KGVudHJ5LnBsYXRm
b3JtRGF0YSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIHN0cmluZyA9
IFdURjo6Z2V0PFN0cmluZz4oZW50cnkucGxhdGZvcm1EYXRhKTsKKyAgICAgICAgYXV0byBzdHJp
bmcgPSBzdGQ6OmdldDxTdHJpbmc+KGVudHJ5LnBsYXRmb3JtRGF0YSk7CiAgICAgICAgIGlmICgh
c3RyaW5nLmlzTnVsbCgpKQogICAgICAgICAgICAgZnVuY3Rpb24oZW50cnkudHlwZSwgc3RyaW5n
KTsKICAgICB9CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Zm9yRWFjaFBsYXRmbwogewogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2RhdGEpIHsKICAgICAg
ICAgYXV0byYgZGF0YSA9IGVudHJ5LnBsYXRmb3JtRGF0YTsKLSAgICAgICAgaWYgKChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oZGF0YSkgJiYgIVdURjo6Z2V0PFN0cmluZz4oZGF0YSku
aXNOdWxsKCkpIHx8IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmPFNoYXJlZEJ1ZmZlcj4+KGRh
dGEpKQorICAgICAgICBpZiAoKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihkYXRhKSAm
JiAhc3RkOjpnZXQ8U3RyaW5nPihkYXRhKS5pc051bGwoKSkgfHwgc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oZGF0YSkpCiAgICAgICAgICAgICBmdW5jdGlvbihlbnRy
eS50eXBlLCBkYXRhKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCiAKICAgICBWZWN0b3I8dWlu
dDhfdD4gY29tYmluZWREYXRhOwogICAgIGlmIChoYXNPbmVTZWdtZW50KCkgJiYgc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9p
bW11dGFibGVEYXRhKSkKLSAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShXVEY6
OmdldDxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVE
YXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgICAgICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4
Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5t
X2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhfdD4oKSk7CiAgICAgZWxzZQogICAgICAgICBj
b21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1E
ZXNjcmlwdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAkocmV2aXNpb24gMjg0MDkxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDcgKzIzNCw3IEBAIGJvb2wgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uOjpvcGVyYXRvcj0KICAgICBpZiAob3RoZXIucGxhdGZvcm1EZXNj
cmlwdGlvbigpLnR5cGUgIT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2lj
VHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG9wZXJhdG9yPT0oKldU
Rjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KG90aGVyLnBsYXRmb3Jt
RGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbikpOworICAgIHJldHVybiBvcGVyYXRvcj09KCpzdGQ6
OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihvdGhlci5wbGF0Zm9ybURl
c2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pKTsKIH0KIAogYm9vbCBDQUF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb246Om9wZXJhdG9yIT0oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3RoZXIpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaAkocmV2aXNpb24gMjg0MDkxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2Ny
aXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb246OmRlY29kZShEZQogaW5saW5lIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
biB0b0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbikKIHsKICAgICBBU1NFUlQoZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlw
dGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2ljVHlw
ZSk7Ci0gICAgcmV0dXJuIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbigqV1RGOjpnZXQ8Y29uc3Qg
QXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlw
dGlvbigpLmRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bigqc3RkOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRp
b24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lZGlhVXRpbGl0aWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NZWRpYVV0aWxpdGllcy5jcHAJKHJl
dmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lZGlhVXRp
bGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBjcmVhdGVBdWRpb0Zv
cm1hdERlc2NyaXB0aW9uKGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCBzaXplX3QgbWFnaWNDb29raWVTaXplLCBjb25zdCB2b2lkKiBtYWdpY0Nvb2tpZSkKIHsKLSAg
ICBhdXRvIGJhc2ljRGVzY3JpcHRpb24gPSBXVEY6OmdldDxjb25zdCBBdWRpb1N0cmVhbUJhc2lj
RGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCkuZGVzY3JpcHRp
b24pOworICAgIGF1dG8gYmFzaWNEZXNjcmlwdGlvbiA9IHN0ZDo6Z2V0PGNvbnN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5k
ZXNjcmlwdGlvbik7CiAgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXQgPSBudWxscHRy
OwogICAgIGF1dG8gZXJyb3IgPSBQQUw6OkNNQXVkaW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBiYXNpY0Rlc2NyaXB0aW9uLCAwLCBudWxscHRyLCBtYWdpY0Nv
b2tpZVNpemUsIG1hZ2ljQ29va2llLCBudWxscHRyLCAmZm9ybWF0KTsKICAgICBpZiAoZXJyb3Ip
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2Vu
ZXJpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZERlY29kZXJHZW5lcmljLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBLZXllZERlY29k
ZXJHZW5lcmljOjpEaWN0aW9uYXJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICB1c2luZyBOb2RlID0gVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIGJvb2wsIHVp
bnQzMl90LCB1aW50NjRfdCwgaW50MzJfdCwgaW50NjRfdCwgZmxvYXQsIGRvdWJsZSwgU3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8RGljdGlvbmFyeT4sIHN0ZDo6dW5pcXVlX3B0cjxBcnJheT4+Owor
ICAgIHVzaW5nIE5vZGUgPSBzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBib29sLCB1aW50
MzJfdCwgdWludDY0X3QsIGludDMyX3QsIGludDY0X3QsIGZsb2F0LCBkb3VibGUsIFN0cmluZywg
c3RkOjp1bmlxdWVfcHRyPERpY3Rpb25hcnk+LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXk+PjsKIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYga2V5
LCBUJiYgdmFsdWUpIHsgbV9tYXAuYWRkKGtleSwgbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9j
Q2hlY2s8Tm9kZT4oc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAkocmV2aXNp
b24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdP
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE3ICs1NywxNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzQXV0bygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gaGFzRGVjb2RpbmdN
b2RlKCkgJiYgV1RGOjpnZXQ8RGVjb2RpbmdNb2RlPihtX2RlY29kaW5nTW9kZU9yU2l6ZSkgPT0g
RGVjb2RpbmdNb2RlOjpBdXRvOworICAgICAgICByZXR1cm4gaGFzRGVjb2RpbmdNb2RlKCkgJiYg
c3RkOjpnZXQ8RGVjb2RpbmdNb2RlPihtX2RlY29kaW5nTW9kZU9yU2l6ZSkgPT0gRGVjb2RpbmdN
b2RlOjpBdXRvOwogICAgIH0KICAgICAKICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYmIFdURjo6Z2V0PERlY29k
aW5nTW9kZT4obV9kZWNvZGluZ01vZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXM7CisgICAgICAgIHJldHVybiBoYXNEZWNvZGluZ01vZGUoKSAmJiBzdGQ6OmdldDxEZWNvZGlu
Z01vZGU+KG1fZGVjb2RpbmdNb2RlT3JTaXplKSA9PSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
OwogICAgIH0KIAogICAgIGJvb2wgaXNBc3luY2hyb25vdXMoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGhhc0RlY29kaW5nTW9kZSgpICYmIFdURjo6Z2V0PERlY29kaW5nTW9kZT4obV9k
ZWNvZGluZ01vZGVPclNpemUpID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzOworICAgICAg
ICByZXR1cm4gaGFzRGVjb2RpbmdNb2RlKCkgJiYgc3RkOjpnZXQ8RGVjb2RpbmdNb2RlPihtX2Rl
Y29kaW5nTW9kZU9yU2l6ZSkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM7CiAgICAgfQog
CiAgICAgYm9vbCBpc0FzeW5jaHJvbm91c0NvbXBhdGlibGVXaXRoKGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgZGVjb2RpbmdPcHRpb25zKSBjb25zdApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoK
ICAgICBzdGQ6Om9wdGlvbmFsPEludFNpemU+IHNpemVGb3JEcmF3aW5nKCkgY29uc3QKICAgICB7
CiAgICAgICAgIEFTU0VSVChoYXNTaXplKCkpOwotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8c3Rk
OjpvcHRpb25hbDxJbnRTaXplPj4obV9kZWNvZGluZ01vZGVPclNpemUpOworICAgICAgICByZXR1
cm4gc3RkOjpnZXQ8c3RkOjpvcHRpb25hbDxJbnRTaXplPj4obV9kZWNvZGluZ01vZGVPclNpemUp
OwogICAgIH0KIAogICAgIHN0YXRpYyBpbnQgbWF4RGltZW5zaW9uKGNvbnN0IEludFNpemUmIHNp
emUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAkocmV2
aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NiwxMyArMTc2LDEzIEBAIHZvaWQgUGF0aDo6YXBwbHko
Y29uc3QgUGF0aEFwcGxpZXJGdW5jdGkKICAgICBpZiAoaGFzSW5saW5lRGF0YTxNb3ZlRGF0YT4o
KSkgewogICAgICAgICBQYXRoRWxlbWVudCBlbGVtZW50OwogICAgICAgICBlbGVtZW50LnR5cGUg
PSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ7Ci0gICAgICAgIGVsZW1lbnQucG9pbnRz
WzBdID0gV1RGOjpnZXQ8TW92ZURhdGE+KG1faW5saW5lRGF0YSkubG9jYXRpb247CisgICAgICAg
IGVsZW1lbnQucG9pbnRzWzBdID0gc3RkOjpnZXQ8TW92ZURhdGE+KG1faW5saW5lRGF0YSkubG9j
YXRpb247CiAgICAgICAgIGZ1bmN0aW9uKGVsZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKGhhc0lubGluZURhdGE8TGluZURhdGE+KCkpIHsKLSAgICAgICAgYXV0byYg
bGluZSA9IFdURjo6Z2V0PExpbmVEYXRhPihtX2lubGluZURhdGEpOworICAgICAgICBhdXRvJiBs
aW5lID0gc3RkOjpnZXQ8TGluZURhdGE+KG1faW5saW5lRGF0YSk7CiAgICAgICAgIFBhdGhFbGVt
ZW50IGVsZW1lbnQ7CiAgICAgICAgIGVsZW1lbnQudHlwZSA9IFBhdGhFbGVtZW50OjpUeXBlOjpN
b3ZlVG9Qb2ludDsKICAgICAgICAgZWxlbWVudC5wb2ludHNbMF0gPSBsaW5lLnN0YXJ0OwpAQCAt
MTk0LDcgKzE5NCw3IEBAIHZvaWQgUGF0aDo6YXBwbHkoY29uc3QgUGF0aEFwcGxpZXJGdW5jdGkK
ICAgICB9CiAKICAgICBpZiAoaGFzSW5saW5lRGF0YTxCZXppZXJDdXJ2ZURhdGE+KCkpIHsKLSAg
ICAgICAgYXV0byYgY3VydmUgPSBXVEY6OmdldDxCZXppZXJDdXJ2ZURhdGE+KG1faW5saW5lRGF0
YSk7CisgICAgICAgIGF1dG8mIGN1cnZlID0gc3RkOjpnZXQ8QmV6aWVyQ3VydmVEYXRhPihtX2lu
bGluZURhdGEpOwogICAgICAgICBQYXRoRWxlbWVudCBlbGVtZW50OwogICAgICAgICBlbGVtZW50
LnR5cGUgPSBQYXRoRWxlbWVudDo6VHlwZTo6TW92ZVRvUG9pbnQ7CiAgICAgICAgIGVsZW1lbnQu
cG9pbnRzWzBdID0gY3VydmUuc3RhcnRQb2ludDsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFBh
dGg6OmFwcGx5KGNvbnN0IFBhdGhBcHBsaWVyRnVuY3RpCiAgICAgfQogCiAgICAgaWYgKGhhc0lu
bGluZURhdGE8UXVhZEN1cnZlRGF0YT4oKSkgewotICAgICAgICBhdXRvJiBjdXJ2ZSA9IFdURjo6
Z2V0PFF1YWRDdXJ2ZURhdGE+KG1faW5saW5lRGF0YSk7CisgICAgICAgIGF1dG8mIGN1cnZlID0g
c3RkOjpnZXQ8UXVhZEN1cnZlRGF0YT4obV9pbmxpbmVEYXRhKTsKICAgICAgICAgUGF0aEVsZW1l
bnQgZWxlbWVudDsKICAgICAgICAgZWxlbWVudC50eXBlID0gUGF0aEVsZW1lbnQ6OlR5cGU6Ok1v
dmVUb1BvaW50OwogICAgICAgICBlbGVtZW50LnBvaW50c1swXSA9IGN1cnZlLnN0YXJ0UG9pbnQ7
CkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBQYXRoOjphZGRRdWFkQ3VydmVUbyhjb25zdCBGbG9h
dFBvaQogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQogICAgIGlmIChpc051bGwoKSB8fCBo
YXNJbmxpbmVEYXRhPE1vdmVEYXRhPigpKSB7CiAgICAgICAgIFF1YWRDdXJ2ZURhdGEgY3VydmU7
Ci0gICAgICAgIGN1cnZlLnN0YXJ0UG9pbnQgPSBoYXNJbmxpbmVEYXRhKCkgPyBXVEY6OmdldDxN
b3ZlRGF0YT4obV9pbmxpbmVEYXRhKS5sb2NhdGlvbiA6IEZsb2F0UG9pbnQoKTsKKyAgICAgICAg
Y3VydmUuc3RhcnRQb2ludCA9IGhhc0lubGluZURhdGEoKSA/IHN0ZDo6Z2V0PE1vdmVEYXRhPiht
X2lubGluZURhdGEpLmxvY2F0aW9uIDogRmxvYXRQb2ludCgpOwogICAgICAgICBjdXJ2ZS5jb250
cm9sUG9pbnQgPSBjb250cm9sUG9pbnQ7CiAgICAgICAgIGN1cnZlLmVuZFBvaW50ID0gZW5kUG9p
bnQ7CiAgICAgICAgIG1faW5saW5lRGF0YSA9IHsgV1RGTW92ZShjdXJ2ZSkgfTsKQEAgLTM2NCw3
ICszNjQsNyBAQCB2b2lkIFBhdGg6OmFkZEJlemllckN1cnZlVG8oY29uc3QgRmxvYXRQCiAjaWYg
RU5BQkxFKElOTElORV9QQVRIX0RBVEEpCiAgICAgaWYgKGlzTnVsbCgpIHx8IGhhc0lubGluZURh
dGE8TW92ZURhdGE+KCkpIHsKICAgICAgICAgQmV6aWVyQ3VydmVEYXRhIGN1cnZlOwotICAgICAg
ICBjdXJ2ZS5zdGFydFBvaW50ID0gaGFzSW5saW5lRGF0YSgpID8gV1RGOjpnZXQ8TW92ZURhdGE+
KG1faW5saW5lRGF0YSkubG9jYXRpb24gOiBGbG9hdFBvaW50KCk7CisgICAgICAgIGN1cnZlLnN0
YXJ0UG9pbnQgPSBoYXNJbmxpbmVEYXRhKCkgPyBzdGQ6OmdldDxNb3ZlRGF0YT4obV9pbmxpbmVE
YXRhKS5sb2NhdGlvbiA6IEZsb2F0UG9pbnQoKTsKICAgICAgICAgY3VydmUuY29udHJvbFBvaW50
MSA9IGNvbnRyb2xQb2ludDE7CiAgICAgICAgIGN1cnZlLmNvbnRyb2xQb2ludDIgPSBjb250cm9s
UG9pbnQyOwogICAgICAgICBjdXJ2ZS5lbmRQb2ludCA9IGVuZFBvaW50OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAkocmV2aXNpb24gMjg0MDkxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MjQsMTIgKzQyNCwxMiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGF0YVR5cGU+IGlubGluZSBib29s
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPiBpbmxpbmUgY29uc3QgRGF0YVR5cGUmIFBh
dGg6OmlubGluZURhdGEoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmdldDxEYXRhVHlwZT4o
bV9pbmxpbmVEYXRhKTsKKyAgICByZXR1cm4gc3RkOjpnZXQ8RGF0YVR5cGU+KG1faW5saW5lRGF0
YSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERhdGFUeXBlPiBpbmxpbmUgRGF0YVR5cGUmIFBh
dGg6OmlubGluZURhdGEoKQogewotICAgIHJldHVybiBXVEY6OmdldDxEYXRhVHlwZT4obV9pbmxp
bmVEYXRhKTsKKyAgICByZXR1cm4gc3RkOjpnZXQ8RGF0YVR5cGU+KG1faW5saW5lRGF0YSk7CiB9
CiAKIGlubGluZSBib29sIFBhdGg6Omhhc0lubGluZURhdGEoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDI5LDcgKzI0MjksNyBAQCBwcml2YXRlOgogICAgIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCi11c2luZyBEaXNwbGF5TGlz
dEl0ZW0gPSBWYXJpYW50Cit1c2luZyBEaXNwbGF5TGlzdEl0ZW0gPSBzdGQ6OnZhcmlhbnQKICAg
ICA8IEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IKICAgICAsIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzCiAgICAgLCBCZWdpblRyYW5zcGFyZW5jeUxheWVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4NCw3ICs5ODQsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5CiAgICAgQVNTRVJUKG1faXNMZWdh
Y3lQbGF5YmluKTsKIAogICAgIHVzaW5nIFRyYWNrVHlwZSA9IFRyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXI6OlRyYWNrVHlwZTsKLSAgICBWYXJpYW50PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRy
PEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyPj4qLCBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0
cjxWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+KiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4+Kj4gdmFyaWFudFRyYWNrcyA9IHN0
YXRpY19jYXN0PEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPFRyYWNrUHJpdmF0ZVR5cGU+Pio+
KDApOworICAgIHN0ZDo6dmFyaWFudDxIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxBdWRpb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lcj4+KiwgSGFzaE1hcDxBdG9tU3RyaW5nLCBSZWZQdHI8VmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXI+PiosIEhhc2hNYXA8QXRvbVN0cmluZywgUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+Pio+IHZhcmlhbnRUcmFja3MgPSBzdGF0aWNfY2Fz
dDxIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4qPigwKTsKICAg
ICBhdXRvIHR5cGUoc3RhdGljX2Nhc3Q8VHJhY2tUeXBlPih2YXJpYW50VHJhY2tzLmluZGV4KCkp
KTsKICAgICBjb25zdCBjaGFyKiB0eXBlTmFtZTsKICAgICBib29sKiBoYXNUeXBlOwpAQCAtMTAw
Nyw3ICsxMDA3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeQog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBI
YXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4mIHRyYWNrcyA9ICpX
VEY6OmdldDxIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZhdGVUeXBlPj4qPih2
YXJpYW50VHJhY2tzKTsKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxUcmFja1ByaXZh
dGVUeXBlPj4mIHRyYWNrcyA9ICpzdGQ6OmdldDxIYXNoTWFwPEF0b21TdHJpbmcsIFJlZlB0cjxU
cmFja1ByaXZhdGVUeXBlPj4qPih2YXJpYW50VHJhY2tzKTsKIAogICAgIC8vIElnbm9yZSBub3Rp
ZmljYXRpb25zIGFmdGVyIGEgRU9TLiBXZSBkb24ndCB3YW50IHRoZSB0cmFja3MgdG8gZGlzYXBw
ZWFyIHdoZW4gdGhlIHZpZGVvIGlzIGZpbmlzaGVkLgogICAgIGlmIChtX2lzRW5kUmVhY2hlZCAm
JiAodHlwZSA9PSBUcmFja1R5cGU6OkF1ZGlvIHx8IHR5cGUgPT0gVHJhY2tUeXBlOjpWaWRlbykp
CkBAIC0xMDYyLDE2ICsxMDYyLDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpub3RpZnkKICAgICAgICAgQVNTRVJUKHN0cmVhbUlkID09IHRyYWNrLT5pZCgpKTsKICAgICAg
ICAgdHJhY2tzLmFkZChzdHJlYW1JZCwgdHJhY2suY29weVJlZigpKTsKIAotICAgICAgICBWYXJp
YW50PEF1ZGlvVHJhY2tQcml2YXRlKiwgVmlkZW9UcmFja1ByaXZhdGUqLCBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlKj4gdmFyaWFudFRyYWNrKCZ0cmFjay5nZXQoKSk7CisgICAgICAgIHN0ZDo6dmFy
aWFudDxBdWRpb1RyYWNrUHJpdmF0ZSosIFZpZGVvVHJhY2tQcml2YXRlKiwgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZSo+IHZhcmlhbnRUcmFjaygmdHJhY2suZ2V0KCkpOwogICAgICAgICBzd2l0Y2gg
KHZhcmlhbnRUcmFjay5pbmRleCgpKSB7CiAgICAgICAgIGNhc2UgVHJhY2tUeXBlOjpBdWRpbzoK
LSAgICAgICAgICAgIG1fcGxheWVyLT5hZGRBdWRpb1RyYWNrKCpXVEY6OmdldDxBdWRpb1RyYWNr
UHJpdmF0ZSo+KHZhcmlhbnRUcmFjaykpOworICAgICAgICAgICAgbV9wbGF5ZXItPmFkZEF1ZGlv
VHJhY2soKnN0ZDo6Z2V0PEF1ZGlvVHJhY2tQcml2YXRlKj4odmFyaWFudFRyYWNrKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUcmFja1R5cGU6OlZpZGVvOgotICAgICAgICAg
ICAgbV9wbGF5ZXItPmFkZFZpZGVvVHJhY2soKldURjo6Z2V0PFZpZGVvVHJhY2tQcml2YXRlKj4o
dmFyaWFudFRyYWNrKSk7CisgICAgICAgICAgICBtX3BsYXllci0+YWRkVmlkZW9UcmFjaygqc3Rk
OjpnZXQ8VmlkZW9UcmFja1ByaXZhdGUqPih2YXJpYW50VHJhY2spKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFRyYWNrVHlwZTo6VGV4dDoKLSAgICAgICAgICAgIG1fcGxheWVy
LT5hZGRUZXh0VHJhY2soKldURjo6Z2V0PEluYmFuZFRleHRUcmFja1ByaXZhdGUqPih2YXJpYW50
VHJhY2spKTsKKyAgICAgICAgICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2soKnN0ZDo6Z2V0PElu
YmFuZFRleHRUcmFja1ByaXZhdGUqPih2YXJpYW50VHJhY2spKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJL
ZXkuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjUsNyArMTI1LDcgQEAgYm9vbCBDRE1Qcm94eUNsZWFyS2V5OjpjZW5jU2V0RGVjcnlwdGlv
bgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxWZWN0b3I8dWludDhfdD4+KGtleURhdGEudmFsdWUoKSkpOwotICAgIGF1dG8mIGtleURh
dGFWYWx1ZSA9IFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4oa2V5RGF0YS52YWx1ZSgpKTsKKyAg
ICBhdXRvJiBrZXlEYXRhVmFsdWUgPSBzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGtleURhdGEu
dmFsdWUoKSk7CiAKICAgICBpZiAoZ2NyeV9lcnJvcl90IGNpcGhlckVycm9yID0gZ2NyeV9jaXBo
ZXJfc2V0a2V5KGdDcnlwdEhhbmRsZSgpLCBrZXlEYXRhVmFsdWUuZGF0YSgpLCBrZXlEYXRhVmFs
dWUuc2l6ZSgpKSkgewogI2lmICFMT0dfRElTQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5VGh1bmRlci5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlUaHVuZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBCb3hQdHI8T3BlbkNETVNlc3Npb24+IENETVByb3h5
VGh1bmRlcjo6CiAgICAgS2V5SGFuZGxlVmFsdWVWYXJpYW50IGtleURhdGEgPSBrZXlIYW5kbGUu
dmFsdWUoKS0+dmFsdWUoKTsKICAgICBBU1NFUlQoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxCb3hQ
dHI8T3BlbkNETVNlc3Npb24+PihrZXlEYXRhKSk7CiAKLSAgICBCb3hQdHI8T3BlbkNETVNlc3Np
b24+IGtleVZhbHVlID0gV1RGOjpnZXQ8Qm94UHRyPE9wZW5DRE1TZXNzaW9uPj4oa2V5RGF0YSk7
CisgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBrZXlWYWx1ZSA9IHN0ZDo6Z2V0PEJveFB0cjxP
cGVuQ0RNU2Vzc2lvbj4+KGtleURhdGEpOwogCiAgICAgaWYgKCFrZXlWYWx1ZSkgewogICAgICAg
ICBrZXlWYWx1ZSA9IGFkb3B0SW5Cb3hQdHIob3BlbmNkbV9nZXRfc3lzdGVtX3Nlc3Npb24oJnN0
YXRpY19jYXN0PGNvbnN0IENETUluc3RhbmNlVGh1bmRlcio+KGluc3RhbmNlKCkpLT50aHVuZGVy
U3lzdGVtKCksIGtleUlELmRhdGEoKSwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3Ry
dWN0IEV4dGVybmFsT0VTVGV4dHVyZSB7CiAgICAgICAgIEdMdWludCBpZDsKICAgICB9OwotICAg
IHVzaW5nIFRleHR1cmVWYXJpYW50ID0gV1RGOjpWYXJpYW50PFJHQlRleHR1cmUsIFlVVlRleHR1
cmUsIEV4dGVybmFsT0VTVGV4dHVyZT47CisgICAgdXNpbmcgVGV4dHVyZVZhcmlhbnQgPSBzdGQ6
OnZhcmlhbnQ8UkdCVGV4dHVyZSwgWVVWVGV4dHVyZSwgRXh0ZXJuYWxPRVNUZXh0dXJlPjsKIAog
ICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFRleHR1cmVWYXJpYW50JiYsIGNv
bnN0IEludFNpemUmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzLCBHTGludCBpbnRlcm5hbEZvcm1h
dCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbQkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NjU3LDEwICs2NTcsMTAgQEAgc3RhdGljIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJSZWdpc3Ry
YQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0
aXZlPFN0cmluZz4odmFsdWUpKSB7Ci0gICAgICAgICAgICBpZiAoV1RGOjpnZXQ8U3RyaW5nPih2
YWx1ZSkuaXNOdWxsKCkpCisgICAgICAgICAgICBpZiAoc3RkOjpnZXQ8U3RyaW5nPih2YWx1ZSku
aXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBOU1N0cmlu
ZyAqbnNTdHJpbmdWYWx1ZSA9IFdURjo6Z2V0PFN0cmluZz4odmFsdWUpOworICAgICAgICAgICAg
TlNTdHJpbmcgKm5zU3RyaW5nVmFsdWUgPSBzdGQ6OmdldDxTdHJpbmc+KHZhbHVlKTsKICAgICAg
ICAgICAgIGF1dG8gY2ZUeXBlID0gY29jb2FUeXBlLmNyZWF0ZUNGU3RyaW5nKCk7CiBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICAgICAgaWYgKFVUVHlwZUNvbmZv
cm1zVG8oY2ZUeXBlLmdldCgpLCBrVVRUeXBlVVJMKSkKQEAgLTY3Myw3ICs2NzMsNyBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGF1dG8gYnVmZmVyID0gV1RGOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+
KHZhbHVlKTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVy
Pj4odmFsdWUpOwogICAgICAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOmJ1
ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yVHlwZTooTlNTdHJpbmcgKiljb2NvYVR5cGVd
OwogICAgIH0pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0JKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2NCwxMCArMjY0LDEwIEBAIGludDY0X3QgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCAKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4o
c3RyaW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBs
YXRmb3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlcikt
PmNyZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpw
bGF0Zm9ybURhdGEuZ2V0KCkgZm9yVHlwZTpwbGF0Zm9ybVR5cGVdOwogICAgICAgICB9IGVsc2Ug
aWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpIHsKLSAg
ICAgICAgICAgIGF1dG8gc3RyaW5nID0gV1RGOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcik7
CisgICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZm
ZXIpOwogICAgICAgICAgICAgaWYgKCEhc3RyaW5nKQogICAgICAgICAgICAgICAgIFttX3Bhc3Rl
Ym9hcmQgc2V0U3RyaW5nOnN0cmluZyBmb3JUeXBlOnBsYXRmb3JtVHlwZV07CiAgICAgICAgIH0K
QEAgLTUwNiwxMCArNTA2LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkSXRlbT4g
Y3JlYXQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWY8U2hhcmVkQnVmZmVyPj4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBwbGF0Zm9ybURhdGEgPSBXVEY6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4oc3Ry
aW5nT3JCdWZmZXIpLT5jcmVhdGVOU0RhdGEoKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHBsYXRm
b3JtRGF0YSA9IHN0ZDo6Z2V0PFJlZjxTaGFyZWRCdWZmZXI+PihzdHJpbmdPckJ1ZmZlciktPmNy
ZWF0ZU5TRGF0YSgpKQogICAgICAgICAgICAgICAgIFtpdGVtIHNldERhdGE6cGxhdGZvcm1EYXRh
LmdldCgpIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfSBlbHNlIGlmIChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7Ci0gICAgICAgICAgICBh
dXRvIHN0cmluZyA9IFdURjo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOworICAgICAgICAg
ICAgYXV0byBzdHJpbmcgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKTsKICAgICAg
ICAgICAgIGlmICghIXN0cmluZykKICAgICAgICAgICAgICAgICBbaXRlbSBzZXRTdHJpbmc6c3Ry
aW5nIGZvclR5cGU6cGxhdGZvcm1UeXBlXTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRpb1NoYXJlZFVuaXQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tBdWRp
b1NoYXJlZFVuaXQubW0JKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrQXVkaW9TaGFyZWRVbml0Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDksNyArMTA5LDcgQEAgTW9ja0F1ZGlvU2hhcmVkVW5pdDo6TW9ja0F1ZGlvU2hhcmVk
VW5pdAogdm9pZCBNb2NrQXVkaW9TaGFyZWRVbml0OjpyZXNldFNhbXBsZVJhdGUoKQogewogICAg
IGlmIChhdXRvIGRldmljZSA9IE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjptb2NrRGV2
aWNlV2l0aFBlcnNpc3RlbnRJRChwZXJzaXN0ZW50SUQoKSkpCi0gICAgICAgIHNldFNhbXBsZVJh
dGUoV1RGOjpnZXQ8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihkZXZpY2UtPnByb3BlcnRpZXMp
LmRlZmF1bHRTYW1wbGVSYXRlKTsKKyAgICAgICAgc2V0U2FtcGxlUmF0ZShzdGQ6OmdldDxNb2Nr
TWljcm9waG9uZVByb3BlcnRpZXM+KGRldmljZS0+cHJvcGVydGllcykuZGVmYXVsdFNhbXBsZVJh
dGUpOwogfQogCiBib29sIE1vY2tBdWRpb1NoYXJlZFVuaXQ6Omhhc0F1ZGlvVW5pdCgpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9T
b3VyY2VQcm92aWRlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW0JKHJldmlz
aW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9X
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsx
NDAsNyBAQCB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYTo6cHJlcGFyCiB2b2lkIFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYTo6cmVjZWl2ZWROZXdBdWRpb1NhbXBsZXMoY29uc3Qg
UGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uLCBzaXplX3QgZnJhbWVDb3VudCkKIHsKICAgICBBU1NFUlQoZGVzY3JpcHRpb24u
cGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRp
b1N0cmVhbUJhc2ljVHlwZSk7Ci0gICAgYXV0byYgYmFzaWNEZXNjcmlwdGlvbiA9ICpXVEY6Omdl
dDxjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9y
bURlc2NyaXB0aW9uKCkuZGVzY3JpcHRpb24pOworICAgIGF1dG8mIGJhc2ljRGVzY3JpcHRpb24g
PSAqc3RkOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRp
b24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKTsKICAgICBpZiAoIW1faW5wdXRE
ZXNjcmlwdGlvbiB8fCBtX2lucHV0RGVzY3JpcHRpb24tPnN0cmVhbURlc2NyaXB0aW9uKCkgIT0g
YmFzaWNEZXNjcmlwdGlvbikKICAgICAgICAgcHJlcGFyZShiYXNpY0Rlc2NyaXB0aW9uKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFEZXZpY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYURldmljZS5o
CShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tN
ZWRpYURldmljZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsMTIgKzE4OCwxMiBAQCBzdHJ1Y3Qg
TW9ja01lZGlhRGV2aWNlIHsKICAgICAgICAgICAgIHJldHVybiBDYXB0dXJlRGV2aWNlOjpEZXZp
Y2VUeXBlOjpDYW1lcmE7CiAKICAgICAgICAgQVNTRVJUKGlzRGlzcGxheSgpKTsKLSAgICAgICAg
cmV0dXJuIFdURjo6Z2V0PE1vY2tEaXNwbGF5UHJvcGVydGllcz4ocHJvcGVydGllcykudHlwZTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PE1vY2tEaXNwbGF5UHJvcGVydGllcz4ocHJvcGVydGll
cykudHlwZTsKICAgICB9CiAKICAgICBjb25zdCBNb2NrU3BlYWtlclByb3BlcnRpZXMqIHNwZWFr
ZXJQcm9wZXJ0aWVzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBpc1NwZWFrZXIoKSA/
ICZXVEY6OmdldDxNb2NrU3BlYWtlclByb3BlcnRpZXM+KHByb3BlcnRpZXMpIDogbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIGlzU3BlYWtlcigpID8gJnN0ZDo6Z2V0PE1vY2tTcGVha2VyUHJvcGVy
dGllcz4ocHJvcGVydGllcykgOiBudWxscHRyOwogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1v
Y2tSZWFsdGltZUF1ZAogICAgIEFTU0VSVChkZXZpY2UpOwogICAgIG1fZGV2aWNlID0gKmRldmlj
ZTsKIAotICAgIHNldFNhbXBsZVJhdGUoV1RGOjpnZXQ8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVz
PihtX2RldmljZS5wcm9wZXJ0aWVzKS5kZWZhdWx0U2FtcGxlUmF0ZSk7CisgICAgc2V0U2FtcGxl
UmF0ZShzdGQ6OmdldDxNb2NrTWljcm9waG9uZVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRp
ZXMpLmRlZmF1bHRTYW1wbGVSYXRlKTsKICAgICBpbml0aWFsaXplRWNob0NhbmNlbGxhdGlvbih0
cnVlKTsKIH0KIApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2U6OnN0YXJ0UHJvZHUKICNlbmRpZgogCiAgICAgaWYgKCFzYW1wbGVSYXRlKCkpCi0gICAgICAg
IHNldFNhbXBsZVJhdGUoV1RGOjpnZXQ8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihtX2Rldmlj
ZS5wcm9wZXJ0aWVzKS5kZWZhdWx0U2FtcGxlUmF0ZSk7CisgICAgICAgIHNldFNhbXBsZVJhdGUo
c3RkOjpnZXQ8TW9ja01pY3JvcGhvbmVQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0aWVzKS5k
ZWZhdWx0U2FtcGxlUmF0ZSk7CiAKICAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwogICAgIG1fdGltZXIuc3RhcnRSZXBlYXRpbmcocmVuZGVySW50ZXJ2YWwoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBJbnRTaXplIE1vY2tEaXNwbGF5Q2Fw
dHVyZXI6OmludHJpbnNpY1NpCiAgICAgaWYgKCFkZXZpY2UtPmlzRGlzcGxheSgpKQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgYXV0byYgcHJvcGVydGllcyA9IFdURjo6Z2V0PE1vY2tEaXNw
bGF5UHJvcGVydGllcz4oZGV2aWNlLT5wcm9wZXJ0aWVzKTsKKyAgICBhdXRvJiBwcm9wZXJ0aWVz
ID0gc3RkOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihkZXZpY2UtPnByb3BlcnRpZXMpOwog
ICAgIHJldHVybiBwcm9wZXJ0aWVzLmRlZmF1bHRTaXplOwogfQogI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODksMTQgKzg5LDE0IEBAIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpNb2Nr
UmVhbHRpbWVWaWQKICAgICBtX2Rhc2hXaWR0aHMudW5jaGVja2VkQXBwZW5kKDYpOwogCiAgICAg
aWYgKG1vY2tEaXNwbGF5KCkpIHsKLSAgICAgICAgYXV0byYgcHJvcGVydGllcyA9IFdURjo6Z2V0
PE1vY2tEaXNwbGF5UHJvcGVydGllcz4obV9kZXZpY2UucHJvcGVydGllcyk7CisgICAgICAgIGF1
dG8mIHByb3BlcnRpZXMgPSBzdGQ6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KG1fZGV2aWNl
LnByb3BlcnRpZXMpOwogICAgICAgICBzZXRJbnRyaW5zaWNTaXplKHByb3BlcnRpZXMuZGVmYXVs
dFNpemUpOwogICAgICAgICBzZXRTaXplKHByb3BlcnRpZXMuZGVmYXVsdFNpemUpOwogICAgICAg
ICBtX2ZpbGxDb2xvciA9IHByb3BlcnRpZXMuZmlsbENvbG9yOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byYgcHJvcGVydGllcyA9IFdURjo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0
aWVzPihtX2RldmljZS5wcm9wZXJ0aWVzKTsKKyAgICBhdXRvJiBwcm9wZXJ0aWVzID0gc3RkOjpn
ZXQ8TW9ja0NhbWVyYVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpOwogICAgIHNldEZy
YW1lUmF0ZShwcm9wZXJ0aWVzLmRlZmF1bHRGcmFtZVJhdGUpOwogICAgIHNldEZhY2luZ01vZGUo
cHJvcGVydGllcy5mYWNpbmdNb2RlKTsKICAgICBtX2ZpbGxDb2xvciA9IHByb3BlcnRpZXMuZmls
bENvbG9yOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OnNldFNpemVBbmQKIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmdlbmVyYXRlUHJlc2V0
cygpCiB7CiAgICAgQVNTRVJUKG1vY2tDYW1lcmEoKSk7Ci0gICAgc2V0U3VwcG9ydGVkUHJlc2V0
cyhXVEZNb3ZlKFdURjo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0
aWVzKS5wcmVzZXRzKSk7CisgICAgc2V0U3VwcG9ydGVkUHJlc2V0cyhXVEZNb3ZlKHN0ZDo6Z2V0
PE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0aWVzKS5wcmVzZXRzKSk7CiB9
CiAKIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXMmIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjpjYXBhYmlsaXRpZXMoKQpAQCAtMTQyLDEzICsxNDIsMTMgQEAgY29uc3QgUmVh
bHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYgTQogICAgICAgICBSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcyhzZXR0aW5ncygpLnN1cHBvcnRlZENvbnN0cmFp
bnRzKCkpOwogCiAgICAgICAgIGlmIChtb2NrQ2FtZXJhKCkpIHsKLSAgICAgICAgICAgIGNhcGFi
aWxpdGllcy5hZGRGYWNpbmdNb2RlKFdURjo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihtX2Rl
dmljZS5wcm9wZXJ0aWVzKS5mYWNpbmdNb2RlKTsKKyAgICAgICAgICAgIGNhcGFiaWxpdGllcy5h
ZGRGYWNpbmdNb2RlKHN0ZDo6Z2V0PE1vY2tDYW1lcmFQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9w
ZXJ0aWVzKS5mYWNpbmdNb2RlKTsKICAgICAgICAgICAgIGNhcGFiaWxpdGllcy5zZXREZXZpY2VJ
ZChoYXNoZWRJZCgpKTsKICAgICAgICAgICAgIHVwZGF0ZUNhcGFiaWxpdGllcyhjYXBhYmlsaXRp
ZXMpOwogICAgICAgICAgICAgY2FwYWJpbGl0aWVzLnNldERldmljZUlkKGhhc2hlZElkKCkpOwog
ICAgICAgICB9IGVsc2UgaWYgKG1vY2tEaXNwbGF5KCkpIHsKLSAgICAgICAgICAgIGNhcGFiaWxp
dGllcy5zZXRXaWR0aChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDcyLCBXVEY6OmdldDxNb2NrRGlz
cGxheVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpLmRlZmF1bHRTaXplLndpZHRoKCkp
KTsKLSAgICAgICAgICAgIGNhcGFiaWxpdGllcy5zZXRIZWlnaHQoQ2FwYWJpbGl0eVZhbHVlT3JS
YW5nZSg0NSwgV1RGOjpnZXQ8TW9ja0Rpc3BsYXlQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0
aWVzKS5kZWZhdWx0U2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgY2FwYWJpbGl0aWVzLnNl
dFdpZHRoKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoNzIsIHN0ZDo6Z2V0PE1vY2tEaXNwbGF5UHJv
cGVydGllcz4obV9kZXZpY2UucHJvcGVydGllcykuZGVmYXVsdFNpemUud2lkdGgoKSkpOworICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzLnNldEhlaWdodChDYXBhYmlsaXR5VmFsdWVPclJhbmdlKDQ1
LCBzdGQ6OmdldDxNb2NrRGlzcGxheVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpLmRl
ZmF1bHRTaXplLmhlaWdodCgpKSk7CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0RnJhbWVS
YXRlKENhcGFiaWxpdHlWYWx1ZU9yUmFuZ2UoLjAxLCA2MC4wKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXMuc2V0V2lkdGgoQ2FwYWJpbGl0eVZhbHVlT3JSYW5n
ZSg3MiwgMjg4MCkpOwpAQCAtNDg4LDcgKzQ4OCw3IEBAIGJvb2wgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6Om1vY2tEaXNwbGEKICAgICBpZiAoIXN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8TW9ja0Rp
c3BsYXlQcm9wZXJ0aWVzPihtX2RldmljZS5wcm9wZXJ0aWVzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmV0dXJuIFdURjo6Z2V0PE1vY2tEaXNwbGF5UHJvcGVydGllcz4obV9kZXZp
Y2UucHJvcGVydGllcykudHlwZSA9PSB0eXBlOworICAgIHJldHVybiBzdGQ6OmdldDxNb2NrRGlz
cGxheVByb3BlcnRpZXM+KG1fZGV2aWNlLnByb3BlcnRpZXMpLnR5cGUgPT0gdHlwZTsKIH0KIAog
dm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6b3JpZW50YXRpb25DaGFuZ2VkKGludCBvcmll
bnRhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRE5TLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaAkocmV2aXNp
b24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ETlMuaAkod29y
a2luZyBjb3B5KQpAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0lQdjQoKSBj
b25zdCB7IHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPHN0cnVjdCBpbl9hZGRyPihtX2Fk
ZHJlc3MpOyB9CiAgICAgYm9vbCBpc0lQdjYoKSBjb25zdCB7IHJldHVybiBzdGQ6OmhvbGRzX2Fs
dGVybmF0aXZlPHN0cnVjdCBpbjZfYWRkcj4obV9hZGRyZXNzKTsgfQogCi0gICAgY29uc3Qgc3Ry
dWN0IGluX2FkZHImIGlwdjRBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpnZXQ8c3RydWN0
IGluX2FkZHI+KG1fYWRkcmVzcyk7IH0KLSAgICBjb25zdCBzdHJ1Y3QgaW42X2FkZHImIGlwdjZB
ZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpnZXQ8c3RydWN0IGluNl9hZGRyPihtX2FkZHJl
c3MpOyB9CisgICAgY29uc3Qgc3RydWN0IGluX2FkZHImIGlwdjRBZGRyZXNzKCkgY29uc3QgeyBy
ZXR1cm4gc3RkOjpnZXQ8c3RydWN0IGluX2FkZHI+KG1fYWRkcmVzcyk7IH0KKyAgICBjb25zdCBz
dHJ1Y3QgaW42X2FkZHImIGlwdjZBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8c3Ry
dWN0IGluNl9hZGRyPihtX2FkZHJlc3MpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RkOjp2YXJpYW50
PHN0cnVjdCBpbl9hZGRyLCBzdHJ1Y3QgaW42X2FkZHI+IG1fYWRkcmVzczsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCShyZXZpc2lvbiAyODQw
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjU1LDkgKzI1NSw5IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZE11bHRp
UGFydEtleVZhbHVlUGEKICAgICAgICAgRm9ybURhdGFCdWlsZGVyOjpiZWdpbk11bHRpUGFydEhl
YWRlcihoZWFkZXIsIG1fYm91bmRhcnkuZGF0YSgpLCBub3JtYWxpemVkTmFtZSk7CiAKICAgICAg
ICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPEZpbGU+PihpdGVtLmRhdGEpKQot
ICAgICAgICAgICAgYXBwZW5kTXVsdGlQYXJ0RmlsZVZhbHVlKCpXVEY6OmdldDxSZWZQdHI8Rmls
ZT4+KGl0ZW0uZGF0YSksIGhlYWRlciwgZW5jb2RpbmcpOworICAgICAgICAgICAgYXBwZW5kTXVs
dGlQYXJ0RmlsZVZhbHVlKCpzdGQ6OmdldDxSZWZQdHI8RmlsZT4+KGl0ZW0uZGF0YSksIGhlYWRl
ciwgZW5jb2RpbmcpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBlbmRNdWx0aVBhcnRT
dHJpbmdWYWx1ZShXVEY6OmdldDxTdHJpbmc+KGl0ZW0uZGF0YSksIGhlYWRlciwgZW5jb2Rpbmcp
OworICAgICAgICAgICAgYXBwZW5kTXVsdGlQYXJ0U3RyaW5nVmFsdWUoc3RkOjpnZXQ8U3RyaW5n
PihpdGVtLmRhdGEpLCBoZWFkZXIsIGVuY29kaW5nKTsKIAogICAgICAgICBhcHBlbmREYXRhKCJc
clxuIiwgMik7CiAgICAgfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVu
ZE5vbk11bHRpUGFydEtleVZhbHUKICAgICAgICAgQVNTRVJUKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8U3RyaW5nPihpdGVtLmRhdGEpKTsKIAogICAgICAgICBhdXRvIG5vcm1hbGl6ZWROYW1lID0g
bm9ybWFsaXplU3RyaW5nRGF0YShlbmNvZGluZywgaXRlbS5uYW1lKTsKLSAgICAgICAgYXV0byBu
b3JtYWxpemVkU3RyaW5nRGF0YSA9IG5vcm1hbGl6ZVN0cmluZ0RhdGEoZW5jb2RpbmcsIFdURjo6
Z2V0PFN0cmluZz4oaXRlbS5kYXRhKSk7CisgICAgICAgIGF1dG8gbm9ybWFsaXplZFN0cmluZ0Rh
dGEgPSBub3JtYWxpemVTdHJpbmdEYXRhKGVuY29kaW5nLCBzdGQ6OmdldDxTdHJpbmc+KGl0ZW0u
ZGF0YSkpOwogICAgICAgICBGb3JtRGF0YUJ1aWxkZXI6OmFkZEtleVZhbHVlUGFpckFzRm9ybURh
dGEoZW5jb2RlZERhdGEsIG5vcm1hbGl6ZWROYW1lLCBub3JtYWxpemVkU3RyaW5nRGF0YSwgZW5j
b2RpbmdUeXBlKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU1NMSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuaAkocmV2aXNpb24gMjg0MDkxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTU0xIYW5kbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBjbGFzcyBDdXJsU1NMSGFuZGxlIHsKICAgICB1
c2luZyBDbGllbnRDZXJ0aWZpY2F0ZSA9IHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz47CiAKIHB1
YmxpYzoKLSAgICB1c2luZyBDQUNlcnRJbmZvID0gVmFyaWFudDxzdGQ6Om1vbm9zdGF0ZSwgU3Ry
aW5nLCBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlPjsKKyAgICB1c2luZyBDQUNlcnRJbmZv
ID0gc3RkOjp2YXJpYW50PHN0ZDo6bW9ub3N0YXRlLCBTdHJpbmcsIENlcnRpZmljYXRlSW5mbzo6
Q2VydGlmaWNhdGU+OwogCiAgICAgQ3VybFNTTEhhbmRsZSgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCShyZXZpc2lvbiAyODQwOTEp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNDEsNyArMTE0MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVDdXN0
b21EYXRhKGNvbnN0IFYKICAgICAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0
cmluZz4oc3RyaW5nT3JCdWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkRGF0YVR5
cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUpOwogCi0gICAgICAg
ICAgICAgICAgU3RyaW5nIHN0ciA9IFdURjo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpOwor
ICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSBzdGQ6OmdldDxTdHJpbmc+KHN0cmluZ09yQnVm
ZmVyKTsKICAgICAgICAgICAgICAgICByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3
bGluZXMoc3RyKTsKICAgICAgICAgICAgICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2Jh
bERhdGEoc3RyKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1Y
Ui5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIu
aAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsMTQgKzM2NSwxNCBAQCB2b2lkIERldmljZTo6
RnJhbWVEYXRhOjpWaWV3OjplbmNvZGUoRW5jCiAgICAgYm9vbCBoYXNGb3YgPSBzdGQ6OmhvbGRz
X2FsdGVybmF0aXZlPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpGb3Y+KHByb2plY3Rp
b24pOwogICAgIGVuY29kZXIgPDwgaGFzRm92OwogICAgIGlmIChoYXNGb3YpIHsKLSAgICAgICAg
ZW5jb2RlciA8PCBXVEY6OmdldDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6Rm92Pihw
cm9qZWN0aW9uKTsKKyAgICAgICAgZW5jb2RlciA8PCBzdGQ6OmdldDxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6Rm92Pihwcm9qZWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGJvb2wgaGFzUHJvamVjdGlvbk1hdHJpeCA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OlByb2plY3Rpb25NYXRyaXg+KHByb2plY3Rp
b24pOwogICAgIGVuY29kZXIgPDwgaGFzUHJvamVjdGlvbk1hdHJpeDsKICAgICBpZiAoaGFzUHJv
amVjdGlvbk1hdHJpeCkgewotICAgICAgICBmb3IgKGZsb2F0IGYgOiBXVEY6OmdldDxQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6UHJvamVjdGlvbk1hdHJpeD4ocHJvamVjdGlvbikpCisg
ICAgICAgIGZvciAoZmxvYXQgZiA6IHN0ZDo6Z2V0PFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpQcm9qZWN0aW9uTWF0cml4Pihwcm9qZWN0aW9uKSkKICAgICAgICAgICAgIGVuY29kZXIg
PDwgZjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAkod29ya2luZyBjb3B5KQpAQCAtNjA4LDEy
ICs2MDgsMTIgQEAgaW5saW5lIGJvb2wgUmVuZGVyQmxvY2tGbG93OjpoYXNMZWdhY3lMaQogCiBp
bmxpbmUgY29uc3QgTGVnYWN5TGluZUxheW91dCogUmVuZGVyQmxvY2tGbG93OjpsZWdhY3lMaW5l
TGF5b3V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzTGVnYWN5TGluZUxheW91dCgpID8gV1RG
OjpnZXQ8c3RkOjp1bmlxdWVfcHRyPExlZ2FjeUxpbmVMYXlvdXQ+PihtX2xpbmVMYXlvdXQpLmdl
dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gaGFzTGVnYWN5TGluZUxheW91dCgpID8gc3RkOjpn
ZXQ8c3RkOjp1bmlxdWVfcHRyPExlZ2FjeUxpbmVMYXlvdXQ+PihtX2xpbmVMYXlvdXQpLmdldCgp
IDogbnVsbHB0cjsKIH0KIAogaW5saW5lIExlZ2FjeUxpbmVMYXlvdXQqIFJlbmRlckJsb2NrRmxv
dzo6bGVnYWN5TGluZUxheW91dCgpCiB7Ci0gICAgcmV0dXJuIGhhc0xlZ2FjeUxpbmVMYXlvdXQo
KSA/IFdURjo6Z2V0PHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lMaW5lTGF5b3V0Pj4obV9saW5lTGF5
b3V0KS5nZXQoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGhhc0xlZ2FjeUxpbmVMYXlvdXQoKSA/
IHN0ZDo6Z2V0PHN0ZDo6dW5pcXVlX3B0cjxMZWdhY3lMaW5lTGF5b3V0Pj4obV9saW5lTGF5b3V0
KS5nZXQoKSA6IG51bGxwdHI7CiB9CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKQEAgLTYyNCwxMiArNjI0LDEyIEBAIGlubGluZSBib29sIFJlbmRlckJsb2NrRmxvdzo6
aGFzTW9kZXJuTGkKIAogaW5saW5lIGNvbnN0IExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0
KiBSZW5kZXJCbG9ja0Zsb3c6Om1vZGVybkxpbmVMYXlvdXQoKSBjb25zdAogewotICAgIHJldHVy
biBoYXNNb2Rlcm5MaW5lTGF5b3V0KCkgPyBXVEY6OmdldDxzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0
SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ+PihtX2xpbmVMYXlvdXQpLmdldCgpIDogbnVsbHB0cjsK
KyAgICByZXR1cm4gaGFzTW9kZXJuTGluZUxheW91dCgpID8gc3RkOjpnZXQ8c3RkOjp1bmlxdWVf
cHRyPExheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Pj4obV9saW5lTGF5b3V0KS5nZXQoKSA6
IG51bGxwdHI7CiB9CiAKIGlubGluZSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dCogUmVu
ZGVyQmxvY2tGbG93Ojptb2Rlcm5MaW5lTGF5b3V0KCkKIHsKLSAgICByZXR1cm4gaGFzTW9kZXJu
TGluZUxheW91dCgpID8gV1RGOjpnZXQ8c3RkOjp1bmlxdWVfcHRyPExheW91dEludGVncmF0aW9u
OjpMaW5lTGF5b3V0Pj4obV9saW5lTGF5b3V0KS5nZXQoKSA6IG51bGxwdHI7CisgICAgcmV0dXJu
IGhhc01vZGVybkxpbmVMYXlvdXQoKSA/IHN0ZDo6Z2V0PHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZUxheW91dD4+KG1fbGluZUxheW91dCkuZ2V0KCkgOiBudWxscHRyOwog
fQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wg
UmVuZGVyUmVwbGFjZWQ6OnNob3VsZERyYXdTZWxlY3Rpb24KIGlubGluZSBzdGF0aWMgYm9vbCBk
cmFnZ2VkQ29udGVudENvbnRhaW5zUmVwbGFjZWRFbGVtZW50KGNvbnN0IFZlY3RvcjxSZW5kZXJl
ZERvY3VtZW50TWFya2VyKj4mIG1hcmtlcnMsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgZm9yIChhdXRvKiBtYXJrZXIgOiBtYXJrZXJzKSB7Ci0gICAgICAgIGlmIChXVEY6OmdldDxS
ZWZQdHI8Tm9kZT4+KG1hcmtlci0+ZGF0YSgpKSA9PSAmZWxlbWVudCkKKyAgICAgICAgaWYgKHN0
ZDo6Z2V0PFJlZlB0cjxOb2RlPj4obWFya2VyLT5kYXRhKCkpID09ICZlbGVtZW50KQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDcg
KzI4NCw3IEBAIHZvaWQgQnVpbGRlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUkKICAgICAg
ICAgY3VzdG9tUHJvcGVydHlWYWx1ZSA9IGRvd25jYXN0PENTU0N1c3RvbVByb3BlcnR5VmFsdWU+
KHZhbHVlVG9BcHBseS5wdHIoKSk7CiAgICAgICAgIEFTU0VSVChjdXN0b21Qcm9wZXJ0eVZhbHVl
LT5pc1Jlc29sdmVkKCkpOwogICAgICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxDU1NW
YWx1ZUlEPihjdXN0b21Qcm9wZXJ0eVZhbHVlLT52YWx1ZSgpKSkKLSAgICAgICAgICAgIGN1c3Rv
bVByb3BlcnR5VmFsdWVJRCA9IFdURjo6Z2V0PENTU1ZhbHVlSUQ+KGN1c3RvbVByb3BlcnR5VmFs
dWUtPnZhbHVlKCkpOworICAgICAgICAgICAgY3VzdG9tUHJvcGVydHlWYWx1ZUlEID0gc3RkOjpn
ZXQ8Q1NTVmFsdWVJRD4oY3VzdG9tUHJvcGVydHlWYWx1ZS0+dmFsdWUoKSk7CiAgICAgICAgIGF1
dG8mIG5hbWUgPSBjdXN0b21Qcm9wZXJ0eVZhbHVlLT5uYW1lKCk7CiAgICAgICAgIGN1c3RvbVBy
b3BlcnR5UmVnaXN0ZXJlZCA9IG1fc3RhdGUuZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3Vz
dG9tUHJvcGVydHlTZXQoKS5nZXQobmFtZSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCShy
ZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmsKIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXI+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdAogewogICAgIGlmIChpc0Zyb21TZXJ2aWNlV29ya2Vy
UGFnZSAmJiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyPihzb3VyY2VDb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPihzb3VyY2VDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6
Z2V0PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPihzb3VyY2VDb250ZXh0KTsKICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NiwxNCAr
MTQ2LDE0IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9Qb3MKICAgICAg
ICAgVVJMIHNvdXJjZVVSTDsKICAgICAgICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBz
b3VyY2U7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPihzb3VyY2VEYXRhKSkgewotICAgICAgICAgICAgUmVmUHRyPFNlcnZpY2VXb3Jr
ZXJDbGllbnQ+IHNvdXJjZUNsaWVudCA9IFNlcnZpY2VXb3JrZXJDbGllbnQ6OmdldE9yQ3JlYXRl
KHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShXVEY6OmdldDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4oc291cmNlRGF0YSkpKTsKKyAgICAgICAgICAgIFJlZlB0cjxTZXJ2aWNlV29y
a2VyQ2xpZW50PiBzb3VyY2VDbGllbnQgPSBTZXJ2aWNlV29ya2VyQ2xpZW50OjpnZXRPckNyZWF0
ZShzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUoc3RkOjpnZXQ8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+KHNvdXJjZURhdGEpKSk7CiAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFzb3VyY2VDbGllbnQtPnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCAhc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLT51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgcHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dXJsKCks
IHNvdXJjZUNsaWVudC0+dXJsKCkpKTsKIAogICAgICAgICAgICAgc291cmNlVVJMID0gc291cmNl
Q2xpZW50LT51cmwoKTsKICAgICAgICAgICAgIHNvdXJjZSA9IFdURk1vdmUoc291cmNlQ2xpZW50
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJlZlB0cjxTZXJ2aWNlV29ya2VyPiBz
b3VyY2VXb3JrZXIgPSBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZShzZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUsIFdURk1vdmUoV1RGOjpnZXQ8U2VydmljZVdvcmtlckRhdGE+KHNvdXJjZURhdGEp
KSk7CisgICAgICAgICAgICBSZWZQdHI8U2VydmljZVdvcmtlcj4gc291cmNlV29ya2VyID0gU2Vy
dmljZVdvcmtlcjo6Z2V0T3JDcmVhdGUoc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3Zl
KHN0ZDo6Z2V0PFNlcnZpY2VXb3JrZXJEYXRhPihzb3VyY2VEYXRhKSkpOwogCiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghc291cmNlV29ya2VyLT5zY3JpcHRVUkwoKS5wcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkgfHwgIXNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dXJsKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIHx8IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUtPnVybCgpLCBzb3VyY2VXb3JrZXItPnNjcmlwdFVSTCgpKSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlckpvYlF1ZXVlLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6Y2FuY2VsSm9i
c0Zyb21Db24KIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6Y2FuY2VsSm9ic0Zyb21TZXJ2aWNlV29y
a2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogewog
ICAgIHJlbW92ZUFsbEpvYnNNYXRjaGluZyhbc2VydmljZVdvcmtlcklkZW50aWZpZXJdKGF1dG8m
IGpvYikgewotICAgICAgICByZXR1cm4gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxTZXJ2aWNlV29y
a2VySWRlbnRpZmllcj4oam9iLnNvdXJjZUNvbnRleHQpICYmIFdURjo6Z2V0PFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyPihqb2Iuc291cmNlQ29udGV4dCkgPT0gc2VydmljZVdvcmtlcklkZW50aWZp
ZXI7CisgICAgICAgIHJldHVybiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyPihqb2Iuc291cmNlQ29udGV4dCkgJiYgc3RkOjpnZXQ8U2VydmljZVdvcmtlcklk
ZW50aWZpZXI+KGpvYi5zb3VyY2VDb250ZXh0KSA9PSBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsK
ICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODEgQEAKKzIwMjEtMTAt
MTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBSZW1vdmUgV1RGOjpWYXJpYW50IGFuZCBXVEY6OmdldAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNjc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmll
ZFJlc291cmNlSGVhcC5oOgorICAgICAgICAoV2ViS2l0OjpRdWFsaWZpZWRSZXNvdXJjZUhlYXA6
OmdldCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RGF0YUN1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OkRhdGEp
OgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJh
Y2tpbmdTdG9yZVRvTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpFbnRyeT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SURCS2V5UGF0
aD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlck9y
Q2xpZW50RGF0YT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Vydmlj
ZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllcj46OmVuY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlByZWZlcmVuY2VzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0Ojp2YWx1ZUZvcktleSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvVG91Y2hHZXN0dXJlQ29udHJvbGxlci5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9XZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVs
YXRlS2V5Ym9hcmRJbnRlcmFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24v
d3BlL1dlYkF1dG9tYXRpb25TZXNzaW9uV1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KToKKyAgICAg
ICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29yZTo6Z2V0UnBJZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvcmU6OmdldFVzZXJOYW1lKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGlj
YXRvck1hbmFnZXI6OnJlc3BvbmRSZWNlaXZlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdlYktp
dDo6TG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6
OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyRGVjaWRlUG9s
aWN5KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyUmVz
cG9uc2VTZWxlY3RlZCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJWZXJpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmRlbGV0ZUR1cGxpY2F0ZUNyZWRlbnRpYWwgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJl
cXVlc3REYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2V0VXNlclZlcmlmaWNhdGlvblJlcXVp
cmVtZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFw
QXV0aGVudGljYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpt
YWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkN0YXBBdXRoZW50aWNhdG9yOjpjb250
aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYktp
dDo6Q3RhcEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbik6CisgICAgICAgIChXZWJLaXQ6OkN0
YXBBdXRoZW50aWNhdG9yOjpwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBwb3J0RXh0ZW5zaW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50
aWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VTJmQXV0aGVudGljYXRvcjo6bWFrZUNyZWRl
bnRpYWwpOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50aWNhdG9yOjpjaGVja0V4Y2x1ZGVM
aXN0KToKKyAgICAgICAgKFdlYktpdDo6VTJmQXV0aGVudGljYXRvcjo6aXNzdWVSZWdpc3RlckNv
bW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24p
OgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50aWNhdG9yOjppc3N1ZVNpZ25Db21tYW5kKToK
KyAgICAgICAgKFdlYktpdDo6VTJmQXV0aGVudGljYXRvcjo6Y29udGludWVSZWdpc3RlckNvbW1h
bmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViS2l0OjpVMmZBdXRoZW50aWNh
dG9yOjpjb250aW51ZVNpZ25Db21tYW5kQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tl
bmQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2Nv
Y29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclBy
aXZhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVJlY29yZGVyUHJpdmF0ZTo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUhUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKHdlYmtp
dF9kb21faHRtbF9zZWxlY3RfZWxlbWVudF9hZGQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Bl
ZWNoL1NwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkVkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVu
dDo6ZXhlY3V0ZVBlbmRpbmdFZGl0b3JDb21tYW5kcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbToKKyAgICAgICAgKFdl
YktpdDo6VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5OjpyZW1vdmVBbm5vdGF0aW9uUmVsYXRp
dmVUb1NlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2luZ0NvbnRyb2xsZXJQ
cm94eTo6YW5ub3RhdGVkU3Vic3RyaW5nQmV0d2VlblBvc2l0aW9ucyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlIGNvbnN0KToKKwogMjAyMS0xMC0xMiAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQnVpbGQtdGltZSBwZXJmXSBG
b3J3YXJkLWRlY2xhcmUgbW9yZSB0aGluZ3MgaW4gRG9jdW1lbnQuaApJbmRleDogU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9RdWFsaWZpZWRSZXNvdXJj
ZUhlYXAuaAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1F1YWxpZmllZFJlc291cmNlSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNyAr
MTYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGl0ZXJhdG9yID09IG1fcmVzb3VyY2VzLmVu
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIEFTU0VSVChzdGQ6Omhv
bGRzX2FsdGVybmF0aXZlPFJlZjxUPj4oaXRlcmF0b3ItPnZhbHVlKSk7Ci0gICAgICAgIHJldHVy
biBXVEY6OmdldDxSZWY8VD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CisgICAgICAgIHJldHVy
biBzdGQ6OmdldDxSZWY8VD4+KGl0ZXJhdG9yLT52YWx1ZSkucHRyKCk7CiAgICAgfQogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAkocmV2aXNp
b24gMjg0MDkxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxNCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCiBEYXRhOjpEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQotICAgIDogbV9idWZmZXIoQm94PFZhcmlh
bnQ8VmVjdG9yPHVpbnQ4X3Q+LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4+OjpjcmVhdGUo
VmVjdG9yPHVpbnQ4X3Q+KHNpemUpKSkKKyAgICA6IG1fYnVmZmVyKEJveDxzdGQ6OnZhcmlhbnQ8
VmVjdG9yPHVpbnQ4X3Q+LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YT4+OjpjcmVhdGUoVmVj
dG9yPHVpbnQ4X3Q+KHNpemUpKSkKICAgICAsIG1fc2l6ZShzaXplKQogewotICAgIG1lbWNweShX
VEY6OmdldDxWZWN0b3I8dWludDhfdD4+KCptX2J1ZmZlcikuZGF0YSgpLCBkYXRhLCBzaXplKTsK
KyAgICBtZW1jcHkoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+PigqbV9idWZmZXIpLmRhdGEoKSwg
ZGF0YSwgc2l6ZSk7CiB9CiAKLURhdGE6OkRhdGEoVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPiYmIGRhdGEpCi0gICAgOiBtX2J1ZmZlcihCb3g8VmFy
aWFudDxWZWN0b3I8dWludDhfdD4sIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPj46OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKSkKK0RhdGE6OkRhdGEoc3RkOjp2YXJpYW50PFZlY3Rvcjx1aW50OF90
PiwgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+JiYgZGF0YSkKKyAgICA6IG1fYnVmZmVyKEJv
eDxzdGQ6OnZhcmlhbnQ8VmVjdG9yPHVpbnQ4X3Q+LCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YT4+OjpjcmVhdGUoV1RGTW92ZShkYXRhKSkpCiAgICAgLCBtX2lzTWFwKHN0ZDo6aG9sZHNfYWx0
ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KCptX2J1ZmZlcikpCiB7CiAgICAg
bV9zaXplID0gV1RGOjpzd2l0Y2hPbigqbV9idWZmZXIsCkBAIC0xMTMsNyArMTEzLDcgQEAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gRGF0YTo6dHJ5Q3JlYXRlU2hhcgogICAgIGlmIChpc051bGwoKSB8
fCAhaXNNYXAoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBIQU5ETEUgaGFuZGxl
ID0gV1RGOjpnZXQ8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KCptX2J1ZmZlcikuZmlsZU1h
cHBpbmcoKTsKKyAgICBIQU5ETEUgaGFuZGxlID0gc3RkOjpnZXQ8RmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGE+KCptX2J1ZmZlcikuZmlsZU1hcHBpbmcoKTsKICAgICBIQU5ETEUgbmV3SGFuZGxl
OwogICAgIGlmICghRHVwbGljYXRlSGFuZGxlKEdldEN1cnJlbnRQcm9jZXNzKCksIGhhbmRsZSwg
R2V0Q3VycmVudFByb2Nlc3MoKSwgJm5ld0hhbmRsZSwgMCwgZmFsc2UsIERVUExJQ0FURV9TQU1F
X0FDQ0VTUykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAJKHJldmlzaW9uIDI4
NDA5MSkKKysrIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTcsNyArNTk3LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpz
ZW5kT3V0cHV0TWVzc2FnZShVbml4TQogICAgICAgICBmb3IgKGF1dG8mIGF0dGFjaG1lbnQgOiBh
dHRhY2htZW50cykgewogICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQudHlwZSgpID09IEF0dGFj
aG1lbnQ6OkN1c3RvbVdyaXRlclR5cGUpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc3RkOjpo
b2xkc19hbHRlcm5hdGl2ZTxBdHRhY2htZW50OjpDdXN0b21Xcml0ZXJGdW5jPihhdHRhY2htZW50
LmN1c3RvbVdyaXRlcigpKSk7Ci0gICAgICAgICAgICAgICAgV1RGOjpnZXQ8QXR0YWNobWVudDo6
Q3VzdG9tV3JpdGVyRnVuYz4oYXR0YWNobWVudC5jdXN0b21Xcml0ZXIoKSkobV9zb2NrZXREZXNj
cmlwdG9yKTsKKyAgICAgICAgICAgICAgICBzdGQ6OmdldDxBdHRhY2htZW50OjpDdXN0b21Xcml0
ZXJGdW5jPihhdHRhY2htZW50LmN1c3RvbVdyaXRlcigpKShtX3NvY2tldERlc2NyaXB0b3IpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTQ0LDEyICsxNTQ0LDEyIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJk
Q3VzdG9tRGF0YToKICAgICBib29sIGhhc1N0cmluZyA9IHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
U3RyaW5nPihwbGF0Zm9ybURhdGEpOwogICAgIGVuY29kZXIgPDwgaGFzU3RyaW5nOwogICAgIGlm
IChoYXNTdHJpbmcpCi0gICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8U3RyaW5nPihwbGF0Zm9y
bURhdGEpOworICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFN0cmluZz4ocGxhdGZvcm1EYXRh
KTsKIAogICAgIGJvb2wgaGFzQnVmZmVyID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8U2hh
cmVkQnVmZmVyPj4ocGxhdGZvcm1EYXRhKTsKICAgICBlbmNvZGVyIDw8IGhhc0J1ZmZlcjsKICAg
ICBpZiAoaGFzQnVmZmVyKQotICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgV1RG
OjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBsYXRmb3JtRGF0YSkucHRyKCkpOworICAgICAgICBl
bmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwgc3RkOjpnZXQ8UmVmPFNoYXJlZEJ1ZmZlcj4+KHBs
YXRmb3JtRGF0YSkucHRyKCkpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZEN1
c3RvbURhdGE6OkVudHJ5Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRDdXN0
b21EYXRhOjpFbnRyeSYgZGF0YSkKQEAgLTI3NDUsOSArMjc0NSw5IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxJREJLZXlQYXRoPjo6ZW5jb2RlKEUKICAgICBib29sIGlzU3RyaW5nID0gc3RkOjpob2xk
c19hbHRlcm5hdGl2ZTxTdHJpbmc+KGtleVBhdGgpOwogICAgIGVuY29kZXIgPDwgaXNTdHJpbmc7
CiAgICAgaWYgKGlzU3RyaW5nKQotICAgICAgICBlbmNvZGVyIDw8IFdURjo6Z2V0PFN0cmluZz4o
a2V5UGF0aCk7CisgICAgICAgIGVuY29kZXIgPDwgc3RkOjpnZXQ8U3RyaW5nPihrZXlQYXRoKTsK
ICAgICBlbHNlCi0gICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8VmVjdG9yPFN0cmluZz4+KGtl
eVBhdGgpOworICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFZlY3RvcjxTdHJpbmc+PihrZXlQ
YXRoKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPElEQktleVBhdGg+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgSURCS2V5UGF0aCYga2V5UGF0aCkKQEAgLTI3NzUsOSArMjc3NSw5IEBAIHZv
aWQgQXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyT3JDbGllbnQKICAgICBib29sIGlzU2Vydmlj
ZVdvcmtlckRhdGEgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJEYXRhPihk
YXRhKTsKICAgICBlbmNvZGVyIDw8IGlzU2VydmljZVdvcmtlckRhdGE7CiAgICAgaWYgKGlzU2Vy
dmljZVdvcmtlckRhdGEpCi0gICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8U2VydmljZVdvcmtl
ckRhdGE+KGRhdGEpOworICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFNlcnZpY2VXb3JrZXJE
YXRhPihkYXRhKTsKICAgICBlbHNlCi0gICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+KGRhdGEpOworICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPihkYXRhKTsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFNl
cnZpY2VXb3JrZXJPckNsaWVudERhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Vydmlj
ZVdvcmtlck9yQ2xpZW50RGF0YSYgZGF0YSkKQEAgLTI4MDgsOSArMjgwOCw5IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyT3JDbGllbnQKICAgICBib29sIGlzU2VydmljZVdvcmtl
cklkZW50aWZpZXIgPSBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyPihpZGVudGlmaWVyKTsKICAgICBlbmNvZGVyIDw8IGlzU2VydmljZVdvcmtlcklkZW50aWZp
ZXI7CiAgICAgaWYgKGlzU2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgICAgIGVuY29kZXIg
PDwgV1RGOjpnZXQ8U2VydmljZVdvcmtlcklkZW50aWZpZXI+KGlkZW50aWZpZXIpOworICAgICAg
ICBlbmNvZGVyIDw8IHN0ZDo6Z2V0PFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPihpZGVudGlmaWVy
KTsKICAgICBlbHNlCi0gICAgICAgIGVuY29kZXIgPDwgV1RGOjpnZXQ8U2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXI+KGlkZW50aWZpZXIpOworICAgICAgICBlbmNvZGVyIDw8IHN0ZDo6Z2V0
PFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPihpZGVudGlmaWVyKTsKIH0KIAogYm9vbCBB
cmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgaWRlbnRpZmll
cikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuY3Bw
CShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNl
c1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsMTYgKzgxLDE2IEBAIHN0YXRpYyBNYXBw
ZWRUeXBlIHZhbHVlRm9yS2V5KGNvbnN0IFdlYlAKIHsKICAgICBhdXRvIHZhbHVlc0l0ID0gdmFs
dWVzLmZpbmQoa2V5KTsKICAgICBpZiAodmFsdWVzSXQgIT0gdmFsdWVzLmVuZCgpICYmIHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8TWFwcGVkVHlwZT4odmFsdWVzSXQtPnZhbHVlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6Z2V0PE1hcHBlZFR5cGU+KHZhbHVlc0l0LT52YWx1ZSk7CisgICAgICAgIHJl
dHVybiBzdGQ6OmdldDxNYXBwZWRUeXBlPih2YWx1ZXNJdC0+dmFsdWUpOwogCiAgICAgYXV0byBv
dmVycmlkZGVuRGVmYXVsdHNJdCA9IG92ZXJyaWRkZW5EZWZhdWx0cy5maW5kKGtleSk7CiAgICAg
aWYgKG92ZXJyaWRkZW5EZWZhdWx0c0l0ICE9IG92ZXJyaWRkZW5EZWZhdWx0cy5lbmQoKSAmJiBz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPE1hcHBlZFR5cGU+KG92ZXJyaWRkZW5EZWZhdWx0c0l0LT52
YWx1ZSkpCi0gICAgICAgIHJldHVybiBXVEY6OmdldDxNYXBwZWRUeXBlPihvdmVycmlkZGVuRGVm
YXVsdHNJdC0+dmFsdWUpOworICAgICAgICByZXR1cm4gc3RkOjpnZXQ8TWFwcGVkVHlwZT4ob3Zl
cnJpZGRlbkRlZmF1bHRzSXQtPnZhbHVlKTsKIAogICAgIGF1dG8mIGRlZmF1bHRzTWFwID0gV2Vi
UHJlZmVyZW5jZXNTdG9yZTo6ZGVmYXVsdHMoKTsKICAgICBhdXRvIGRlZmF1bHRzSXQgPSBkZWZh
dWx0c01hcC5maW5kKGtleSk7CiAgICAgaWYgKGRlZmF1bHRzSXQgIT0gZGVmYXVsdHNNYXAuZW5k
KCkgJiYgc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxNYXBwZWRUeXBlPihkZWZhdWx0c0l0LT52YWx1
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6OmdldDxNYXBwZWRUeXBlPihkZWZhdWx0c0l0LT52YWx1
ZSk7CisgICAgICAgIHJldHVybiBzdGQ6OmdldDxNYXBwZWRUeXBlPihkZWZhdWx0c0l0LT52YWx1
ZSk7CiAKICAgICByZXR1cm4gTWFwcGVkVHlwZSgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbQkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlC
YWNraQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBbbGF5ZXIgc2V0VmFsdWU6QDEgZm9y
S2V5UGF0aDpXS0NHRGlzcGxheUxpc3RFbmFibGVkS2V5XTsKICAgICAgICAgW2xheWVyIHNldFZh
bHVlOkAxIGZvcktleVBhdGg6V0tDR0Rpc3BsYXlMaXN0QmlmdXJjYXRpb25FbmFibGVkS2V5XTsK
LSAgICAgICAgYXV0byBkYXRhID0gV1RGOjpnZXQ8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PigqbV9k
aXNwbGF5TGlzdEJ1ZmZlckhhbmRsZSkuYnVmZmVyKCktPmNyZWF0ZUNGRGF0YSgpOworICAgICAg
ICBhdXRvIGRhdGEgPSBzdGQ6OmdldDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+KCptX2Rpc3BsYXlM
aXN0QnVmZmVySGFuZGxlKS5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CiAgICAgICAgIFsoV0tD
b21wb3NpdGluZ0xheWVyICopbGF5ZXIgX3NldFdLQ29udGVudHM6Y29udGVudHMuZ2V0KCkgd2l0
aERpc3BsYXlMaXN0OmRhdGEuZ2V0KCldOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAJKHJldmlzaW9u
IDI4NDA5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsMTQgKzI0NywxNCBAQCBib29sIFByb2Nlc3NUaHJvdHRs
ZXI6OmlzVmFsaWRCYWNrZ3JvdW5kCiB7CiAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFVuaXF1ZVJlZjxQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0
eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gV1RGOjpnZXQ8VW5pcXVlUmVm
PFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eT4+KGFjdGl2aXR5KS0+aXNWYWxp
ZCgpOworICAgIHJldHVybiBzdGQ6OmdldDxVbmlxdWVSZWY8UHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5Pj4oYWN0aXZpdHkpLT5pc1ZhbGlkKCk7CiB9CiAKIGJvb2wgUHJvY2Vz
c1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShjb25zdCBQcm9jZXNzVGhyb3R0
bGVyOjpBY3Rpdml0eVZhcmlhbnQmIGFjdGl2aXR5KQogewogICAgIGlmICghc3RkOjpob2xkc19h
bHRlcm5hdGl2ZTxVbmlxdWVSZWY8UHJvY2Vzc1Rocm90dGxlcjo6Rm9yZWdyb3VuZEFjdGl2aXR5
Pj4oYWN0aXZpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFdURjo6Z2V0
PFVuaXF1ZVJlZjxQcm9jZXNzVGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHk+PihhY3Rpdml0
eSktPmlzVmFsaWQoKTsKKyAgICByZXR1cm4gc3RkOjpnZXQ8VW5pcXVlUmVmPFByb2Nlc3NUaHJv
dHRsZXI6OkZvcmVncm91bmRBY3Rpdml0eT4+KGFjdGl2aXR5KS0+aXNWYWxpZCgpOwogfQogCiBQ
cm9jZXNzVGhyb3R0bGVyOjpUaW1lZEFjdGl2aXR5OjpUaW1lZEFjdGl2aXR5KFNlY29uZHMgdGlt
ZW91dCwgUHJvY2Vzc1Rocm90dGxlcjo6QWN0aXZpdHlWYXJpYW50JiYgYWN0aXZpdHkpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1RvdWNoR2VzdHVyZUNvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1RvdWNoR2Vz
dHVyZUNvbnRyb2xsZXIuaAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL3dwZS9Ub3VjaEdlc3R1cmVDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICBXZWJXaGVlbEV2ZW50OjpQaGFzZSBwaGFz
ZTsKICAgICB9OwogCi0gICAgdXNpbmcgRXZlbnRWYXJpYW50ID0gVmFyaWFudDxOb0V2ZW50LCBD
bGlja0V2ZW50LCBBeGlzRXZlbnQ+OworICAgIHVzaW5nIEV2ZW50VmFyaWFudCA9IHN0ZDo6dmFy
aWFudDxOb0V2ZW50LCBDbGlja0V2ZW50LCBBeGlzRXZlbnQ+OwogCiAgICAgR2VzdHVyZWRFdmVu
dCBnZXN0dXJlZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9nZXN0dXJlZEV2ZW50OyB9CiAgICAg
RXZlbnRWYXJpYW50IGhhbmRsZUV2ZW50KGNvbnN0IHN0cnVjdCB3cGVfaW5wdXRfdG91Y2hfZXZl
bnRfcmF3Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9ndGsvV2ViQXV0b21hdGlvblNlc3Npb25HdGsuY3BwCShyZXZp
c2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL2d0ay9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbkd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUs
NyBAQCBzdGF0aWMgdW5zaWduZWQgbW9kaWZpZXJzRm9yS2V5Q29kZSh1bnNpCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXli
b2FyZEludGVyYWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBp
bnRlcmFjdGlvbiwgV1RGOjpWYXJpYW50PFZpcnR1YWxLZXksIENoYXJLZXk+JiYga2V5KQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBLZXlib2FyZEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBz
dGQ6OnZhcmlhbnQ8VmlydHVhbEtleSwgQ2hhcktleT4mJiBrZXkpCiB7CiAgICAgdW5zaWduZWQg
a2V5Q29kZTsKICAgICBXVEY6OnN3aXRjaE9uKGtleSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vd3BlL1dlYkF1dG9tYXRpb25TZXNzaW9uV1BFLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL3dwZS9XZWJBdXRvbWF0
aW9uU2Vzc2lvbldQRS5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vd3BlL1dlYkF1dG9tYXRpb25TZXNzaW9uV1BFLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw3IEBAIHN0YXRpYyB1aW50MzJfdCBtb2RpZmllcnNGb3JL
ZXlDb2RlKHVuc2kKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cGxhdGZvcm1TaW11bGF0ZUtleWJvYXJkSW50ZXJhY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdl
LCBLZXlib2FyZEludGVyYWN0aW9uIGludGVyYWN0aW9uLCBXVEY6OlZhcmlhbnQ8VmlydHVhbEtl
eSwgQ2hhcktleT4mJiBrZXkpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNp
bXVsYXRlS2V5Ym9hcmRJbnRlcmFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEtleWJvYXJkSW50
ZXJhY3Rpb24gaW50ZXJhY3Rpb24sIHN0ZDo6dmFyaWFudDxWaXJ0dWFsS2V5LCBDaGFyS2V5PiYm
IGtleSkKIHsKICAgICB1aW50MzJfdCBrZXlDb2RlOwogICAgIFdURjo6c3dpdGNoT24oa2V5LApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVXNlck1lZGlhQ2FwdHVyZU1hbmFn
ZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyUHJveHku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG1fc3RhcnRUaW1lID0gdGltZTsKICAgICAgICAgICAgIG1fY2FwdHVyZVNlbWFwaG9yZSA9
IG1ha2VVbmlxdWU8SVBDOjpTZW1hcGhvcmU+KCk7CiAgICAgICAgICAgICBBU1NFUlQoZGVzY3Jp
cHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6
Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSk7Ci0gICAgICAgICAgICBtX2Rlc2NyaXB0aW9uID0gKldU
Rjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRlc2NyaXB0aW9uLnBs
YXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CisgICAgICAgICAgICBtX2Rlc2NyaXB0
aW9uID0gKnN0ZDo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRlc2Ny
aXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CiAKICAgICAgICAgICAg
IG1fZnJhbWVDaHVua1NpemUgPSBzdGQ6Om1heChXZWJDb3JlOjpBdWRpb1V0aWxpdGllczo6cmVu
ZGVyUXVhbnR1bVNpemUsIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnByZWZlcnJlZEJ1
ZmZlclNpemUoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5jcHAJ
KHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDE0
ICsxNTAsMTQgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcAogc3Rh
dGljIFN0cmluZyBnZXRScElkKGNvbnN0IHN0ZDo6dmFyaWFudDxQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+JiBvcHRp
b25zKQogewogICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFB1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnM+KG9wdGlvbnMpKQotICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ob3B0aW9ucykucnAuaWQ7Ci0gICAgcmV0
dXJuIFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ob3B0aW9ucyku
cnBJZDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnM+KG9wdGlvbnMpLnJwLmlkOworICAgIHJldHVybiBzdGQ6OmdldDxQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KG9wdGlvbnMpLnJwSWQ7CiB9CiAKIHN0YXRpYyBTdHJp
bmcgZ2V0VXNlck5hbWUoY29uc3Qgc3RkOjp2YXJpYW50PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMsIFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4mIG9wdGlvbnMp
CiB7CiAgICAgaWYgKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucz4ob3B0aW9ucykpCi0gICAgICAgIHJldHVybiBXVEY6OmdldDxQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihvcHRpb25zKS51c2VyLm5hbWU7CisgICAgICAg
IHJldHVybiBzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihvcHRp
b25zKS51c2VyLm5hbWU7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKQEAgLTI4Nyw3
ICsyODcsNyBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpyZXNwb25kUmVjZWl2CiAKICAg
ICBhdXRvIHNob3VsZENvbXBsZXRlID0gc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8QXV0aGVu
dGljYXRvclJlc3BvbnNlPj4ocmVzcG9uZCk7CiAgICAgaWYgKCFzaG91bGRDb21wbGV0ZSkKLSAg
ICAgICAgc2hvdWxkQ29tcGxldGUgPSBXVEY6OmdldDxFeGNlcHRpb25EYXRhPihyZXNwb25kKS5j
b2RlID09IEludmFsaWRTdGF0ZUVycm9yOworICAgICAgICBzaG91bGRDb21wbGV0ZSA9IHN0ZDo6
Z2V0PEV4Y2VwdGlvbkRhdGE+KHJlc3BvbmQpLmNvZGUgPT0gSW52YWxpZFN0YXRlRXJyb3I7CiAg
ICAgaWYgKHNob3VsZENvbXBsZXRlKSB7CiAgICAgICAgIGludm9rZVBlbmRpbmdDb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlc3BvbmQpKTsKICAgICAgICAgY2xlYXJTdGF0ZUFzeW5jKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50
aWNhdGlvblJlcXVlc3REYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmNwcAko
cmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDEyICs0MywxMiBAQCBDbGllbnREYXRhVHlwZSBnZXRDbGllbnREYXRhVHlwZShjb25zdCBz
CiBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQgZ2V0VXNlclZlcmlmaWNhdGlvblJlcXVpcmVt
ZW50KGNvbnN0IHN0ZDo6dmFyaWFudDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
LCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+JiBvcHRpb25zKQogewogICAgIGlm
IChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KG9wdGlvbnMpKSB7Ci0gICAgICAgIGlmIChhdXRvIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24g
PSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihvcHRpb25zKS5h
dXRoZW50aWNhdG9yU2VsZWN0aW9uKQorICAgICAgICBpZiAoYXV0byBhdXRoZW50aWNhdG9yU2Vs
ZWN0aW9uID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ob3B0
aW9ucykuYXV0aGVudGljYXRvclNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybiBhdXRoZW50
aWNhdG9yU2VsZWN0aW9uLT51c2VyVmVyaWZpY2F0aW9uOwogICAgICAgICByZXR1cm4gVXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50OjpQcmVmZXJyZWQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdU
Rjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ob3B0aW9ucykudXNlclZl
cmlmaWNhdGlvbjsKKyAgICByZXR1cm4gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zPihvcHRpb25zKS51c2VyVmVyaWZpY2F0aW9uOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0J
KHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk3
LDcgKzE5Nyw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgKICAg
ICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7CiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkluaXQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6UmVxdWVzdFJl
Y2VpdmVkOwotICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNy
ZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CisgICAgYXV0
byYgY3JlYXRpb25PcHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcg
aW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLW1ha2UtY3JlZCBh
cyBvZiA1IERlY2VtYmVyIDIwMTcuCiAgICAgLy8gU2tpcCBTdGVwIDQtNSBhcyByZXF1aXJlUmVz
aWRlbnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVyaWZpY2F0aW9uIGFyZSBlbmZvcmNlZC4KQEAgLTI2
Niw3ICsyNjYsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlCiAg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlcXVlc3RSZWNlaXZlZCk7CiAgICAgbV9zdGF0
ZSA9IFN0YXRlOjpQb2xpY3lEZWNpZGVkOwogCi0gICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0g
V1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEo
KS5vcHRpb25zKTsKKyAgICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBzdGQ6OmdldDxQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogCiAg
ICAgaWYgKHBvbGljeSA9PSBMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3k6OkRpc2FsbG93KSB7CiAg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJEaXNh
bGxvdyBsb2NhbCBhdXRoZW50aWNhdG9yLiJfcyB9KTsKQEAgLTMyOCw3ICszMjgsNyBAQCB2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlCiAKICAgICBBU1NFUlQobV9zdGF0
ZSA9PSBTdGF0ZTo6UG9saWN5RGVjaWRlZCk7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpVc2VyVmVy
aWZpZWQ7Ci0gICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAgICBhdXRv
JiBjcmVhdGlvbk9wdGlvbnMgPSBzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogCiAgICAgaWYgKCF2YWxpZGF0ZVVzZXJW
ZXJpZmljYXRpb24odmVyaWZpY2F0aW9uKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM3LDcgKzQz
Nyw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmUKIAogICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpVc2VyVmVyaWZpZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0
ZTo6QXR0ZXN0ZWQ7Ci0gICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAg
ICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogCiAgICAgaWYgKGVycm9yKSB7
CiAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNv
dWxkbid0IGF0dGVzdDogIiwgU3RyaW5nKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7
CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlv
bigpCiAgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOwogICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpJbml0KTsKICAgICBtX3N0YXRlID0gU3RhdGU6OlJl
cXVlc3RSZWNlaXZlZDsKLSAgICBhdXRvJiByZXF1ZXN0T3B0aW9ucyA9IFdURjo6Z2V0PFB1Ymxp
Y0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAg
ICBhdXRvJiByZXF1ZXN0T3B0aW9ucyA9IHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1
ZXN0T3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKIAogICAgIC8vIFRoZSBmb2xsb3dp
bmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLWdldC1hc3Nl
cnRpb24gYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFNraXAgU3RlcCAyIGFzIHJlcXVp
cmVVc2VyVmVyaWZpY2F0aW9uIGlzIGVuZm9yY2VkLgpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQg
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2UKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8mIHJlcXVlc3RPcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOworICAgIGF1dG8mIHJl
cXVlc3RPcHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
PihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogCiAgICAgYXV0byBhY2Nlc3NDb250cm9sUmVmID0g
cmVzcG9uc2UtPmFjY2Vzc0NvbnRyb2woKTsKICAgICBhdXRvIGNhbGxiYWNrID0gWwpAQCAtNTc1
LDcgKzU3NSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2UKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gU3RlcCAxMC4KLSAgICBhdXRvIHJlcXVlc3RPcHRpb25z
ID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0
YSgpLm9wdGlvbnMpOworICAgIGF1dG8gcmVxdWVzdE9wdGlvbnMgPSBzdGQ6OmdldDxQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAgICAg
YXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEocmVxdWVzdE9wdGlvbnMucnBJZCwgdmVyaWZp
Y2F0aW9uID09IExvY2FsQ29ubmVjdGlvbjo6VXNlclZlcmlmaWNhdGlvbjo6UHJlc2VuY2UgPyBv
dGhlckdldEFzc2VydGlvbkZsYWdzIDogZ2V0QXNzZXJ0aW9uRmxhZ3MsIGNvdW50ZXIsIHsgfSk7
CiAKICAgICAvLyBTdGVwIDExLgpAQCAtNjcxLDcgKzY3MSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50
aWNhdG9yOjpkZWxldGVEdXBsaWNhdGUKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRo
ZW50aWNhdG9ySW50ZXJuYWw7CiAKLSAgICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBXVEY6Omdl
dDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlv
bnMpOworICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAgICAgbV9leGlz
dGluZ0NyZWRlbnRpYWxzLmZpbmRNYXRjaGluZyhbY3JlYXRpb25PcHRpb25zXSAoYXV0byYgY3Jl
ZGVudGlhbCkgewogICAgICAgICBhdXRvKiB1c2VySGFuZGxlID0gY3JlZGVudGlhbC0+dXNlckhh
bmRsZSgpOwogICAgICAgICBBU1NFUlQodXNlckhhbmRsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9m
aWRvL0N0YXBBdXRoZW50aWNhdG9yLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9DdGFwQXV0aGVudGljYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRv
cjo6bWFrZUNyZWRlbnRpYWwoKQogICAgIGlmIChwcm9jZXNzR29vZ2xlTGVnYWN5QXBwSWRTdXBw
b3J0RXh0ZW5zaW9uKCkpCiAgICAgICAgIHJldHVybjsKICAgICBWZWN0b3I8dWludDhfdD4gY2Jv
ckNtZDsKLSAgICBhdXRvJiBvcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAgICBhdXRvJiBvcHRpb25z
ID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERh
dGEoKS5vcHRpb25zKTsKICAgICBhdXRvIGludGVybmFsVVZBdmFpbGFiaWxpdHkgPSBtX2luZm8u
b3B0aW9ucygpLnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoKTsKICAgICAvLyBJZiBVViBp
cyByZXF1aXJlZCwgdGhlbiBlaXRoZXIgYnVpbHQtaW4gdXYgb3IgYSBwaW4gd2lsbCB3b3JrLgog
ICAgIGlmIChpbnRlcm5hbFVWQXZhaWxhYmlsaXR5ID09IFVWQXZhaWxhYmlsaXR5OjprU3VwcG9y
dGVkQW5kQ29uZmlndXJlZCAmJiAoIW9wdGlvbnMuYXV0aGVudGljYXRvclNlbGVjdGlvbiB8fCBv
cHRpb25zLmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24tPnVzZXJWZXJpZmljYXRpb24gIT0gVXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50OjpEaXNjb3VyYWdlZCkpCkBAIC0xMTIsNyArMTEyLDcgQEAg
dm9pZCBDdGFwQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogCiB2b2lkIEN0YXBBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IHJlYWRDVEFQTWFr
ZUNyZWRlbnRpYWxSZXNwb25zZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQ
bGF0Zm9ybSwgV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVx
dWVzdERhdGEoKS5vcHRpb25zKS5hdHRlc3RhdGlvbik7CisgICAgYXV0byByZXNwb25zZSA9IHJl
YWRDVEFQTWFrZUNyZWRlbnRpYWxSZXNwb25zZShkYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dDo6Q3Jvc3NQbGF0Zm9ybSwgc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKS5hdHRlc3RhdGlvbik7CiAgICAgaWYgKCFyZXNw
b25zZSkgewogICAgICAgICBhdXRvIGVycm9yID0gZ2V0UmVzcG9uc2VDb2RlKGRhdGEpOwogCkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBDdGFwQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkK
IHsKICAgICBBU1NFUlQoIW1faXNEb3duZ3JhZGVkKTsKICAgICBWZWN0b3I8dWludDhfdD4gY2Jv
ckNtZDsKLSAgICBhdXRvJiBvcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOworICAgIGF1dG8mIG9wdGlvbnMg
PSBzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+KHJlcXVlc3REYXRh
KCkub3B0aW9ucyk7CiAgICAgYXV0byBpbnRlcm5hbFVWQXZhaWxhYmlsaXR5ID0gbV9pbmZvLm9w
dGlvbnMoKS51c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KCk7CiAgICAgLy8gSWYgVVYgaXMg
cmVxdWlyZWQsIHRoZW4gZWl0aGVyIGJ1aWx0LWluIHV2IG9yIGEgcGluIHdpbGwgd29yay4KICAg
ICBpZiAoaW50ZXJuYWxVVkF2YWlsYWJpbGl0eSA9PSBVVkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRl
ZEFuZENvbmZpZ3VyZWQgJiYgb3B0aW9ucy51c2VyVmVyaWZpY2F0aW9uICE9IFVzZXJWZXJpZmlj
YXRpb25SZXF1aXJlbWVudDo6RGlzY291cmFnZWQpCkBAIC0zNzUsNyArMzc1LDcgQEAgYm9vbCBD
dGFwQXV0aGVudGljYXRvcjo6dHJ5RG93bmdyYWRlKCkKIC8vIE9ubHkgVTJGIHByb3RvY29sIGlz
IHN1cHBvcnRlZCBmb3IgR29vZ2xlIGxlZ2FjeSBBcHBJRCBzdXBwb3J0LgogYm9vbCBDdGFwQXV0
aGVudGljYXRvcjo6cHJvY2Vzc0dvb2dsZUxlZ2FjeUFwcElkU3VwcG9ydEV4dGVuc2lvbigpCiB7
Ci0gICAgYXV0byYgZXh0ZW5zaW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykuZXh0ZW5zaW9uczsKKyAgICBhdXRv
JiBleHRlbnNpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKS5leHRlbnNpb25zOwogICAgIGlmICghZXh0ZW5zaW9u
cykgewogICAgICAgICAvLyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3I6OmNyZWF0ZSBzaG91bGQg
YWx3YXlzIHNldCBpdC4KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAJKHJldmlzaW9uIDI4NDA5MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGlj
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgVTJmQXV0aGVudGljYXRv
cjo6VTJmQXV0aGVudGljYXRvcihzdGQ6OgogCiB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6Om1ha2VD
cmVkZW50aWFsKCkKIHsKLSAgICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBXVEY6OmdldDxQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwor
ICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IHN0ZDo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CiAgICAgaWYgKCFpc0NvbnZl
cnRpYmxlVG9VMmZSZWdpc3RlckNvbW1hbmQoY3JlYXRpb25PcHRpb25zKSkgewogICAgICAgICBy
ZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90U3VwcG9ydGVkRXJyb3IsICJDYW5ub3Qg
Y29udmVydCB0aGUgcmVxdWVzdCB0byBVMkYgY29tbWFuZC4iX3MgfSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlh
bCgpCiAKIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6Y2hlY2tFeGNsdWRlTGlzdChzaXplX3QgaW5k
ZXgpCiB7Ci0gICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAgICBhdXRv
JiBjcmVhdGlvbk9wdGlvbnMgPSBzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogICAgIGlmIChpbmRleCA+PSBjcmVhdGlv
bk9wdGlvbnMuZXhjbHVkZUNyZWRlbnRpYWxzLnNpemUoKSkgewogICAgICAgICBpc3N1ZVJlZ2lz
dGVyQ29tbWFuZCgpOwogICAgICAgICByZXR1cm47CkBAIC04MCwxNCArODAsMTQgQEAgdm9pZCBV
MmZBdXRoZW50aWNhdG9yOjpjaGVja0V4Y2x1ZGVMaXN0KAogCiB2b2lkIFUyZkF1dGhlbnRpY2F0
b3I6Omlzc3VlUmVnaXN0ZXJDb21tYW5kKCkKIHsKLSAgICBhdXRvIHUyZkNtZCA9IGNvbnZlcnRU
b1UyZlJlZ2lzdGVyQ29tbWFuZChyZXF1ZXN0RGF0YSgpLmhhc2gsIFdURjo6Z2V0PFB1YmxpY0tl
eUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykpOworICAg
IGF1dG8gdTJmQ21kID0gY29udmVydFRvVTJmUmVnaXN0ZXJDb21tYW5kKHJlcXVlc3REYXRhKCku
aGFzaCwgc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVz
dERhdGEoKS5vcHRpb25zKSk7CiAgICAgQVNTRVJUKHUyZkNtZCk7CiAgICAgaXNzdWVOZXdDb21t
YW5kKFdURk1vdmUoKnUyZkNtZCksIENvbW1hbmRUeXBlOjpSZWdpc3RlckNvbW1hbmQpOwogfQog
CiB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiB7Ci0gICAgaWYgKCFpc0Nv
bnZlcnRpYmxlVG9VMmZTaWduQ29tbWFuZChXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykpKSB7CisgICAgaWYgKCFpc0NvbnZl
cnRpYmxlVG9VMmZTaWduQ29tbWFuZChzdGQ6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykpKSB7CiAgICAgICAgIHJlY2VpdmVSZXNw
b25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RTdXBwb3J0ZWRFcnJvciwgIkNhbm5vdCBjb252ZXJ0IHRo
ZSByZXF1ZXN0IHRvIFUyRiBjb21tYW5kLiJfcyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQog
CiB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6Omlzc3VlU2lnbkNvbW1hbmQoc2l6ZV90IGluZGV4KQog
ewotICAgIGF1dG8mIHJlcXVlc3RPcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOworICAgIGF1dG8mIHJlcXVl
c3RPcHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihy
ZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogICAgIGlmIChpbmRleCA+PSByZXF1ZXN0T3B0aW9ucy5h
bGxvd0NyZWRlbnRpYWxzLnNpemUoKSkgewogICAgICAgICBpZiAoYXV0byogb2JzZXJ2ZXIgPSB0
aGlzLT5vYnNlcnZlcigpKQogICAgICAgICAgICAgb2JzZXJ2ZXItPmF1dGhlbnRpY2F0b3JTdGF0
dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzOjpOb0NyZWRlbnRpYWxzRm91bmQpOwpA
QCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVTJmQXV0aGVudGljYXRvcjo6Y29udGludWVSZWdpc3Rl
ckMKIHsKICAgICBzd2l0Y2ggKGFwZHVSZXNwb25zZS5zdGF0dXMoKSkgewogICAgIGNhc2UgQXBk
dVJlc3BvbnNlOjpTdGF0dXM6OlNXX05PX0VSUk9SOiB7Ci0gICAgICAgIGF1dG8mIG9wdGlvbnMg
PSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0
YSgpLm9wdGlvbnMpOworICAgICAgICBhdXRvJiBvcHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKICAgICAg
ICAgYXV0byBhcHBJZCA9IHByb2Nlc3NHb29nbGVMZWdhY3lBcHBJZFN1cHBvcnRFeHRlbnNpb24o
b3B0aW9ucy5leHRlbnNpb25zKTsKICAgICAgICAgYXV0byByZXNwb25zZSA9IHJlYWRVMmZSZWdp
c3RlclJlc3BvbnNlKCFhcHBJZCA/IG9wdGlvbnMucnAuaWQgOiBhcHBJZCwgYXBkdVJlc3BvbnNl
LmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0sIG9wdGlvbnMu
YXR0ZXN0YXRpb24pOwogICAgICAgICBpZiAoIXJlc3BvbnNlKSB7CkBAIC0yMDMsNyArMjAzLDcg
QEAgdm9pZCBVMmZBdXRoZW50aWNhdG9yOjpjb250aW51ZUJvZ3VzQ29tbQogCiB2b2lkIFUyZkF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBk
dVJlc3BvbnNlJiYgYXBkdVJlc3BvbnNlKQogewotICAgIGF1dG8mIHJlcXVlc3RPcHRpb25zID0g
V1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgp
Lm9wdGlvbnMpOworICAgIGF1dG8mIHJlcXVlc3RPcHRpb25zID0gc3RkOjpnZXQ8UHVibGljS2V5
Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwogICAgIHN3
aXRjaCAoYXBkdVJlc3BvbnNlLnN0YXR1cygpKSB7CiAgICAgY2FzZSBBcGR1UmVzcG9uc2U6OlN0
YXR1czo6U1dfTk9fRVJST1I6IHsKICAgICAgICAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4gcmVzcG9uc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAkocmV2aXNpb24gMjg0MDkxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNywxMSArMTI3LDExIEBAIHZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5Ojp3cml0ZUN1c3RvbURhdGEKICAgICBjdXN0b21EYXRhLmZvckVhY2hQbGF0Zm9ybVN0cmlu
Z09yQnVmZmVyKFsmc2VsZWN0aW9uRGF0YV0gKGF1dG8mIHR5cGUsIGF1dG8mIHN0cmluZ09yQnVm
ZmVyKSB7CiAgICAgICAgIGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpKSB7CiAgICAgICAgICAgICBpZiAodHlwZSA9PSAidGV4dC9wbGFpbiJfcykKLSAg
ICAgICAgICAgICAgICBzZWxlY3Rpb25EYXRhLnNldFRleHQoV1RGOjpnZXQ8U3RyaW5nPihzdHJp
bmdPckJ1ZmZlcikpOworICAgICAgICAgICAgICAgIHNlbGVjdGlvbkRhdGEuc2V0VGV4dChzdGQ6
OmdldDxTdHJpbmc+KHN0cmluZ09yQnVmZmVyKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0eXBl
ID09ICJ0ZXh0L2h0bWwiX3MpCi0gICAgICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRNYXJr
dXAoV1RGOjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpOworICAgICAgICAgICAgICAgIHNl
bGVjdGlvbkRhdGEuc2V0TWFya3VwKHN0ZDo6Z2V0PFN0cmluZz4oc3RyaW5nT3JCdWZmZXIpKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gInRleHQvdXJpLWxpc3QiX3MpCi0gICAgICAg
ICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRVUklMaXN0KFdURjo6Z2V0PFN0cmluZz4oc3RyaW5n
T3JCdWZmZXIpKTsKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb25EYXRhLnNldFVSSUxpc3Qoc3Rk
OjpnZXQ8U3RyaW5nPihzdHJpbmdPckJ1ZmZlcikpOwogICAgICAgICB9CiAgICAgfSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAJ
KHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShXVEZNb3ZlKFdURjo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlPihoYW5kbGUpKSk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZShXVEZNb3ZlKHN0ZDo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPihoYW5kbGUpKSk7
CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdQogCiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZm
ZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihtX2hhbmRs
ZSkuY29weVNlbmRSaWdodCgpOworICAgIHJldHVybiBzdGQ6OmdldDxNYWNoU2VuZFJpZ2h0Piht
X2hhbmRsZSkuY29weVNlbmRSaWdodCgpOwogfQogCiBHcmFwaGljc0NvbnRleHQmIEltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBl
ZElPU3VyZmFjZUJhY2tlbmQuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
SU9TdXJmYWNlQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcAogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgcGFyYW1l
dGVycy5jb2xvclNwYWNlKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TZW5kUmlnaHQoV1RGTW92ZShzdGQ6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgcGFy
YW1ldGVycy5jb2xvclNwYWNlKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCShyZXZpc2lvbiAyODQwOTEp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRpYVJlY29yZGVyUHJp
dmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIE1lZGlhUmVj
b3JkZXJQcml2YXRlOjphdWRpb1NhbXBsZXNBCiAKICAgICBpZiAobV9kZXNjcmlwdGlvbiAhPSBk
ZXNjcmlwdGlvbikgewogICAgICAgICBBU1NFUlQoZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlw
dGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2ljVHlw
ZSk7Ci0gICAgICAgIG1fZGVzY3JpcHRpb24gPSAqV1RGOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uKj4oZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2Ny
aXB0aW9uKTsKKyAgICAgICAgbV9kZXNjcmlwdGlvbiA9ICpzdGQ6OmdldDxjb25zdCBBdWRpb1N0
cmVhbUJhc2ljRGVzY3JpcHRpb24qPihkZXNjcmlwdGlvbi5wbGF0Zm9ybURlc2NyaXB0aW9uKCku
ZGVzY3JpcHRpb24pOwogCiAgICAgICAgIC8vIEFsbG9jYXRlIGEgcmluZyBidWZmZXIgbGFyZ2Ug
ZW5vdWdoIHRvIGNvbnRhaW4gMiBzZWNvbmRzIG9mIGF1ZGlvLgogICAgICAgICBtX251bWJlck9m
RnJhbWVzID0gbV9kZXNjcmlwdGlvbi5zYW1wbGVSYXRlKCkgKiAyOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUhUTUxT
ZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NSFRNTFNlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCB3ZWJraXRfZG9tX2h0bWxfc2VsZWN0X2Vs
ZW1lbnRfYWRkKAogICAgIFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50KiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkhUTUxFbGVtZW50KiBjb252ZXJ0ZWRFbGVtZW50
ID0gV2ViS2l0Ojpjb3JlKGVsZW1lbnQpOwogICAgIFdlYkNvcmU6OkhUTUxFbGVtZW50KiBjb252
ZXJ0ZWRCZWZvcmUgPSBXZWJLaXQ6OmNvcmUoYmVmb3JlKTsKLSAgICBWYXJpYW50PFJlZlB0cjxX
ZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudD4sIFJlZlB0cjxXZWJDb3JlOjpIVE1MT3B0R3JvdXBF
bGVtZW50Pj4gdmFyaWFudEVsZW1lbnQ7CisgICAgc3RkOjp2YXJpYW50PFJlZlB0cjxXZWJDb3Jl
OjpIVE1MT3B0aW9uRWxlbWVudD4sIFJlZlB0cjxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50
Pj4gdmFyaWFudEVsZW1lbnQ7CiAgICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50
Pihjb252ZXJ0ZWRFbGVtZW50KSkKICAgICAgICAgdmFyaWFudEVsZW1lbnQgPSAmZG93bmNhc3Q8
V2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KCpjb252ZXJ0ZWRFbGVtZW50KTsKICAgICBlbHNl
IGlmIChpczxXZWJDb3JlOjpIVE1MT3B0R3JvdXBFbGVtZW50Pihjb252ZXJ0ZWRFbGVtZW50KSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TcGVlY2gvU3BlZWNoUmVjb2duaXRpb25S
ZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIERpc2Fi
bGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUgc2NvcGU7CiAgICAgICAg
IGlmIChtX2Rlc2NyaXB0aW9uICE9IGRlc2NyaXB0aW9uKSB7CiAgICAgICAgICAgICBBU1NFUlQo
ZGVzY3JpcHRpb24ucGxhdGZvcm1EZXNjcmlwdGlvbigpLnR5cGUgPT0gUGxhdGZvcm1EZXNjcmlw
dGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSk7Ci0gICAgICAgICAgICBtX2Rlc2NyaXB0aW9u
ID0gKldURjo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KGRlc2NyaXB0
aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CisgICAgICAgICAgICBtX2Rl
c2NyaXB0aW9uID0gKnN0ZDo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+
KGRlc2NyaXB0aW9uLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbik7CiAKICAgICAg
ICAgICAgIG1fbnVtYmVyT2ZGcmFtZXMgPSBtX2Rlc2NyaXB0aW9uLnNhbXBsZVJhdGUoKSAqIDI7
CiAgICAgICAgICAgICBtX3JpbmdCdWZmZXIuYWxsb2NhdGUobV9kZXNjcmlwdGlvbi5zdHJlYW1E
ZXNjcmlwdGlvbigpLCBtX251bWJlck9mRnJhbWVzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQuY3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpCiAgICAgICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxSZWY8
U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURhdGEpKQogICAgICAgICAgICAgbV9yZXNwb25zZURh
dGEgPSBidWZmZXItPmNvcHkoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgV1RGOjpnZXQ8
UmVmPFNoYXJlZEJ1ZmZlcj4+KG1fcmVzcG9uc2VEYXRhKS0+YXBwZW5kKFdURk1vdmUoYnVmZmVy
KSk7CisgICAgICAgICAgICBzdGQ6OmdldDxSZWY8U2hhcmVkQnVmZmVyPj4obV9yZXNwb25zZURh
dGEpLT5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0
b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMjg0MDkx
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0
b3JDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgV2Vi
RWRpdG9yQ2xpZW50OjpoYW5kbGVHdGtFZGl0b3JDb20KIAogYm9vbCBXZWJFZGl0b3JDbGllbnQ6
OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoRnJhbWUmIGZyYW1lLCBjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBwZW5kaW5nRWRpdG9yQ29tbWFuZHMsIGJvb2wgYWxsb3dUZXh0SW5zZXJ0
aW9uKQogewotICAgIFZlY3RvcjxWYXJpYW50PEVkaXRvcjo6Q29tbWFuZCwgU3RyaW5nPj4gY29t
bWFuZHM7CisgICAgVmVjdG9yPHN0ZDo6dmFyaWFudDxFZGl0b3I6OkNvbW1hbmQsIFN0cmluZz4+
IGNvbW1hbmRzOwogICAgIGZvciAoYXV0byYgY29tbWFuZFN0cmluZyA6IHBlbmRpbmdFZGl0b3JD
b21tYW5kcykgewogICAgICAgICBpZiAoY29tbWFuZFN0cmluZy5zdGFydHNXaXRoKCJHdGsiKSkK
ICAgICAgICAgICAgIGNvbW1hbmRzLmFwcGVuZChjb21tYW5kU3RyaW5nKTsKQEAgLTY2LDEwICs2
NiwxMCBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6ZXhlY3V0ZVBlbmRpbmdFZGl0CiAKICAgICBm
b3IgKGF1dG8mIGNvbW1hbmRWYXJpYW50IDogY29tbWFuZHMpIHsKICAgICAgICAgaWYgKHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8U3RyaW5nPihjb21tYW5kVmFyaWFudCkpIHsKLSAgICAgICAgICAg
IGlmICghaGFuZGxlR3RrRWRpdG9yQ29tbWFuZChmcmFtZSwgV1RGOjpnZXQ8U3RyaW5nPihjb21t
YW5kVmFyaWFudCksIGFsbG93VGV4dEluc2VydGlvbikpCisgICAgICAgICAgICBpZiAoIWhhbmRs
ZUd0a0VkaXRvckNvbW1hbmQoZnJhbWUsIHN0ZDo6Z2V0PFN0cmluZz4oY29tbWFuZFZhcmlhbnQp
LCBhbGxvd1RleHRJbnNlcnRpb24pKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGF1dG8mIGNvbW1hbmQgPSBXVEY6OmdldDxFZGl0
b3I6OkNvbW1hbmQ+KGNvbW1hbmRWYXJpYW50KTsKKyAgICAgICAgICAgIGF1dG8mIGNvbW1hbmQg
PSBzdGQ6OmdldDxFZGl0b3I6OkNvbW1hbmQ+KGNvbW1hbmRWYXJpYW50KTsKICAgICAgICAgICAg
IGlmICghY29tbWFuZC5leGVjdXRlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9U
ZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1t
CShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1
OSw3ICsxNTksNyBAQCB2b2lkIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVtb3ZlCiAg
ICAgZG9jdW1lbnQtPm1hcmtlcnMoKS5maWx0ZXJNYXJrZXJzKHJhbmdlQW5kT2Zmc2V0LT5yYW5n
ZSwgWyZdIChjb25zdCBEb2N1bWVudE1hcmtlciYgbWFya2VyKSB7CiAgICAgICAgIGlmICghc3Rk
Ojpob2xkc19hbHRlcm5hdGl2ZTxXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6UGxhdGZvcm1UZXh0
Q2hlY2tpbmdEYXRhPihtYXJrZXIuZGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFdlYkNvcmU6OkRvY3VtZW50TWFya2VyOjpQbGF0Zm9y
bVRleHRDaGVja2luZ0RhdGE+KG1hcmtlci5kYXRhKCkpLmtleSAhPSBhbm5vdGF0aW9uOworICAg
ICAgICByZXR1cm4gc3RkOjpnZXQ8V2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4
dENoZWNraW5nRGF0YT4obWFya2VyLmRhdGEoKSkua2V5ICE9IGFubm90YXRpb247CiAgICAgfSwg
dHlwZXMpOwogfQogCkBAIC0xNzcsNyArMTc3LDcgQEAgV2ViQ29yZTo6QXR0cmlidXRlZFN0cmlu
ZyBUZXh0Q2hlY2tpbmdDbwogICAgICAgICBbc3RyaW5nIGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6
YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6aXQudGV4
dCgpLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKV0pLmdldCgpXTsKICAgICAg
ICAgYXV0byByYW5nZSA9IGl0LnJhbmdlKCk7CiAgICAgICAgIGZvciAoYXV0byogbWFya2VyIDog
cmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5tYXJrZXJzKCkubWFya2Vyc0luUmFuZ2UocmFuZ2UsIERv
Y3VtZW50TWFya2VyOjpQbGF0Zm9ybVRleHRDaGVja2luZykpIHsKLSAgICAgICAgICAgIGF1dG8m
IGRhdGEgPSBXVEY6OmdldDxEb2N1bWVudE1hcmtlcjo6UGxhdGZvcm1UZXh0Q2hlY2tpbmdEYXRh
PihtYXJrZXItPmRhdGEoKSk7CisgICAgICAgICAgICBhdXRvJiBkYXRhID0gc3RkOjpnZXQ8RG9j
dW1lbnRNYXJrZXI6OlBsYXRmb3JtVGV4dENoZWNraW5nRGF0YT4obWFya2VyLT5kYXRhKCkpOwog
ICAgICAgICAgICAgYXV0byBzdWJyYW5nZSA9IHJlc29sdmVDaGFyYWN0ZXJSYW5nZShyYW5nZSwg
eyBtYXJrZXItPnN0YXJ0T2Zmc2V0KCksIG1hcmtlci0+ZW5kT2Zmc2V0KCkgLSBtYXJrZXItPnN0
YXJ0T2Zmc2V0KCkgfSk7CiAgICAgICAgICAgICBbc3RyaW5nIGFkZEF0dHJpYnV0ZTpkYXRhLmtl
eSB2YWx1ZTpkYXRhLnZhbHVlIHJhbmdlOmNoYXJhY3RlclJhbmdlKCplbnRpcmVSYW5nZSwgc3Vi
cmFuZ2UpXTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0
YXRlKEZyYQogICAgIGlmIChzZWxlY3RlZFJhbmdlKSB7CiAgICAgICAgIGF1dG8gbWFya2VycyA9
IGZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKS5tYXJrZXJzSW5SYW5nZSgqc2VsZWN0ZWRSYW5n
ZSwgRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU6OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLmRpY3RhdGlvbkNvbnRleHRzRm9yU2VsZWN0aW9uID0gV1RG
OjptYXAobWFya2VycywgW10gKGF1dG8qIG1hcmtlcikgewotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6Z2V0PERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25EYXRhPihtYXJrZXItPmRhdGEoKSkuY29u
dGV4dDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmdldDxEb2N1bWVudE1hcmtlcjo6RGljdGF0
aW9uRGF0YT4obWFya2VyLT5kYXRhKCkpLmNvbnRleHQ7CiAgICAgICAgIH0pOwogICAgIH0KICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkocmV2aXNpb24gMjg0MDkxKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMjEtMTAtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgV1RGOjpWYXJpYW50IGFuZCBXVEY6OmdldAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNjc1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiBlbmNsb3NpbmdSYW5nZVdpdGhEaWN0YXRpb25QaHJhc2VBbHRlcm5hdGl2ZXM6XSk6CisK
IDIwMjEtMDgtMTkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgb2xkIHVudXNlZCBjb2RlIGFuZCBvdXQgb2YgZGF0ZSBjb21tZW50cy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQ
b3NpdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0JKHJldmlzaW9uIDI4NDA5MSkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDE0LDcgKzQxNCw3IEBAIC0gKERPTVJhbmdlICopZW5jbG9zaW5n
UmFuZ2VXaXRoRGljdGF0aW8KICAgICBhdXRvJiBkb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCk7
CiAgICAgZm9yIChhdXRvIG1hcmtlciA6IGRvY3VtZW50Lm1hcmtlcnMoKS5tYXJrZXJzRm9yKCpu
b2RlLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uUGhyYXNlV2l0aEFsdGVybmF0aXZlcykpIHsK
ICAgICAgICAgaWYgKG1hcmtlci0+c3RhcnRPZmZzZXQoKSA8PSBvZmZzZXQgJiYgbWFya2VyLT5l
bmRPZmZzZXQoKSA+PSBvZmZzZXQpIHsKLSAgICAgICAgICAgICphbHRlcm5hdGl2ZXMgPSBjcmVh
dGVOU0FycmF5KFdURjo6Z2V0PFZlY3RvcjxTdHJpbmc+PihtYXJrZXItPmRhdGEoKSkpLmF1dG9y
ZWxlYXNlKCk7CisgICAgICAgICAgICAqYWx0ZXJuYXRpdmVzID0gY3JlYXRlTlNBcnJheShzdGQ6
OmdldDxWZWN0b3I8U3RyaW5nPj4obWFya2VyLT5kYXRhKCkpKS5hdXRvcmVsZWFzZSgpOwogICAg
ICAgICAgICAgcmV0dXJuIGtpdChtYWtlU2ltcGxlUmFuZ2UoKm5vZGUsICptYXJrZXIpKTsKICAg
ICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI4NDA5MSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdURjo6VmFyaWFudCBhbmQg
V1RGOjpnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgZ2V0RGljdGF0aW9u
UmVzdWx0UmFuZ2VzOmFuZE1ldGFkYXRhczpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgZGljdGF0
aW9uUmVzdWx0TWV0YWRhdGFGb3JSYW5nZTpdKToKKwogMjAyMS0xMC0xMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQnVpbGQtdGltZSBwZXJmXSBGb3J3YXJk
LWRlY2xhcmUgbW9yZSB0aGluZ3MgaW4gRG9jdW1lbnQuaApJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyODQwOTEpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzI0LDcgKzE3MjQsNyBAQCAtICh2b2lkKWdldERpY3RhdGlvblJlc3VsdFJhbmdlczooTlNB
cnJhCiAgICAgICAgICAgICBpZiAobWFya2VyLT50eXBlKCkgIT0gV2ViQ29yZTo6RG9jdW1lbnRN
YXJrZXI6OkRpY3RhdGlvblJlc3VsdCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgaWQgbWV0YWRhdGEgPSBXVEY6OmdldDxSZXRhaW5QdHI8aWQ+PihtYXJrZXItPmRh
dGEoKSkuZ2V0KCk7CisgICAgICAgICAgICBpZCBtZXRhZGF0YSA9IHN0ZDo6Z2V0PFJldGFpblB0
cjxpZD4+KG1hcmtlci0+ZGF0YSgpKS5nZXQoKTsKIAogICAgICAgICAgICAgLy8gQWxsIHJlc3Vs
dCBtYXJrZXJzIHNob3VsZCBoYXZlIG1ldGFkYXRhLgogICAgICAgICAgICAgQVNTRVJUKG1ldGFk
YXRhKTsKQEAgLTE3NjksNyArMTc2OSw3IEBAIC0gKGlkKWRpY3RhdGlvblJlc3VsdE1ldGFkYXRh
Rm9yUmFuZ2U6KEQKICAgICBpZiAobWFya2Vycy5zaXplKCkgPT0gMCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIHJldHVybiBXVEY6OmdldDxSZXRhaW5QdHI8aWQ+PihtYXJrZXJzWzBdLT5k
YXRhKCkpLmdldCgpOworICAgIHJldHVybiBzdGQ6OmdldDxSZXRhaW5QdHI8aWQ+PihtYXJrZXJz
WzBdLT5kYXRhKCkpLmdldCgpOwogfQogCiAtICh2b2lkKXJlY3Vyc2l2ZVNldFVwZGF0ZUFwcGVh
cmFuY2VFbmFibGVkOihCT09MKWVuYWJsZWQKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDA5MSkKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTEzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFdU
Rjo6VmFyaWFudCBhbmQgV1RGOjpnZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTY3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WYXJpYW50LmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1tOgorICAgICAg
ICAoYWRkVmFsdWVzVG9UYWJsZSk6CisKIDIwMjEtMTAtMTIgIEpvbmF0aGFuIEJlZGFyZCAgPGpi
ZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtBcHBsZVNpbGljb25dIFN1cHBvcnQgbmF0aXZl
IHNpbXVsYXRvciB0ZXN0aW5nCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDI4NDA5MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNiBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAg
VGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKICAgICBUZXN0cy9XVEYvVW5pcXVlQXJyYXkuY3BwCiAg
ICAgVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKLSAgICBUZXN0cy9XVEYvVmFyaWFudC5jcHAKICAg
ICBUZXN0cy9XVEYvVmVjdG9yLmNwcAogICAgIFRlc3RzL1dURi9XVEZTdHJpbmcuY3BwCiAgICAg
VGVzdHMvV1RGL1dlYWtQdHIuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjg0MDkxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY4Niw3ICs2ODYsNiBAQAogCQk3
QzgzRTBDNDFEMEE2NTQyMDBGRUJDRjMgLyogUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2su
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDlFMjky
QjFDOTBBNzFGMDAwQkI4MDAgLyogUmVxdWlyZXNVc2VyQWN0aW9uRm9yUGxheWJhY2subW0gKi87
IH07CiAJCTdDODNFMEM1MUQwQTY1NDYwMEZFQkNGMyAvKiBTaHJpbmtUb0ZpdC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOUE1M0FFMUIzMUZBOEQw
MDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLzsgfTsKIAkJN0M4M0UwQzYxRDBBNjU0RTAwRkVC
Q0YzIC8qIFZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFOTQzRjExQ0QzRTg3RTAwQUMwOEMyIC8qIFZpZGVvQ29u
dHJvbHNNYW5hZ2VyLm1tICovOyB9OwotCQk3QzgzRkM3MTFENTUzNUE4MDAxREZCQ0QgLyogVmFy
aWFudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0QwRDVBQTFENTUzNERFMDAwQ0M5RTEgLyogVmFyaWFudC5jcHAgKi87IH07CiAJCTdDODgyRTA5
MUM4MEM2MzAwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkUGx1Z0luLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4ODJFMDQxQzgwQzYyNDAwNkJG
NzMxIC8qIFVzZXJDb250ZW50V29ybGRQbHVnSW4ubW0gKi87IH07CiAJCTdDODgyRTBBMUM4MEM3
NjQwMDZCRjczMSAvKiBVc2VyQ29udGVudFdvcmxkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4ODJFMDMxQzgwQzYyNDAwNkJGNzMxIC8qIFVzZXJD
b250ZW50V29ybGQubW0gKi87IH07CiAJCTdDODlEMkFDMUE2OUI4MEQwMDNBNUZERSAvKiBXS1Bh
Z2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDODlEMkFBMUE2OUI4MEQwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9u
LmNwcCAqLzsgfTsKQEAgLTI1NDAsNyArMjUzOSw2IEBACiAJCTdDQ0I5OTIyMUQzQjQ0RTcwMDM5
MjJGNiAvKiBvcGVuLW11bHRpcGxlLWV4dGVybmFsLXVybC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gIm9wZW4tbXVsdGlwbGUtZXh0ZXJuYWwtdXJsLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3Q0NFN0U4QzFBNDExNDRFMDA0NDdDNEMgLyogbGliVGVzdFdl
YktpdEFQSS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJUZXN0V2ViS2l0QVBJ
LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTdDQ0U3RUEzMUE0MTE1
Q0IwMDQ0N0M0QyAvKiBUZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBUZXN0V2ViS2l0QVBJTGlicmFyeS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJN0NEMEQ1QUExRDU1MzRERTAwMENDOUUxIC8qIFZhcmlhbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDRDRDMjZDMUUyQzBFNkUwMDkyOTQ3MCAvKiBTdHJpbmdDb25jYXRlbmF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJpbmdDb25jYXRl
bmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRDcwQzRFMjRBNDM2RUUw
MEU2MTA0MCAvKiBTdHJpbmdQYXJzaW5nQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cmluZ1BhcnNpbmdCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0VC
NjJBOTIyMzYwODZDMDA2OUNCQjAgLyogSXRlcmF0b3JSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJdGVyYXRvclJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2
MDYsNyArNDYwNCw2IEBACiAJCQkJRTNBMUU3ODAyMUIyNUI3OTAwOEM2MDA3IC8qIFVSTC5jcHAg
Ki8sCiAJCQkJRTNBMUU3ODQyMUIyNUI5MTAwOEM2MDA3IC8qIFVSTFBhcnNlci5jcHAgKi8sCiAJ
CQkJMTQ0RDQwRUMyMjFCNDZBNzAwNEI0NzRGIC8qIFVVSUQuY3BwICovLAotCQkJCTdDRDBENUFB
MUQ1NTM0REUwMDBDQzlFMSAvKiBWYXJpYW50LmNwcCAqLywKIAkJCQlCQzU1RjVGODE0QUQ3OEVF
MDA0ODRCRTEgLyogVmVjdG9yLmNwcCAqLywKIAkJCQkxQ0I5QkMzNzFBNjc0ODIzMDBGRTU2Nzgg
LyogV2Vha1B0ci5jcHAgKi8sCiAJCQkJRTM4ODg4NzAyMEM5MDk4MTAwRTYzMkJDIC8qIFdvcmtl
clBvb2wuY3BwICovLApAQCAtNTM4OCw3ICs1Mzg1LDYgQEAKIAkJCQlFM0MyMUE3QzIxQjI1Q0Ey
MDAzQjMxQTMgLyogVVJMRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTNBMUU3ODUyMUIy
NUI5MTAwOEM2MDA3IC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTAz
QjFEMEE2MDI3MDBGRUJDRjMgLyogVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKLQkJ
CQk3QzgzRkM3MTFENTUzNUE4MDAxREZCQ0QgLyogVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREY0QzFEMEE1OTBDMDBGRUJDRjMgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTM3QzdDQzJEMUVBNDE0NkIwMDdCRDk1NiAvKiBXZWFrTGlua2luZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1N0MzRkE2NjFGN0MyNDhGMDA5RDRCODAgLyogV2Vha1B0ci5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZhcmlhbnQu
Y3BwCShyZXZpc2lvbiAyODQwOTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9W
YXJpYW50LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDI3NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiQ291bnRlcnMuaCIKLSNpbmNsdWRlICJS
ZWZMb2dnZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7Ci0KLVRFU1QoV1RGX1ZhcmlhbnQsIEluaXRpYWwpCi17Ci0gICAgVmFyaWFudDxpbnQs
IGRvdWJsZT4gdjE7Ci0gICAgRVhQRUNUX1RSVUUodjEuaW5kZXgoKSA9PSAwKTsKLSAgICBFWFBF
Q1RfVFJVRShXVEY6OmdldDxpbnQ+KHYxKSA9PSAwKTsKLQotICAgIHN0cnVjdCBUIHsKLSAgICAg
ICAgVCgpIDogdmFsdWUoMTUpIHsgfQotICAgICAgICBpbnQgdmFsdWU7Ci0gICAgfTsKLQotICAg
IFZhcmlhbnQ8VCwgaW50PiB2MjsKLSAgICBFWFBFQ1RfVFJVRSh2Mi5pbmRleCgpID09IDApOwot
ICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0PFQ+KHYyKS52YWx1ZSA9PSAxNSk7Ci19Ci0KLVRFU1Qo
V1RGX1ZhcmlhbnQsIEJhc2ljKQotewotICAgIFZhcmlhbnQ8aW50LCBkb3VibGU+IHZhcmlhbnQg
PSAxOwotICAgIEVYUEVDVF9UUlVFKHZhcmlhbnQuaW5kZXgoKSA9PSAwKTsKLSAgICBFWFBFQ1Rf
VFJVRShXVEY6OmdldDxpbnQ+KHZhcmlhbnQpID09IDEpOwotICAgIEVYUEVDVF9FUSgqc3RkOjpn
ZXRfaWY8aW50PigmdmFyaWFudCksIDEpOwotICAgIEVYUEVDVF9FUShzdGQ6OmdldF9pZjxkb3Vi
bGU+KCZ2YXJpYW50KSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1RSVUUoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxpbnQ+KHZhcmlhbnQpKTsKLSAgICBFWFBFQ1RfRkFMU0Uoc3RkOjpob2xkc19hbHRl
cm5hdGl2ZTxkb3VibGU+KHZhcmlhbnQpKTsKLQotICAgIHZhcmlhbnQgPSAxLjA7Ci0gICAgRVhQ
RUNUX1RSVUUodmFyaWFudC5pbmRleCgpID09IDEpOwotICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0
PGRvdWJsZT4odmFyaWFudCkgPT0gMSk7Ci0gICAgRVhQRUNUX0VRKCpzdGQ6OmdldF9pZjxkb3Vi
bGU+KCZ2YXJpYW50KSwgMS4wKTsKLSAgICBFWFBFQ1RfRVEoc3RkOjpnZXRfaWY8aW50PigmdmFy
aWFudCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9UUlVFKHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8
ZG91YmxlPih2YXJpYW50KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKHN0ZDo6aG9sZHNfYWx0ZXJuYXRp
dmU8aW50Pih2YXJpYW50KSk7Ci19Ci0KLVRFU1QoV1RGX1ZhcmlhbnQsIEJhc2ljVmlzaXRvcikK
LXsKLSAgICBlbnVtIGNsYXNzIFR5cGUgewotICAgICAgICBOb25lLAotICAgICAgICBJbnQsCi0g
ICAgICAgIEZsb2F0LAotICAgICAgICBTdHJpbmcsCi0gICAgfTsKLQotICAgIHN0cnVjdCBWaXNp
dG9yIHsKLSAgICAgICAgVmlzaXRvcihUeXBlJiB0KQotICAgICAgICAgICAgOiB0eXBlKHQpCi0g
ICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVHlwZSYgdHlwZTsKLQotICAg
ICAgICB2b2lkIG9wZXJhdG9yKCkoaW50KSBjb25zdCB7IHR5cGUgPSBUeXBlOjpJbnQ7IH0KLSAg
ICAgICAgdm9pZCBvcGVyYXRvcigpKGZsb2F0KSBjb25zdCB7IHR5cGUgPSBUeXBlOjpGbG9hdDsg
IH0KLSAgICAgICAgdm9pZCBvcGVyYXRvcigpKFN0cmluZykgY29uc3QgeyB0eXBlID0gVHlwZTo6
U3RyaW5nOyAgfQotICAgIH07Ci0KLSAgICBUeXBlIHR5cGUgPSBUeXBlOjpOb25lOwotCi0gICAg
VmFyaWFudDxpbnQsIGZsb2F0LCBTdHJpbmc+IHZhcmlhbnQgPSA4OwotICAgIHN0ZDo6dmlzaXQo
VmlzaXRvcih0eXBlKSwgdmFyaWFudCk7Ci0gICAgRVhQRUNUX1RSVUUoVHlwZTo6SW50ID09IHR5
cGUpOwotCi0KLSAgICB2YXJpYW50ID0gMS4wZjsKLSAgICBzdGQ6OnZpc2l0KFZpc2l0b3IodHlw
ZSksIHZhcmlhbnQpOwotICAgIEVYUEVDVF9UUlVFKFR5cGU6OkZsb2F0ID09IHR5cGUpOwotCi0K
LSAgICB2YXJpYW50ID0gImhlbGxvIjsKLSAgICBzdGQ6OnZpc2l0KFZpc2l0b3IodHlwZSksIHZh
cmlhbnQpOwotICAgIEVYUEVDVF9UUlVFKFR5cGU6OlN0cmluZyA9PSB0eXBlKTsKLX0KLQotI2lm
IFVTRShDRikKLVRFU1QoV1RGX1ZhcmlhbnQsIFJldGFpblB0cikKLXsKLSAgICBlbnVtIGNsYXNz
IFR5cGUgewotICAgICAgICBOb25lLAotICAgICAgICBSZWZQdHIsCi0gICAgICAgIFJldGFpblB0
ciwKLSAgICB9OwotICAgIAotICAgIFR5cGUgdHlwZSA9IFR5cGU6Ok5vbmU7Ci0gICAgCi0gICAg
YXV0byB2aXNpdG9yID0gV1RGOjptYWtlVmlzaXRvcigKLSAgICAgICAgWyZdKGNvbnN0IFJlZlB0
cjxSZWZMb2dnZXI+JikgeyB0eXBlID0gVHlwZTo6UmVmUHRyOyB9LAotICAgICAgICBbJl0oY29u
c3QgUmV0YWluUHRyPENGRGF0YVJlZj4mKSB7IHR5cGUgPSBUeXBlOjpSZXRhaW5QdHI7IH0KLSAg
ICApOwotICAgIAotICAgIFJlZlB0cjxSZWZMb2dnZXI+IHJlZlB0cjsKLSAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiByZXRhaW5QdHI7Ci0gICAgVmFyaWFudDxSZWZQdHI8UmVmTG9nZ2VyPiwgUmV0
YWluUHRyPENGRGF0YVJlZj4+IHZhcmlhbnQoV1RGTW92ZShyZWZQdHIpKTsKLSAgICBzdGQ6OnZp
c2l0KHZpc2l0b3IsIHZhcmlhbnQpOwotICAgIEVYUEVDVF9UUlVFKFR5cGU6OlJlZlB0ciA9PSB0
eXBlKTsKLSAgICAKLSAgICB2YXJpYW50ID0gV1RGTW92ZShyZXRhaW5QdHIpOwotICAgIHN0ZDo6
dmlzaXQodmlzaXRvciwgdmFyaWFudCk7Ci0gICAgRVhQRUNUX1RSVUUoVHlwZTo6UmV0YWluUHRy
ID09IHR5cGUpOwotfQotI2VuZGlmCi0KLVRFU1QoV1RGX1ZhcmlhbnQsIFZpc2l0b3JVc2luZ01h
a2VWaXNpdG9yKQotewotICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIE5vbmUsCi0gICAg
ICAgIEludCwKLSAgICAgICAgRmxvYXQsCi0gICAgICAgIFN0cmluZywKLSAgICB9OwotCi0gICAg
VHlwZSB0eXBlID0gVHlwZTo6Tm9uZTsKLQotICAgIGF1dG8gdmlzaXRvciA9IFdURjo6bWFrZVZp
c2l0b3IoCi0gICAgICAgIFsmXShpbnQpIHsgdHlwZSA9IFR5cGU6OkludDsgfSwKLSAgICAgICAg
WyZdKGZsb2F0KSB7IHR5cGUgPSBUeXBlOjpGbG9hdDsgfSwKLSAgICAgICAgWyZdKFN0cmluZykg
eyB0eXBlID0gVHlwZTo6U3RyaW5nOyB9Ci0gICAgKTsKLQotICAgIFZhcmlhbnQ8aW50LCBmbG9h
dCwgU3RyaW5nPiB2YXJpYW50ID0gODsKLSAgICBzdGQ6OnZpc2l0KHZpc2l0b3IsIHZhcmlhbnQp
OwotICAgIEVYUEVDVF9UUlVFKFR5cGU6OkludCA9PSB0eXBlKTsKLQotCi0gICAgdmFyaWFudCA9
IDEuMGY7Ci0gICAgc3RkOjp2aXNpdCh2aXNpdG9yLCB2YXJpYW50KTsKLSAgICBFWFBFQ1RfVFJV
RShUeXBlOjpGbG9hdCA9PSB0eXBlKTsKLQotCi0gICAgdmFyaWFudCA9ICJoZWxsbyI7Ci0gICAg
c3RkOjp2aXNpdCh2aXNpdG9yLCB2YXJpYW50KTsKLSAgICBFWFBFQ1RfVFJVRShUeXBlOjpTdHJp
bmcgPT0gdHlwZSk7Ci19Ci0KLVRFU1QoV1RGX1ZhcmlhbnQsIFZpc2l0b3JVc2luZ1N3aXRjaE9u
KQotewotICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIE5vbmUsCi0gICAgICAgIEludCwK
LSAgICAgICAgRmxvYXQsCi0gICAgICAgIFN0cmluZywKLSAgICB9OwotCi0gICAgVHlwZSB0eXBl
ID0gVHlwZTo6Tm9uZTsKLQotICAgIFZhcmlhbnQ8aW50LCBmbG9hdCwgU3RyaW5nPiB2YXJpYW50
ID0gODsKLSAgICB0eXBlID0gV1RGOjpzd2l0Y2hPbih2YXJpYW50LAotICAgICAgICBbXShpbnQp
IHsgcmV0dXJuIFR5cGU6OkludDsgfSwKLSAgICAgICAgW10oZmxvYXQpIHsgcmV0dXJuIFR5cGU6
OkZsb2F0OyB9LAotICAgICAgICBbXShTdHJpbmcpIHsgcmV0dXJuIFR5cGU6OlN0cmluZzsgfQot
ICAgICk7Ci0gICAgRVhQRUNUX1RSVUUoVHlwZTo6SW50ID09IHR5cGUpOwotCi0KLSAgICB2YXJp
YW50ID0gMS4wZjsKLSAgICB0eXBlID0gV1RGOjpzd2l0Y2hPbih2YXJpYW50LAotICAgICAgICBb
XShpbnQpIHsgcmV0dXJuIFR5cGU6OkludDsgfSwKLSAgICAgICAgW10oZmxvYXQpIHsgcmV0dXJu
IFR5cGU6OkZsb2F0OyB9LAotICAgICAgICBbXShTdHJpbmcpIHsgcmV0dXJuIFR5cGU6OlN0cmlu
ZzsgfQotICAgICk7Ci0gICAgRVhQRUNUX1RSVUUoVHlwZTo6RmxvYXQgPT0gdHlwZSk7Ci0KLQot
ICAgIHZhcmlhbnQgPSAiaGVsbG8iOwotICAgIHR5cGUgPSBXVEY6OnN3aXRjaE9uKHZhcmlhbnQs
Ci0gICAgICAgIFtdKGludCkgeyByZXR1cm4gVHlwZTo6SW50OyB9LAotICAgICAgICBbXShmbG9h
dCkgeyByZXR1cm4gVHlwZTo6RmxvYXQ7IH0sCi0gICAgICAgIFtdKFN0cmluZykgeyByZXR1cm4g
VHlwZTo6U3RyaW5nOyB9Ci0gICAgKTsKLSAgICBFWFBFQ1RfVFJVRShUeXBlOjpTdHJpbmcgPT0g
dHlwZSk7Ci19Ci0KLVRFU1QoV1RGX1ZhcmlhbnQsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvcikKLXsK
LSAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpUZXN0aW5nU2NvcGUgc2NvcGU7Ci0K
LSAgICB7Ci0gICAgICAgIGF1dG8gdW5pcXVlUHRyID0gbWFrZVVuaXF1ZTxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPigpOwotICAgICAgICBWYXJpYW50PHN0ZDo6dW5pcXVlX3B0cjxDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPiwgaW50PiB2ID0gV1RGTW92ZSh1bmlxdWVQdHIpOwot
Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29u
c3RydWN0aW9uQ291bnQpOwotICAgICAgICBFWFBFQ1RfRVEoMHUsIENvbnN0cnVjdG9yRGVzdHJ1
Y3RvckNvdW50ZXI6OmRlc3RydWN0aW9uQ291bnQpOwotICAgIH0KLSAgICAKLSAgICBFWFBFQ1Rf
RVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsK
LSAgICBFWFBFQ1RfRVEoMXUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmRlc3RydWN0
aW9uQ291bnQpOwotfQotCi1URVNUKFdURl9WYXJpYW50LCBSZWZQdHIpCi17Ci0gICAgewotICAg
ICAgICBSZWZMb2dnZXIgYSgiYSIpOwotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiByZWYoJmEp
OwotICAgICAgICBWYXJpYW50PFJlZlB0cjxSZWZMb2dnZXI+LCBpbnQ+IHYgPSByZWY7Ci0gICAg
fQotCi0gICAgQVNTRVJUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKLQotICAgIHsKLSAgICAgICAgUmVmTG9nZ2VyIGEoImEi
KTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcmVmKCZhKTsKLSAgICAgICAgVmFyaWFudDxS
ZWZQdHI8UmVmTG9nZ2VyPiwgaW50PiB2ID0gV1RGTW92ZShyZWYpOwotICAgIH0KLQotICAgIEFT
U0VSVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKLX0K
LQotVEVTVChXVEZfVmFyaWFudCwgUmVmKQotewotICAgIHsKLSAgICAgICAgUmVmTG9nZ2VyIGEo
ImEiKTsKLSAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcmVmKGEpOwotICAgICAgICBWYXJpYW50PFJl
ZjxSZWZMb2dnZXI+LCBpbnQ+IHYgPSBXVEZNb3ZlKHJlZik7Ci0gICAgfQotCi0gICAgQVNTRVJU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwotfQotCi10
ZW1wbGF0ZTxjbGFzcyBUPgotY2xhc3MgSG9sZGVyIHsKLXB1YmxpYzoKLSAgICBUIGRhdGE7Ci0K
LSAgICBIb2xkZXIoVCBkYXRhKSA6IGRhdGEoZGF0YSkgeyB9Ci0KLSAgICBUKiBvcGVyYXRvciYo
KSB7IHJldHVybiAmZGF0YTsgfQotfTsKLQotVEVTVChXVEZfVmFyaWFudCwgT3BlcmF0b3JBbXBl
cnNhbmQpCi17Ci0gICAgVmFyaWFudDxIb2xkZXI8aW50PiwgaW50PiB2ID0gSG9sZGVyPGludD4o
MTApOwotICAgIEVYUEVDVF9UUlVFKFdURjo6Z2V0PEhvbGRlcjxpbnQ+Pih2KS5kYXRhID09IDEw
KTsKLQotICAgIHYgPSAyMDsKLSAgICBFWFBFQ1RfVFJVRShXVEY6OmdldDxpbnQ+KHYpID09IDIw
KTsKLX0KLQotfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3Bs
YXlMaXN0VGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAkocmV2aXNpb24gMjg0MDkxKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDMsNyArMjAzLDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBJdGVtQnVm
ZmVyQ2xpZW50KQogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBlbmNvZGVJdGVtT3V0T2ZM
aW5lKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgZGlzcGxheUxpc3RJdGVtKSBjb25zdCBmaW5hbAog
ICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGluZGV4ID0gbV9pdGVtcy5zaXplKCk7Ci0gICAg
ICAgICAgICBtX2l0ZW1zLmFwcGVuZChXVEY6OmdldDxTdHJva2VQYXRoPihkaXNwbGF5TGlzdEl0
ZW0pKTsKKyAgICAgICAgICAgIG1faXRlbXMuYXBwZW5kKHN0ZDo6Z2V0PFN0cm9rZVBhdGg+KGRp
c3BsYXlMaXN0SXRlbSkpOwogICAgICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZpbmRleCksIHNpemVvZihzaXplX3QpKTsKICAg
ICAgICAgfQogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
aXZhdGVDbGlja01lYXN1cmVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQubW0JKHJldmlzaW9u
IDI4NDA5MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgc3Rh
dGljIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXdXaXRoUgogfQogCiB0ZW1wbGF0ZTxzaXpl
X3Qgc2l6ZT4KLXZvaWQgYWRkVmFsdWVzVG9UYWJsZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYg
ZGF0YWJhc2UsIEFTQ0lJTGl0ZXJhbCBxdWVyeSwgc3RkOjphcnJheTxWYXJpYW50PFN0cmluZ1Zp
ZXcsIGludCwgZG91YmxlPiwgc2l6ZT4gdmFsdWVzKQordm9pZCBhZGRWYWx1ZXNUb1RhYmxlKFdl
YkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwgQVNDSUlMaXRlcmFsIHF1ZXJ5LCBzdGQ6
OmFycmF5PHN0ZDo6dmFyaWFudDxTdHJpbmdWaWV3LCBpbnQsIGRvdWJsZT4sIHNpemU+IHZhbHVl
cykKIHsKICAgICBhdXRvIHN0YXRlbWVudCA9IGRhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQocXVl
cnkpOwogICAgIEVYUEVDVF9UUlVFKCEhc3RhdGVtZW50KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>