<?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>66578</bug_id>
          
          <creation_ts>2011-08-19 13:11:51 -0700</creation_ts>
          <short_desc>Make ArrayBuffers Transferable</short_desc>
          <delta_ts>2023-08-23 08:29:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65209</dependson>
    
    <dependson>71534</dependson>
    
    <dependson>71535</dependson>
    
    <dependson>73054</dependson>
    
    <dependson>73503</dependson>
          <blocked>64629</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Luke Zarko">lukezarko+bugzilla</reporter>
          <assigned_to name="Dmitry Lomov">dslomov</assigned_to>
          <cc>annevk</cc>
    
    <cc>kbr</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>454011</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-19 13:11:51 -0700</bug_when>
    <thetext>Allow ArrayBuffers to be passed via transfer-of-control semantics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>454047</commentid>
    <comment_count>1</comment_count>
      <attachid>104556</attachid>
    <who name="Luke Zarko">lukezarko+bugzilla</who>
    <bug_when>2011-08-19 13:46:54 -0700</bug_when>
    <thetext>Created attachment 104556
Initial patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973004</commentid>
    <comment_count>2</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2023-08-23 08:29:09 -0700</bug_when>
    <thetext>Pretty sure they already are.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104556</attachid>
            <date>2011-08-19 13:46:54 -0700</date>
            <delta_ts>2011-08-19 13:46:54 -0700</delta_ts>
            <desc>Initial patch.</desc>
            <filename>arraybuffer-145.patch</filename>
            <type>text/plain</type>
            <size>114492</size>
            <attacher name="Luke Zarko">lukezarko+bugzilla</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWM0YjBjLi43YWI4YmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTEtMDgt
MTkgIEx1a2UgWmFya28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgQXJy
YXlCdWZmZXJzIFRyYW5zZmVyYWJsZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjY1NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDaGVjayB0aGF0IEFycmF5QnVmZmVyczoKKyAgICAgICAgLSBwcm9w
ZXJseSB1bmRlcmdvIHRyYW5zZmVyLW9mLWNvbnRyb2wgc2VtYW50aWNzIChieSBwb3N0aW5nIHRo
ZW0gdG8gYSB3aW5kb3cpCisgICAgICAgIC0gY2FuIGJlIHRyYW5zZmVycmVkIHRvIGJvdGggc2hh
cmVkIGFuZCBkZWRpY2F0ZWQgd29ya2VycworICAgICAgICAtIGNhbiBiZSBjb3JyZWN0bHkgZmxh
dHRlbmVkIHNob3VsZCB0aGV5IG5lZWQgdG8gYmUgc2VudCBhY3Jvc3MgYW4gSVBDIGNoYW5uZWwK
KworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2FycmF5LXRyYW5zZmVyLW9mLWNvbnRyb2wt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9hcnJheS10
cmFuc2Zlci1vZi1jb250cm9sLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dl
YmdsL3NjcmlwdC10ZXN0cy9hcnJheS10cmFuc2Zlci1vZi1jb250cm9sLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGlzVHlwZWRBcnJheSk6CisgICAgICAgIChpc0RhdGFWaWV3KToKKyAgICAgICAgKGlz
QXJyYXlCdWZmZXIpOgorICAgICAgICAoYXNzZXJ0QnVmZmVyQ2xvc2VkKToKKyAgICAgICAgKGNy
ZWF0ZUJ1ZmZlcik6CisgICAgICAgIChjaGVja0J1ZmZlcik6CisgICAgICAgIChjcmVhdGVWaWV3
KToKKyAgICAgICAgKGNyZWF0ZUV2ZXJ5Vmlldyk6CisgICAgICAgIChjaGVja1ZpZXcpOgorICAg
ICAgICAoY2hlY2tFbXB0eUFycmF5KToKKyAgICAgICAgKHdyYXBTZW5kKToKKyAgICAgICAgKHdy
YXBGYWlsU2VuZCk6CisgICAgICAgICh0ZXN0TGlzdC5uYW1lLnNlbmQpOgorICAgICAgICAodGVz
dExpc3QudGVzdCk6CisgICAgICAgICgubmFtZS5zZW5kKToKKyAgICAgICAgKC50ZXN0KToKKyAg
ICAgICAgKHRlc3RMaXN0LnRlc3RMaXN0LmNvbmNhdC4pOgorICAgICAgICAodmlld0FuZEJ1ZmZl
ci5yZXR1cm4ubmFtZS5idWZmZXJUeXBlLjAuc2VuZCk6CisgICAgICAgICh2aWV3QW5kQnVmZmVy
LnJldHVybi50ZXN0KToKKyAgICAgICAgKCk6CisgICAgICAgIChzcXVhc2hVbnJlbGF0ZWRWaWV3
cy5yZXR1cm4ubmFtZS5idWZmZXJUeXBlLjAuc2VuZCk6CisgICAgICAgIChzcXVhc2hVbnJlbGF0
ZWRWaWV3cy5yZXR1cm4udGVzdCk6CisgICAgICAgIChzcXVhc2hVbnJlbGF0ZWRWaWV3cyk6Cisg
ICAgICAgICh0ZXN0TGlzdCk6CisgICAgICAgIChkb25lVGVzdCk6CisgICAgICAgICh3aW5kb3dI
YW5kbGVNZXNzYWdlKToKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNz
YWdlLWFyZ3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtYXJncy5odG1sOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9mbGF0dGVuLXNl
cmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvZmxhdHRlbi1zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5qczogQWRkZWQuCisg
ICAgICAgIChmbGF0dGVuKToKKyAgICAgICAgKC5pbml0T2JqZWN0cyk6CisgICAgICAgICguY2hl
Y2tPayk6CisgICAgICAgICguY2hlY2tNaXgpOgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNv
dXJjZXMvc2hhcmVkLXdvcmtlci1tZXNzYWdlcG9ydC1hcnJheS5qczogQWRkZWQuCisgICAgICAg
IChsb2cpOgorICAgICAgICAodGljayk6CisgICAgICAgIChjb250cm9sQ2hhbm5lbE9uTWVzc2Fn
ZSk6CisgICAgICAgIChjb25maWd1cmVDb250cm9sQ2hhbm5lbC5jb250cm9sQ2hhbm5lbC5vbm1l
c3NhZ2UpOgorICAgICAgICAoY29uZmlndXJlQ29udHJvbENoYW5uZWwpOgorICAgICAgICAob25j
b25uZWN0KToKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tZXNzYWdl
cG9ydC1hcnJheS5qczogQWRkZWQuCisgICAgICAgIChsb2cpOgorICAgICAgICAodGljayk6Cisg
ICAgICAgIChjb250cm9sQ2hhbm5lbE9uTWVzc2FnZSk6CisgICAgICAgIChjb25maWd1cmVDb250
cm9sQ2hhbm5lbC5jb250cm9sQ2hhbm5lbC5vbm1lc3NhZ2UpOgorICAgICAgICAoY29uZmlndXJl
Q29udHJvbENoYW5uZWwpOgorICAgICAgICAob25tZXNzYWdlKToKKyAgICAgICAgKiBmYXN0L3dv
cmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tZXNzYWdlcG9ydC5qczoKKyAgICAgICAgKG9ubWVzc2Fn
ZSk6CisgICAgICAgICogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbWVzc2FnZXBvcnQtYXJy
YXktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1tZXNzYWdlcG9ydC1hcnJheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3dvcmtl
cnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWFycmF5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1hcnJheS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWw6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktdHJhbnNmZXItb2YtY29u
dHJvbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQ6CisKIDIw
MTEtMDgtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGF1dG8tY29tcGxldGlvbiBmb3Igc3RyaW5nIGxpdGVyYWxzIGRvZXNu
J3Qgd29yawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXkt
dHJhbnNmZXItb2YtY29udHJvbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9hcnJheS10cmFuc2Zlci1vZi1jb250cm9sLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjZlYjc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktdHJhbnNmZXItb2YtY29udHJvbC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0OCBAQAorVGVzdCB0cmFuc2ZlciBvZiBjb250cm9sIHNlbWFu
dGljcyBmb3IgQXJyYXlCdWZmZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BB
U1Mgc2FuaXR5IGNoZWNrCitQQVNTIHJhdyBBcnJheUJ1ZmZlcgorUEFTUyBzZW5kaW5nIGJ1ZmZl
cnMgaXMgc2FuZSBldmVuIGlmIGNsb25pbmcgZG9lc24ndCBzcGVjaWFsLWNhc2UKK1BBU1Mgc2Vu
ZCBldmVyeSB2aWV3CitGQUlMIHJhdyBJbnQzMjogW29iamVjdCBPYmplY3RdIG5vdCBhbiBpbnN0
YW5jZSBvZiBbb2JqZWN0IEludDMyQXJyYXlDb25zdHJ1Y3Rvcl0KK0ZBSUwgcmF3IFVpbnQzMjog
W29iamVjdCBPYmplY3RdIG5vdCBhbiBpbnN0YW5jZSBvZiBbb2JqZWN0IFVpbnQzMkFycmF5Q29u
c3RydWN0b3JdCitGQUlMIHJhdyBJbnQ4OiBbb2JqZWN0IE9iamVjdF0gbm90IGFuIGluc3RhbmNl
IG9mIFtvYmplY3QgSW50OEFycmF5Q29uc3RydWN0b3JdCitGQUlMIHJhdyBVaW50ODogW29iamVj
dCBPYmplY3RdIG5vdCBhbiBpbnN0YW5jZSBvZiBbb2JqZWN0IFVpbnQ4QXJyYXlDb25zdHJ1Y3Rv
cl0KK0ZBSUwgcmF3IEludDE2OiBbb2JqZWN0IE9iamVjdF0gbm90IGFuIGluc3RhbmNlIG9mIFtv
YmplY3QgSW50MTZBcnJheUNvbnN0cnVjdG9yXQorRkFJTCByYXcgVWludDE2OiBbb2JqZWN0IE9i
amVjdF0gbm90IGFuIGluc3RhbmNlIG9mIFtvYmplY3QgVWludDE2QXJyYXlDb25zdHJ1Y3Rvcl0K
K0ZBSUwgcmF3IEZsb2F0MzI6IFtvYmplY3QgT2JqZWN0XSBub3QgYW4gaW5zdGFuY2Ugb2YgW29i
amVjdCBGbG9hdDMyQXJyYXlDb25zdHJ1Y3Rvcl0KK0ZBSUwgcmF3IEZsb2F0NjQ6IFtvYmplY3Qg
T2JqZWN0XSBub3QgYW4gaW5zdGFuY2Ugb2YgW29iamVjdCBGbG9hdDY0QXJyYXlDb25zdHJ1Y3Rv
cl0KK0ZBSUwgcmF3IERhdGFWaWV3OiBbb2JqZWN0IE9iamVjdF0gbm90IGFuIGluc3RhbmNlIG9m
IFtvYmplY3QgRGF0YVZpZXdDb25zdHJ1Y3Rvcl0KK0ZBSUwgc2VuZCB2aWV3LCBidWZmZXIgZm9y
IEludDMyOiBbb2JqZWN0IE9iamVjdF0gbm90IGFuIGluc3RhbmNlIG9mIFtvYmplY3QgSW50MzJB
cnJheUNvbnN0cnVjdG9yXQorRkFJTCBzZW5kIHZpZXcsIGJ1ZmZlciBmb3IgVWludDMyOiBbb2Jq
ZWN0IE9iamVjdF0gbm90IGFuIGluc3RhbmNlIG9mIFtvYmplY3QgVWludDMyQXJyYXlDb25zdHJ1
Y3Rvcl0KK0ZBSUwgc2VuZCB2aWV3LCBidWZmZXIgZm9yIEludDg6IFtvYmplY3QgT2JqZWN0XSBu
b3QgYW4gaW5zdGFuY2Ugb2YgW29iamVjdCBJbnQ4QXJyYXlDb25zdHJ1Y3Rvcl0KK0ZBSUwgc2Vu
ZCB2aWV3LCBidWZmZXIgZm9yIFVpbnQ4OiBbb2JqZWN0IE9iamVjdF0gbm90IGFuIGluc3RhbmNl
IG9mIFtvYmplY3QgVWludDhBcnJheUNvbnN0cnVjdG9yXQorRkFJTCBzZW5kIHZpZXcsIGJ1ZmZl
ciBmb3IgSW50MTY6IFtvYmplY3QgT2JqZWN0XSBub3QgYW4gaW5zdGFuY2Ugb2YgW29iamVjdCBJ
bnQxNkFycmF5Q29uc3RydWN0b3JdCitGQUlMIHNlbmQgdmlldywgYnVmZmVyIGZvciBVaW50MTY6
IFtvYmplY3QgT2JqZWN0XSBub3QgYW4gaW5zdGFuY2Ugb2YgW29iamVjdCBVaW50MTZBcnJheUNv
bnN0cnVjdG9yXQorRkFJTCBzZW5kIHZpZXcsIGJ1ZmZlciBmb3IgRmxvYXQzMjogW29iamVjdCBP
YmplY3RdIG5vdCBhbiBpbnN0YW5jZSBvZiBbb2JqZWN0IEZsb2F0MzJBcnJheUNvbnN0cnVjdG9y
XQorRkFJTCBzZW5kIHZpZXcsIGJ1ZmZlciBmb3IgRmxvYXQ2NDogW29iamVjdCBPYmplY3RdIG5v
dCBhbiBpbnN0YW5jZSBvZiBbb2JqZWN0IEZsb2F0NjRBcnJheUNvbnN0cnVjdG9yXQorRkFJTCBz
ZW5kIHZpZXcsIGJ1ZmZlciBmb3IgRGF0YVZpZXc6IFtvYmplY3QgT2JqZWN0XSBub3QgYW4gaW5z
dGFuY2Ugb2YgW29iamVjdCBEYXRhVmlld0NvbnN0cnVjdG9yXQorRkFJTCBzZW5kIGJ1ZmZlciwg
dmlldyBmb3IgSW50MzI6IFtvYmplY3QgT2JqZWN0XSBub3QgYW4gaW5zdGFuY2Ugb2YgW29iamVj
dCBJbnQzMkFycmF5Q29uc3RydWN0b3JdCitGQUlMIHNlbmQgYnVmZmVyLCB2aWV3IGZvciBVaW50
MzI6IFtvYmplY3QgT2JqZWN0XSBub3QgYW4gaW5zdGFuY2Ugb2YgW29iamVjdCBVaW50MzJBcnJh
eUNvbnN0cnVjdG9yXQorRkFJTCBzZW5kIGJ1ZmZlciwgdmlldyBmb3IgSW50ODogW29iamVjdCBP
YmplY3RdIG5vdCBhbiBpbnN0YW5jZSBvZiBbb2JqZWN0IEludDhBcnJheUNvbnN0cnVjdG9yXQor
RkFJTCBzZW5kIGJ1ZmZlciwgdmlldyBmb3IgVWludDg6IFtvYmplY3QgT2JqZWN0XSBub3QgYW4g
aW5zdGFuY2Ugb2YgW29iamVjdCBVaW50OEFycmF5Q29uc3RydWN0b3JdCitGQUlMIHNlbmQgYnVm
ZmVyLCB2aWV3IGZvciBJbnQxNjogW29iamVjdCBPYmplY3RdIG5vdCBhbiBpbnN0YW5jZSBvZiBb
b2JqZWN0IEludDE2QXJyYXlDb25zdHJ1Y3Rvcl0KK0ZBSUwgc2VuZCBidWZmZXIsIHZpZXcgZm9y
IFVpbnQxNjogW29iamVjdCBPYmplY3RdIG5vdCBhbiBpbnN0YW5jZSBvZiBbb2JqZWN0IFVpbnQx
NkFycmF5Q29uc3RydWN0b3JdCitGQUlMIHNlbmQgYnVmZmVyLCB2aWV3IGZvciBGbG9hdDMyOiBb
b2JqZWN0IE9iamVjdF0gbm90IGFuIGluc3RhbmNlIG9mIFtvYmplY3QgRmxvYXQzMkFycmF5Q29u
c3RydWN0b3JdCitGQUlMIHNlbmQgYnVmZmVyLCB2aWV3IGZvciBGbG9hdDY0OiBbb2JqZWN0IE9i
amVjdF0gbm90IGFuIGluc3RhbmNlIG9mIFtvYmplY3QgRmxvYXQ2NEFycmF5Q29uc3RydWN0b3Jd
CitGQUlMIHNlbmQgYnVmZmVyLCB2aWV3IGZvciBEYXRhVmlldzogW29iamVjdCBPYmplY3RdIG5v
dCBhbiBpbnN0YW5jZSBvZiBbb2JqZWN0IERhdGFWaWV3Q29uc3RydWN0b3JdCitGQUlMIHNxdWFz
aCB1bnJlbGF0ZWQgdmlld3MgZm9yIEludDMyOiBbb2JqZWN0IE9iamVjdF0gbm90IGFuIGluc3Rh
bmNlIG9mIFtvYmplY3QgSW50MzJBcnJheUNvbnN0cnVjdG9yXQorRkFJTCBzcXVhc2ggdW5yZWxh
dGVkIHZpZXdzIGZvciBVaW50MzI6IFtvYmplY3QgT2JqZWN0XSBub3QgYW4gaW5zdGFuY2Ugb2Yg
W29iamVjdCBVaW50MzJBcnJheUNvbnN0cnVjdG9yXQorRkFJTCBzcXVhc2ggdW5yZWxhdGVkIHZp
ZXdzIGZvciBJbnQ4OiBbb2JqZWN0IE9iamVjdF0gbm90IGFuIGluc3RhbmNlIG9mIFtvYmplY3Qg
SW50OEFycmF5Q29uc3RydWN0b3JdCitGQUlMIHNxdWFzaCB1bnJlbGF0ZWQgdmlld3MgZm9yIFVp
bnQ4OiBbb2JqZWN0IE9iamVjdF0gbm90IGFuIGluc3RhbmNlIG9mIFtvYmplY3QgVWludDhBcnJh
eUNvbnN0cnVjdG9yXQorRkFJTCBzcXVhc2ggdW5yZWxhdGVkIHZpZXdzIGZvciBJbnQxNjogW29i
amVjdCBPYmplY3RdIG5vdCBhbiBpbnN0YW5jZSBvZiBbb2JqZWN0IEludDE2QXJyYXlDb25zdHJ1
Y3Rvcl0KK0ZBSUwgc3F1YXNoIHVucmVsYXRlZCB2aWV3cyBmb3IgVWludDE2OiBbb2JqZWN0IE9i
amVjdF0gbm90IGFuIGluc3RhbmNlIG9mIFtvYmplY3QgVWludDE2QXJyYXlDb25zdHJ1Y3Rvcl0K
K0ZBSUwgc3F1YXNoIHVucmVsYXRlZCB2aWV3cyBmb3IgRmxvYXQzMjogW29iamVjdCBPYmplY3Rd
IG5vdCBhbiBpbnN0YW5jZSBvZiBbb2JqZWN0IEZsb2F0MzJBcnJheUNvbnN0cnVjdG9yXQorRkFJ
TCBzcXVhc2ggdW5yZWxhdGVkIHZpZXdzIGZvciBGbG9hdDY0OiBbb2JqZWN0IE9iamVjdF0gbm90
IGFuIGluc3RhbmNlIG9mIFtvYmplY3QgRmxvYXQ2NEFycmF5Q29uc3RydWN0b3JdCitGQUlMIHNx
dWFzaCB1bnJlbGF0ZWQgdmlld3MgZm9yIERhdGFWaWV3OiBbb2JqZWN0IE9iamVjdF0gbm90IGFu
IGluc3RhbmNlIG9mIFtvYmplY3QgRGF0YVZpZXdDb25zdHJ1Y3Rvcl0KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS10cmFuc2Zlci1vZi1jb250cm9sLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9hcnJheS10cmFuc2Zlci1vZi1jb250cm9sLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI5MDQ5NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2FycmF5LXRyYW5zZmVyLW9m
LWNvbnRyb2wuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9IndlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyYXktdHJhbnNmZXItb2YtY29udHJvbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvYXJyYXktdHJhbnNmZXItb2YtY29udHJvbC5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9hcnJheS10cmFuc2Zlci1v
Zi1jb250cm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNGZkNGUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQt
dGVzdHMvYXJyYXktdHJhbnNmZXItb2YtY29udHJvbC5qcwpAQCAtMCwwICsxLDQyMCBAQAord2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitkZXNjcmlwdGlvbignVGVzdCB0cmFuc2ZlciBv
ZiBjb250cm9sIHNlbWFudGljcyBmb3IgQXJyYXlCdWZmZXJzLicpOword2luZG93LnRlc3RzQ29t
cGxldGUgPSAwOworCit2YXIgYXJyYXlTaXplID0gNDA7Cit2YXIgYXJyYXlPZmZzZXQgPSA4Owor
dmFyIGFycmF5RWZmZWN0aXZlU2l6ZSA9IGFycmF5U2l6ZSAtIGFycmF5T2Zmc2V0OworCit2YXIg
YmFzaWNCdWZmZXJUeXBlcyA9CitbCisgICAgWyJJbnQzMiIsIEludDMyQXJyYXksIDRdLAorICAg
IFsiVWludDMyIiwgVWludDMyQXJyYXksIDRdLAorICAgIFsiSW50OCIsIEludDhBcnJheSwgMV0s
CisgICAgWyJVaW50OCIsIFVpbnQ4QXJyYXksIDFdLAorICAgIFsiSW50MTYiLCBJbnQxNkFycmF5
LCAyXSwKKyAgICBbIlVpbnQxNiIsIFVpbnQxNkFycmF5LCAyXSwKKyAgICBbIkZsb2F0MzIiLCBG
bG9hdDMyQXJyYXksIDRdLAorICAgIFsiRmxvYXQ2NCIsIEZsb2F0NjRBcnJheSwgOF0KK107CisK
K3ZhciBhbGxCdWZmZXJUeXBlcyA9CitbCisgICAgWyJJbnQzMiIsIEludDMyQXJyYXksIDRdLAor
ICAgIFsiVWludDMyIiwgVWludDMyQXJyYXksIDRdLAorICAgIFsiSW50OCIsIEludDhBcnJheSwg
MV0sCisgICAgWyJVaW50OCIsIFVpbnQ4QXJyYXksIDFdLAorICAgIFsiSW50MTYiLCBJbnQxNkFy
cmF5LCAyXSwKKyAgICBbIlVpbnQxNiIsIFVpbnQxNkFycmF5LCAyXSwKKyAgICBbIkZsb2F0MzIi
LCBGbG9hdDMyQXJyYXksIDRdLAorICAgIFsiRmxvYXQ2NCIsIEZsb2F0NjRBcnJheSwgOF0sCisg
ICAgWyJEYXRhVmlldyIsIERhdGFWaWV3LCAxXQorXTsKKworZnVuY3Rpb24gaXNUeXBlZEFycmF5
KHZpZXcpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiYXNpY0J1ZmZlclR5cGVzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIHZhciBidWZmZXJUeXBlID0gYmFzaWNCdWZmZXJUeXBlc1tpXTsK
KyAgICAgICAgaWYgKHZpZXcgaW5zdGFuY2VvZiBidWZmZXJUeXBlWzFdKSB7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Z1bmN0aW9uIGlzRGF0YVZpZXcodmlldykKK3sKKyAgICByZXR1cm4gKHZpZXcgaW5zdGFuY2Vv
ZiBEYXRhVmlldyk7Cit9CisKK2Z1bmN0aW9uIGlzQXJyYXlCdWZmZXIoYnVmZmVyKQoreworICAg
IHJldHVybiAoYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpOworfQorCitmdW5jdGlvbiBh
c3NlcnRCdWZmZXJDbG9zZWQodGVzdE5hbWUsIGJ1ZmZlcikKK3sKKyAgICBpZiAoYnVmZmVyID09
PSBudWxsKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoIWlzQXJyYXlC
dWZmZXIoYnVmZmVyKSkgeworICAgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjogbm90IGFu
IGFycmF5IGJ1ZmZlciAoIiArIGJ1ZmZlciArICIpIik7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3RoICE9PSAwIHx8ICEoYnVmZmVyLmJ5dGVM
ZW5ndGggPT09IDApKSB7CisgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAiOiBBcnJheUJ1
ZmZlciBieXRlTGVuZ3RoICE9PSAwIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFZpZXdDbG9zZWQodGVzdE5hbWUs
IHZpZXcpCit7CisgICAgaWYgKGlzVHlwZWRBcnJheSh2aWV3KSB8fCBpc0RhdGFWaWV3KHZpZXcp
KSB7CisgICAgICAgIGlmICh2aWV3LmJ1ZmZlciAhPT0gbnVsbCAmJiAhYXNzZXJ0QnVmZmVyQ2xv
c2VkKHRlc3ROYW1lLCB2aWV3LmJ1ZmZlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlmICh2aWV3LmJ5dGVPZmZzZXQgIT09IDAgfHwgISh2aWV3LmJ5dGVPZmZzZXQgPT09
IDApKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjogdmlldyBieXRlT2Zm
c2V0ICE9PSAwIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHZpZXcuYnl0ZUxlbmd0aCAhPT0gMCB8fCAhKHZpZXcuYnl0ZUxlbmd0aCA9PT0gMCkp
IHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAiOiB2aWV3IGJ5dGVMZW5ndGgg
IT09IDAiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoIWlzRGF0YVZpZXcodmlldykpIHsKKyAgICAgICAgICAgIGlmICh2aWV3Lmxlbmd0aCAhPT0g
MCB8fCAhKHZpZXcubGVuZ3RoID09PSAwKSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
dGVzdE5hbWUgKyAiOiBUeXBlZEFycmF5IGxlbmd0aCAhPT0gMCIpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICAgICAgdmFyIHYgPSB2aWV3WzBdOworICAgICAgICAgICAgICAgIGlmICh2ICE9PSB1bmRl
ZmluZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCh0ZXN0TmFtZSArICI6IGlu
ZGV4IGdldCBvbiBhIGNsb3NlZCB2aWV3IGRpZCBub3QgcmV0dXJuIHVuZGVmaW5lZC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0gY2F0Y2goeG4pIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1l
ICsgIjogaW5kZXggZ2V0IG9uIGEgY2xvc2VkIHZpZXcgdGhyZXcgYW4gZXhjZXB0aW9uOiAiICsg
eG4pOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdmlld1swXSA9IDQyOworICAgICAgICAgICAg
ICAgIHZhciB2ID0gdmlld1swXTsKKyAgICAgICAgICAgICAgICBpZiAodiAhPT0gdW5kZWZpbmVk
KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAiOiBpbmRleCBz
ZXQgdGhlbiBnZXQgb24gYSBjbG9zZWQgdmlldyBkaWQgbm90IHJldHVybiB1bmRlZmluZWQuIik7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGNhdGNoKHhuKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCh0ZXN0
TmFtZSArICI6IGluZGV4IHNldCB0aGVuIGdldCBvbiBhIGNsb3NlZCB2aWV3IHRocmV3IGFuIGV4
Y2VwdGlvbjogIiArIHhuKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHZpZXcuZ2V0KDApOwor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAiOiBnZXQgb24gYSBjbG9zZWQg
dmlldyBzdWNjZWVkZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9IGNhdGNoICh4bikgeyB9CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg
IHZpZXcuc2V0KDAsIDEpOworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAi
OiBzZXQgb24gYSBjbG9zZWQgdmlldyBzdWNjZWVkZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICB9IGNhdGNoICh4bikgeyB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHZpZXcuZ2V0SW50OCgwKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjogZ2V0IG9uIGEgY2xvc2VkIHZp
ZXcgc3VjY2VlZGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfSBjYXRjaCAoeG4pIHsgfQorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB2
aWV3LnNldEludDgoMCwgMSk7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCh0ZXN0TmFtZSAr
ICI6IHNldCBvbiBhIGNsb3NlZCB2aWV3IHN1Y2NlZWRlZCIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKHhuKSB7IH0KKyAgICAgICAgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAiIG5vdCBhIHZpZXcgKCIg
KyB2aWV3ICsgIikiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZnVuY3Rpb24gY3JlYXRlQnVmZmVyKGxlbmd0aCkKK3sKKyAgICB2YXIgYnVm
ZmVyID0gbmV3IEFycmF5QnVmZmVyKGxlbmd0aCk7CisgICAgdmFyIHZpZXcgPSBuZXcgVWludDhB
cnJheShidWZmZXIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgdmlld1tpXSA9IGkgKyAxOworICAgIH0KKyAgICByZXR1cm4gYnVmZmVyOworfQorCitm
dW5jdGlvbiBjaGVja0J1ZmZlcih0ZXN0TmFtZSwgYnVmZmVyLCBsZW5ndGgpCit7CisgICAgaWYg
KCFpc0FycmF5QnVmZmVyKGJ1ZmZlcikpIHsKKyAgICAgICAgdGVzdEZhaWxlZCh0ZXN0TmFtZSAr
ICI6IGJ1ZmZlciBpcyBub3QgYW4gQXJyYXlCdWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggIT09IGxlbmd0aCkgeworICAgICAg
ICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjogYnVmZmVyIGlzIHRoZSB3cm9uZyBsZW5ndGgiKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFy
cmF5KGJ1ZmZlcik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAg
ICAgICBpZiAodmlld1tpXSAhPT0gaSArIDEpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQodGVz
dE5hbWUgKyAiOiBidWZmZXIgY29udGFpbnMgdGhlIHdyb25nIGRhdGEiKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
ZnVuY3Rpb24gY3JlYXRlVmlldyh2aWV3VHlwZSwgYnl0ZXNQZXJFbGVtZW50KQoreworICAgIGlm
ICh2aWV3VHlwZSA9PT0gRGF0YVZpZXcpIHsKKyAgICAgICAgdmFyIHZpZXcgPSBuZXcgVWludDhB
cnJheShhcnJheVNpemUpOworICAgICAgICBmb3IgKHZhciBpID0gYXJyYXlPZmZzZXQ7IGkgPCBh
cnJheVNpemU7ICsraSkgeworICAgICAgICAgICAgdmlld1tpXSA9IGkgLSBhcnJheU9mZnNldCAr
IDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBEYXRhVmlldyh2aWV3LmJ1ZmZlciwg
YXJyYXlPZmZzZXQsIGFycmF5RWZmZWN0aXZlU2l6ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
dmFyIHZpZXcgPSBuZXcgdmlld1R5cGUobmV3IEFycmF5QnVmZmVyKGFycmF5U2l6ZSksIGFycmF5
T2Zmc2V0LCBhcnJheUVmZmVjdGl2ZVNpemUgLyBieXRlc1BlckVsZW1lbnQpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGFycmF5RWZmZWN0aXZlU2l6ZSAvIGJ5dGVzUGVyRWxlbWVudDsg
KytpKSB7CisgICAgICAgICAgICB2aWV3W2ldID0gaSArIDE7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHZpZXc7CisgICAgfQorfQorCitmdW5jdGlvbiBjcmVhdGVFdmVyeVZpZXcoYnVmZmVy
KQoreworICAgIHJldHVybiBhbGxCdWZmZXJUeXBlcy5tYXAoZnVuY3Rpb24gKGJ1ZmZlclR5cGUp
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBidWZmZXJUeXBlWzFdKGJ1ZmZlciwgYXJyYXlPZmZzZXQs
IGFycmF5RWZmZWN0aXZlU2l6ZSAvIGJ1ZmZlclR5cGVbMl0pOworICAgIH0pOworfQorCitmdW5j
dGlvbiBjaGVja1ZpZXcodGVzdE5hbWUsIHR5cGVkQXJyYXlUeXBlLCB2aWV3KQoreworICAgIGlm
ICghKHZpZXcgaW5zdGFuY2VvZiB0eXBlZEFycmF5VHlwZSkpIHsKKyAgICAgICAgdGVzdEZhaWxl
ZCh0ZXN0TmFtZSArICI6ICIgKyB2aWV3ICsgIiBub3QgYW4gaW5zdGFuY2Ugb2YgIiArIHR5cGVk
QXJyYXlUeXBlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAodmlldy5i
dWZmZXIuYnl0ZUxlbmd0aCAhPT0gYXJyYXlTaXplIHx8CisgICAgICAgICghKHZpZXcgaW5zdGFu
Y2VvZiBEYXRhVmlldykgJiYgdmlldy5sZW5ndGggIT09IGFycmF5RWZmZWN0aXZlU2l6ZSAvIHZp
ZXcuQllURVNfUEVSX0VMRU1FTlQpKSB7CisgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAi
OiB2aWV3IGhhcyB0aGUgd3JvbmcgbGVuZ3RoICgiICsgdmlldy5sZW5ndGggKyAiKSIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICh2aWV3LmJ5dGVPZmZzZXQgIT09IGFy
cmF5T2Zmc2V0KSB7CisgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAiOiB2aWV3IGhhcyB3
cm9uZyBieXRlIG9mZnNldCIpOworICAgIH0KKyAgICB2YXIgbWF4ID0gYXJyYXlFZmZlY3RpdmVT
aXplOworICAgIGlmICghKHZpZXcgaW5zdGFuY2VvZiBEYXRhVmlldykpIHsKKyAgICAgICAgbWF4
ID0gbWF4IC8gdmlldy5CWVRFU19QRVJfRUxFTUVOVDsKKyAgICB9CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBtYXg7ICsraSkgeworICAgICAgICBpZiAodmlldyBpbnN0YW5jZW9mIERhdGFWaWV3
KSB7CisgICAgICAgICAgICBpZiAodmlldy5nZXRJbnQ4KGkpICE9PSBpICsgMSkgeworICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQodGVzdE5hbWUgKyAiOiB2aWV3IGNvbnRhaW5zIHRoZSB3cm9u
ZyBkYXRhIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHZpZXdbaV0gIT09IGkgKyAxKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCh0ZXN0TmFtZSArICI6IHZpZXcgY29udGFpbnMgdGhl
IHdyb25nIGRhdGEiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGNo
ZWNrRW1wdHlBcnJheSh0ZXN0TmFtZSwgYXJyYXkpCit7CisgICAgaWYgKGFycmF5ID09PSBudWxs
IHx8IGFycmF5ID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgdGVzdEZhaWxlZCh0ZXN0TmFtZSAr
ICI6IHBvcnQgbGlzdCBpcyBudWxsIG9yIHVuZGVmaW5lZCIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIGlmIChhcnJheS5sZW5ndGggIT09IDApIHsKKyAgICAgICAgdGVzdEZh
aWxlZCh0ZXN0TmFtZSArICI6IHBvcnQgbGlzdCBpcyBub3QgemVyby1sZW5ndGgiKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24g
d3JhcFNlbmQodGVzdE5hbWUsIG1lc3NhZ2UsIHhmZXIpCit7CisgICAgdHJ5IHsKKyAgICAgICAg
d2luZG93LndlYmtpdFBvc3RNZXNzYWdlKG1lc3NhZ2UsIHhmZXIsICcqJyk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICB0ZXN0RmFpbGVkKHRlc3ROYW1lICsgIjogY291bGQgbm90IHdlYmtp
dFBvc3RNZXNzYWdlOiAiICsgZSk7CisgICAgICAgIGRvbmVUZXN0KCk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIHdyYXBGYWls
U2VuZCh0ZXN0TmFtZSwgbWVzc2FnZSwgeGZlcikKK3sKKyAgICB0cnkgeworICAgICAgICB3aW5k
b3cud2Via2l0UG9zdE1lc3NhZ2UobWVzc2FnZSwgeGZlciwgJyonKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICB0ZXN0RmFpbGVkKHRlc3ROYW1l
ICsgIjogZXhwZWN0ZWQgd2Via2l0UG9zdE1lc3NhZ2UgdG8gZmFpbCBidXQgaXQgZGlkbid0LiIp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwordmFyIHRlc3RMaXN0ID0gW3sKKyAgICBuYW1lOiAi
c2FuaXR5IGNoZWNrIiwKKyAgICBzZW5kOiBmdW5jdGlvbiAobmFtZSkgeyB3cmFwU2VuZChuYW1l
LCBbXSwgW10pOyB9LAorICAgIHRlc3Q6IGZ1bmN0aW9uIChuYW1lLCBlKSB7IHJldHVybiB0cnVl
OyB9Cit9LCB7CisgICAgbmFtZTogInJhdyBBcnJheUJ1ZmZlciIsCisgICAgc2VuZDogZnVuY3Rp
b24gKG5hbWUpIHsKKyAgICAgICAgdmFyIGJ1ZmZlciA9IGNyZWF0ZUJ1ZmZlcigzKTsKKyAgICAg
ICAgd3JhcFNlbmQobmFtZSwgYnVmZmVyLCBbYnVmZmVyXSk7CisgICAgICAgIGFzc2VydEJ1ZmZl
ckNsb3NlZChuYW1lLCBidWZmZXIpOworICAgICAgICB3cmFwRmFpbFNlbmQobmFtZSwgYnVmZmVy
LCBbYnVmZmVyXSk7CisgICAgICAgIHdyYXBGYWlsU2VuZChuYW1lLCBidWZmZXIsIFtdKTsKKyAg
ICB9LAorICAgIHRlc3Q6IGZ1bmN0aW9uIChuYW1lLCBlKSB7IHJldHVybiBjaGVja0J1ZmZlcihu
YW1lLCBlLmRhdGEsIDMpICYmIGNoZWNrRW1wdHlBcnJheShuYW1lLCBlLnBvcnRzKTsgfQorfSwg
eworICAgIG5hbWU6ICJzZW5kaW5nIGJ1ZmZlcnMgaXMgc2FuZSBldmVuIGlmIGNsb25pbmcgZG9l
c24ndCBzcGVjaWFsLWNhc2UiLAorICAgIHNlbmQ6IGZ1bmN0aW9uKG5hbWUpIHsKKyAgICAgICAg
dmFyIHZpZXcgPSBjcmVhdGVWaWV3KEludDMyQXJyYXksIDQpOworICAgICAgICB2YXIgYnVmZmVy
ID0gdmlldy5idWZmZXI7CisgICAgICAgIHdyYXBTZW5kKG5hbWUsIFt2aWV3LCBidWZmZXJdLCBb
YnVmZmVyXSk7CisgICAgICAgIGFzc2VydEJ1ZmZlckNsb3NlZChuYW1lLCBidWZmZXIpOworICAg
ICAgICBhc3NlcnRWaWV3Q2xvc2VkKG5hbWUsIHZpZXcpOworICAgIH0sCisgICAgdGVzdDogZnVu
Y3Rpb24gKG5hbWUsIGUpIHsKKyAgICAgICAgaWYgKGUuZGF0YVswXS5idWZmZXIgIT09IGUuZGF0
YVsxXSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiVmlldyBhbmQgYnVmZmVyIHdlcmUgbm90
IGxpbmtlZC4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9LCB7CisgICAgbmFtZTogInNlbmQgZXZlcnkgdmlldyIs
CisgICAgc2VuZDogZnVuY3Rpb24obmFtZSkgeworICAgICAgICB2YXIgYnVmZmVyID0gY3JlYXRl
QnVmZmVyKGFycmF5U2l6ZSk7CisgICAgICAgIHZhciB2aWV3cyA9IGNyZWF0ZUV2ZXJ5Vmlldyhi
dWZmZXIpOworICAgICAgICB3cmFwU2VuZChuYW1lLCB2aWV3cywgW2J1ZmZlcl0pOworICAgICAg
ICBhc3NlcnRCdWZmZXJDbG9zZWQobmFtZSwgYnVmZmVyKTsKKyAgICAgICAgd3JhcEZhaWxTZW5k
KG5hbWUsIHZpZXdzLCBbYnVmZmVyXSk7CisgICAgICAgIHdyYXBGYWlsU2VuZChuYW1lLCB2aWV3
cywgW10pOworICAgIH0sCisgICAgdGVzdDogZnVuY3Rpb24gKG5hbWUsIGUpIHsKKyAgICAgICAg
aWYgKGUuZGF0YS5sZW5ndGggIT09IGFsbEJ1ZmZlclR5cGVzLmxlbmd0aCkgeworICAgICAgICAg
ICAgdGVzdEZhaWxlZChuYW1lICsgIjogbm90IGV2ZXJ5IHZpZXcgd2FzIHNlbnQuIik7CisgICAg
ICAgIH0KKyAgICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBlLmRhdGEubGVuZ3RoOyArK3YpIHsK
KyAgICAgICAgICAgIHZhciB2aWV3ID0gZS5kYXRhW3ZdOworICAgICAgICAgICAgaWYgKHZpZXcu
YnVmZmVyICE9PSBlLmRhdGFbMF0uYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZChuYW1lICsgIjogbm90IGV2ZXJ5IHZpZXcgcG9pbnRlZCB0byB0aGUgY29ycmVjdCBidWZmZXIu
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK31dOworCit0ZXN0TGlzdCA9IHRlc3RM
aXN0LmNvbmNhdChhbGxCdWZmZXJUeXBlcy5tYXAoZnVuY3Rpb24oYnVmZmVyVHlwZSkgeyByZXR1
cm4geworICAgIG5hbWU6ICJyYXcgIiArIGJ1ZmZlclR5cGVbMF0sCisgICAgc2VuZDogZnVuY3Rp
b24gKG5hbWUpIHsKKyAgICAgICAgdmFyIHZpZXcgPSBjcmVhdGVWaWV3KGJ1ZmZlclR5cGVbMV0s
IGJ1ZmZlclR5cGVbMl0pOworICAgICAgICB3cmFwU2VuZChuYW1lLCB2aWV3LCBbdmlldy5idWZm
ZXJdKTsKKyAgICAgICAgYXNzZXJ0Vmlld0Nsb3NlZChuYW1lLCB2aWV3KTsKKyAgICAgICAgYXNz
ZXJ0QnVmZmVyQ2xvc2VkKG5hbWUsIHZpZXcuYnVmZmVyKTsKKyAgICAgICAgd3JhcEZhaWxTZW5k
KG5hbWUsIHZpZXcsIFt2aWV3LmJ1ZmZlcl0pOworICAgICAgICB3cmFwRmFpbFNlbmQobmFtZSwg
dmlldywgW10pOworICAgIH0sCisgICAgdGVzdDogZnVuY3Rpb24gKG5hbWUsIGUpIHsKKyAgICAg
ICAgcmV0dXJuIGNoZWNrVmlldyhuYW1lLCBidWZmZXJUeXBlWzFdLCBlLmRhdGEpICYmIGNoZWNr
RW1wdHlBcnJheShuYW1lLCBlLnBvcnRzKTsKKyAgICB9Cit9fSkpOworCitmdW5jdGlvbiB2aWV3
QW5kQnVmZmVyKHZpZXdGaXJzdCwgYnVmZmVyVHlwZSkgeworICAgIHJldHVybiB7CisgICAgICAg
IG5hbWU6ICh2aWV3Rmlyc3QgPyAic2VuZCB2aWV3LCBidWZmZXIgZm9yICIgOiAic2VuZCBidWZm
ZXIsIHZpZXcgZm9yICIpICsgYnVmZmVyVHlwZVswXSwKKyAgICAgICAgc2VuZDogZnVuY3Rpb24g
KG5hbWUpIHsKKyAgICAgICAgICAgIHZhciB2aWV3ID0gY3JlYXRlVmlldyhidWZmZXJUeXBlWzFd
LCBidWZmZXJUeXBlWzJdKTsKKyAgICAgICAgICAgIHZhciBidWZmZXIgPSB2aWV3LmJ1ZmZlcjsK
KyAgICAgICAgICAgIHdyYXBTZW5kKG5hbWUsIHZpZXdGaXJzdCA/IFt2aWV3LCBidWZmZXJdIDog
W2J1ZmZlciwgdmlld10sIFtidWZmZXJdKTsKKyAgICAgICAgICAgIGFzc2VydFZpZXdDbG9zZWQo
bmFtZSwgdmlldyk7CisgICAgICAgICAgICBhc3NlcnRCdWZmZXJDbG9zZWQobmFtZSwgYnVmZmVy
KTsKKyAgICAgICAgICAgIHdyYXBGYWlsU2VuZChuYW1lLCB2aWV3LCBbYnVmZmVyXSk7CisgICAg
ICAgICAgICB3cmFwRmFpbFNlbmQobmFtZSwgdmlldywgW10pOworICAgICAgICAgICAgd3JhcEZh
aWxTZW5kKG5hbWUsIGJ1ZmZlciwgW2J1ZmZlcl0pOworICAgICAgICAgICAgd3JhcEZhaWxTZW5k
KG5hbWUsIGJ1ZmZlciwgW10pOworICAgICAgICAgICAgd3JhcEZhaWxTZW5kKG5hbWUsIFt2aWV3
LCBidWZmZXJdLCBbYnVmZmVyXSk7CisgICAgICAgICAgICB3cmFwRmFpbFNlbmQobmFtZSwgW2J1
ZmZlciwgdmlld10sIFtidWZmZXJdKTsKKyAgICAgICAgICAgIHdyYXBGYWlsU2VuZChuYW1lLCBb
dmlldywgYnVmZmVyXSwgW10pOworICAgICAgICAgICAgd3JhcEZhaWxTZW5kKG5hbWUsIFtidWZm
ZXIsIHZpZXddLCBbXSk7CisgICAgICAgIH0sCisgICAgICAgIHRlc3Q6IGZ1bmN0aW9uIChuYW1l
LCBlKSB7CisgICAgICAgICAgICB2YXIgdmlldyA9IGUuZGF0YVt2aWV3Rmlyc3QgPyAwIDogMV07
CisgICAgICAgICAgICB2YXIgYnVmZmVyID0gZS5kYXRhW3ZpZXdGaXJzdCA/IDEgOiAwXTsKKyAg
ICAgICAgICAgIGlmIChidWZmZXIgIT09IHZpZXcuYnVmZmVyKSB7CisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZChuYW1lICsgIiBidWZmZXIgbm90IHNoYXJlZCIpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjaGVja1Zp
ZXcobmFtZSwgYnVmZmVyVHlwZVsxXSwgdmlldykgJiYgY2hlY2tFbXB0eUFycmF5KG5hbWUsIGUu
cG9ydHMpOworICAgICAgICB9CisgICAgfQorfTsKKworZnVuY3Rpb24gc3F1YXNoVW5yZWxhdGVk
Vmlld3MoYnVmZmVyVHlwZSkgeworICAgIHJldHVybiB7CisgICAgICAgIG5hbWU6ICJzcXVhc2gg
dW5yZWxhdGVkIHZpZXdzIGZvciAiICsgYnVmZmVyVHlwZVswXSwKKyAgICAgICAgc2VuZDogZnVu
Y3Rpb24obmFtZSkgeworICAgICAgICAgICAgdmFyIHZpZXcgPSBjcmVhdGVWaWV3KGJ1ZmZlclR5
cGVbMV0sIGJ1ZmZlclR5cGVbMl0pOworICAgICAgICAgICAgdmFyIHZpZXdzID0gY3JlYXRlRXZl
cnlWaWV3KHZpZXcuYnVmZmVyKTsKKyAgICAgICAgICAgIHZhciBidWZmZXIgPSB2aWV3LmJ1ZmZl
cjsKKyAgICAgICAgICAgIHdyYXBTZW5kKG5hbWUsIHZpZXcsIFt2aWV3LmJ1ZmZlcl0pOworICAg
ICAgICAgICAgYXNzZXJ0Vmlld0Nsb3NlZChuYW1lLCB2aWV3KTsKKyAgICAgICAgICAgIGFzc2Vy
dEJ1ZmZlckNsb3NlZChuYW1lLCB2aWV3LmJ1ZmZlcik7CisgICAgICAgICAgICBmb3IgKHZhciB2
ID0gMDsgdiA8IHZpZXdzLmxlbmd0aDsgKyt2KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0Vmll
d0Nsb3NlZChuYW1lICsgIih2aWV3ICIgKyB2ICsgIikiLCB2aWV3c1t2XSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICB3cmFwRmFpbFNlbmQobmFtZSwgdmlld3MsIFtidWZmZXJdKTsKKyAg
ICAgICAgfSwKKyAgICAgICAgdGVzdDogZnVuY3Rpb24gKG5hbWUsIGUpIHsgcmV0dXJuIGNoZWNr
VmlldyhuYW1lLCBidWZmZXJUeXBlWzFdLCBlLmRhdGEpICYmIGNoZWNrRW1wdHlBcnJheShuYW1l
LCBlLnBvcnRzKTsgfQorICAgIH0KK30KKwordGVzdExpc3QgPSB0ZXN0TGlzdC5jb25jYXQoYWxs
QnVmZmVyVHlwZXMubWFwKGZ1bmN0aW9uKGJ1ZmZlclR5cGUpIHsgcmV0dXJuIHZpZXdBbmRCdWZm
ZXIodHJ1ZSwgYnVmZmVyVHlwZSk7IH0pKTsKK3Rlc3RMaXN0ID0gdGVzdExpc3QuY29uY2F0KGFs
bEJ1ZmZlclR5cGVzLm1hcChmdW5jdGlvbihidWZmZXJUeXBlKSB7IHJldHVybiB2aWV3QW5kQnVm
ZmVyKGZhbHNlLCBidWZmZXJUeXBlKTsgfSkpOwordGVzdExpc3QgPSB0ZXN0TGlzdC5jb25jYXQo
YWxsQnVmZmVyVHlwZXMubWFwKGZ1bmN0aW9uKGJ1ZmZlclR5cGUpIHsgcmV0dXJuIHNxdWFzaFVu
cmVsYXRlZFZpZXdzKGJ1ZmZlclR5cGUpOyB9KSk7CisKK2Z1bmN0aW9uIGRvbmVUZXN0KCkgewor
ICAgIGlmICgrK3dpbmRvdy50ZXN0c0NvbXBsZXRlID09IHRlc3RMaXN0Lmxlbmd0aCkgeworICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHdpbmRvd0hhbmRsZU1l
c3NhZ2UoZXZlbnQpIHsKKyAgICB2YXIgY3VycmVudFRlc3QgPSB0ZXN0TGlzdFt3aW5kb3cudGVz
dHNDb21wbGV0ZV07CisgICAgaWYgKGN1cnJlbnRUZXN0LmFscmVhZHlIaXQpIHsKKyAgICAgICAg
dGVzdEZhaWxlZChjdXJyZW50VGVzdC5uYW1lICsgIjogd2luZG93SGFuZGxlTWVzc2FnZSBoaXQg
bW9yZSB0aGFuIG9uY2UuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgY3Vy
cmVudFRlc3QuYWxyZWFkeUhpdCA9IHRydWU7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKGN1cnJl
bnRUZXN0LnRlc3QoY3VycmVudFRlc3QubmFtZSwgZXZlbnQpKSB7CisgICAgICAgICAgICB0ZXN0
UGFzc2VkKGN1cnJlbnRUZXN0Lm5hbWUpOworICAgICAgICB9CisgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgIHRlc3RGYWlsZWQoY3VycmVudFRlc3QubmFtZSArICI6IHVuZXhwZWN0ZWQgZXhjZXB0
aW9uICIgKyBldmVudCk7CisgICAgfQorICAgIGRvbmVUZXN0KCk7Cit9Cit3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbWVzc2FnZScsIHdpbmRvd0hhbmRsZU1lc3NhZ2UpOworCitmb3IgKHZhciB0
ID0gMDsgdCA8IHRlc3RMaXN0Lmxlbmd0aDsgKyt0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgdGVz
dExpc3RbdF0uc2VuZCh0ZXN0TGlzdFt0XS5uYW1lKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgdGVzdEZhaWxlZCh0ZXN0TGlzdFt0XS5uYW1lICsgIjogdW5leHBlY3RlZCBleGNlcHRpb24g
IiArIGUpOworICAgICAgICBkb25lVGVzdCgpOworICAgIH0KK30KKworc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CmluZGV4IDhkZDY5NmUu
LjFlMzMyYWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cG9zdG1lc3NhZ2UtYXJncy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
V2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dApAQCAtMTksNiArMTks
OCBAQCBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCdHJywgW29iamVjdCBNZXNzYWdlUG9ydF0pOiB0
aHJldyBleGNlcHRpb24gRXJyb3I6IERBVEFfQwogUEFTUzogd2Via2l0UG9zdGluZyBtZXNzYWdl
ICgnW29iamVjdCBNZXNzYWdlUG9ydF0nLCBbb2JqZWN0IE1lc3NhZ2VQb3J0XSkgZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24KIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2Fn
ZVBvcnRdJywgW29iamVjdCBNZXNzYWdlUG9ydF0pOiB0aHJldyBleGNlcHRpb24gRXJyb3I6IERB
VEFfQ0xPTkVfRVJSOiBET00gRXhjZXB0aW9uIDI1CiBQQVNTOiBQb3N0aW5nIG1lc3NhZ2UgKCcy
MTQ3NDgzNjQ4JywgbnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1M6IHdlYmtp
dFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgSW50OEFycmF5XScsIFtvYmplY3QgQXJyYXlCdWZm
ZXJdKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUzogd2Via2l0UG9zdGluZyBtZXNz
YWdlICgnW29iamVjdCBJbnQ4QXJyYXldJywgKTogdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRB
X0NMT05FX0VSUjogRE9NIEV4Y2VwdGlvbiAyNQogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnZG9u
ZScsICopIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBSZWNlaXZlZCBtZXNzYWdlICc0JyB3
aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICc1JyB3aXRoIDAgcG9ydHMuCkBAIC0zMCw1
ICszMiw2IEBAIFJlY2VpdmVkIG1lc3NhZ2UgJ0QnIHdpdGggMCBwb3J0cy4KIFJlY2VpdmVkIG1l
c3NhZ2UgJ0YnIHdpdGggMSBwb3J0cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJ1tvYmplY3QgTWVzc2Fn
ZVBvcnRdJyB3aXRoIDEgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICcyMTQ3NDgzNjQ4JyB3aXRo
IDAgcG9ydHMuCitSZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE9iamVjdF0nIHdpdGggMCBwb3J0
cy4KIFJlY2VpdmVkIG1lc3NhZ2UgJ2RvbmUnIHdpdGggMCBwb3J0cy4KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRt
bAppbmRleCBiYTllYTY0Li5hNzk4Y2MyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MuaHRtbApAQCAtNzEsNiArNzEs
MTAgQEAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKIHRyeVdlYmtpdFBvc3RNZXNzYWdl
KGNoYW5uZWwucG9ydDEsIFtjaGFubmVsLnBvcnQxXSwgJyonKTsKIHRyeVBvc3RNZXNzYWdlKGNo
YW5uZWwucG9ydDIsIFtjaGFubmVsLnBvcnQyXSwgJyonLCB0cnVlKTsgLy8gZmFpbHM6IHBvc3RN
ZXNzYWdlIGRvZXMgbm90IGFsbG93IFRyYW5zZmVyYWJsZSBhcmd1bWVudHMgaW4gbWVzc2FnZSBi
b2RpZXMuCiB0cnlQb3N0TWVzc2FnZSgyMTQ3NDgzNjQ4LCBudWxsLCAnKicpOwordmFyIGJ1ZmZl
cjEgPSBuZXcgSW50OEFycmF5KDEpOworYnVmZmVyMVswXSA9IDQyOwordHJ5V2Via2l0UG9zdE1l
c3NhZ2UoYnVmZmVyMSwgW2J1ZmZlcjEuYnVmZmVyXSwgJyonKTsKK3RyeVdlYmtpdFBvc3RNZXNz
YWdlKGJ1ZmZlcjEsIFtidWZmZXIxLmJ1ZmZlcl0sICcqJywgdHJ1ZSk7CiB0cnlQb3N0TWVzc2Fn
ZSgnZG9uZScsICcqJyk7CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvd29ya2Vycy9mbGF0dGVuLXNlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvZmxhdHRlbi1zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MDE5YTIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvZmxhdHRlbi1zZXJpYWxpemVkLXNj
cmlwdC12YWx1ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dvcmtlci11dGlsLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvZmxhdHRlbi1zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
cmVzb3VyY2VzL2ZsYXR0ZW4tc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL2ZsYXR0ZW4tc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI5YjBkNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvZmxhdHRlbi1zZXJp
YWxpemVkLXNjcmlwdC12YWx1ZS5qcwpAQCAtMCwwICsxLDEwMCBAQAorZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBjaGVja3MgdGhhdCBmbGF0dGVuaW5nIGEgU2VyaWFsaXplZFNjcmlwdFZhbHVlIHdv
cmtzLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gZmxhdHRlbihtZXNzYWdlLCB4ZmVyTGlzdFBy
ZSwgeGZlckxpc3RQb3N0KSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5m
bGF0dGVuU2VyaWFsaXplZFZhbHVlKSB7CisgICAgICAgIHZhciBzZXJpYWxpemVkID0gd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLnNlcmlhbGl6ZVZhbHVlKG1lc3NhZ2UsIHhmZXJMaXN0UHJl
KTsKKyAgICAgICAgdmFyIGZsYXR0ZW5lZCA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5m
bGF0dGVuU2VyaWFsaXplZFZhbHVlKHNlcmlhbGl6ZWQsIHhmZXJMaXN0UHJlKTsKKyAgICAgICAg
cmV0dXJuIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kZXNlcmlhbGl6ZVZhbHVlKGZsYXR0
ZW5lZCwgeGZlckxpc3RQb3N0KTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZmxhdHRlblNlcmlhbGl6ZWRWYWx1ZSkgeworICAgIHRlc3RQYXNzZWQoIlRoaXMg
YnVpbGQgc3VwcG9ydHMgLmZsYXR0ZW5TZXJpYWxpemVkVmFsdWUiKTsKKyAgICAKKyAgICAvLyBD
aGVjayB0aGF0IGVtcHR5IHRyYW5zZmVyIGxpc3RzIGFyZSBPSy4KKyAgICB2YXIgdmlldzEgPSBu
ZXcgSW50OEFycmF5KDEpOworICAgIHZpZXcxWzBdID0gNDI7CisgICAgdmFyIHZpZXcxb3V0ID0g
ZmxhdHRlbih2aWV3MSwgW10sIFtdKTsKKyAgICBzaG91bGRCZSgidmlldzFvdXRbMF0iLCAiNDIi
KTsKKworICAgIC8vIENhbiB3ZSBmbGF0dGVuIGEgcmF3IEFycmF5QnVmZmVyPworICAgIHZpZXcx
ID0gbmV3IEludDhBcnJheSgxKTsKKyAgICB2aWV3MVswXSA9IDQzOworICAgIHZhciBidWZmZXIx
ID0gdmlldzEuYnVmZmVyOworICAgIHZhciBidWZmZXIxb3V0ID0gZmxhdHRlbihidWZmZXIxLCBb
YnVmZmVyMV0sIFtdKTsKKyAgICB2aWV3MW91dCA9IG5ldyBJbnQ4QXJyYXkoYnVmZmVyMW91dCk7
CisgICAgc2hvdWxkQmUoInZpZXcxb3V0WzBdIiwgIjQzIik7CisKKyAgICAvLyBDYW4gd2UgZmxh
dHRlbiBhbiBBcnJheUJ1ZmZlclZpZXc/CisgICAgdmlldzEgPSBuZXcgSW50OEFycmF5KDEpOwor
ICAgIHZpZXcxWzBdID0gNDQ7CisgICAgdmFyIHZpZXcxb3V0ID0gZmxhdHRlbih2aWV3MSwgW3Zp
ZXcxLmJ1ZmZlcl0sIFtdKTsKKyAgICBzaG91bGRCZSgidmlldzFvdXRbMF0iLCAiNDQiKTsKKyAg
ICBzaG91bGRCZVVuZGVmaW5lZCh2aWV3MVswXSk7CisKKyAgICAvLyBIb3cgYWJvdXQgTWVzc2Fn
ZVBvcnRzPworICAgIHZhciBjaGFubmVsMSA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworICAgIHZh
ciBwb3J0MW91dCA9IGZsYXR0ZW4oY2hhbm5lbDEucG9ydDEsIFtjaGFubmVsMS5wb3J0MV0sIFtj
aGFubmVsMS5wb3J0Ml0pOworICAgIHNob3VsZEJlVHJ1ZSgicG9ydDFvdXQgPT09IGNoYW5uZWwx
LnBvcnQyIik7CisKKyAgICAvLyBOb3cgd2UnbGwgbWl4IE1lc3NhZ2VQb3J0cyBhbmQgQXJyYXlC
dWZmZXJzLgorICAgIGZ1bmN0aW9uIGluaXRPYmplY3RzKG4pIHsKKyAgICAgICAgdmFyIHZpZXcx
ID0gbmV3IEludDhBcnJheSgxKTsKKyAgICAgICAgdmlldzFbMF0gPSBuOworICAgICAgICB2YXIg
dmlldzIgPSBuZXcgSW50OEFycmF5KDEpOworICAgICAgICB2aWV3MlswXSA9IG4gKyAxOworICAg
ICAgICB2YXIgY2hhbm5lbDEgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKyAgICAgICAgdmFyIGNo
YW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAgICAgIHJldHVybiBbe3YxOiB2aWV3
MSwgdjI6IHZpZXcyLCBwMTogY2hhbm5lbDEucG9ydDEsIHAyOiBjaGFubmVsMS5wb3J0Mn0sCisg
ICAgICAgICAgICAgICAgW3ZpZXcxLmJ1ZmZlciwgdmlldzIuYnVmZmVyLCBjaGFubmVsMS5wb3J0
MSwgY2hhbm5lbDEucG9ydDJdLAorICAgICAgICAgICAgICAgIFtjaGFubmVsMi5wb3J0MSwgY2hh
bm5lbDIucG9ydDJdXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja09rKHRlc3QsIHYpIHsK
KyAgICAgICAgaWYgKHYpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKHRlc3QpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKHRlc3QpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGNoZWNrTWl4KG1peEluLCBtaXhPdXQsIG4pIHsKKyAgICAgICAgY2hlY2tPaygiYXJyYW5nZW1l
bnQgIiArIG4gKyAiIGZpcnN0IHZpZXcgZmxhdHRlbmVkIiwgKG1peE91dC52MVswXSA9PSBuKSk7
CisgICAgICAgIGNoZWNrT2soImFycmFuZ2VtZW50ICIgKyBuICsgIiBzZWNvbmQgdmlldyBmbGF0
dGVuZWQiLCAobWl4T3V0LnYyWzBdID09IG4gKyAxKSk7CisgICAgICAgIGNoZWNrT2soImFycmFu
Z2VtZW50ICIgKyBuICsgIiBmaXJzdCBwb3J0IHJlYXNzaWduZWQiLCAobWl4T3V0LnAxID09PSBt
aXhJblsyXVswXSkpOworICAgICAgICBjaGVja09rKCJhcnJhbmdlbWVudCAiICsgbiArICIgc2Vj
b25kIHBvcnQgcmVhc3NpZ25lZCIsIChtaXhPdXQucDIgPT09IG1peEluWzJdWzFdKSk7CisgICAg
fQorCisgICAgLy8gQ2hlY2sgdGhhdCB3ZSBmaWxsIGhvbGVzIGNvcnJlY3RseSBpbiBhbGwgY2Fz
ZXMuCisgICAgdmFyIG1peCA9IGluaXRPYmplY3RzKDEpOworICAgIHZhciBtaXhPdXQgPSBmbGF0
dGVuKG1peFswXSwgW21peFsxXVswXSwgbWl4WzFdWzFdLCBtaXhbMV1bMl0sIG1peFsxXVszXV0s
IG1peFsyXSk7CisgICAgY2hlY2tNaXgobWl4LCBtaXhPdXQsIDEpOworCisgICAgbWl4ID0gaW5p
dE9iamVjdHMoMik7CisgICAgbWl4T3V0ID0gZmxhdHRlbihtaXhbMF0sIFttaXhbMV1bMl0sIG1p
eFsxXVszXSwgbWl4WzFdWzBdLCBtaXhbMV1bMV1dLCBtaXhbMl0pOworICAgIGNoZWNrTWl4KG1p
eCwgbWl4T3V0LCAyKTsKKworICAgIG1peCA9IGluaXRPYmplY3RzKDMpOworICAgIG1peE91dCA9
IGZsYXR0ZW4obWl4WzBdLCBbbWl4WzFdWzBdLCBtaXhbMV1bMl0sIG1peFsxXVszXSwgbWl4WzFd
WzFdXSwgbWl4WzJdKTsKKyAgICBjaGVja01peChtaXgsIG1peE91dCwgMyk7CisgICAgCisgICAg
bWl4ID0gaW5pdE9iamVjdHMoNCk7CisgICAgbWl4T3V0ID0gZmxhdHRlbihtaXhbMF0sIFttaXhb
MV1bMl0sIG1peFsxXVswXSwgbWl4WzFdWzFdLCBtaXhbMV1bM11dLCBtaXhbMl0pOworICAgIGNo
ZWNrTWl4KG1peCwgbWl4T3V0LCA0KTsKKworICAgIG1peCA9IGluaXRPYmplY3RzKDUpOworICAg
IG1peE91dCA9IGZsYXR0ZW4obWl4WzBdLCBbbWl4WzFdWzBdLCBtaXhbMV1bMl0sIG1peFsxXVsx
XSwgbWl4WzFdWzNdXSwgbWl4WzJdKTsKKyAgICBjaGVja01peChtaXgsIG1peE91dCwgNSk7Cisg
ICAgCisgICAgbWl4ID0gaW5pdE9iamVjdHMoNik7CisgICAgbWl4T3V0ID0gZmxhdHRlbihtaXhb
MF0sIFttaXhbMV1bMl0sIG1peFsxXVswXSwgbWl4WzFdWzNdLCBtaXhbMV1bMV1dLCBtaXhbMl0p
OworICAgIGNoZWNrTWl4KG1peCwgbWl4T3V0LCA2KTsKK30gZWxzZSB7CisgICAgdGVzdFBhc3Nl
ZCgiVGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IC5mbGF0dGVuU2VyaWFsaXplZFZhbHVlIik7
Cit9CisKK2RvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNv
dXJjZXMvc2hhcmVkLXdvcmtlci1tZXNzYWdlcG9ydC1hcnJheS5qcyBiL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy9yZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1tZXNzYWdlcG9ydC1hcnJheS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmI3MmY1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy9zaGFyZWQtd29ya2VyLW1l
c3NhZ2Vwb3J0LWFycmF5LmpzCkBAIC0wLDAgKzEsNDIgQEAKK3ZhciBjb250cm9sQ2hhbm5lbCA9
IG51bGw7CisKK2Z1bmN0aW9uIGxvZyhzKQoreworICAgIGNvbnRyb2xDaGFubmVsLndlYmtpdFBv
c3RNZXNzYWdlKFsibG9nIiwgc10sIFtdKTsKK30KKworZnVuY3Rpb24gdGljaygpCit7CisgICAg
Y29udHJvbENoYW5uZWwud2Via2l0UG9zdE1lc3NhZ2UoWyJ0aWNrIl0sIFtdKTsKK30KKworZnVu
Y3Rpb24gY29udHJvbENoYW5uZWxPbk1lc3NhZ2UoZSkKK3sKKyAgICBpZiAoZS5kYXRhWzBdID09
ICJjaGFubmVsQW5kQnVmZmVyIikgeworICAgICAgICB2YXIgY2hhbm5lbCA9IGUuZGF0YVsxXS5j
aGFubmVsOworICAgICAgICB2YXIgYnVmZmVyID0gZS5kYXRhWzFdLmJ1ZmZlcjsKKyAgICAgICAg
aWYgKGNoYW5uZWwgIT09IGUucG9ydHNbMF0pIHsKKyAgICAgICAgICAgIGxvZygiRkFJTDogY2hh
bm5lbCAhPT0gZS5wb3J0c1swXSIpOworICAgICAgICB9CisgICAgICAgIGlmIChidWZmZXIuYnl0
ZUxlbmd0aCAhPT0gNDIpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTDogYnVmZmVyLmJ5dGVMZW5n
dGggIT09IDQyIik7CisgICAgICAgIH0KKyAgICAgICAgY29udHJvbENoYW5uZWwud2Via2l0UG9z
dE1lc3NhZ2UoWyJnb3RDaGFubmVsQW5kQnVmZmVyIiwKKyAgICAgICAgICAgIHtnb3RDaGFubmVs
OiBjaGFubmVsLCBnb3RCdWZmZXI6IGJ1ZmZlcn1dLAorICAgICAgICAgICAgW2J1ZmZlciwgY2hh
bm5lbF0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGxvZygidW5rbm93biBjb250cm9sQ2hhbm5l
bCBtZXNzYWdlOiIgKyBlLmRhdGEpOworICAgIH0KK30KKworZnVuY3Rpb24gY29uZmlndXJlQ29u
dHJvbENoYW5uZWwoKQoreworICAgIGNvbnRyb2xDaGFubmVsLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGUpIHsgY29udHJvbENoYW5uZWxPbk1lc3NhZ2UoZSk7IH0KKyAgICBjb250cm9sQ2hhbm5lbC5z
dGFydCgpOworfQorCitvbmNvbm5lY3QgPSBmdW5jdGlvbihldnQpCit7CisgICAgY29udHJvbENo
YW5uZWwgPSBldnQucG9ydHNbMF07CisgICAgY29uZmlndXJlQ29udHJvbENoYW5uZWwoKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLW1l
c3NhZ2Vwb3J0LWFycmF5LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93
b3JrZXItbWVzc2FnZXBvcnQtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNmExNWNkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvd29ya2VyLW1lc3NhZ2Vwb3J0LWFycmF5LmpzCkBAIC0wLDAgKzEsNjEgQEAK
K3ZhciBjb250cm9sQ2hhbm5lbCA9IG51bGw7CisKK2Z1bmN0aW9uIGxvZyhzKQoreworICAgIGNv
bnRyb2xDaGFubmVsLndlYmtpdFBvc3RNZXNzYWdlKFsibG9nIiwgc10sIFtdKTsKK30KKworZnVu
Y3Rpb24gdGljaygpCit7CisgICAgY29udHJvbENoYW5uZWwud2Via2l0UG9zdE1lc3NhZ2UoWyJ0
aWNrIl0sIFtdKTsKK30KKworZnVuY3Rpb24gY29udHJvbENoYW5uZWxPbk1lc3NhZ2UoZSkKK3sK
KyAgICBpZiAoZS5kYXRhWzBdID09ICJjaGFubmVsQW5kQnVmZmVyIikgeworICAgICAgICB2YXIg
Y2hhbm5lbCA9IGUuZGF0YVsxXS5jaGFubmVsOworICAgICAgICB2YXIgYnVmZmVyID0gZS5kYXRh
WzFdLmJ1ZmZlcjsKKyAgICAgICAgaWYgKGNoYW5uZWwgIT09IGUucG9ydHNbMF0pIHsKKyAgICAg
ICAgICAgIGxvZygiRkFJTDogY2hhbm5lbCAhPT0gZS5wb3J0c1swXSIpOworICAgICAgICB9Cisg
ICAgICAgIGlmIChidWZmZXIuYnl0ZUxlbmd0aCAhPT0gNDIpIHsKKyAgICAgICAgICAgIGxvZygi
RkFJTDogYnVmZmVyLmJ5dGVMZW5ndGggIT09IDQyIik7CisgICAgICAgIH0KKyAgICAgICAgY29u
dHJvbENoYW5uZWwud2Via2l0UG9zdE1lc3NhZ2UoWyJnb3RDaGFubmVsQW5kQnVmZmVyIiwKKyAg
ICAgICAgICAgIHtnb3RDaGFubmVsOiBjaGFubmVsLCBnb3RCdWZmZXI6IGJ1ZmZlcn1dLAorICAg
ICAgICAgICAgW2J1ZmZlciwgY2hhbm5lbF0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGxvZygi
dW5rbm93biBjb250cm9sQ2hhbm5lbCBtZXNzYWdlOiIgKyBlLmRhdGEpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gY29uZmlndXJlQ29udHJvbENoYW5uZWwoKQoreworICAgIGNvbnRyb2xDaGFubmVs
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsgY29udHJvbENoYW5uZWxPbk1lc3NhZ2UoZSk7IH0K
KyAgICBjb250cm9sQ2hhbm5lbC5zdGFydCgpOworfQorCitvbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpCit7CisgICAgaWYgKGV2dC5kYXRhWzBdID09ICJjb250cm9sQ2hhbm5lbCIpIHsKKyAgICAg
ICAgY29udHJvbENoYW5uZWwgPSBldnQucG9ydHNbMF07CisgICAgICAgIGlmICghY29udHJvbENo
YW5uZWwpIHsKKyAgICAgICAgICAgIHRocm93ICJ3b3JrZXIgZ290IG51bGwgY29udHJvbENoYW5u
ZWwiOworICAgICAgICB9CisgICAgICAgIGNvbmZpZ3VyZUNvbnRyb2xDaGFubmVsKCk7CisgICAg
ICAgIHRpY2soKTsKKyAgICB9IGVsc2UgaWYgKGV2dC5kYXRhWzBdID09ICJjaGFubmVsQW5kQnVm
ZmVyIikgeworICAgICAgICB2YXIgY2hhbm5lbCA9IGV2dC5kYXRhWzFdLmNoYW5uZWw7CisgICAg
ICAgIHZhciBidWZmZXIgPSBldnQuZGF0YVsxXS5idWZmZXI7CisgICAgICAgIGlmIChjaGFubmVs
ICE9PSBldnQucG9ydHNbMF0pIHsKKyAgICAgICAgICAgIGxvZygiRkFJTDogY2hhbm5lbCAhPT0g
ZXZ0LnBvcnRzWzBdIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJ1ZmZlci5ieXRlTGVuZ3Ro
ICE9PSA0MikgeworICAgICAgICAgICAgbG9nKCJGQUlMOiBidWZmZXIuYnl0ZUxlbmd0aCAhPT0g
NDIiKTsKKyAgICAgICAgfQorICAgICAgICB3ZWJraXRQb3N0TWVzc2FnZShbImdvdENoYW5uZWxB
bmRCdWZmZXIiLCB7Z290Q2hhbm5lbDogY2hhbm5lbCwgZ290QnVmZmVyOiBidWZmZXJ9XSwKKyAg
ICAgICAgICAgIFtjaGFubmVsLCBidWZmZXJdKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2co
InVua25vd24gbWVzc2FnZSB0byB3b3JrZXI6ICIgKyBldnQuZGF0YSk7CisgICAgfQorfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItbWVzc2Fn
ZXBvcnQuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tZXNz
YWdlcG9ydC5qcwppbmRleCAxZTAxYjBhLi45ZmE1OGRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tZXNzYWdlcG9ydC5qcworKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1tZXNzYWdlcG9ydC5qcwpAQCAt
Nyw2ICs3LDQ1IEBAIG9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IERpZCBub3QgcmVjZWl2ZSBleHBlY3Rl
ZCBNZXNzYWdlUG9ydCIpOwogICAgICAgICB9CisgICAgfSBlbHNlIGlmIChldnQuZGF0YVswXSA9
PSAiYnVmcG9ydCIpIHsKKyAgICAgICAgaWYgKGV2dC5kYXRhWzFdWzBdICE9IDQyKSB7CisgICAg
ICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogZGlkIG5vdCBnZXQgQXJyYXlCdWZmZXIiKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoZXZ0LnBvcnRzLmxlbmd0aCAhPSAxKSB7CisgICAgICAgICAg
ICBwb3N0TWVzc2FnZSgiRkFJTDogcG9ydHMgaXMgdGhlIHdyb25nIGxlbmd0aCIpOworICAgICAg
ICB9CisgICAgICAgIGlmIChldnQuZGF0YVsyXSA9PT0gZXZ0LnBvcnRzWzBdKSB7CisgICAgICAg
ICAgICBwb3N0TWVzc2FnZSgiUEFTUzogZ290IHBvcnQgc2VudCBpbiBtZXNzYWdlIGJvZHkiKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBkaWQgbm90
IGdldCBwb3J0IHNlbnQgaW4gbWVzc2FnZSBib2R5Iik7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKGV2dC5kYXRhWzBdID09ICJidWZwb3J0MSIpIHsKKyAgICAgICAgaWYgKGV2dC5kYXRhWzFd
WzBdICE9IDQzKSB7CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogYnVmMSBiYWQiKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoZXZ0LmRhdGFbM11bMF0gIT0gNDQpIHsKKyAgICAgICAg
ICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBidWYyIGJhZCIpOworICAgICAgICB9CisgICAgICAgIGlm
IChldnQucG9ydHMubGVuZ3RoICE9IDIpIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJGQUlM
OiBwb3J0cyBpcyB0aGUgd3JvbmcgbGVuZ3RoIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV2
dC5kYXRhWzJdICE9PSBldnQucG9ydHNbMV0pIHsKKyAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJG
QUlMOiBjaGFuMi5wb3J0MSBiYWQiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZ0LmRhdGFb
NF0gPT09IGV2dC5wb3J0c1swXSkgeworICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IGNo
YW4xLnBvcnQxIG9rIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwb3N0TWVzc2Fn
ZSgiRkFJTDogY2hhbjEucG9ydDEgYmFkIik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGV2
dC5kYXRhWzBdID09ICJidWZwb3J0MiIpIHsKKyAgICAgICAgaWYgKGV2dC5kYXRhWzFdWzBdICE9
IDQ1KSB7CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogYnVmMSBiYWQiKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoZXZ0LnBvcnRzICE9IG51bGwgJiYgZXZ0LnBvcnRzLmxlbmd0aCAh
PSAwKSB7CisgICAgICAgICAgICBwb3N0TWVzc2FnZSgiRkFJTDogYmFkIHBvcnRzIGxpc3Q6ICIg
KyBldnQucG9ydHMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcG9zdE1lc3NhZ2Uo
IlBBU1M6IHBvcnRzIGxpc3QgT0siKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoZXZ0LmRh
dGEgPT0gIm5vcG9ydCIpIHsKICAgICAgICAgaWYgKCFldnQucG9ydHMgfHwgZXZ0LnBvcnRzLmxl
bmd0aCkgewogICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFJlY2VpdmVkIG1lc3NhZ2Ug
cG9ydCBvciBudWxsIHBvcnRzIGFycmF5Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXNzYWdlcG9ydC1hcnJheS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXNzYWdlcG9ydC1hcnJheS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg4OTU2Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LW1lc3NhZ2Vwb3J0LWFycmF5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3QgdGhh
dCBwYWdlcyBhbmQgc2hhcmVkIHdvcmtlcnMgY2FuIHNlbmQgTWVzc2FnZVBvcnRzIGFuZCBBcnJh
eUJ1ZmZlcnMgdG8gb25lIGFub3RoZXIuIFNob3VsZCBwcmludCAiRE9ORSIgd2hlbiBkb25lLgor
CitQQVNTOiBnb3RDaGFubmVsQW5kQnVmZmVyIChwb3J0KQorRE9ORQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1tZXNzYWdlcG9ydC1hcnJheS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbWVzc2FnZXBvcnQt
YXJyYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGI4YWI4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXIt
bWVzc2FnZXBvcnQtYXJyYXkuaHRtbApAQCAtMCwwICsxLDY5IEBACis8Ym9keT4KKzxwPlRlc3Qg
dGhhdCBwYWdlcyBhbmQgc2hhcmVkIHdvcmtlcnMgY2FuIHNlbmQgTWVzc2FnZVBvcnRzIGFuZCBB
cnJheUJ1ZmZlcnMgdG8gb25lIGFub3RoZXIuCitTaG91bGQgcHJpbnQgIkRPTkUiIHdoZW4gZG9u
ZS48L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVz
c2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1M
ICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgdGlja3NUb0NvbXBsZXRl
ID0gMTsKKworZnVuY3Rpb24gdGljaygpIHsKKyAgICBpZiAoLS10aWNrc1RvQ29tcGxldGUgPT0g
MCkgeworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAg
ICBsb2coIkRPTkUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3ZhciB3b3JrZXIg
PSBuZXcgU2hhcmVkV29ya2VyKCJyZXNvdXJjZXMvc2hhcmVkLXdvcmtlci1tZXNzYWdlcG9ydC1h
cnJheS5qcyIpOwordmFyIGNvbnRyb2xDaGFubmVsID0gd29ya2VyLnBvcnQ7Citjb250cm9sQ2hh
bm5lbC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKQoreworICAgIGlmIChlLmRhdGFbMF0gPT0gImxv
ZyIpIHsKKyAgICAgICAgbG9nKCJ3b3JrZXIgc2FpZDogIiArIGUuZGF0YVsxXSk7CisgICAgfSBl
bHNlIGlmIChlLmRhdGFbMF0gPT0gInRpY2siKSB7CisgICAgICAgIHRpY2soKTsKKyAgICB9IGVs
c2UgaWYgKGUuZGF0YVswXSA9PSAiZ290Q2hhbm5lbEFuZEJ1ZmZlciIpIHsKKyAgICAgICAgaWYg
KGUuZGF0YVsxXS5nb3RDaGFubmVsICE9PSBlLnBvcnRzWzBdKSB7CisgICAgICAgICAgICBsb2co
IkZBSUw6IGdvdENoYW5uZWxBbmRCdWZmZXIgKHBvcnQpOiBjaGFubmVsIHdhcyBub3QgcmVmZXJl
bmNlIGVxdWFsIik7CisgICAgICAgIH0gCisgICAgICAgIGlmIChlLmRhdGFbMV0uZ290QnVmZmVy
LmJ5dGVMZW5ndGggIT09IDQyKSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IGdvdENoYW5uZWxB
bmRCdWZmZXIgKHBvcnQpOiBnb3RCdWZmZXIgaGFkIHRoZSB3cm9uZyBieXRlIGxlbmd0aCIpOwor
ICAgICAgICB9OworICAgICAgICBsb2coIlBBU1M6IGdvdENoYW5uZWxBbmRCdWZmZXIgKHBvcnQp
Iik7CisgICAgICAgIHRpY2soKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2coInVua25vd24g
bWVzc2FnZSBvbiBjb250cm9sQ2hhbm5lbDogIiArIGUuZGF0YSk7CisgICAgfQorfQorY29udHJv
bENoYW5uZWwuc3RhcnQoKTsKKworLy8gSlNDIHdpbGwgZWFnZXJseSBjb2xsZWN0IE1lc3NhZ2VD
aGFubmVscyBpZiB3ZSBkb24ndCBhdHRhY2ggdGhlbSB0byBzb21lIHJvb3QuCit3aW5kb3cuY2hh
bm5lbHMgPSBbbmV3IE1lc3NhZ2VDaGFubmVsKCldOworCitmdW5jdGlvbiBzZW5kQXJyYXlCdWZm
ZXJBbmRDaGFubmVsVGhyb3VnaENoYW5uZWwoKQoreworICAgIHZhciBhcnJheUJ1ZmZlckNoYW5u
ZWwgPSB3aW5kb3cuY2hhbm5lbHNbMF07CisgICAgdmFyIGFycmF5QnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKDQyKTsKKyAgICBjb250cm9sQ2hhbm5lbC53ZWJraXRQb3N0TWVzc2FnZShbImNoYW5u
ZWxBbmRCdWZmZXIiLCB7Y2hhbm5lbDogYXJyYXlCdWZmZXJDaGFubmVsLnBvcnQxLCBidWZmZXI6
IGFycmF5QnVmZmVyfV0sCisgICAgICAgIFthcnJheUJ1ZmZlciwgYXJyYXlCdWZmZXJDaGFubmVs
LnBvcnQxXSk7Cit9CisKK3NlbmRBcnJheUJ1ZmZlckFuZENoYW5uZWxUaHJvdWdoQ2hhbm5lbCgp
OworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtYXJyYXktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1hcnJheS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwZDljZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtYXJy
YXktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorVGVzdCB0aGF0IHBhZ2VzIGFuZCB3b3Jr
ZXJzIGNhbiBzZW5kIE1lc3NhZ2VQb3J0cyBhbmQgQXJyYXlCdWZmZXJzIHRvIG9uZSBhbm90aGVy
LiBTaG91bGQgcHJpbnQgIkRPTkUiIHdoZW4gZG9uZS4KKworUEFTUzogZ290Q2hhbm5lbEFuZEJ1
ZmZlcgorUEFTUzogZ290Q2hhbm5lbEFuZEJ1ZmZlcgorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWFycmF5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWFycmF5Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVhOTM5YwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtYXJyYXkuaHRtbApA
QCAtMCwwICsxLDk2IEBACis8Ym9keT4KKzxwPlRlc3QgdGhhdCBwYWdlcyBhbmQgd29ya2VycyBj
YW4gc2VuZCBNZXNzYWdlUG9ydHMgYW5kIEFycmF5QnVmZmVycyB0byBvbmUgYW5vdGhlci4KK1No
b3VsZCBwcmludCAiRE9ORSIgd2hlbiBkb25lLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2Pgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK3ZhciB0aWNrc1RvQ29tcGxldGUgPSAzOworCitmdW5jdGlvbiB0aWNrKCkKK3sKKyAg
ICBpZiAoLS10aWNrc1RvQ29tcGxldGUgPT0gMCkgeworICAgICAgICBkb25lKCk7CisgICAgfQor
fQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBsb2coIkRPTkUiKTsKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvd29ya2Vy
LW1lc3NhZ2Vwb3J0LWFycmF5LmpzIik7Cit2YXIgY29udHJvbENoYW5uZWwgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWwoKTsKK3dvcmtlci53ZWJraXRQb3N0TWVzc2FnZShbImNvbnRyb2xDaGFubmVsIiwg
Y29udHJvbENoYW5uZWwucG9ydDFdLCBbY29udHJvbENoYW5uZWwucG9ydDFdKTsKK2NvbnRyb2xD
aGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpCit7CisgICAgaWYgKGUuZGF0YVsw
XSA9PSAibG9nIikgeworICAgICAgICBsb2coIndvcmtlciBzYWlkOiAiICsgZS5kYXRhWzFdKTsK
KyAgICB9IGVsc2UgaWYgKGUuZGF0YVswXSA9PSAidGljayIpIHsKKyAgICAgICAgdGljaygpOwor
ICAgIH0gZWxzZSBpZiAoZS5kYXRhWzBdID09ICJnb3RDaGFubmVsQW5kQnVmZmVyIikgeworICAg
ICAgICBpZiAoZS5kYXRhWzFdLmdvdENoYW5uZWwgIT09IGUucG9ydHNbMF0pIHsKKyAgICAgICAg
ICAgIGxvZygiRkFJTDogZ290Q2hhbm5lbEFuZEJ1ZmZlciAocG9ydCk6IGNoYW5uZWwgd2FzIG5v
dCByZWZlcmVuY2UgZXF1YWwiKTsKKyAgICAgICAgfSAKKyAgICAgICAgaWYgKGUuZGF0YVsxXS5n
b3RCdWZmZXIuYnl0ZUxlbmd0aCAhPT0gNDIpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTDogZ290
Q2hhbm5lbEFuZEJ1ZmZlciAocG9ydCk6IGdvdEJ1ZmZlciBoYWQgdGhlIHdyb25nIGJ5dGUgbGVu
Z3RoIik7CisgICAgICAgIH07CisgICAgICAgIGxvZygiUEFTUzogZ290Q2hhbm5lbEFuZEJ1ZmZl
ciIpOworICAgICAgICB0aWNrKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKCJ1bmtub3du
IG1lc3NhZ2Ugb24gY29udHJvbENoYW5uZWw6ICIgKyBlLmRhdGEpOworICAgIH0KK30KK2NvbnRy
b2xDaGFubmVsLnBvcnQyLnN0YXJ0KCk7CisKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
KQoreworICAgIGlmIChlLmRhdGFbMF0gPT0gImdvdENoYW5uZWxBbmRCdWZmZXIiKSB7CisgICAg
ICAgIGlmIChlLmRhdGFbMV0uZ290Q2hhbm5lbCAhPT0gZS5wb3J0c1swXSkgeworICAgICAgICAg
ICAgbG9nKCJGQUlMOiBnb3RDaGFubmVsQW5kQnVmZmVyOiBjaGFubmVsIHdhcyBub3QgcmVmZXJl
bmNlIGVxdWFsIik7CisgICAgICAgIH0gCisgICAgICAgIGlmIChlLmRhdGFbMV0uZ290QnVmZmVy
LmJ5dGVMZW5ndGggIT09IDQyKSB7CisgICAgICAgICAgICBsb2coIkZBSUw6IGdvdENoYW5uZWxB
bmRCdWZmZXI6IGdvdEJ1ZmZlciBoYWQgdGhlIHdyb25nIGJ5dGUgbGVuZ3RoIik7CisgICAgICAg
IH07CisgICAgICAgIGxvZygiUEFTUzogZ290Q2hhbm5lbEFuZEJ1ZmZlciIpOworICAgICAgICB0
aWNrKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKCJ1bmtub3duIG1lc3NhZ2UgZnJvbSB3
b3JrZXI6ICIgKyBlLmRhdGEpOworICAgIH0KK30KKworLy8gSlNDIHdpbGwgZWFnZXJseSBjb2xs
ZWN0IE1lc3NhZ2VDaGFubmVscyBpZiB3ZSBkb24ndCBhdHRhY2ggdGhlbSB0byBzb21lIHJvb3Qu
Cit3aW5kb3cuY2hhbm5lbHMgPSBbbmV3IE1lc3NhZ2VDaGFubmVsKCksIG5ldyBNZXNzYWdlQ2hh
bm5lbCgpXTsKKworZnVuY3Rpb24gc2VuZEFycmF5QnVmZmVyQW5kQ2hhbm5lbERpcmVjdGx5KCkK
K3sKKyAgICB2YXIgYXJyYXlCdWZmZXJDaGFubmVsID0gd2luZG93LmNoYW5uZWxzWzBdOworICAg
IHZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcig0Mik7CisgICAgd29ya2VyLndlYmtp
dFBvc3RNZXNzYWdlKFsiY2hhbm5lbEFuZEJ1ZmZlciIsIHtjaGFubmVsOiBhcnJheUJ1ZmZlckNo
YW5uZWwucG9ydDEsIGJ1ZmZlcjogYXJyYXlCdWZmZXJ9XSwKKyAgICAgICAgW2FycmF5QnVmZmVy
LCBhcnJheUJ1ZmZlckNoYW5uZWwucG9ydDFdKTsKK30KKworZnVuY3Rpb24gc2VuZEFycmF5QnVm
ZmVyQW5kQ2hhbm5lbFRocm91Z2hDaGFubmVsKCkKK3sKKyAgICB2YXIgYXJyYXlCdWZmZXJDaGFu
bmVsID0gd2luZG93LmNoYW5uZWxzWzFdOworICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJh
eUJ1ZmZlcig0Mik7CisgICAgY29udHJvbENoYW5uZWwucG9ydDIud2Via2l0UG9zdE1lc3NhZ2Uo
WyJjaGFubmVsQW5kQnVmZmVyIiwge2NoYW5uZWw6IGFycmF5QnVmZmVyQ2hhbm5lbC5wb3J0MSwg
YnVmZmVyOiBhcnJheUJ1ZmZlcn1dLAorICAgICAgICBbYXJyYXlCdWZmZXIsIGFycmF5QnVmZmVy
Q2hhbm5lbC5wb3J0MV0pOworfQorCitzZW5kQXJyYXlCdWZmZXJBbmRDaGFubmVsRGlyZWN0bHko
KTsKK3NlbmRBcnJheUJ1ZmZlckFuZENoYW5uZWxUaHJvdWdoQ2hhbm5lbCgpOworCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItbWVzc2FnZXBvcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1leHBlY3RlZC50eHQKaW5kZXggOTA2YjZiOC4uNWIzZTdi
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9y
dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNz
YWdlcG9ydC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw5IEBACiBUZXN0IHRoYXQgcGFnZXMgYW5k
IHdvcmtlcnMgY2FuIHNlbmQgTWVzc2FnZVBvcnRzIHRvIG9uZSBhbm90aGVyLiBTaG91bGQgcHJp
bnQgIkRPTkUiIHdoZW4gZG9uZS4KIAogUEFTUzogZXZ0LnBvcnRzID0gW10gYXMgZXhwZWN0ZWQK
K1BBU1M6IGdvdCBwb3J0IHNlbnQgaW4gbWVzc2FnZSBib2R5CitQQVNTOiBjaGFuMS5wb3J0MSBv
aworUEFTUzogcG9ydHMgbGlzdCBPSwogUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSBwb3J0CiBQQVNT
OiBSZWNlaXZlZCByZXNwb25zZSBmcm9tIFdvcmtlciB2aWEgTWVzc2FnZVBvcnQKIFBBU1M6IEdv
dCBwb3J0IGZyb20gd29ya2VyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
d29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LW1lc3NhZ2Vwb3J0Lmh0bWwKaW5kZXggOGY0N2FmMi4uOWQ2NjIzMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbApAQCAtMTgsMTEgKzE4
LDM1IEBAIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CiAKIC8vIFNlbmQgbWVz
c2FnZXMgd2l0aCBhbmQgd2l0aG91dCBwb3J0cyB0byB0aGUgd29ya2VyIHRvIG1ha2Ugc3VyZSBp
dCBnZXRzIHRoZW0uCiB3b3JrZXIucG9zdE1lc3NhZ2UoIm5vcG9ydCIpOwotd29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2dCkgeword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkK
K3sKICAgICBsb2coZXZ0LmRhdGEpOwotICAgIHdvcmtlci5wb3N0TWVzc2FnZSgicG9ydCIsIFtj
aGFubmVsLnBvcnQxXSk7CisgICAgdmFyIGJ1ZjEgPSBuZXcgSW50OEFycmF5KDEpOworICAgIGJ1
ZjFbMF0gPSA0MjsKKyAgICB2YXIgY2hhbjEgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKyAgICB3
b3JrZXIud2Via2l0UG9zdE1lc3NhZ2UoWyJidWZwb3J0IiwgYnVmMSwgY2hhbjEucG9ydDFdLCBb
YnVmMS5idWZmZXIsIGNoYW4xLnBvcnQxXSk7CiAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0
aW9uKGV2dCkgewogICAgICAgICBsb2coZXZ0LmRhdGEpOworICAgICAgICB2YXIgYnVmMSA9IG5l
dyBJbnQ4QXJyYXkoMSk7CisgICAgICAgIHZhciBidWYyID0gbmV3IEludDhBcnJheSgxKTsKKyAg
ICAgICAgYnVmMVswXSA9IDQzOworICAgICAgICBidWYyWzBdID0gNDQ7CisgICAgICAgIHZhciBj
aGFuMSA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworICAgICAgICB2YXIgY2hhbjIgPSBuZXcgTWVz
c2FnZUNoYW5uZWwoKTsKKyAgICAgICAgd29ya2VyLndlYmtpdFBvc3RNZXNzYWdlKFsiYnVmcG9y
dDEiLCBidWYxLCBjaGFuMi5wb3J0MSwgYnVmMiwgY2hhbjEucG9ydDFdLCBbY2hhbjEucG9ydDEs
IGJ1ZjEuYnVmZmVyLCBidWYyLmJ1ZmZlciwgY2hhbjIucG9ydDFdKTsKKyAgICAgICAgd29ya2Vy
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAgbG9nKGV2dC5kYXRhKTsK
KyAgICAgICAgICAgIHZhciBidWYxID0gbmV3IEludDhBcnJheSgxKTsKKyAgICAgICAgICAgIGJ1
ZjFbMF0gPSA0NTsKKyAgICAgICAgICAgIHdvcmtlci53ZWJraXRQb3N0TWVzc2FnZShbImJ1ZnBv
cnQyIiwgYnVmMV0sIFtidWYxLmJ1ZmZlcl0pOworICAgICAgICAgICAgd29ya2VyLm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAg
ICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJwb3J0IiwgW2NoYW5uZWwucG9ydDFdKTsK
KyAgICAgICAgICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAg
ICAgICAgICAgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktdHJhbnNmZXItb2YtY29u
dHJvbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Nh
bnZhcy93ZWJnbC9hcnJheS10cmFuc2Zlci1vZi1jb250cm9sLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjI0ZTEzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9jYW52YXMvd2ViZ2wvYXJyYXktdHJh
bnNmZXItb2YtY29udHJvbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0OCBAQAorVGVzdCB0cmFu
c2ZlciBvZiBjb250cm9sIHNlbWFudGljcyBmb3IgQXJyYXlCdWZmZXJzLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc2FuaXR5IGNoZWNrCitQQVNTIHJhdyBBcnJheUJ1ZmZl
cgorUEFTUyBzZW5kaW5nIGJ1ZmZlcnMgaXMgc2FuZSBldmVuIGlmIGNsb25pbmcgZG9lc24ndCBz
cGVjaWFsLWNhc2UKK1BBU1Mgc2VuZCBldmVyeSB2aWV3CitQQVNTIHJhdyBJbnQzMgorUEFTUyBy
YXcgVWludDMyCitQQVNTIHJhdyBJbnQ4CitQQVNTIHJhdyBVaW50OAorUEFTUyByYXcgSW50MTYK
K1BBU1MgcmF3IFVpbnQxNgorUEFTUyByYXcgRmxvYXQzMgorUEFTUyByYXcgRmxvYXQ2NAorUEFT
UyByYXcgRGF0YVZpZXcKK1BBU1Mgc2VuZCB2aWV3LCBidWZmZXIgZm9yIEludDMyCitQQVNTIHNl
bmQgdmlldywgYnVmZmVyIGZvciBVaW50MzIKK1BBU1Mgc2VuZCB2aWV3LCBidWZmZXIgZm9yIElu
dDgKK1BBU1Mgc2VuZCB2aWV3LCBidWZmZXIgZm9yIFVpbnQ4CitQQVNTIHNlbmQgdmlldywgYnVm
ZmVyIGZvciBJbnQxNgorUEFTUyBzZW5kIHZpZXcsIGJ1ZmZlciBmb3IgVWludDE2CitQQVNTIHNl
bmQgdmlldywgYnVmZmVyIGZvciBGbG9hdDMyCitQQVNTIHNlbmQgdmlldywgYnVmZmVyIGZvciBG
bG9hdDY0CitQQVNTIHNlbmQgdmlldywgYnVmZmVyIGZvciBEYXRhVmlldworUEFTUyBzZW5kIGJ1
ZmZlciwgdmlldyBmb3IgSW50MzIKK1BBU1Mgc2VuZCBidWZmZXIsIHZpZXcgZm9yIFVpbnQzMgor
UEFTUyBzZW5kIGJ1ZmZlciwgdmlldyBmb3IgSW50OAorUEFTUyBzZW5kIGJ1ZmZlciwgdmlldyBm
b3IgVWludDgKK1BBU1Mgc2VuZCBidWZmZXIsIHZpZXcgZm9yIEludDE2CitQQVNTIHNlbmQgYnVm
ZmVyLCB2aWV3IGZvciBVaW50MTYKK1BBU1Mgc2VuZCBidWZmZXIsIHZpZXcgZm9yIEZsb2F0MzIK
K1BBU1Mgc2VuZCBidWZmZXIsIHZpZXcgZm9yIEZsb2F0NjQKK1BBU1Mgc2VuZCBidWZmZXIsIHZp
ZXcgZm9yIERhdGFWaWV3CitQQVNTIHNxdWFzaCB1bnJlbGF0ZWQgdmlld3MgZm9yIEludDMyCitQ
QVNTIHNxdWFzaCB1bnJlbGF0ZWQgdmlld3MgZm9yIFVpbnQzMgorUEFTUyBzcXVhc2ggdW5yZWxh
dGVkIHZpZXdzIGZvciBJbnQ4CitQQVNTIHNxdWFzaCB1bnJlbGF0ZWQgdmlld3MgZm9yIFVpbnQ4
CitQQVNTIHNxdWFzaCB1bnJlbGF0ZWQgdmlld3MgZm9yIEludDE2CitQQVNTIHNxdWFzaCB1bnJl
bGF0ZWQgdmlld3MgZm9yIFVpbnQxNgorUEFTUyBzcXVhc2ggdW5yZWxhdGVkIHZpZXdzIGZvciBG
bG9hdDMyCitQQVNTIHNxdWFzaCB1bnJlbGF0ZWQgdmlld3MgZm9yIEZsb2F0NjQKK1BBU1Mgc3F1
YXNoIHVucmVsYXRlZCB2aWV3cyBmb3IgRGF0YVZpZXcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wb3N0bWVzc2FnZS1hcmdzLWV4cGVjdGVkLnR4dAppbmRleCA0Yzg4YmFhLi5iMGEz
MmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXBvc3RtZXNzYWdlLWFyZ3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcG9zdG1lc3NhZ2Ut
YXJncy1leHBlY3RlZC50eHQKQEAgLTE5LDYgKzE5LDggQEAgUEFTUzogUG9zdGluZyBtZXNzYWdl
ICgnRycsIFtvYmplY3QgTWVzc2FnZVBvcnRdKTogdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRB
X0MKIFBBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgTWVzc2FnZVBvcnRdJywg
W29iamVjdCBNZXNzYWdlUG9ydF0pIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTOiBQ
b3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0IE1lc3NhZ2VQb3J0XScsIFtvYmplY3QgTWVzc2FnZVBv
cnRdKTogdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBEQVRBX0NMT05FX0VSUjogRE9NIEV4Y2VwdGlv
biAyNQogUEFTUzogUG9zdGluZyBtZXNzYWdlICgnMjE0NzQ4MzY0OCcsIG51bGwpIGRpZCBub3Qg
dGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTOiB3ZWJraXRQb3N0aW5nIG1lc3NhZ2UgKCdbb2JqZWN0
IEludDhBcnJheV0nLCBbb2JqZWN0IEFycmF5QnVmZmVyXSkgZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24KK1BBU1M6IHdlYmtpdFBvc3RpbmcgbWVzc2FnZSAoJ1tvYmplY3QgSW50OEFycmF5XScs
ICk6IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogREFUQV9DTE9ORV9FUlI6IERPTSBFeGNlcHRpb24g
MjUKIFBBU1M6IFBvc3RpbmcgbWVzc2FnZSAoJ2RvbmUnLCAqKSBkaWQgbm90IHRocm93IGFuIGV4
Y2VwdGlvbgogUmVjZWl2ZWQgbWVzc2FnZSAnNCcgd2l0aCAwIHBvcnRzLgogUmVjZWl2ZWQgbWVz
c2FnZSAnNScgd2l0aCAwIHBvcnRzLgpAQCAtMzAsNSArMzIsNiBAQCBSZWNlaXZlZCBtZXNzYWdl
ICdEJyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICdGJyB3aXRoIDEgcG9ydHMuCiBS
ZWNlaXZlZCBtZXNzYWdlICdbb2JqZWN0IE1lc3NhZ2VQb3J0XScgd2l0aCAxIHBvcnRzLgogUmVj
ZWl2ZWQgbWVzc2FnZSAnMjE0NzQ4MzY0OCcgd2l0aCAwIHBvcnRzLgorUmVjZWl2ZWQgbWVzc2Fn
ZSAnW29iamVjdCBJbnQ4QXJyYXldJyB3aXRoIDAgcG9ydHMuCiBSZWNlaXZlZCBtZXNzYWdlICdk
b25lJyB3aXRoIDAgcG9ydHMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZTc0Y2Q2Li5iNjU0M2E1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDExLTA4LTE5ICBMdWtlIFphcmtvICA8bHVrZXph
cmtvQGdtYWlsLmNvbT4KKworICAgICAgICBNYWtlIEFycmF5QnVmZmVycyBUcmFuc2ZlcmFibGUu
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NTc4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXJyYXlC
dWZmZXJzIGFyZSBzb29uIHRvIGJlY29tZSBvZmZpY2lhbGx5IFRyYW5zZmVyYWJsZSBvYmplY3Rz
LgorICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhpcyBiZWhhdmlvci4gVG8gdHJhbnNm
ZXIgYW4gQXJyYXlCdWZmZXI6CisgICAgICAgIC0gRmlyc3QsIGFsbCBvZiB0aGUgQXJyYXlCdWZm
ZXIncyB2aWV3cyBtdXN0IGJlIHNxdWFzaGVkOgorICAgICAgICAgIHNpbmNlIHRoZSB0aHJlYWQg
aXMgbG9zaW5nIGNvbnRyb2wgb2YgdGhlIEFycmF5QnVmZmVyLCBpdCBjYW4gbm8KKyAgICAgICAg
ICBsb25nZXIgYmUgcGVybWl0dGVkIHRvIGFjY2VzcyBpdC4gVGhpcyBpcyB0aGUgcHVycG9zZSBv
ZiB0aGUKKyAgICAgICAgICBuZXcgQXJyYXlCdWZmZXJIYW5kbGUgY2xhc3MuIFRoaXMgaW1wbGVt
ZW50YXRpb24gaGFuZGxlcworICAgICAgICAgIHNxdWFzaGluZyB0aGUgRE9NIG9iamVjdHMgYXMg
d2VsbCBhcyBhbnkgc2NyaXB0LXNpZGUgb2JqZWN0cy4KKyAgICAgICAgLSBUaGUgQXJyYXlCdWZm
ZXIgbG9zZXMgaXRzIGJhY2tpbmcgc3RvcmUgYW5kIGlzIGNvbnZlcnRlZCB0byBhbgorICAgICAg
ICAgIEFycmF5QnVmZmVyUmVjZWlwdC4gVGhlcmUgaXMgYSBmYWNpbGl0eSAoc2V0TmF0aXZlTG9j
aykKKyAgICAgICAgICBmb3IgbWFya2luZyB0aGUgQXJyYXlCdWZmZXIgc3VjaCB0aGF0IHRoZSBi
YWNraW5nIHN0b3JlIHdpbGwgYmUKKyAgICAgICAgICBjb3BpZWQgYW5kIG5vdCBleGNoYW5nZWQg
KGFsdGhvdWdoIGl0IHdpbGwgc3RpbGwgYXBwZWFyIHRvIGhhdmUKKyAgICAgICAgICBiZWVuIHRy
YW5zZmVycmVkIG91dCB0byBjbGllbnRzIG9mIHRoZSBUcmFuc2ZlcmFibGUgQVBJKS4KKyAgICAg
ICAgLSBPbiB0aGUgQ2hyb21pdW0vVjggc2lkZSwgQXJyYXlCdWZmZXJzIG1heSBuZWVkIHRvIGJl
IGZsYXR0ZW5lZAorICAgICAgICAgIHRvIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZXMgaWYgdGhleSBh
cmUgc2VudCBhY3Jvc3MgSVBDIGNoYW5uZWxzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2NhbnZh
cy93ZWJnbC9hcnJheS10cmFuc2Zlci1vZi1jb250cm9sLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3Qvd29ya2Vycy9mbGF0dGVuLXNlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLW1lc3NhZ2Vwb3J0LWFycmF5Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtYXJyYXkuaHRt
bAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNxdWFzaEJpbmRpbmdJbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RhdGFWaWV3Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFWaWV3OjpzcXVh
c2hCaW5kaW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdDMyQXJyYXk6OnNxdWFzaEJpbmRpbmcpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRmxvYXQ2NEFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0NjRBcnJheTo6c3F1YXNoQmluZGluZyk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludDE2QXJyYXk6
OnNxdWFzaEJpbmRpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnQzMkFycmF5OjpzcXVhc2hCaW5kaW5nKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnQ4QXJyYXk6OnNxdWFzaEJpbmRpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9OYXRpdmVUcmFuc2Zl
cmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6dG9KU1RyYW5zZmVyYWJsZSk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpV
aW50MTZBcnJheTo6c3F1YXNoQmluZGluZyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVaW50
MzJBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVaW50MzJBcnJheTo6c3F1YXNo
QmluZGluZyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlVpbnQ4QXJyYXk6OnNxdWFzaEJpbmRpbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RN
YXA6OldyaXRlcjo6d3JpdGVGbGF0dGVuZWRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
T2JqZWN0TWFwOjpXcml0ZXI6OndyaXRlRmxhdHRlbmVkQXJyYXlCdWZmZXJSZWNlaXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpXcml0ZXI6OndyaXRlQXJyYXlCdWZmZXJWaWV3
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpXcml0ZXI6OmFwcGVuZFJhd1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6V3JpdGVyOjpkb1dyaXRlQXJyYXlC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlNlcmlhbGl6ZXI6OndyaXRl
QW5kR3JleUFycmF5QnVmZmVyVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVjdE1hcDo6
U2VyaWFsaXplcjo6d3JpdGVBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpWOE9iamVj
dE1hcDo6U2VyaWFsaXplcjo6ZG9TZXJpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmpl
Y3RNYXA6OlJlYWRlcjo6UmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpS
ZWFkZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlJlYWRlcjo6cmVh
ZFZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhPYmplY3RNYXA6OlJlYWRlcjo6aXNSZWFk
aW5nRmxhdHRlbmVkUHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpEZXNl
cmlhbGl6ZXI6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlY4T2JqZWN0TWFwOjpE
ZXNlcmlhbGl6ZXI6OmluaXRpYWxpemVPYmplY3RQb29sKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
T2JqZWN0TWFwOjpEZXNlcmlhbGl6ZXI6OmdldEZsYXR0ZW5lZEluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJlY2VpcHRMaXN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxpdFN0
cmluZ1RvTlApOgorICAgICAgICAoV2ViQ29yZTo6YmxpdFN0cmluZ0Zyb21OUCk6CisgICAgICAg
IChXZWJDb3JlOjpzZXJpYWxpemVWOCk6CisgICAgICAgIChXZWJDb3JlOjpmbGF0dGVuU2VyaWFs
aXplZFZhbHVlVjgpOgorICAgICAgICAoV2ViQ29yZTo6ZGVzZXJpYWxpemVWOCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhOUFV0aWxzLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpzcXVhc2hCaW5k
aW5nSW1wbCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVZpZXc6OnNxdWFzaEJpbmRpbmcpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0MzJBcnJheUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdDMyQXJyYXk6OnNxdWFzaEJpbmRpbmcpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEZsb2F0NjRBcnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGbG9hdDY0QXJyYXk6OnNxdWFzaEJpbmRpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOEludDE2QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50MTZBcnJh
eTo6c3F1YXNoQmluZGluZyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50MzJB
cnJheUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnQzMkFycmF5OjpzcXVhc2hCaW5k
aW5nKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnQ4QXJyYXlDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50OEFycmF5OjpzcXVhc2hCaW5kaW5nKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b05hdGl2ZVRyYW5zZmVyYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4VHJh
bnNmZXJhYmxlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50MTZBcnJheUN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVaW50MTZBcnJheTo6c3F1YXNoQmluZGluZyk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDMyQXJyYXlDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VWludDMyQXJyYXk6OnNxdWFzaEJpbmRpbmcpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VWludDhBcnJheTo6c3F1YXNoQmluZGluZyk6CisgICAgICAgICogZG9tL1RyYW5zZmVy
YWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmZXJhYmxlOjphc0FycmF5QnVmZmVyKToK
KyAgICAgICAgKiBkb20vVHJhbnNmZXJhYmxlUmVjZWlwdC5oOgorICAgICAgICAoV2ViQ29yZTo6
VHJhbnNmZXJhYmxlUmVjZWlwdDo6YXNBcnJheUJ1ZmZlclJlY2VpcHQpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5QnVmZmVy
OjpBcnJheUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBcnJheUJ1ZmZlcjo6d2FzVHJhbnNm
ZXJyZWRPdXQpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlCdWZmZXI6OnRyYW5zZmVyT3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFycmF5QnVmZmVyOjpyZW1vdmVIYW5kbGUpOgorICAgICAgICAo
V2ViQ29yZTo6QXJyYXlCdWZmZXI6OmFkZEhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpBcnJh
eUJ1ZmZlckhhbmRsZTo6QXJyYXlCdWZmZXJIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6QXJy
YXlCdWZmZXJIYW5kbGU6On5BcnJheUJ1ZmZlckhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cnJheUJ1ZmZlckhhbmRsZTo6c3F1YXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5QnVmZmVy
UmVjZWlwdDo6dHJhbnNmZXJJbik6CisgICAgICAgIChXZWJDb3JlOjpBcnJheUJ1ZmZlclJlY2Vp
cHQ6On5BcnJheUJ1ZmZlclJlY2VpcHQpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlCdWZmZXJS
ZWNlaXB0OjphZG9wdCk6CisgICAgICAgIChXZWJDb3JlOjpBcnJheUJ1ZmZlclJlY2VpcHQ6OnJl
bGVhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlCdWZmZXJSZWNlaXB0OjpkYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFycmF5QnVmZmVyUmVjZWlwdDo6Ynl0ZUxlbmd0aCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5QnVm
ZmVyOjphc0FycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5QnVmZmVySGFuZGxl
OjpidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXJyYXlCdWZmZXJSZWNlaXB0Ojphc0FycmF5
QnVmZmVyUmVjZWlwdCk6CisgICAgICAgIChXZWJDb3JlOjpBcnJheUJ1ZmZlclJlY2VpcHQ6OkFy
cmF5QnVmZmVyUmVjZWlwdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3
KToKKyAgICAgICAgKFdlYkNvcmU6OkFycmF5QnVmZmVyVmlldzo6c3F1YXNoKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9E
YXRhVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVmlldzo6c3F1YXNoKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9EYXRhVmlldy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Zsb2F0
MzJBcnJheS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0Zsb2F0NjRBcnJheS5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0ludDE2QXJyYXkuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9JbnQz
MkFycmF5Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvSW50OEFycmF5Lmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvVHlwZWRBcnJheUJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlR5cGVkQXJy
YXlCYXNlOjpzcXVhc2gpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1VpbnQxNkFycmF5Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvVWludDMyQXJyYXkuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9VaW50OEFycmF5Lmg6CisKIDIwMTEtMDgtMTAgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBn
b29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGF1dG8tY29tcGxldGlvbiBmb3Ig
c3RyaW5nIGxpdGVyYWxzIGRvZXNuJ3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgKaW5kZXggNGY4YTRmNC4uNmI1NGJl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZp
ZXdIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVy
Vmlld0hlbHBlci5oCkBAIC0zMSw5ICszMSwxMSBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPGludGVycHJldGVy
L0NhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJnTGlzdC5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsRGF0YS5oPgogI2luY2x1
ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTVmFsdWUuaD4KIApA
QCAtMTc1LDYgKzE3NywzMCBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIHRvSlNBcnJheUJ1ZmZlclZp
ZXcoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KgogICAgIHJldHVybiBj
cmVhdGVXcmFwcGVyPEpTVHlwZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBvYmplY3QpOwogfQogCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSlNUeXBlLCB0eXBlbmFtZSBXZWJDb3JlVHlwZT4KK3ZvaWQgc3F1
YXNoQmluZGluZ0ltcGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViQ29yZVR5
cGUqIHdlYkNvcmVBcnJheSkKK3sKKyAgICAvLyBGSVhNRTogaWYgaW4gdGhlIGZ1dHVyZSBKU0Mg
aW5saW5lcyB0eXBlZCBhcnJheSBhY2Nlc3Nlcywgc29tZXRoaW5nIGxpa2UgdGhpcyB3aWxsIGJl
IG5lY2Vzc2FyeQorICAgIC8vIHRvIHNxdWFzaCBiaW5kaW5ncy4KKyAgICAvKgorICAgIEpTQzo6
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gY29udGV4dC0+Z2xvYmFsRGF0YSgpOworICAgIFdl
YkNvcmVKU0NsaWVudERhdGEqIGNsaWVudERhdGEgPSBzdGF0aWNfY2FzdDxXZWJDb3JlSlNDbGll
bnREYXRhKj4oZ2xvYmFsRGF0YS0+Y2xpZW50RGF0YSk7CisgICAgVmVjdG9yPERPTVdyYXBwZXJX
b3JsZCo+IHdvcmxkczsKKyAgICBjbGllbnREYXRhLT5nZXRBbGxXb3JsZHMod29ybGRzKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIHcgPSAwOyB3IDwgd29ybGRzLnNpemUoKTsgKyt3KSB7CisgICAgICAg
IERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSB3b3JsZHNbd107CisgICAgICAgIGlmIChKU0RPTVdy
YXBwZXIqIHdyYXBwZXIgPSBnZXRDYWNoZWRXcmFwcGVyKHdvcmxkLCB3ZWJDb3JlQXJyYXkpKSB7
CisgICAgICAgICAgICAvLyBXZSd2ZSBjcmVhdGVkIGEgRE9NIHdyYXBwZXIgb2JqZWN0IGluIHRo
aXMgd29ybGQgYW5kIG5lZWQgdG8gc3F1YXNoIGl0LgorICAgICAgICAgICAgLy8gLi4uIGJ1dCBp
dCBzZWVtcyBhcyB0aG91Z2ggSlNDIGRvZXNuJ3QgaGF2ZSBmYXN0LXBhdGggdHlwZWQgYXJyYXlz
IGFueWhvdy4KKyAgICAgICAgICAgIEpTVHlwZSoganNXcmFwcGVyID0gc3RhdGljX2Nhc3Q8SlNU
eXBlKj4od3JhcHBlcik7CisgICAgICAgICAgICAodm9pZClqc1dyYXBwZXI7CisgICAgICAgIH0K
KyAgICB9CisgICAgKi8KKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BB
UkFNKHdlYkNvcmVBcnJheSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggODdkNDQ1OC4uNjgyZWIwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTE1
Niw0ICsxNTYsOSBAQCBKU1ZhbHVlIEpTRGF0YVZpZXc6OnNldFVpbnQ4KEV4ZWNTdGF0ZSogZXhl
YykKICAgICByZXR1cm4gc2V0RGF0YVZpZXdNZW1iZXIoZXhlYywgc3RhdGljX2Nhc3Q8RGF0YVZp
ZXcqPihpbXBsKCkpLCBBY2Nlc3NEYXRhVmlld01lbWJlckFzVWludDgpOwogfQogCit2b2lkIERh
dGFWaWV3OjpzcXVhc2hCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7
CisgICAgc3F1YXNoQmluZGluZ0ltcGw8SlNEYXRhVmlldz4oY29udGV4dCwgdGhpcyk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRmxvYXQzMkFycmF5Q3VzdG9tLmNwcAppbmRleCA1ZGE2OWI0Li4wMjJmYjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0MzJBcnJheUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDMyQXJyYXlDdXN0b20u
Y3BwCkBAIC01OCw0ICs1OCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNGbG9h
dDMyQXJyYXlDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNGbG9hdDMyQXJyYXkoCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKIH0KIAordm9pZCBGbG9hdDMyQXJyYXk6OnNxdWFz
aEJpbmRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBzcXVhc2hC
aW5kaW5nSW1wbDxKU0Zsb2F0MzJBcnJheT4oY29udGV4dCwgdGhpcyk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmxv
YXQ2NEFycmF5Q3VzdG9tLmNwcAppbmRleCA0NDZiMGVjLi41MzEyZmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zsb2F0NjRBcnJheUN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGbG9hdDY0QXJyYXlDdXN0b20uY3BwCkBAIC01
OCw0ICs1OCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNGbG9hdDY0QXJyYXlD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNGbG9hdDY0QXJyYXkoCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgp
LCBhcnJheS5nZXQoKSkpKTsKIH0KIAordm9pZCBGbG9hdDY0QXJyYXk6OnNxdWFzaEJpbmRpbmco
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBzcXVhc2hCaW5kaW5nSW1w
bDxKU0Zsb2F0NjRBcnJheT4oY29udGV4dCwgdGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MTZBcnJh
eUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDE2QXJyYXlDdXN0
b20uY3BwCmluZGV4IDg3ZWE2ZmUuLmJkZWRlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW50MTZBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnQxNkFycmF5Q3VzdG9tLmNwcApAQCAtNTgsNCArNTgsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTSW50MTZBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RKU0ludDE2QXJyYXkoRXhlYwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3Qo
dG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7
CiB9CiAKK3ZvaWQgSW50MTZBcnJheTo6c3F1YXNoQmluZGluZyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQoreworICAgIHNxdWFzaEJpbmRpbmdJbXBsPEpTSW50MTZBcnJheT4oY29u
dGV4dCwgdGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDMyQXJyYXlDdXN0b20uY3BwCmluZGV4IDhiODI0YTcu
LmY5NDYzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50MzJB
cnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQzMkFy
cmF5Q3VzdG9tLmNwcApAQCAtNTgsNCArNTgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTSW50MzJBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0ludDMyQXJyYXkoRXhlYwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVj
dG9yLT5nbG9iYWxPYmplY3QoKSwgYXJyYXkuZ2V0KCkpKSk7CiB9CiAKK3ZvaWQgSW50MzJBcnJh
eTo6c3F1YXNoQmluZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAg
IHNxdWFzaEJpbmRpbmdJbXBsPEpTSW50MzJBcnJheT4oY29udGV4dCwgdGhpcyk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW50OEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW50OEFycmF5Q3VzdG9tLmNwcAppbmRleCBkY2JjYzVhLi5hMzY4ZmZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludDhBcnJheUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnQ4QXJyYXlDdXN0b20uY3BwCkBAIC01OSw0ICs1
OSw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0SlNJbnQ4QXJyYXkoRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJh
eS5nZXQoKSkpKTsKIH0KIAordm9pZCBJbnQ4QXJyYXk6OnNxdWFzaEJpbmRpbmcoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBzcXVhc2hCaW5kaW5nSW1wbDxKU0ludDhB
cnJheT4oY29udGV4dCwgdGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKaW5k
ZXggZTQwNDE1ZS4uZmVhZTg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKQEAgLTI2LDkgKzI2LDExIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgogCisjaW5jbHVkZSAiQXJyYXlC
dWZmZXIuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRXZlbnQuaCIKICNpbmNsdWRlICJK
U0V2ZW50TGlzdGVuZXIuaCIKQEAgLTEwOSw2ICsxMTEsOSBAQCBQYXNzUmVmUHRyPFRyYW5zZmVy
YWJsZT4gdG9OYXRpdmVUcmFuc2ZlcmFibGUoSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIFJlZlB0
cjxUcmFuc2ZlcmFibGU+IG91dFZhbHVlID0gdG9NZXNzYWdlUG9ydCh2YWx1ZSk7CiAgICAgaWYg
KG91dFZhbHVlKQogICAgICAgICByZXR1cm4gb3V0VmFsdWUucmVsZWFzZSgpOworICAgIG91dFZh
bHVlID0gdG9BcnJheUJ1ZmZlcih2YWx1ZSk7CisgICAgaWYgKG91dFZhbHVlKQorICAgICAgICBy
ZXR1cm4gb3V0VmFsdWUucmVsZWFzZSgpOwogICAgIC8vIFdlJ2xsIHJldHVybiBudWxsIGlmIHZh
bHVlIGlzIG5vdCBUcmFuc2ZlcmFibGUgaW4gYW55IGNhc2UuCiAgICAgcmV0dXJuIG91dFZhbHVl
LnJlbGVhc2UoKTsKIH0KQEAgLTExNyw2ICsxMjIsOCBAQCBKU0M6OkpTVmFsdWUgdG9KU1RyYW5z
ZmVyYWJsZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogewogICAgIGlmIChNZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQgPSB2YWx1ZS0+YXNNZXNzYWdl
UG9ydCgpKQogICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG1lc3NhZ2VQ
b3J0KTsKKyAgICBpZiAoQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gdmFsdWUtPmFzQXJyYXlC
dWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJheUJ1
ZmZlcik7CiAgICAgLy8gVGhpcyB0eXBlY2FzZSBzaG91bGQgYWx3YXlzIGJlIHRvdGFsLgogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3Bw
CmluZGV4IDE2ZjlkYjIuLjVjYmU5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwCkBAIC01OCw0ICs1OCw5IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNVaW50MTZBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1VpbnQxNkFycmF5KEV4CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pT
KGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKIH0K
IAordm9pZCBVaW50MTZBcnJheTo6c3F1YXNoQmluZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQoreworICAgIHNxdWFzaEJpbmRpbmdJbXBsPEpTVWludDE2QXJyYXk+KGNvbnRl
eHQsIHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwCmluZGV4IDFlMDcxYzku
LjQzNGI4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMy
QXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMy
QXJyYXlDdXN0b20uY3BwCkBAIC01OCw0ICs1OCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNVaW50MzJBcnJheUNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1VpbnQzMkFycmF5KEV4
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3Ry
dWN0b3ItPmdsb2JhbE9iamVjdCgpLCBhcnJheS5nZXQoKSkpKTsKIH0KIAordm9pZCBVaW50MzJB
cnJheTo6c3F1YXNoQmluZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorewor
ICAgIHNxdWFzaEJpbmRpbmdJbXBsPEpTVWludDMyQXJyYXk+KGNvbnRleHQsIHRoaXMpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcAppbmRleCBlOTBmOGU5Li4xYzcwOWJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAKQEAg
LTU4LDQgKzU4LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1VpbnQ4QXJyYXlD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNVaW50OEFycmF5KEV4ZWMKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0
KCksIGFycmF5LmdldCgpKSkpOwogfQogCit2b2lkIFVpbnQ4QXJyYXk6OnNxdWFzaEJpbmRpbmco
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBzcXVhc2hCaW5kaW5nSW1w
bDxKU1VpbnQ4QXJyYXk+KGNvbnRleHQsIHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCA1M2I2YjVlLi4xNDhlMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI3LDExICsy
NywxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgogCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJCbG9iLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJG
aWxlTGlzdC5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZm
ZXIuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkpTQmxvYi5o
IgogI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNGaWxlLmgiCkBA
IC01MDcsNiArNTEwLDIzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoTnVsbFRh
Zyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAob2JqLT5pbmhlcml0cygmSlNBcnJheUJ1ZmZlcjo6c19pbmZvKSkgeworICAgICAg
ICAgICAgICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IHRvQXJyYXlCdWZmZXIob2JqKTsK
KyAgICAgICAgICAgICAgICBpZiAoYXJyYXlCdWZmZXItPndhc1RyYW5zZmVycmVkT3V0KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKG1fZXhlYywgREFUQV9DTE9ORV9F
UlIpOworICAgICAgICAgICAgICAgICAgICB3cml0ZShOdWxsVGFnKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7IAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzKCZKU0FycmF5QnVmZmVyVmlldzo6c19pbmZvKSkg
eworICAgICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogdmlldyA9IHRvQXJyYXlCdWZmZXJW
aWV3KG9iaik7CisgICAgICAgICAgICAgICAgaWYgKCF2aWV3LT5idWZmZXIoKSB8fCB2aWV3LT5i
dWZmZXIoKS0+d2FzVHJhbnNmZXJyZWRPdXQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIHZpZXcgd2FzIHNxdWFzaGVkLCBzbyB3ZSdyZSBub3QgYWxsb3dlZCB0byBsb29rIGF0IGl0
IGFueSBsb25nZXIuCisgICAgICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihtX2V4ZWMs
IERBVEFfQ0xPTkVfRVJSKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoTnVsbFRhZyk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgQ2FsbERhdGEgdW51c2VkRGF0YTsKICAgICAgICAgICAg
IGlmIChnZXRDYWxsRGF0YSh2YWx1ZSwgdW51c2VkRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggYTczMjI5Mi4uOTE3YzE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yMDYsNiArMjA2LDggQEAg
ZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAgICBOdW1iZXJPYmplY3RUYWcgPSAnbicsIC8vIHZh
bHVlOmRvdWJsZSAtPiBuZXcgTnVtYmVyKHZhbHVlKSAocmVmKQogICAgIFRydWVPYmplY3RUYWcg
PSAneScsIC8vIG5ldyBCb29sZWFuKHRydWUpIChyZWYpCiAgICAgRmFsc2VPYmplY3RUYWcgPSAn
eCcsIC8vIG5ldyBCb29sZWFuKGZhbHNlKSAocmVmKQorICAgIEZsYXR0ZW5lZEFycmF5QnVmZmVy
VGFnID0gMHhGMCwgLy8gcmVmOnVpbnQzMl90LCBieXRlTGVuZ3RoOnVpbnQzMl90LCBkYXRhOmJ5
dGVbYnl0ZUxlbmd0aF0KKyAgICBGbGF0dGVuZWRQcmVmaXhUYWcgPSAweEZFLCAvLyB2ZXJzaW9u
OnVpbnQzMl90CiAgICAgVmVyc2lvblRhZyA9IDB4RkYgLy8gdmVyc2lvbjp1aW50MzJfdCAtPiBV
c2VzIHRoaXMgYXMgdGhlIGZpbGUgdmVyc2lvbi4KIH07CiAKQEAgLTMxOCw2ICszMjAsMTIgQEAg
cHVibGljOgogICAgICAgICBkb1dyaXRlVWludDMyKHdpcmVGb3JtYXRWZXJzaW9uKTsKICAgICB9
CiAKKyAgICB2b2lkIHdyaXRlRmxhdHRlbmVkVmVyc2lvbigpCisgICAgeworICAgICAgICBhcHBl
bmQoRmxhdHRlbmVkUHJlZml4VGFnKTsKKyAgICAgICAgZG9Xcml0ZVVpbnQzMih3aXJlRm9ybWF0
VmVyc2lvbik7CisgICAgfQorCiAgICAgdm9pZCB3cml0ZUludDMyKGludDMyX3QgdmFsdWUpCiAg
ICAgewogICAgICAgICBhcHBlbmQoSW50MzJUYWcpOwpAQCAtMzgyLDEzICszOTAsMjIgQEAgcHVi
bGljOgogICAgICAgICBkb1dyaXRlQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpOwogICAgIH0KIAor
ICAgIHZvaWQgd3JpdGVGbGF0dGVuZWRBcnJheUJ1ZmZlclJlY2VpcHQoY29uc3QgQXJyYXlCdWZm
ZXJSZWNlaXB0JiBhcnJheUJ1ZmZlclJlY2VpcHQsIHVpbnQzMl90IHJlZmVyZW5jZSkKKyAgICB7
CisgICAgICAgIGFwcGVuZChGbGF0dGVuZWRBcnJheUJ1ZmZlclRhZyk7CisgICAgICAgIGRvV3Jp
dGVVaW50MzIocmVmZXJlbmNlKTsKKyAgICAgICAgZG9Xcml0ZUFycmF5QnVmZmVyKGFycmF5QnVm
ZmVyUmVjZWlwdC5ieXRlTGVuZ3RoKCksIGFycmF5QnVmZmVyUmVjZWlwdC5kYXRhKCkpOworICAg
IH0KKwogICAgIHZvaWQgd3JpdGVBcnJheUJ1ZmZlclZpZXcoY29uc3QgQXJyYXlCdWZmZXJWaWV3
JiBhcnJheUJ1ZmZlclZpZXcpCiAgICAgewogICAgICAgICBhcHBlbmQoQXJyYXlCdWZmZXJWaWV3
VGFnKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBhcnJheUJ1
ZmZlciA9ICphcnJheUJ1ZmZlclZpZXcuYnVmZmVyKCk7Ci0gICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXIuZGF0YSgpKSArIGFycmF5QnVmZmVyVmll
dy5ieXRlT2Zmc2V0KCkgPT0KLSAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhcnJheUJ1ZmZlclZpZXcuYmFzZUFkZHJlc3MoKSkpOworICAgICAgICBpZiAoYXJyYXlC
dWZmZXJWaWV3LmJ1ZmZlcigpKSB7CisgICAgICAgICAgICBjb25zdCBBcnJheUJ1ZmZlciYgYXJy
YXlCdWZmZXIgPSAqYXJyYXlCdWZmZXJWaWV3LmJ1ZmZlcigpOworICAgICAgICAgICAgQVNTRVJU
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlci5kYXRhKCkpICsgYXJyYXlC
dWZmZXJWaWV3LmJ5dGVPZmZzZXQoKSA9PQorICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXcuYmFzZUFkZHJlc3MoKSkpOworICAgICAg
ICB9CiAjZW5kaWYKICAgICAgICAgaWYgKGFycmF5QnVmZmVyVmlldy5pc0J5dGVBcnJheSgpKQog
ICAgICAgICAgICAgYXBwZW5kKEJ5dGVBcnJheVRhZyk7CkBAIC00NzksMTIgKzQ5NiwyNSBAQCBw
dWJsaWM6CiAgICAgICAgIGRvV3JpdGVVaW50MzIobGVuZ3RoKTsKICAgICB9CiAKKyAgICB2b2lk
IGFwcGVuZFJhd1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlu
dCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIGlmICghbGVuZ3RoKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBmaWxsSG9sZSgpOworICAgICAgICBhcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMoKSksIGxlbmd0aCAq
IHNpemVvZigqc3RyaW5nLmNoYXJhY3RlcnMoKSkpOworICAgIH0KKwogcHJpdmF0ZToKLSAgICB2
b2lkIGRvV3JpdGVBcnJheUJ1ZmZlcihjb25zdCBBcnJheUJ1ZmZlciYgYXJyYXlCdWZmZXIpCisg
ICAgdm9pZCBkb1dyaXRlQXJyYXlCdWZmZXIodWludDMyX3QgYnl0ZUxlbmd0aCwgY29uc3Qgdm9p
ZCogZGF0YSkKICAgICB7Ci0gICAgICAgIHVpbnQzMl90IGJ5dGVMZW5ndGggPSBhcnJheUJ1ZmZl
ci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGRvV3JpdGVVaW50MzIoYnl0ZUxlbmd0aCk7Ci0gICAg
ICAgIGFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXIuZGF0YSgp
KSwgYnl0ZUxlbmd0aCk7CisgICAgICAgIGFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGJ5dGVMZW5ndGgpOworICAgIH0KKworICAgIHZvaWQgZG9Xcml0ZUFycmF5QnVm
ZmVyKGNvbnN0IEFycmF5QnVmZmVyJiBhcnJheUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGRvV3Jp
dGVBcnJheUJ1ZmZlcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKCksIGFycmF5QnVmZmVyLmRhdGEo
KSk7CiAgICAgfQogCiAgICAgdm9pZCBkb1dyaXRlU3RyaW5nKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpCkBAIC05NjMsNiArOTkzLDggQEAgcHJpdmF0ZToKICAgICAgICAgQXJyYXlCdWZm
ZXJWaWV3KiBhcnJheUJ1ZmZlclZpZXcgPSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUob2Jq
ZWN0KTsKICAgICAgICAgaWYgKCFhcnJheUJ1ZmZlclZpZXcpCiAgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgaWYgKCFhcnJheUJ1ZmZlclZpZXctPmJ1ZmZlcigpIHx8IGFycmF5QnVmZmVy
Vmlldy0+YnVmZmVyKCktPndhc1RyYW5zZmVycmVkT3V0KCkpCisgICAgICAgICAgICByZXR1cm4g
aGFuZGxlRXJyb3IoRGF0YUNsb25lRXJyb3IsIG5leHQpOwogICAgICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdW5kZXJseWluZ0J1ZmZlciA9IHRvVjgoYXJyYXlCdWZmZXJWaWV3LT5idWZmZXIo
KSk7CiAgICAgICAgIGlmICh1bmRlcmx5aW5nQnVmZmVyLklzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybiBoYW5kbGVFcnJvcihEYXRhQ2xvbmVFcnJvciwgbmV4dCk7CkBAIC05ODIsMTEgKzEw
MTQsOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICB2b2lkIHdy
aXRlQXJyYXlCdWZmZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQorICAgIHZvaWQgd3Jp
dGVBcnJheUJ1ZmZlcihBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIpCiAgICAgewotICAgICAgICBB
cnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2YWx1ZS5B
czx2ODo6T2JqZWN0PigpKTsKLSAgICAgICAgaWYgKCFhcnJheUJ1ZmZlcikKLSAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgbV93cml0ZXIud3JpdGVBcnJheUJ1ZmZlcigqYXJyYXlCdWZmZXIp
OwogICAgIH0KIApAQCAtMTExOCw5ICsxMTQ3LDEyIEBAIFNlcmlhbGl6ZXI6OlN0YXRlQmFzZSog
U2VyaWFsaXplcjo6ZG9TZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBTdGF0
CiAgICAgICAgICAgICB3cml0ZUltYWdlRGF0YSh2YWx1ZSk7CiAgICAgICAgIGVsc2UgaWYgKHZh
bHVlLT5Jc1JlZ0V4cCgpKQogICAgICAgICAgICAgd3JpdGVSZWdFeHAodmFsdWUpOwotICAgICAg
ICBlbHNlIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh2YWx1ZSkpCi0gICAgICAgICAg
ICB3cml0ZUFycmF5QnVmZmVyKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAodmFsdWUtPklzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFs
dWUpKSB7CisgICAgICAgICAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSBWOEFycmF5QnVm
ZmVyOjp0b05hdGl2ZSh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpKTsKKyAgICAgICAgICAgIGlmICgh
YXJyYXlCdWZmZXIgfHwgYXJyYXlCdWZmZXItPndhc1RyYW5zZmVycmVkT3V0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKERhdGFDbG9uZUVycm9yLCBuZXh0KTsKKyAgICAg
ICAgICAgIHdyaXRlQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpOworICAgICAgICB9IGVsc2UgaWYg
KHZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAoaXNIb3N0T2JqZWN0KGpzT2Jq
ZWN0KSB8fCBqc09iamVjdC0+SXNDYWxsYWJsZSgpIHx8IHZhbHVlLT5Jc05hdGl2ZUVycm9yKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKERhdGFDbG9uZUVycm9yLCBuZXh0
KTsKICAgICAgICAgICAgIG1fd3JpdGVyLndyaXRlR2VuZXJhdGVGcmVzaE9iamVjdCgpOwpAQCAt
MTE0NSw2ICsxMTc3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjb21wbGV0ZUFycmF5
KHVpbnQzMl90IGxlbmd0aCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KikgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBjb21wbGV0ZU9iamVjdCh1aW50MzJfdCBudW1Qcm9wZXJ0aWVzLCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4qKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNvbXBsZXRlU3BhcnNlQXJyYXko
dWludDMyX3QgbnVtUHJvcGVydGllcywgdWludDMyX3QgbGVuZ3RoLCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4qKSA9IDA7CisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemVPYmplY3RQb29sKGJvb2wg
ZmlsbEhvbGVzKSA9IDA7CisgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4qIGdldEZs
YXR0ZW5lZEluZGV4KHVpbnQzMl90IGZvckluZGV4KSA9IDA7CiB9OwogCiAvLyBSZWFkZXIgaXMg
cmVzcG9uc2libGUgZm9yIGRlc2VyaWFsaXppbmcgcHJpbWl0aXZlIHR5cGVzIGFuZApAQCAtMTE1
Niw2ICsxMTkwLDcgQEAgcHVibGljOgogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAg
ICAgLCBtX3Bvc2l0aW9uKDApCiAgICAgICAgICwgbV92ZXJzaW9uKDApCisgICAgICAgICwgbV9p
c1JlYWRpbmdGbGF0dGVuZWRQcmVmaXgoZmFsc2UpCiAgICAgewogICAgICAgICBBU1NFUlQobGVu
Z3RoID49IDApOwogICAgIH0KQEAgLTExNjgsNiArMTIwMywxNiBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICghcmVhZFRhZygmdGFnKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
c3dpdGNoICh0YWcpIHsKKyAgICAgICAgY2FzZSBWZXJzaW9uVGFnOiB7CisgICAgICAgICAgICBp
ZiAoIW1faXNSZWFkaW5nRmxhdHRlbmVkUHJlZml4KQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlY29uZFZlcnNpb25UYWc7CisgICAgICAgICAg
ICBpZiAoIWRvUmVhZFVpbnQzMigmc2Vjb25kVmVyc2lvblRhZykgfHwgc2Vjb25kVmVyc2lvblRh
ZyAhPSBtX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgbV9pc1JlYWRpbmdGbGF0dGVuZWRQcmVmaXggPSBmYWxzZTsKKyAgICAgICAgICAgIGNyZWF0
b3IuaW5pdGlhbGl6ZU9iamVjdFBvb2wodHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIFJlZmVyZW5jZUNvdW50VGFnOiB7CiAgICAgICAgICAg
ICBpZiAobV92ZXJzaW9uIDw9IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTMwNCw2ICsxMzQ5LDE5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNyZWF0b3IucHVzaE9iamVj
dFJlZmVyZW5jZSgqdmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBGbGF0dGVuZWRBcnJheUJ1ZmZlclRhZzogeworICAgICAgICAgICAgaWYgKCFtX2lz
UmVhZGluZ0ZsYXR0ZW5lZFByZWZpeCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB1aW50MzJfdCByZWZlcmVuY2U7CisgICAgICAgICAgICBpZiAoIWRvUmVhZFVp
bnQzMigmcmVmZXJlbmNlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4qIGJ1ZmZlckFkZHJlc3MgPSBjcmVhdG9yLmdldEZs
YXR0ZW5lZEluZGV4KHJlZmVyZW5jZSk7CisgICAgICAgICAgICBpZiAoIWJ1ZmZlckFkZHJlc3Mg
fHwgIWJ1ZmZlckFkZHJlc3MtPklzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIXJlYWRBcnJheUJ1ZmZlcihidWZmZXJBZGRyZXNzKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIEdlbmVyYXRlRnJlc2hPYmplY3RUYWc6IHsKICAgICAgICAg
ICAgIGlmIChtX3ZlcnNpb24gPD0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMzQ1LDYgKzE0MDMsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgdmVyc2lvbiA9IDA7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICBpZiAodGFnID09IEZs
YXR0ZW5lZFByZWZpeFRhZykgeworICAgICAgICAgICAgbV9pc1JlYWRpbmdGbGF0dGVuZWRQcmVm
aXggPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGRvUmVhZFVpbnQzMigmdmVyc2lvbik7Cisg
ICAgICAgIH0KICAgICAgICAgaWYgKHRhZyAhPSBWZXJzaW9uVGFnKSB7CiAgICAgICAgICAgICAv
LyBWZXJzaW9ucyBvZiB0aGUgZm9ybWF0IHBhc3QgMCBzdGFydCB3aXRoIHRoZSB2ZXJzaW9uIHRh
Zy4KICAgICAgICAgICAgIHZlcnNpb24gPSAwOwpAQCAtMTM2MSw2ICsxNDIzLDggQEAgcHVibGlj
OgogICAgICAgICBtX3ZlcnNpb24gPSB2ZXJzaW9uOwogICAgIH0KIAorICAgIGJvb2wgaXNSZWFk
aW5nRmxhdHRlbmVkUHJlZml4KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlYWRpbmdGbGF0dGVuZWRQ
cmVmaXg7IH0KKwogcHJpdmF0ZToKICAgICBib29sIHJlYWRUYWcoU2VyaWFsaXphdGlvblRhZyog
dGFnKQogICAgIHsKQEAgLTE2OTIsNiArMTc1Niw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgdW5z
aWduZWQgbV9sZW5ndGg7CiAgICAgdW5zaWduZWQgbV9wb3NpdGlvbjsKICAgICB1aW50MzJfdCBt
X3ZlcnNpb247CisgICAgYm9vbCBtX2lzUmVhZGluZ0ZsYXR0ZW5lZFByZWZpeDsKIH07CiAKIGNs
YXNzIERlc2VyaWFsaXplciA6IHB1YmxpYyBDb21wb3NpdGVDcmVhdG9yIHsKQEAgLTE3MDUsMTAg
KzE3NzAsMTAgQEAgcHVibGljOgogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRlc2VyaWFs
aXplKCkKICAgICB7Ci0gICAgICAgIGlmICghaW5pdGlhbGl6ZU9iamVjdFBvb2woKSkKLSAgICAg
ICAgICAgIHJldHVybiB2ODo6TnVsbCgpOwogICAgICAgICBpZiAoIW1fcmVhZGVyLnJlYWRWZXJz
aW9uKG1fdmVyc2lvbikgfHwgbV92ZXJzaW9uID4gd2lyZUZvcm1hdFZlcnNpb24pCiAgICAgICAg
ICAgICByZXR1cm4gdjg6Ok51bGwoKTsKKyAgICAgICAgaWYgKCFtX3JlYWRlci5pc1JlYWRpbmdG
bGF0dGVuZWRQcmVmaXgoKSAmJiAhaW5pdGlhbGl6ZU9iamVjdFBvb2woZmFsc2UpKQorICAgICAg
ICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAgICAgICAgIG1fcmVhZGVyLnNldFZlcnNpb24obV92
ZXJzaW9uKTsKICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgICAgICB3aGlsZSAo
IW1fcmVhZGVyLmlzRW9mKCkpIHsKQEAgLTE4MjAsOCArMTg4NSwyMyBAQCBwdWJsaWM6CiAgICAg
fQogCiBwcml2YXRlOgotICAgIGJvb2wgaW5pdGlhbGl6ZU9iamVjdFBvb2woKQotICAgIHsKKyAg
ICBib29sIGluaXRpYWxpemVPYmplY3RQb29sKGJvb2wgZmlsbEhvbGVzKQorICAgIHsKKyAgICAg
ICAgaWYgKGZpbGxIb2xlcykgeworICAgICAgICAgICAgc2l6ZV90IHRyYW5zZmVySW5kZXggPSAw
OworICAgICAgICAgICAgc2l6ZV90IHRyYW5zZmVyTGVuZ3RoID0gbV90cmFuc2Zlckxpc3QgPyBt
X3RyYW5zZmVyTGlzdC0+c2l6ZSgpIDogMDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9vYmplY3RQb29sLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1f
b2JqZWN0UG9vbFtpXS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5z
ZmVySW5kZXggPCB0cmFuc2Zlckxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fb2Jq
ZWN0UG9vbFtpXSA9ICgqbV90cmFuc2Zlckxpc3QpW3RyYW5zZmVySW5kZXgrK107CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKDsgdHJh
bnNmZXJJbmRleCA8IHRyYW5zZmVyTGVuZ3RoOyArK3RyYW5zZmVySW5kZXgpCisgICAgICAgICAg
ICAgICAgbV9vYmplY3RQb29sLmFwcGVuZCgoKm1fdHJhbnNmZXJMaXN0KVt0cmFuc2ZlckluZGV4
XSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBpZiAobV90
cmFuc2Zlckxpc3QpCiAgICAgICAgICAgICBtX29iamVjdFBvb2wuYXBwZW5kKCptX3RyYW5zZmVy
TGlzdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTg4Nyw2ICsxOTY3LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiogZ2V0RmxhdHRlbmVkSW5kZXgodWludDMyX3QgcmVmZXJlbmNlKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fb2JqZWN0UG9vbC5zaXplKCkgPD0gcmVmZXJlbmNlKQorICAgICAgICAgICAgbV9v
YmplY3RQb29sLnJlc2l6ZShyZWZlcmVuY2UgKyAxKTsKKyAgICAgICAgcmV0dXJuICZtX29iamVj
dFBvb2xbcmVmZXJlbmNlXTsKKyAgICB9CisKICAgICBSZWFkZXImIG1fcmVhZGVyOwogICAgIFZl
Y3Rvcjx2ODo6TG9jYWw8djg6OlZhbHVlPiA+IG1fc3RhY2s7CiAgICAgVmVjdG9yPHY4OjpIYW5k
bGU8djg6OlZhbHVlPiA+IG1fb2JqZWN0UG9vbDsKQEAgLTIwNTgsMTcgKzIxNDUsMTkgQEAgYm9v
bCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmlzRmxhdHRlbmFibGUoVHJhbnNmZXJhYmxlUmVjZWlw
dCogcmVjZWlwdCkKIH0KIAogU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZmxhdHRlblJl
Y2VpcHRMaXN0KGNvbnN0IFN0cmluZyYgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkmIHJl
Y2VpcHRzKQotewotICAgIC8vIEZJWE1FOiBPbmNlIGEgZmxhdHRlbmFibGUgcmVjZWlwdCBhcHBl
YXJzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBtb3JlIHdvcmsgdG8gZG8uCi0gICAgLy8gVW5m
bGF0dGVuYWJsZSByZWNlaXB0cyBtYXkgYmUgcGFzc2VkIGluIGFzIG51bGwuCi0jaWZuZGVmIE5E
RUJVRwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjZWlwdHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIEFTU0VSVCghcmVjZWlwdHNbaV0gfHwgIWlzRmxhdHRlbmFibGUocmVjZWlwdHNbaV0u
Z2V0KCkpKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlY2VpcHRzKTsKLSNlbmRpZgotICAg
IHJldHVybiBkYXRhLmNyb3NzVGhyZWFkU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5
JiByZWNlaXB0cykgeworICAgIFdyaXRlciB3cml0ZXI7CisgICAgd3JpdGVyLndyaXRlRmxhdHRl
bmVkVmVyc2lvbigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjZWlwdHMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKCFyZWNlaXB0c1tpXSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoQXJyYXlCdWZmZXJSZWNlaXB0KiBhcnJheUJ1ZmZlclJlY2VpcHQgPSBy
ZWNlaXB0c1tpXS0+YXNBcnJheUJ1ZmZlclJlY2VpcHQoKSkKKyAgICAgICAgICAgIHdyaXRlci53
cml0ZUZsYXR0ZW5lZEFycmF5QnVmZmVyUmVjZWlwdCgqYXJyYXlCdWZmZXJSZWNlaXB0LCBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlQo
IWlzRmxhdHRlbmFibGUocmVjZWlwdHNbaV0uZ2V0KCkpKTsKKyAgICB9CisgICAgd3JpdGVyLmFw
cGVuZFJhd1N0cmluZyhkYXRhKTsKKyAgICByZXR1cm4gU3RyaW5nKFN0cmluZ0ltcGw6OmFkb3B0
KHdyaXRlci5kYXRhKCkpKS5jcm9zc1RocmVhZFN0cmluZygpOwogfQogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShWYWx1ZUhhbmRsZUFy
cmF5KiB0cmFuc2Zlckxpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOE5QVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNw
cAppbmRleCAyNTBlZTViLi5lZTI2NDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOE5QVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TlBVdGlscy5jcHAKQEAgLTMxLDEyICszMSwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlY4TlBVdGlscy5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZS5o
IgorI2luY2x1ZGUgIlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKKyNpbmNsdWRlICJWOE1lc3NhZ2VQ
b3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJucHJ1
bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgIm5wcnVudGltZV9wcml2LmgiCiAjaW5jbHVkZSAiTlBW
OE9iamVjdC5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4TlBPYmplY3Qu
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAKQEAgLTE2Nyw0ICsxNzIsOTggQEAgRXhjZXB0aW9u
Q2F0Y2hlcjo6fkV4Y2VwdGlvbkNhdGNoZXIoKQogICAgICAgICB0b3BIYW5kbGVyLT5oYW5kbGVy
KHRvcEhhbmRsZXItPmRhdGEsICp2ODo6U3RyaW5nOjpVdGY4VmFsdWUobV90cnlDYXRjaC5FeGNl
cHRpb24oKSkpOwogfQogCitzdGF0aWMgdm9pZCBibGl0U3RyaW5nVG9OUChjb25zdCBTdHJpbmcm
IHN0cmluZywgTlBWYXJpYW50KiByZXN1bHQpCit7CisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4g
YXJyYXkodjg6OkFycmF5OjpOZXcoc3RyaW5nLmxlbmd0aCgpKSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsgKytpKQorICAgICAgICBhcnJheS0+U2V0KGks
IHY4OjpJbnRlZ2VyOjpOZXdGcm9tVW5zaWduZWQoc3RyaW5nLmNoYXJhY3RlcnMoKVtpXSkpOwor
ICAgIGNvbnZlcnRWOE9iamVjdFRvTlBWYXJpYW50KGFycmF5LCAwLCByZXN1bHQpOworfQorCitz
dGF0aWMgYm9vbCBibGl0U3RyaW5nRnJvbU5QKGNvbnN0IE5QVmFyaWFudCogdmFyaWFudCwgU3Ry
aW5nJiBzdHJpbmcpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1heWJlQXJyYXkgPSBj
b252ZXJ0TlBWYXJpYW50VG9WOE9iamVjdCh2YXJpYW50LCAwKTsKKyAgICBpZiAobWF5YmVBcnJh
eS5Jc0VtcHR5KCkgfHwgIW1heWJlQXJyYXktPklzQXJyYXkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHY4OjpIYW5kbGU8djg6OkFycmF5PiBhcnJheShtYXliZUFycmF5LkFzPHY4OjpB
cnJheT4oKSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPkxlbmd0aCgpOworICAgIFZl
Y3RvcjxVQ2hhcj4gdmVjdG9yKGxlbmd0aCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IGFy
cmF5LT5HZXQoaSk7CisgICAgICAgIGlmICghdmFsdWUtPklzVWludDMyKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHZlY3RvcltpXSA9IHN0YXRpY19jYXN0PFVDaGFyPih2
YWx1ZS0+VWludDMyVmFsdWUoKSk7CisgICAgfQorICAgIHN0cmluZyA9IFN0cmluZzo6YWRvcHQo
dmVjdG9yKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBzZXJpYWxpemVWOChjb25zdCBO
UFZhcmlhbnQqIHRvU2VyaWFsaXplLCBjb25zdCBOUFZhcmlhbnQqIHRyYW5zZmVyTGlzdCwgTlBW
YXJpYW50KiByZXN1bHQpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvU2VyaWFsaXpl
VjggPSBjb252ZXJ0TlBWYXJpYW50VG9WOE9iamVjdCh0b1NlcmlhbGl6ZSwgMCk7CisgICAgaWYg
KHRvU2VyaWFsaXplVjguSXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgU3RyaW5nIHJl
c3VsdFN0cmluZzsKKyAgICBWYWx1ZUhhbmRsZUFycmF5IHZhbHVlSGFuZGxlQXJyYXk7CisgICAg
VmFsdWVIYW5kbGVBcnJheSogdmFsdWVIYW5kbGVBcnJheVBvaW50ZXIgPSAwOworICAgIGlmICh0
cmFuc2Zlckxpc3QpIHsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRyYW5zZmVyTGlz
dFY4ID0gY29udmVydE5QVmFyaWFudFRvVjhPYmplY3QodHJhbnNmZXJMaXN0LCAwKTsKKyAgICAg
ICAgaWYgKHRyYW5zZmVyTGlzdFY4LklzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgVHJhbnNmZXJhYmxlQXJyYXkgdHJhbnNmZXJhYmxlQXJyYXk7CisgICAgICAgIGlmICgh
Z2V0VHJhbnNmZXJhYmxlQXJyYXkodHJhbnNmZXJMaXN0VjgsIHRyYW5zZmVyYWJsZUFycmF5LCB2
YWx1ZUhhbmRsZUFycmF5LCBQZXJtaXRUcmFuc2ZlcmFibGVzKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgdmFsdWVIYW5kbGVBcnJheVBvaW50ZXIgPSAmdmFsdWVIYW5kbGVBcnJheTsK
KyAgICB9CisgICAgYm9vbCBkaWRUaHJvdzsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZSh0b1NlcmlhbGl6ZVY4LCBkaWRUaHJvdywgdmFsdWVIYW5kbGVBcnJheVBvaW50ZXIsIFBlcm1p
dFRyYW5zZmVyYWJsZXMpOworICAgIGlmIChkaWRUaHJvdykKKyAgICAgICAgcmV0dXJuOworICAg
IHJlc3VsdFN0cmluZyA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+dG9XaXJlU3RyaW5nKCk7Cisg
ICAgYmxpdFN0cmluZ1RvTlAocmVzdWx0U3RyaW5nLCByZXN1bHQpOworfQorCit2b2lkIGZsYXR0
ZW5TZXJpYWxpemVkVmFsdWVWOChjb25zdCBOUFZhcmlhbnQqIHNlcmlhbGl6ZWQsIGNvbnN0IE5Q
VmFyaWFudCogdHJhbnNmZXJMaXN0LCBOUFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBTdHJpbmcg
c3RyaW5nRGF0YTsKKyAgICBpZiAoIXRyYW5zZmVyTGlzdCB8fCAhYmxpdFN0cmluZ0Zyb21OUChz
ZXJpYWxpemVkLCBzdHJpbmdEYXRhKSkKKyAgICAgICAgcmV0dXJuOworICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0cmFuc2Zlckxpc3RWOCA9IGNvbnZlcnROUFZhcmlhbnRUb1Y4T2JqZWN0KHRy
YW5zZmVyTGlzdCwgMCk7CisgICAgaWYgKHRyYW5zZmVyTGlzdFY4LklzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIFRyYW5zZmVyYWJsZUFycmF5IHRyYW5zZmVyYWJsZUFycmF5OworICAg
IFZhbHVlSGFuZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKKyAgICBpZiAoIWdldFRyYW5zZmVy
YWJsZUFycmF5KHRyYW5zZmVyTGlzdFY4LCB0cmFuc2ZlcmFibGVBcnJheSwgdmFsdWVIYW5kbGVB
cnJheSwgUGVybWl0VHJhbnNmZXJhYmxlcykpCisgICAgICAgIHJldHVybjsKKyAgICBFeGNlcHRp
b25Db2RlIGV4Y2VwdGlvbkNvZGUgPSAwOworICAgIE93blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
QXJyYXk+IHJlY2VpcHRMaXN0ID0gVHJhbnNmZXJhYmxlOjp0cmFuc2ZlckFsbE91dCgmdHJhbnNm
ZXJhYmxlQXJyYXksIDAsIGV4Y2VwdGlvbkNvZGUpOworICAgIGlmIChleGNlcHRpb25Db2RlKQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFyZWNlaXB0TGlzdCkKKyAgICAgICAgcmVjZWlwdExp
c3QgPSBhZG9wdFB0cihuZXcgVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5KCkpOworICAgIFN0cmlu
ZyByZXN1bHRTdHJpbmcgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZsYXR0ZW5SZWNlaXB0TGlz
dChzdHJpbmdEYXRhLCAqcmVjZWlwdExpc3QpOworICAgIGJsaXRTdHJpbmdUb05QKHJlc3VsdFN0
cmluZywgcmVzdWx0KTsKK30KKwordm9pZCBkZXNlcmlhbGl6ZVY4KGNvbnN0IE5QVmFyaWFudCog
c2VyaWFsaXplZCwgY29uc3QgTlBWYXJpYW50KiB0cmFuc2Zlckxpc3QsIE5QVmFyaWFudCogcmVz
dWx0KQoreworICAgIFN0cmluZyBzdHJpbmdEYXRhOworICAgIGlmICghYmxpdFN0cmluZ0Zyb21O
UChzZXJpYWxpemVkLCBzdHJpbmdEYXRhKSkKKyAgICAgICAgcmV0dXJuOworICAgIFZhbHVlSGFu
ZGxlQXJyYXkgdmFsdWVIYW5kbGVBcnJheTsKKyAgICBWYWx1ZUhhbmRsZUFycmF5KiB2YWx1ZUhh
bmRsZUFycmF5UG9pbnRlciA9IDA7CisgICAgaWYgKHRyYW5zZmVyTGlzdCkgeworICAgICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdHJhbnNmZXJMaXN0VjggPSBjb252ZXJ0TlBWYXJpYW50VG9W
OE9iamVjdCh0cmFuc2Zlckxpc3QsIDApOworICAgICAgICBpZiAodHJhbnNmZXJMaXN0VjguSXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBUcmFuc2ZlcmFibGVBcnJheSB0
cmFuc2ZlcmFibGVBcnJheTsKKyAgICAgICAgaWYgKCFnZXRUcmFuc2ZlcmFibGVBcnJheSh0cmFu
c2Zlckxpc3RWOCwgdHJhbnNmZXJhYmxlQXJyYXksIHZhbHVlSGFuZGxlQXJyYXksIFBlcm1pdFRy
YW5zZmVyYWJsZXMpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YWx1ZUhhbmRsZUFy
cmF5UG9pbnRlciA9ICZ2YWx1ZUhhbmRsZUFycmF5OworICAgIH0KKyAgICBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZShzdHJpbmdEYXRhKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlc3VsdE9iamVjdFY4KHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+ZGVzZXJpYWxpemUodmFs
dWVIYW5kbGVBcnJheVBvaW50ZXIpKTsKKyAgICBjb252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCh2
ODo6TG9jYWw8djg6OlZhbHVlPigqcmVzdWx0T2JqZWN0VjgpLCAwLCByZXN1bHQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOE5QVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5o
CmluZGV4IGRjNjE4NWIuLmY0ZDZkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4TlBVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBV
dGlscy5oCkBAIC02Niw2ICs2NiwxMSBAQCBwcml2YXRlOgogICAgIHY4OjpUcnlDYXRjaCBtX3Ry
eUNhdGNoOwogfTsKIAorLy8gV3JhcCBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8gc2VyaWFsaXph
dGlvbi4KK3ZvaWQgc2VyaWFsaXplVjgoY29uc3QgTlBWYXJpYW50KiB0b1NlcmlhbGl6ZSwgY29u
c3QgTlBWYXJpYW50KiB0cmFuc2Zlckxpc3QsIE5QVmFyaWFudCogcmVzdWx0KTsKK3ZvaWQgZmxh
dHRlblNlcmlhbGl6ZWRWYWx1ZVY4KGNvbnN0IE5QVmFyaWFudCogc2VyaWFsaXplZCwgY29uc3Qg
TlBWYXJpYW50KiB0cmFuc2Zlckxpc3QsIE5QVmFyaWFudCogcmVzdWx0KTsKK3ZvaWQgZGVzZXJp
YWxpemVWOChjb25zdCBOUFZhcmlhbnQqIHNlcmlhbGl6ZWQsIGNvbnN0IE5QVmFyaWFudCogdHJh
bnNmZXJMaXN0LCBOUFZhcmlhbnQqIHJlc3VsdCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFY4TlBVdGlsc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCmluZGV4IGZkYmZk
NTguLmViZDdmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCkBAIC0yMDYsNiArMjA2LDE0IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRXZWJHTEFycmF5SGVscGVyKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CiB9CiAK
K3RlbXBsYXRlIDxjbGFzcyBDUGx1c1BsdXNBcnJheVR5cGU+Cit2b2lkIHNxdWFzaEJpbmRpbmdJ
bXBsKENQbHVzUGx1c0FycmF5VHlwZSogY3BwQXJyYXlUeXBlKQoreworICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBib3VuZCA9IHRvVjgoY3BwQXJyYXlUeXBlKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdChib3VuZC5Bczx2ODo6T2JqZWN0PigpKTsKKyAgICBvYmplY3QtPlNl
dEluZGV4ZWRQcm9wZXJ0aWVzVG9FeHRlcm5hbEFycmF5RGF0YSgwLCB2ODo6a0V4dGVybmFsQnl0
ZUFycmF5LCAwKTsKK30KKwogfQogCiAjZW5kaWYgLy8gVjhBcnJheUJ1ZmZlclZpZXdDdXN0b21f
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZp
ZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZp
ZXdDdXN0b20uY3BwCmluZGV4IDY2YzM5MjkuLjljMGI2YzggMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTEy
Niw0ICsxMjYsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OnNldFVpbnQ4
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7CiB9CiAKK3ZvaWQgRGF0YVZpZXc6OnNxdWFzaEJpbmRpbmcoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7
CisgICAgc3F1YXNoQmluZGluZ0ltcGwodGhpcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0
MzJBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhG
bG9hdDMyQXJyYXlDdXN0b20uY3BwCmluZGV4IDE3ODMwN2UuLmY3NjAxNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0MzJBcnJheUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQzMkFycmF5
Q3VzdG9tLmNwcApAQCAtNjMsNCArNjMsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
RmxvYXQzMkFycmF5KiBpbXBsKQogICAgIHJldHVybiB3cmFwcGVyOwogfQogCit2b2lkIEZsb2F0
MzJBcnJheTo6c3F1YXNoQmluZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
eworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKyAgICBzcXVhc2hCaW5kaW5nSW1wbCh0aGlz
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZsb2F0NjRBcnJheUN1c3RvbS5jcHAKaW5kZXgg
NDI5ZTk2Mi4uMTAxYmQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RmxvYXQ2NEFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhGbG9hdDY0QXJyYXlDdXN0b20uY3BwCkBAIC01OCw0ICs1OCwxMCBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0QXJyYXkqIGltcGwpCiAgICAgcmV0
dXJuIHdyYXBwZXI7CiB9CiAKK3ZvaWQgRmxvYXQ2NEFycmF5OjpzcXVhc2hCaW5kaW5nKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQp
OworICAgIHNxdWFzaEJpbmRpbmdJbXBsKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnQx
NkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElu
dDE2QXJyYXlDdXN0b20uY3BwCmluZGV4IDkwYTNjNzEuLjE3YzkwYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDE2QXJyYXlDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDE2QXJyYXlDdXN0b20u
Y3BwCkBAIC02Myw0ICs2MywxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJbnQxNkFy
cmF5KiBpbXBsKQogICAgIHJldHVybiB3cmFwcGVyOwogfQogCit2b2lkIEludDE2QXJyYXk6OnNx
dWFzaEJpbmRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7CisgICAgc3F1YXNoQmluZGluZ0ltcGwodGhpcyk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEludDMyQXJyYXlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW50MzJBcnJheUN1c3RvbS5jcHAKaW5kZXggOGZhMzhhNy4uMjkyYmRl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50MzJB
cnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SW50MzJBcnJheUN1c3RvbS5jcHAKQEAgLTYzLDQgKzYzLDEwIEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KEludDMyQXJyYXkqIGltcGwpCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKK3Zv
aWQgSW50MzJBcnJheTo6c3F1YXNoQmluZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQoreworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKyAgICBzcXVhc2hCaW5kaW5nSW1w
bCh0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50OEFycmF5Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludDhBcnJheUN1c3RvbS5jcHAKaW5kZXgg
MzM0NThkYy4uYmE1MjQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW50OEFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbnQ4QXJyYXlDdXN0b20uY3BwCkBAIC02Myw0ICs2MywxMCBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChJbnQ4QXJyYXkqIGltcGwpCiAgICAgcmV0dXJuIHdyYXBw
ZXI7CiB9CiAKK3ZvaWQgSW50OEFycmF5OjpzcXVhc2hCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCit7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIHNxdWFz
aEJpbmRpbmdJbXBsKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1
c3RvbS5jcHAKaW5kZXggYWMwMjMzMS4uY2I2YzE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9tLmNwcApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZXNz
YWdlUG9ydC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUg
IlY4QXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOE1l
c3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhNZXNzYWdlUG9ydC5oIgpAQCAtMTI2LDYg
KzEyNyw4IEBAIFBhc3NSZWZQdHI8VHJhbnNmZXJhYmxlPiB0b05hdGl2ZVRyYW5zZmVyYWJsZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB7CiAgICAgaWYgKFY4TWVzc2FnZVBvcnQ6Okhh
c0luc3RhbmNlKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIFY4TWVzc2FnZVBvcnQ6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICBpZiAoVjhBcnJheUJ1
ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUpKQorICAgICAgICByZXR1cm4gVjhBcnJheUJ1ZmZlcjo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOwogICAgIHJldHVy
biAwOwogfQogCkBAIC0xMzMsNiArMTM2LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhU
cmFuc2ZlcmFibGUoVHJhbnNmZXJhYmxlKiB2YWx1ZSkKIHsKICAgICBpZiAoTWVzc2FnZVBvcnQq
IG1lc3NhZ2VQb3J0ID0gdmFsdWUtPmFzTWVzc2FnZVBvcnQoKSkKICAgICAgICAgcmV0dXJuIHRv
VjgobWVzc2FnZVBvcnQpOworICAgIGlmIChBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSB2YWx1
ZS0+YXNBcnJheUJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gdG9WOChhcnJheUJ1ZmZlcik7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoMCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50
MTZBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhV
aW50MTZBcnJheUN1c3RvbS5jcHAKaW5kZXggYWViZTMxMC4uYjk2MzAxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDE2QXJyYXlDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5Q3Vz
dG9tLmNwcApAQCAtNjMsNCArNjMsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVWlu
dDE2QXJyYXkqIGltcGwpCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKK3ZvaWQgVWludDE2QXJy
YXk6OnNxdWFzaEJpbmRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgc3F1YXNoQmluZGluZ0ltcGwodGhpcyk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcAppbmRleCA1NjNkZjhl
Li5lNzllZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhVaW50MzJBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4VWludDMyQXJyYXlDdXN0b20uY3BwCkBAIC02Myw0ICs2MywxMCBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChVaW50MzJBcnJheSogaW1wbCkKICAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIAordm9pZCBVaW50MzJBcnJheTo6c3F1YXNoQmluZGluZyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQoreworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKyAgICBzcXVh
c2hCaW5kaW5nSW1wbCh0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhBcnJheUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3Vz
dG9tLmNwcAppbmRleCBhYTQ2ODYzLi45MzZlYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcApAQCAtNjMs
NCArNjMsMTAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVWludDhBcnJheSogaW1wbCkK
ICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAordm9pZCBVaW50OEFycmF5OjpzcXVhc2hCaW5kaW5n
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgVU5VU0VEX1BBUkFNKGNv
bnRleHQpOworICAgIHNxdWFzaEJpbmRpbmdJbXBsKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlLmgKaW5kZXggNDA5MmQxNC4uNTllODhl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGUuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFycmF5QnVmZmVyOwogY2xhc3MgTWVzc2FnZVBvcnQ7
CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVHJhbnNmZXJhYmxlOwpAQCAt
NTQsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXMgbW9yZSBUcmFuc2ZlcmFibGUgdHlwZXMg
YXJlIGFkZGVkLCBzb21lIGJpbmRpbmcgY29kZSBtdXN0IGJlIHVwZGF0ZWQ6CiAgICAgLy8gICB0
b05hdGl2ZVRyYW5zZmVyYWJsZS90b0pTVHJhbnNmZXJhYmxlIGluIEpTTWVzc2FnZVBvcnRDdXN0
b20uY3BwCiAgICAgLy8gICB0b05hdGl2ZVRyYW5zZmVyYWJsZS90b1Y4VHJhbnNmZXJhYmxlIGlu
IFY4TWVzc2FnZVBvcnRDdXN0b20uY3BwCisgICAgdmlydHVhbCBBcnJheUJ1ZmZlciogYXNBcnJh
eUJ1ZmZlcigpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIE1lc3NhZ2VQb3J0KiBhc01lc3Nh
Z2VQb3J0KCkgeyByZXR1cm4gMDsgfQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFRyYW5zZmVy
YWJsZVJlY2VpcHQ+IHRyYW5zZmVyT3V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zZmVyYWJs
ZVJlY2VpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmFuc2ZlcmFibGVSZWNlaXB0LmgKaW5k
ZXggZjNlZTVkNC4uM2Q2MWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5z
ZmVyYWJsZVJlY2VpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhbnNmZXJhYmxlUmVj
ZWlwdC5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QXJyYXlCdWZmZXJSZWNlaXB0OwogY2xhc3MgTWVzc2FnZVBvcnRSZWNlaXB0OwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRyYW5zZmVyYWJsZTsKQEAgLTU0LDYgKzU1LDcg
QEAgY2xhc3MgVHJhbnNmZXJhYmxlUmVjZWlwdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VHJh
bnNmZXJhYmxlUmVjZWlwdCgpIHsgfQogCisgICAgdmlydHVhbCBBcnJheUJ1ZmZlclJlY2VpcHQq
IGFzQXJyYXlCdWZmZXJSZWNlaXB0KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgTWVzc2Fn
ZVBvcnRSZWNlaXB0KiBhc01lc3NhZ2VQb3J0UmVjZWlwdCgpIHsgcmV0dXJuIDA7IH0KIAogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRyYW5zZmVySW4oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0FycmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVy
LmNwcAppbmRleCBlYWQwODc5Li4zOWU1MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQXJyYXlCdWZmZXIuY3BwCkBAIC0yNiw2ICsyNiw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJUcmFuc2ZlcmFibGUuaCIKKwogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNyArNTcsMTAgQEAgUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gQXJyYXlCdWZmZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5
dGVMZW4KIH0KIAogQXJyYXlCdWZmZXI6OkFycmF5QnVmZmVyKHZvaWQqIGRhdGEsIHVuc2lnbmVk
IHNpemVJbkJ5dGVzKQotICAgIDogbV9zaXplSW5CeXRlcyhzaXplSW5CeXRlcykKKyAgICA6IG1f
aGFuZGxlTGlzdCgwKQorICAgICwgbV9oYW5kbGVMaXN0SGFzQ29udHJvbCh0cnVlKQorICAgICwg
bV9pc05hdGl2ZUxvY2tlZChmYWxzZSkKKyAgICAsIG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMp
CiAgICAgLCBtX2RhdGEoZGF0YSkKIHsKIH0KQEAgLTk2LDQgKzEwMiwxMjggQEAgdm9pZCogQXJy
YXlCdWZmZXI6OnRyeUFsbG9jYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVt
ZW50Qnl0ZVNpemUpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2Jvb2wgQXJyYXlCdWZmZXI6Ondhc1Ry
YW5zZmVycmVkT3V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faGFuZGxlTGlzdEhhc0NvbnRy
b2w7Cit9CisKK1Bhc3NPd25QdHI8VHJhbnNmZXJhYmxlUmVjZWlwdD4gQXJyYXlCdWZmZXI6OnRy
YW5zZmVyT3V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIC8vIEp1c3QgaW4gY2FzZSB0aGUgbV9oYW5kbGVMaXN0IGNvbnRhaW5zIHRo
ZSBvbmx5IHJlZmVyZW5jZXMgdG8gdGhpcyBvYmplY3QuLi4KKyAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHNlbGZSZWZlcmVuY2UodGhpcyk7CisgICAgT3duUHRyPEFycmF5QnVmZmVyUmVjZWlwdD4g
cmVjZWlwdDsKKyAgICB2b2lkKiBvdXRwdXRCdWZmZXIgPSAwOworICAgIHVuc2lnbmVkIG91dHB1
dFNpemVJbkJ5dGVzID0gbV9zaXplSW5CeXRlczsKKyAgICBpZiAoIW1faGFuZGxlTGlzdEhhc0Nv
bnRyb2wpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
IHJlY2VpcHQucmVsZWFzZSgpOworICAgIH0KKyAgICBpZiAobV9pc05hdGl2ZUxvY2tlZCkgewor
ICAgICAgICBvdXRwdXRCdWZmZXIgPSB0cnlBbGxvY2F0ZShvdXRwdXRTaXplSW5CeXRlcywgMSk7
CisgICAgICAgIGlmICghb3V0cHV0QnVmZmVyKSB7CisgICAgICAgICAgICAvLyBUaGVyZSB3YXNu
J3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgdGhlIGNvcHkhCisgICAgICAgICAgICBlYyA9IE5P
VF9TVVBQT1JURURfRVJSOworICAgICAgICAgICAgcmV0dXJuIHJlY2VpcHQucmVsZWFzZSgpOwor
ICAgICAgICB9CisgICAgICAgIG1lbWNweShvdXRwdXRCdWZmZXIsIG1fZGF0YSwgb3V0cHV0U2l6
ZUluQnl0ZXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIG91dHB1dEJ1ZmZlciA9IG1fZGF0YTsK
KyAgICAgICAgbV9kYXRhID0gMDsKKyAgICAgICAgbV9zaXplSW5CeXRlcyA9IDA7CisgICAgfQor
ICAgIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZSBtYWRlIGEgbmV3IGNvcHkgYWJvdmUsIHN0
aWxsIGdvIHRocm91Z2ggd2l0aCB0aGUgdHJhbnNmZXIgb2YgY29udHJvbC4KKyAgICBmb3IgKEFy
cmF5QnVmZmVySGFuZGxlKiBoYW5kbGUgPSBtX2hhbmRsZUxpc3Q7IGhhbmRsZTsgKSB7CisgICAg
ICAgIEFycmF5QnVmZmVySGFuZGxlKiBuZXh0SGFuZGxlID0gaGFuZGxlLT5tX25leHRIYW5kbGU7
CisgICAgICAgIGhhbmRsZS0+c3F1YXNoKGNvbnRleHQpOworICAgICAgICBoYW5kbGUtPm1fbmV4
dEhhbmRsZSA9IGhhbmRsZS0+bV9wcmV2SGFuZGxlID0gMDsKKyAgICAgICAgaGFuZGxlID0gbmV4
dEhhbmRsZTsKKyAgICB9CisgICAgbV9oYW5kbGVMaXN0ID0gMDsKKyAgICByZWNlaXB0ID0gQXJy
YXlCdWZmZXJSZWNlaXB0OjphZG9wdChvdXRwdXRTaXplSW5CeXRlcywgb3V0cHV0QnVmZmVyKTsK
KyAgICBtX2hhbmRsZUxpc3RIYXNDb250cm9sID0gZmFsc2U7CisgICAgcmV0dXJuIHJlY2VpcHQu
cmVsZWFzZSgpOworfQorCit2b2lkIEFycmF5QnVmZmVyOjpyZW1vdmVIYW5kbGUoQXJyYXlCdWZm
ZXJIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBpZiAobV9oYW5kbGVMaXN0ID09IGhhbmRsZSkKKyAg
ICAgICAgbV9oYW5kbGVMaXN0ID0gaGFuZGxlLT5tX25leHRIYW5kbGU7CisgICAgZWxzZQorICAg
ICAgICBoYW5kbGUtPm1fcHJldkhhbmRsZS0+bV9uZXh0SGFuZGxlID0gaGFuZGxlLT5tX25leHRI
YW5kbGU7CisgICAgaWYgKGhhbmRsZS0+bV9uZXh0SGFuZGxlKQorICAgICAgICBoYW5kbGUtPm1f
bmV4dEhhbmRsZS0+bV9wcmV2SGFuZGxlID0gaGFuZGxlLT5tX3ByZXZIYW5kbGU7Cit9CisKK2Jv
b2wgQXJyYXlCdWZmZXI6OmFkZEhhbmRsZShBcnJheUJ1ZmZlckhhbmRsZSogaGFuZGxlKQorewor
ICAgIGlmICghbV9oYW5kbGVMaXN0SGFzQ29udHJvbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGhhbmRsZS0+bV9idWZmZXIgPSB0aGlzOworICAgIGhhbmRsZS0+bV9uZXh0SGFuZGxlID0g
bV9oYW5kbGVMaXN0OworICAgIGlmIChtX2hhbmRsZUxpc3QpCisgICAgICAgIG1faGFuZGxlTGlz
dC0+bV9wcmV2SGFuZGxlID0gaGFuZGxlOworICAgIG1faGFuZGxlTGlzdCA9IGhhbmRsZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworQXJyYXlCdWZmZXJIYW5kbGU6OkFycmF5QnVmZmVySGFuZGxl
KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcikKKyAgICA6IG1fbmV4dEhhbmRsZSgwKSwg
bV9wcmV2SGFuZGxlKDApCit7CisgICAgLy8gYnVmZmVyLT5hZGRIYW5kbGUoKSBzZXRzIG1fYnVm
ZmVyIGlmIHRoZSBidWZmZXIgaGFzbid0IGJlZW4gdHJhbnNmZXJyZWQgb3V0LgorICAgIGlmIChi
dWZmZXIpCisgICAgICAgIGJ1ZmZlci0+YWRkSGFuZGxlKHRoaXMpOworfQorCitBcnJheUJ1ZmZl
ckhhbmRsZTo6fkFycmF5QnVmZmVySGFuZGxlKCkKK3sKKyAgICBpZiAobV9idWZmZXIpCisgICAg
ICAgIG1fYnVmZmVyLT5yZW1vdmVIYW5kbGUodGhpcyk7Cit9CisKK3ZvaWQgQXJyYXlCdWZmZXJI
YW5kbGU6OnNxdWFzaChTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKK3sKKyAgICBtX2J1ZmZlci5j
bGVhcigpOworfQorCitQYXNzUmVmUHRyPFRyYW5zZmVyYWJsZT4gQXJyYXlCdWZmZXJSZWNlaXB0
Ojp0cmFuc2ZlckluKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisgICAgVU5V
U0VEX1BBUkFNKGNvbnRleHQpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIg
PSBhZG9wdFJlZihuZXcgQXJyYXlCdWZmZXIobV9kYXRhLCBtX3NpemVJbkJ5dGVzKSk7CisgICAg
bV9kYXRhID0gMDsKKyAgICBtX3NpemVJbkJ5dGVzID0gMDsKKyAgICByZXR1cm4gYXJyYXlCdWZm
ZXI7Cit9CisKK0FycmF5QnVmZmVyUmVjZWlwdDo6fkFycmF5QnVmZmVyUmVjZWlwdCgpCit7Cisg
ICAgV1RGOjpmYXN0RnJlZShtX2RhdGEpOworICAgIG1fZGF0YSA9IDA7Cit9CisKK1Bhc3NPd25Q
dHI8QXJyYXlCdWZmZXJSZWNlaXB0PiBBcnJheUJ1ZmZlclJlY2VpcHQ6OmFkb3B0KHVuc2lnbmVk
IHNpemUsIHZvaWQqIGRhdGEpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBcnJheUJ1ZmZl
clJlY2VpcHQoc2l6ZSwgZGF0YSkpOworfQorCit2b2lkIEFycmF5QnVmZmVyUmVjZWlwdDo6cmVs
ZWFzZSgpCit7CisgICAgbV9kYXRhID0gMDsKKyAgICBtX3NpemVJbkJ5dGVzID0gMDsKK30KKwor
dm9pZCogQXJyYXlCdWZmZXJSZWNlaXB0OjpkYXRhKCkKK3sKKyAgICByZXR1cm4gbV9kYXRhOwor
fQorCitjb25zdCB2b2lkKiBBcnJheUJ1ZmZlclJlY2VpcHQ6OmRhdGEoKSBjb25zdAoreworICAg
IHJldHVybiBtX2RhdGE7Cit9CisKK3Vuc2lnbmVkIEFycmF5QnVmZmVyUmVjZWlwdDo6Ynl0ZUxl
bmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2l6ZUluQnl0ZXM7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlci5oCmluZGV4IDQxMzVjMzcuLmQwOTJhMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXIuaApAQCAtMjYsMTcgKzI2
LDI4IEBACiAjaWZuZGVmIEFycmF5QnVmZmVyX2gKICNkZWZpbmUgQXJyYXlCdWZmZXJfaAogCisj
aW5jbHVkZSAiVHJhbnNmZXJhYmxlLmgiCisjaW5jbHVkZSAiVHJhbnNmZXJhYmxlUmVjZWlwdC5o
IgorCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyPiB7CitjbGFz
cyBBcnJheUJ1ZmZlclJlY2VpcHQ7CitjbGFzcyBBcnJheUJ1ZmZlckhhbmRsZTsKKworY2xhc3Mg
QXJyYXlCdWZmZXIgOiBwdWJsaWMgVHJhbnNmZXJhYmxlIHsKICAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKIAor
ICAgIEFycmF5QnVmZmVyKiBhc0FycmF5QnVmZmVyKCkgeyByZXR1cm4gdGhpczsgfQorICAgIGJv
b2wgd2FzVHJhbnNmZXJyZWRPdXQoKSBjb25zdDsKKyAgICBQYXNzT3duUHRyPFRyYW5zZmVyYWJs
ZVJlY2VpcHQ+IHRyYW5zZmVyT3V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25D
b2RlJik7CisKICAgICB2b2lkKiBkYXRhKCk7CiAgICAgY29uc3Qgdm9pZCogZGF0YSgpIGNvbnN0
OwogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKQEAgLTQ0LDkgKzU1LDY4IEBAIGNs
YXNzIEFycmF5QnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKICAgICB+
QXJyYXlCdWZmZXIoKTsKIAogICBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZl
ckhhbmRsZTsKKyAgICBmcmllbmQgY2xhc3MgQXJyYXlCdWZmZXJSZWNlaXB0OworCiAgICAgQXJy
YXlCdWZmZXIodm9pZCogZGF0YSwgdW5zaWduZWQgc2l6ZUluQnl0ZXMpOwogICAgIEFycmF5QnVm
ZmVyKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOwogICAg
IHN0YXRpYyB2b2lkKiB0cnlBbGxvY2F0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplKTsKKyAgICBib29sIGFkZEhhbmRsZShBcnJheUJ1ZmZlckhhbmRsZSop
OworICAgIHZvaWQgcmVtb3ZlSGFuZGxlKEFycmF5QnVmZmVySGFuZGxlKik7CisKKyAgICAvLyBJ
ZiBzb21lIG5hdGl2ZSBjb21wb25lbnQgd2FudHMgdG8gdXNlIHRoaXMgQXJyYXlCdWZmZXIgZnJv
bSBhbm90aGVyIHRocmVhZCwgaXQgbXVzdCBmaXJzdCBzZXQKKyAgICAvLyB0aGUgbmF0aXZlIGxv
Y2sgZnJvbSB0aGUgbWFpbiBldmVudCBoYW5kbGluZyB0aHJlYWQ7IG90aGVyd2lzZSwgdGhlIGJ1
ZmZlciBtYXkgYmUgdHJhbnNmZXJyZWQKKyAgICAvLyBvdXQgZnJvbSB1bmRlciBpdC4KKyAgICBi
b29sIHNldE5hdGl2ZUxvY2soKTsKKworICAgIEFycmF5QnVmZmVySGFuZGxlKiBtX2hhbmRsZUxp
c3Q7CisgICAgYm9vbCBtX2hhbmRsZUxpc3RIYXNDb250cm9sOworICAgIGJvb2wgbV9pc05hdGl2
ZUxvY2tlZDsKKyAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOworICAgIHZvaWQqIG1fZGF0YTsK
K307CisKK2NsYXNzIEFycmF5QnVmZmVySGFuZGxlIHsKKyAgcHVibGljOgorICAgIFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KKyAg
ICBBcnJheUJ1ZmZlckhhbmRsZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPik7CisgICAgdmlydHVh
bCB+QXJyYXlCdWZmZXJIYW5kbGUoKTsKKworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lk
IHNxdWFzaChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBtX2J1ZmZlcjsKKworICBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBBcnJheUJ1ZmZlcjsK
KworICAgIEFycmF5QnVmZmVySGFuZGxlKiBtX25leHRIYW5kbGU7CisgICAgQXJyYXlCdWZmZXJI
YW5kbGUqIG1fcHJldkhhbmRsZTsKK307CisKK2NsYXNzIEFycmF5QnVmZmVyUmVjZWlwdCA6IHB1
YmxpYyBUcmFuc2ZlcmFibGVSZWNlaXB0IHsKKyAgcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPEFycmF5QnVmZmVyUmVjZWlwdD4gYWRvcHQodW5zaWduZWQgYnl0ZUxlbmd0aCwgdm9pZCog
ZGF0YSk7CisKKyAgICBBcnJheUJ1ZmZlclJlY2VpcHQqIGFzQXJyYXlCdWZmZXJSZWNlaXB0KCkg
eyByZXR1cm4gdGhpczsgfQorCisgICAgUGFzc1JlZlB0cjxUcmFuc2ZlcmFibGU+IHRyYW5zZmVy
SW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworCisgICAgdm9pZCogZGF0YSgpOworICAgIGNv
bnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7
CisKKyAgICB2b2lkIHJlbGVhc2UoKTsKKworICAgIH5BcnJheUJ1ZmZlclJlY2VpcHQoKTsKKwor
ICBwcm90ZWN0ZWQ6CisgICAgQXJyYXlCdWZmZXJSZWNlaXB0KHVuc2lnbmVkIHNpemVJbkJ5dGVz
LCB2b2lkKiBkYXRhKQorICAgICAgICA6IG1fc2l6ZUluQnl0ZXMoc2l6ZUluQnl0ZXMpLCBtX2Rh
dGEoZGF0YSkgeyB9CisKKyAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQXJyYXlCdWZmZXI7
CisKICAgICB1bnNpZ25lZCBtX3NpemVJbkJ5dGVzOwogICAgIHZvaWQqIG1fZGF0YTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BcnJheUJ1ZmZlclZpZXcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBh
MmY2MWNhLi5hNGMwY2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9B
cnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FycmF5
QnVmZmVyVmlldy5jcHAKQEAgLTMyLDEwICszMiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEFycmF5QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCkKLSAg
ICAgICAgOiBtX2J5dGVPZmZzZXQoYnl0ZU9mZnNldCkKLSAgICAgICAgLCBtX2J1ZmZlcihidWZm
ZXIpCisgICAgICAgIDogQXJyYXlCdWZmZXJIYW5kbGUoYnVmZmVyKQorICAgICAgICAsIG1fYmFz
ZUFkZHJlc3MoMCkKKyAgICAgICAgLCBtX2J5dGVPZmZzZXQoYnl0ZU9mZnNldCkKIHsKLSAgICBt
X2Jhc2VBZGRyZXNzID0gbV9idWZmZXIgPyAoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYnVmZmVyLT5k
YXRhKCkpICsgbV9ieXRlT2Zmc2V0KSA6IDA7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICBt
X2Jhc2VBZGRyZXNzID0gKHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSArIG1f
Ynl0ZU9mZnNldCk7CiB9CiAKIEFycmF5QnVmZmVyVmlldzo6fkFycmF5QnVmZmVyVmlldygpCkBA
IC0xMDEsNCArMTAzLDExIEBAIHZvaWQgQXJyYXlCdWZmZXJWaWV3OjpjYWxjdWxhdGVPZmZzZXRB
bmRMZW5ndGgoaW50IHN0YXJ0LCBpbnQgZW5kLCB1bnNpZ25lZCBhcnJhCiAgICAgKmxlbmd0aCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBzdGFydCk7CiB9CiAKK3ZvaWQgQXJyYXlCdWZm
ZXJWaWV3OjpzcXVhc2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBt
X2Jhc2VBZGRyZXNzID0gMDsKKyAgICBtX2J5dGVPZmZzZXQgPSAwOworICAgIEFycmF5QnVmZmVy
SGFuZGxlOjpzcXVhc2goY29udGV4dCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FycmF5QnVmZmVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggN2E1MzkwNS4uNDU3NTA5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTM3LDcgKzM3LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJs
aWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlclZpZXc+IHsKK2NsYXNzIEFycmF5QnVmZmVyVmlldyA6
IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4sIHB1YmxpYyBBcnJheUJ1ZmZlckhh
bmRsZSB7CiAgIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCeXRlQXJyYXkoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Vuc2lnbmVkQnl0ZUFycmF5KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTQ5LDExICs0OSw2IEBAIGNsYXNzIEFycmF5QnVm
ZmVyVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAgIHZpcnR1
YWwgYm9vbCBpc0RvdWJsZUFycmF5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNEYXRhVmlldygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fYnVmZmVyOwotICAgIH0KLQogICAgIHZvaWQqIGJhc2VBZGRyZXNzKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2Jhc2VBZGRyZXNzOwpAQCAtNzEsNiArNjYsOCBAQCBjbGFzcyBB
cnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJheUJ1ZmZlclZpZXc+IHsKICAg
cHJvdGVjdGVkOgogICAgIEFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwogCisgICAgdm9pZCBzcXVhc2goU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworCiAgICAgdm9pZCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyogYXJy
YXksIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKIAogICAgIHZvaWQg
c2V0UmFuZ2VJbXBsKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbmd0aCwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpOwpAQCAtMTIzLDkgKzEyMCw2IEBA
IGNsYXNzIEFycmF5QnVmZmVyVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmll
dz4gewogICAgIHZvaWQqIG1fYmFzZUFkZHJlc3M7CiAKICAgICB1bnNpZ25lZCBtX2J5dGVPZmZz
ZXQ7Ci0KLSAgcHJpdmF0ZToKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRGF0YVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZp
ZXcuY3BwCmluZGV4IDNkYjA2ZDYuLmMwNmVlZDIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9EYXRhVmlldy5jcHAKQEAgLTIzNSw0ICsyMzUsMTEgQEAgdm9pZCBEYXRhVmlldzo6c2V0Rmxv
YXQ2NCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBkb3VibGUgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFu
LAogICAgIHNldERhdGE8ZG91YmxlPihieXRlT2Zmc2V0LCB2YWx1ZSwgbGl0dGxlRW5kaWFuLCBl
Yyk7CiB9CiAKK3ZvaWQgRGF0YVZpZXc6OnNxdWFzaChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQoreworICAgIHNxdWFzaEJpbmRpbmcoY29udGV4dCk7CisgICAgbV9ieXRlTGVuZ3Ro
ID0gMDsKKyAgICBBcnJheUJ1ZmZlclZpZXc6OnNxdWFzaChjb250ZXh0KTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmgKaW5kZXggNWU4MGY4Yy4uNTZjNTFkOSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5oCkBAIC03Miw2ICs3MiwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRGbG9hdDY0KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIGRvdWJsZSB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgc2V0RmxvYXQ2NChieXRlT2Zmc2V0LCB2YWx1ZSwgZmFs
c2UsIGVjKTsgfQogICAgIHZvaWQgc2V0RmxvYXQ2NCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBkb3Vi
bGUgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBFeGNlcHRpb25Db2RlJik7CiAKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIHNxdWFzaChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgdm9pZCBz
cXVhc2hCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKwogcHJpdmF0ZToKICAgICBE
YXRhVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0Zsb2F0MzJBcnJheS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQzMkFy
cmF5LmgKaW5kZXggNWVhN2Q4ZC4uYjhiZDhkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRmxvYXQzMkFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRmxvYXQzMkFycmF5LmgKQEAgLTYwLDYgKzYwLDkgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8RmxvYXQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwogICAgIFBhc3NSZWZQ
dHI8RmxvYXQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwogCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBzcXVhc2hCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKwogcHJpdmF0ZToKICAgICBGbG9hdDMyQXJyYXkoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRmxvYXQ2NEFycmF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDY0QXJyYXkuaAppbmRleCBlODAwNWE2Li43MGFkYzQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDY0QXJyYXkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9GbG9hdDY0QXJyYXkuaApAQCAtNjAsNiAr
NjAsOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IHN1YmFycmF5KGlu
dCBzdGFydCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+IHN1YmFycmF5KGlu
dCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CiAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHNxdWFzaEJp
bmRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCiBwcml2YXRlOgogICAgIEZsb2F0NjRB
cnJheShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZU9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2
QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDE2QXJyYXkuaAppbmRleCAy
ZTFmMjU0Li5hOGIxYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9J
bnQxNkFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW50MTZBcnJheS5o
CkBAIC00NSw2ICs0NSw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEludDE2QXJyYXk+IHN1
YmFycmF5KGludCBzdGFydCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJbnQxNkFycmF5PiBzdWJh
cnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwogCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBz
cXVhc2hCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKwogcHJpdmF0ZToKICAgICBJ
bnQxNkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0ludDMyQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDMy
QXJyYXkuaAppbmRleCAzYTk4ZWVkLi4yOTU0YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9JbnQzMkFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvSW50MzJBcnJheS5oCkBAIC00NCw2ICs0NCw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRy
PEludDMyQXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJ
bnQzMkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0OwogCitwcm90ZWN0
ZWQ6CisgICAgdm9pZCBzcXVhc2hCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKwog
cHJpdmF0ZToKICAgICBJbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwK
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbnQ4QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0ludDhBcnJheS5oCmluZGV4IDJkM2ZjODkuLjFhMDhiZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ludDhBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0ludDhBcnJheS5oCkBAIC00Niw2ICs0Niw5IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPEludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKICAgICBQYXNz
UmVmUHRyPEludDhBcnJheT4gc3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdDsKIAor
cHJvdGVjdGVkOgorICAgIHZvaWQgc3F1YXNoQmluZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisKIHByaXZhdGU6CiAgICAgSW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1R5cGVkQXJyYXlCYXNlLmgKaW5kZXggZTJhN2M2My4uYTNlYTVh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVHlwZWRBcnJheUJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9UeXBlZEFycmF5QmFzZS5oCkBAIC0x
MTIsNiArMTEyLDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFz
cz4oYnVmZmVyKCksIG9mZnNldCwgbGVuZ3RoKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQg
c3F1YXNoQmluZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgPSAwOworCisgICAgdm9pZCBz
cXVhc2goU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHNx
dWFzaEJpbmRpbmcoY29udGV4dCk7CisgICAgICAgIG1fbGVuZ3RoID0gMDsKKyAgICAgICAgQXJy
YXlCdWZmZXJWaWV3OjpzcXVhc2goY29udGV4dCk7CisgICAgfQorCiAgICAgLy8gV2UgZG8gbm90
IHdhbnQgdG8gaGF2ZSB0byBhY2Nlc3MgdGhpcyB2aWEgYSB2aXJ0dWFsIGZ1bmN0aW9uIGluIHN1
YmNsYXNzZXMsCiAgICAgLy8gd2hpY2ggaXMgd2h5IGl0IGlzIHByb3RlY3RlZCByYXRoZXIgdGhh
biBwcml2YXRlLgogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1VpbnQxNkFycmF5LmgKaW5kZXggMGIwMmQwOS4uZmQ5ODkwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDE2QXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9VaW50MTZBcnJheS5oCkBAIC00Niw2ICs0Niw5IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPFVpbnQxNkFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwogICAg
IFBhc3NSZWZQdHI8VWludDE2QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29u
c3Q7CiAKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHNxdWFzaEJpbmRpbmcoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworCiBwcml2YXRlOgogICAgIFVpbnQxNkFycmF5KFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRl
T2Zmc2V0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWludDMyQXJy
YXkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQzMkFycmF5LmgKaW5kZXggMTVh
N2FiNi4uYzA0Y2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvVWlu
dDMyQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50MzJBcnJheS5o
CkBAIC00Niw2ICs0Niw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFVpbnQzMkFycmF5PiBz
dWJhcnJheShpbnQgc3RhcnQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VWludDMyQXJyYXk+IHN1
YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3Q7CiAKK3Byb3RlY3RlZDoKKyAgICB2b2lk
IHNxdWFzaEJpbmRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCiBwcml2YXRlOgogICAg
IFVpbnQzMkFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1VpbnQ4QXJyYXkuaAppbmRleCAzZGExZWFhLi4xNjVhNTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9VaW50OEFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvVWludDhBcnJheS5oCkBAIC00Niw2ICs0Niw5IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPFVpbnQ4QXJyYXk+IHN1YmFycmF5KGludCBzdGFydCkgY29uc3Q7CiAgICAgUGFz
c1JlZlB0cjxVaW50OEFycmF5PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0Owog
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBzcXVhc2hCaW5kaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKKwogcHJpdmF0ZToKICAgICBVaW50OEFycmF5KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDkyNzI4MzkuLjVmNTU3MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDgtMTkgIEx1a2UgWmFy
a28gIDxsdWtlemFya29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgQXJyYXlCdWZmZXJzIFRy
YW5zZmVyYWJsZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjY1NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSB3cmFwcGVyIGZvciBhbiBBcnJheUJ1ZmZlclJlY2VpcHQuCisKKyAgICAgICAg
KiBwdWJsaWMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJU
cmFuc2ZlcmFibGVSZWNlaXB0Ojphc1dlYkFycmF5QnVmZmVyUmVjZWlwdCk6CisgICAgICAgICog
c3JjL1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJh
eUJ1ZmZlclJlY2VpcHQ6OldlYkFycmF5QnVmZmVyUmVjZWlwdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkFycmF5QnVmZmVyUmVjZWlwdDo6fldlYkFycmF5QnVmZmVyUmVjZWlwdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkFycmF5QnVmZmVyUmVjZWlwdDo6c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkFycmF5QnVmZmVyUmVjZWlwdDo6ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5
QnVmZmVyUmVjZWlwdDo6cmVsZWFzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5QnVmZmVy
UmVjZWlwdDo6YXNXZWJBcnJheUJ1ZmZlclJlY2VpcHQpOgorICAgICAgICAoV2ViS2l0Ojp0b1Ry
YW5zZmVyYWJsZVJlY2VpcHQpOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYlRyYW5zZmVyYWJsZVJl
Y2VpcHQpOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkFycmF5QnVmZmVyUmVjZWlwdCk6CisKIDIw
MTEtMDgtMTAgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLiBSb2xsZWQgREVQUyA5NTgxMzo5NjAwOSB0byBwaWNrIGRhdGEgdXJsIHRp
bWluZyBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJU
cmFuc2ZlcmFibGVSZWNlaXB0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJU
cmFuc2ZlcmFibGVSZWNlaXB0LmgKaW5kZXggYTEwMjViZC4uYzRmMzRmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZmVyYWJsZVJlY2VpcHQu
aApAQCAtNDcsMTIgKzQ3LDE0IEBAIHR5cGVkZWYgVmVjdG9yPE93blB0cjxUcmFuc2ZlcmFibGVS
ZWNlaXB0PiwgMT4gVHJhbnNmZXJhYmxlUmVjZWlwdEFycmF5OwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorY2xhc3MgV2ViQXJyYXlCdWZmZXJSZWNlaXB0OwogY2xhc3MgV2ViTWVzc2FnZVBvcnRS
ZWNlaXB0OwogY2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdDsK
IAogdHlwZWRlZiBXZWJWZWN0b3I8Y2xhc3MgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCo+IFdlYlRy
YW5zZmVyYWJsZVJlY2VpcHRBcnJheTsKIAorV0VCS0lUX0VYUE9SVCBXZWJBcnJheUJ1ZmZlclJl
Y2VpcHQqIHRvV2ViQXJyYXlCdWZmZXJSZWNlaXB0KFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqKTsK
IFdFQktJVF9FWFBPUlQgV2ViTWVzc2FnZVBvcnRSZWNlaXB0KiB0b1dlYk1lc3NhZ2VQb3J0UmVj
ZWlwdChXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Kik7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KQEAgLTcyLDcgKzc0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYlRyYW5zZmVyYWJs
ZVJlY2VpcHQoKSB7IH0KIAogcHJvdGVjdGVkOgorICAgIGZyaWVuZCBXZWJBcnJheUJ1ZmZlclJl
Y2VpcHQqIHRvV2ViQXJyYXlCdWZmZXJSZWNlaXB0KFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqKTsK
ICAgICBmcmllbmQgV2ViTWVzc2FnZVBvcnRSZWNlaXB0KiB0b1dlYk1lc3NhZ2VQb3J0UmVjZWlw
dChXZWJUcmFuc2ZlcmFibGVSZWNlaXB0Kik7CisgICAgdmlydHVhbCBXZWJBcnJheUJ1ZmZlclJl
Y2VpcHQqIGFzV2ViQXJyYXlCdWZmZXJSZWNlaXB0KCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1
YWwgV2ViTWVzc2FnZVBvcnRSZWNlaXB0KiBhc1dlYk1lc3NhZ2VQb3J0UmVjZWlwdCgpIHsgcmV0
dXJuIDA7IH0KICAgICBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0KCkgeyB9CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVHJhbnNmZXJhYmxlUmVjZWlwdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcApp
bmRleCA3ZTVjZWMxLi4xMzhiNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlRyYW5zZmVyYWJsZVJlY2VpcHQuaCIKIAor
I2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwuaCIKICNpbmNsdWRlICJUcmFuc2ZlcmFibGVSZWNlaXB0LmgiCiAjaW5jbHVkZSAiV2Vi
TWVzc2FnZVBvcnRDaGFubmVsLmgiCkBAIC00MCw2ICs0MSwyNCBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYkFycmF5QnVmZmVyUmVj
ZWlwdCA6IHB1YmxpYyBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0IHsKK3B1YmxpYzoKKyAgICBXZWJB
cnJheUJ1ZmZlclJlY2VpcHQodW5zaWduZWQgc2l6ZSwgdm9pZCogZGF0YSkgOiBtX3NpemUoc2l6
ZSksIG1fZGF0YShkYXRhKSB7IH0KKyAgICB+V2ViQXJyYXlCdWZmZXJSZWNlaXB0KCkgeyB9Cisg
ICAgdW5zaWduZWQgc2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHZvaWQqIGRhdGEoKSB7
IHJldHVybiBtX2RhdGE7IH0KKyAgICB2b2lkIHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAgbV9z
aXplID0gMDsKKyAgICAgICAgbV9kYXRhID0gMDsKKyAgICB9CisgICAgV2ViQXJyYXlCdWZmZXJS
ZWNlaXB0KiBhc1dlYkFycmF5QnVmZmVyUmVjZWlwdCgpIHsgcmV0dXJuIHRoaXM7IH0KKworcHJp
dmF0ZToKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgdm9pZCogbV9kYXRhOworfTsKKwogUGFz
c093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0PiB0b1RyYW5zZmVyYWJsZVJlY2VpcHQoV2ViVHJh
bnNmZXJhYmxlUmVjZWlwdCogcmVjZWlwdCkKIHsKICAgICBpZiAoV2ViTWVzc2FnZVBvcnRSZWNl
aXB0KiB3ZWJNZXNzYWdlUG9ydFJlY2VpcHQgPSB0b1dlYk1lc3NhZ2VQb3J0UmVjZWlwdChyZWNl
aXB0KSkgewpAQCAtNDgsNiArNjcsMTEgQEAgUGFzc093blB0cjxUcmFuc2ZlcmFibGVSZWNlaXB0
PiB0b1RyYW5zZmVyYWJsZVJlY2VpcHQoV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCogcmUKICAgICAg
ICAgd2ViTWVzc2FnZVBvcnRDaGFubmVsLT5zZXRDbGllbnQocGxhdGZvcm1DaGFubmVsLmdldCgp
KTsKICAgICAgICAgcmV0dXJuIE1lc3NhZ2VQb3J0UmVjZWlwdDo6Y3JlYXRlKE1lc3NhZ2VQb3J0
Q2hhbm5lbDo6Y3JlYXRlKHBsYXRmb3JtQ2hhbm5lbCkpOwogICAgIH0KKyAgICBpZiAoV2ViQXJy
YXlCdWZmZXJSZWNlaXB0KiB3ZWJBcnJheUJ1ZmZlclJlY2VpcHQgPSB0b1dlYkFycmF5QnVmZmVy
UmVjZWlwdChyZWNlaXB0KSkgeworICAgICAgICBPd25QdHI8QXJyYXlCdWZmZXJSZWNlaXB0PiBh
cnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyUmVjZWlwdDo6YWRvcHQod2ViQXJyYXlCdWZmZXJSZWNl
aXB0LT5zaXplKCksIHdlYkFycmF5QnVmZmVyUmVjZWlwdC0+ZGF0YSgpKTsKKyAgICAgICAgd2Vi
QXJyYXlCdWZmZXJSZWNlaXB0LT5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiBhcnJheUJ1ZmZl
ci5yZWxlYXNlKCk7CisgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biBudWxscHRyOwogfQpAQCAtNzEsNiArOTUsMTEgQEAgV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCog
dG9XZWJUcmFuc2ZlcmFibGVSZWNlaXB0KFRyYW5zZmVyYWJsZVJlY2VpcHQqIHJlY2VpcHQpCiAg
ICAgICAgIHdlYk1lc3NhZ2VQb3J0Q2hhbm5lbC0+c2V0Q2xpZW50KDApOwogICAgICAgICByZXR1
cm4gbmV3IFdlYk1lc3NhZ2VQb3J0UmVjZWlwdCh3ZWJNZXNzYWdlUG9ydENoYW5uZWwpOwogICAg
IH0KKyAgICBpZiAoQXJyYXlCdWZmZXJSZWNlaXB0KiBhcnJheUJ1ZmZlciA9IHJlY2VpcHQtPmFz
QXJyYXlCdWZmZXJSZWNlaXB0KCkpIHsKKyAgICAgICAgV2ViQXJyYXlCdWZmZXJSZWNlaXB0KiB3
ZWJBcnJheUJ1ZmZlclJlY2VpcHQgPSBuZXcgV2ViQXJyYXlCdWZmZXJSZWNlaXB0KGFycmF5QnVm
ZmVyLT5ieXRlTGVuZ3RoKCksIGFycmF5QnVmZmVyLT5kYXRhKCkpOworICAgICAgICBhcnJheUJ1
ZmZlci0+cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gd2ViQXJyYXlCdWZmZXJSZWNlaXB0Owor
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTg2
LDYgKzExNSwxMSBAQCBXZWJUcmFuc2ZlcmFibGVSZWNlaXB0QXJyYXkqIHRvV2ViVHJhbnNmZXJh
YmxlUmVjZWlwdEFycmF5KGNvbnN0IFdlYkNvcmU6OlRyYW5zZgogICAgIHJldHVybiBleHBvcnRl
ZFJlY2VpcHRzOwogfQogCitXZWJBcnJheUJ1ZmZlclJlY2VpcHQqIHRvV2ViQXJyYXlCdWZmZXJS
ZWNlaXB0KFdlYlRyYW5zZmVyYWJsZVJlY2VpcHQqIHJlY2VpcHQpCit7CisgICAgcmV0dXJuIHJl
Y2VpcHQtPmFzV2ViQXJyYXlCdWZmZXJSZWNlaXB0KCk7Cit9CisKIFdlYk1lc3NhZ2VQb3J0UmVj
ZWlwdCogdG9XZWJNZXNzYWdlUG9ydFJlY2VpcHQoV2ViVHJhbnNmZXJhYmxlUmVjZWlwdCogcmVj
ZWlwdCkKIHsKICAgICByZXR1cm4gcmVjZWlwdC0+YXNXZWJNZXNzYWdlUG9ydFJlY2VpcHQoKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4Y2M5
YTJjLi5mOGI2YjRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDgtMTkgIEx1a2UgWmFya28gIDxsdWtlemFy
a29AZ21haWwuY29tPgorCisgICAgICAgIE1ha2UgQXJyYXlCdWZmZXJzIFRyYW5zZmVyYWJsZS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY1NzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2Ug
ZXhwbGljaXQgc2VyaWFsaXphdGlvbiwgZmxhdHRlbmluZyBhbmQgZGVzZXJpYWxpemF0aW9uIHJv
dXRpbmVzCisgICAgICAgIG9uIExheW91dFRlc3RDb250cm9sbGVyIHNvIHRoYXQgdGhlc2UgY2Fu
IGJlIGNoZWNrZWQgaW5kZXBlbmRlbnRseS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2VyaWFsaXplVmFsdWUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZs
YXR0ZW5TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRl
c2VyaWFsaXplVmFsdWUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmg6CisKIDIwMTEtMDgtMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBUaGUgVVJMIHdlIHdlcmUgY29tcHV0aW5nIGZvciByZXRyaWV2
aW5nIGJhc2VsaW5lcyB3YXMgbWlzc2luZyBhIHNsYXNoCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTc1NmQz
Mi4uMjBmYTdiMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgIldl
YlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElu
cHV0Q29udHJvbGxlck1vY2suaCIKKyNpbmNsdWRlICJXZWJUZXN0aW5nU3VwcG9ydC5oIgogI2lu
Y2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJWaWV3
SG9zdC5oIgpAQCAtNjcsNiArNjgsOCBAQAogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgog
I2VuZGlmCiAKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhOUFV0aWxzLmgiCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0xOTQsNiArMTk3LDkg
QEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCog
c2hlbGwpCiAgICAgYmluZE1ldGhvZCgic2V0SW1hZ2VzQWxsb3dlZCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0SW1hZ2VzQWxsb3dlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0U3RvcmFnZUFs
bG93ZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFN0b3JhZ2VBbGxvd2VkKTsKICAgICBi
aW5kTWV0aG9kKCJzZXRQbHVnaW5zQWxsb3dlZCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
UGx1Z2luc0FsbG93ZWQpOworICAgIGJpbmRNZXRob2QoInNlcmlhbGl6ZVZhbHVlIiwgJkxheW91
dFRlc3RDb250cm9sbGVyOjpzZXJpYWxpemVWYWx1ZSk7CisgICAgYmluZE1ldGhvZCgiZmxhdHRl
blNlcmlhbGl6ZWRWYWx1ZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZmxhdHRlblNlcmlhbGl6
ZWRWYWx1ZSk7CisgICAgYmluZE1ldGhvZCgiZGVzZXJpYWxpemVWYWx1ZSIsICZMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZGVzZXJpYWxpemVWYWx1ZSk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGFy
ZSBzdHVicy4KICAgICBiaW5kTWV0aG9kKCJhYm9ydE1vZGFsIiwgJkxheW91dFRlc3RDb250cm9s
bGVyOjphYm9ydE1vZGFsKTsKQEAgLTE4NzAsMyArMTg3NiwzMCBAQCB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBdWRpb0RhdGEoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcgogCiAgICAgc2V0U2hvdWxkRHVtcEFzQXVkaW8odHJ1ZSk7CiB9CisKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNlcmlhbGl6ZVZhbHVlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7
CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPT0gMSkKKyAgICAgICAgc2VyaWFsaXplVjgoJmFy
Z3VtZW50c1swXSwgMCwgcmVzdWx0KTsKKyAgICBlbHNlIGlmIChhcmd1bWVudHMuc2l6ZSgpID09
IDIpCisgICAgICAgIHNlcmlhbGl6ZVY4KCZhcmd1bWVudHNbMF0sICZhcmd1bWVudHNbMV0sIHJl
c3VsdCk7Cit9CisKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmZsYXR0ZW5TZXJpYWxpemVk
VmFsdWUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA9
PSAxKQorICAgICAgICBmbGF0dGVuU2VyaWFsaXplZFZhbHVlVjgoJmFyZ3VtZW50c1swXSwgMCwg
cmVzdWx0KTsKKyAgICBlbHNlIGlmIChhcmd1bWVudHMuc2l6ZSgpID09IDIpCisgICAgICAgIGZs
YXR0ZW5TZXJpYWxpemVkVmFsdWVWOCgmYXJndW1lbnRzWzBdLCAmYXJndW1lbnRzWzFdLCByZXN1
bHQpOworfQorCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkZXNlcmlhbGl6ZVZhbHVlKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPT0gMSkKKyAg
ICAgICAgZGVzZXJpYWxpemVWOCgmYXJndW1lbnRzWzBdLCAwLCByZXN1bHQpOworICAgIGVsc2Ug
aWYgKGFyZ3VtZW50cy5zaXplKCkgPT0gMikKKyAgICAgICAgZGVzZXJpYWxpemVWOCgmYXJndW1l
bnRzWzBdLCAmYXJndW1lbnRzWzFdLCByZXN1bHQpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNmZmNjZjYS4u
NjMwNDczMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCkBAIC0zOTQsNiArMzk0LDExIEBAIHB1YmxpYzoKICAgICAvLyBD
aGFuZ2VzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGZvY3VzZWQgZWxlbWVudC4KICAgICB2b2lkIHNl
dFRleHREaXJlY3Rpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCisg
ICAgLy8gQ29udHJvbHMgc2VyaWFsaXphdGlvbi4KKyAgICB2b2lkIHNlcmlhbGl6ZVZhbHVlKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIGZsYXR0ZW5TZXJp
YWxpemVkVmFsdWUoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZv
aWQgZGVzZXJpYWxpemVWYWx1ZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CisKIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG5vdCBleHBvc2Vk
IHRvIEphdmFTY3JpcHQuCiAgICAgdm9pZCBzZXRXb3JrUXVldWVGcm96ZW4oYm9vbCBmcm96ZW4p
IHsgbV93b3JrUXVldWUuc2V0RnJvemVuKGZyb3plbik7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>