<?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>12226</bug_id>
          
          <creation_ts>2007-01-12 10:33:20 -0800</creation_ts>
          <short_desc>[S60] UI key event handling enhancements to s60webkit</short_desc>
          <delta_ts>2007-02-09 13:23:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>S60 Emulator</rep_platform>
          <op_sys>S60 3rd edition</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bradley.morrison</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>35458</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2007-01-12 10:33:20 -0800</bug_when>
    <thetext>Add support for touch scrolling and for context sensitive menus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34628</commentid>
    <comment_count>1</comment_count>
      <attachid>12487</attachid>
    <who name="Yael">yael</who>
    <bug_when>2007-01-16 08:33:18 -0800</bug_when>
    <thetext>Created attachment 12487
Touch implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34636</commentid>
    <comment_count>2</comment_count>
    <who name="Sachin Padma">Sachin.Padma</who>
    <bug_when>2007-01-16 09:44:56 -0800</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34613</commentid>
    <comment_count>3</comment_count>
    <who name="Sriram">sriram.yadavalli</who>
    <bug_when>2007-01-16 10:32:02 -0800</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34564</commentid>
    <comment_count>4</comment_count>
    <who name="Bradley Morrison">bradley.morrison</who>
    <bug_when>2007-01-16 14:20:13 -0800</bug_when>
    <thetext>Landed - r18891 </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24679</commentid>
    <comment_count>5</comment_count>
    <who name="Krishna">krishnamurty.podipireddy</who>
    <bug_when>2007-02-09 13:23:10 -0800</bug_when>
    <thetext>
Closed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12487</attachid>
            <date>2007-01-16 08:33:18 -0800</date>
            <delta_ts>2007-01-18 11:34:22 -0800</delta_ts>
            <desc>Touch implementation</desc>
            <filename>MyBrilliantWork.patch</filename>
            <type>text/plain</type>
            <size>125995</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFM2MEludGVybmFscy9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTNjBJbnRlcm5h
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODg4NykNCisrKyBTNjBJbnRlcm5hbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDEzIEBADQorMjAwNy0wMS0xNiAgeWFoYXJvbiAg
PHlhZWwuYWhhcm9uQG5va2lhLmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLg0KKyAgICAgICAgREVTQzogDQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjIyNg0KKw0KKyAgICAgICAgKiBDaGFuZ2VMb2c6DQorICAgICAg
ICAqIFM2MER5bmFtaWNMaWJzLnppcDoNCisgICAgICAgICogUzYwSGVhZGVycy56aXA6DQorDQog
MjAwNi0xMi0xOCAgc3BhZG1hICA8U2FjaGluLlBhZG1hQG5va2lhLmNvbT4NCiANCiAgICAgICAg
IFJldmlld2VkIGJ5IFlvbmdqdW4uDQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg4ODcpDQorKysgV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkNCkBAIC0xLDMgKzEsMjIgQEANCisyMDA3LTAxLTE2ICB5
YWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPg0KKw0KKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuDQorICAgICAgICBERVNDOiANCisgICAgICAgIGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjI2DQorDQorICAgICAgICBXQVJOSU5HOiBOTyBU
RVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQNCisNCisgICAgICAgICogQldJTlMvV0VCQ09SRVUu
REVGOg0KKyAgICAgICAgKiBDaGFuZ2VMb2c6DQorICAgICAgICAqIEVBQkkvV2ViQ29yZVUuREVG
Og0KKyAgICAgICAgKiBicmlkZ2UvV2ViQ29yZUJyaWRnZS5jcHA6DQorICAgICAgICAoQ1dlYkNv
cmVCcmlkZ2U6OkdldFVybE9mTm9kZUluRm9jdXNMKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRn
ZTo6TmF2aWdhYmxlTm9kZVVuZGVyQ3Vyc29yKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRnZTo6
Rm9jdXNlZEltYWdlKToNCisgICAgICAgIChDV2ViQ29yZUJyaWRnZTo6TG9hZEZvY3VzZWRJbWFn
ZSk6DQorICAgICAgICAoQ1dlYkNvcmVCcmlkZ2U6OlJlbmRlckltYWdlQXRQb2ludCk6DQorICAg
ICAgICAqIGJyaWRnZS9XZWJDb3JlQnJpZGdlLmg6DQorDQogMjAwNy0wMS0xNCAgYnJtb3JyaXMg
My4wIHNkayBidWlsZCBmaXguIA0KIA0KICAgICAgICAgKiBCV0lOUy9XZWJDb3JlX3Nka1UuREVG
Og0KSW5kZXg6IFdlYkNvcmUvQldJTlMvV0VCQ09SRVUuREVGDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9CV0lOUy9XRUJDT1JFVS5ERUYJKHJldmlzaW9uIDE4ODg1KQ0KKysrIFdlYkNvcmUvQldJ
TlMvV0VCQ09SRVUuREVGCSh3b3JraW5nIGNvcHkpDQpAQCAtMTU4LDQgKzE1OCw2IEBAIEVYUE9S
VFMNCiAgICAgICAgID9oYXNQcm9wZXJ0eUBPYmplY3RAS0pTQEBRQkVfTlBBVkV4ZWNTdGF0ZUAy
QElAWiBAIDE1NyBOT05BTUUgOyBib29sIEtKUzo6T2JqZWN0OjpoYXNQcm9wZXJ0eShjbGFzcyBL
SlM6OkV4ZWNTdGF0ZSAqLCB1bnNpZ25lZCBpbnQpIGNvbnN0DQogICAgICAgICA/bWFya2VkQFZh
bHVlSW1wQEtKU0BAUUJFX05YWiBAIDE1OCBOT05BTUUgOyBib29sIEtKUzo6VmFsdWVJbXA6Om1h
cmtlZCh2b2lkKSBjb25zdA0KICAgICAgICAgP3Byb3BMaXN0QE9iamVjdEBLSlNAQFFBRT9BVlJl
ZmVyZW5jZUxpc3RAMkBQQVZFeGVjU3RhdGVAMkBfTkBaIEAgMTU5IE5PTkFNRSA7IGNsYXNzIEtK
Uzo6UmVmZXJlbmNlTGlzdCBLSlM6Ok9iamVjdDo6cHJvcExpc3QoY2xhc3MgS0pTOjpFeGVjU3Rh
dGUgKiwgYm9vbCkNCisgICAgICAgID9Gb2N1c2VkSW1hZ2VAQ1dlYkNvcmVCcmlkZ2VAQFFBRT9B
VzRUV2ViQ29yZUVycm9yR2V0dGluZ0ltYWdlQEBWVFBvaW50QEBBQVBBVlRXZWJDb3JlSW1hZ2VD
YXJyaWVyQEBAWiBAIDE2MCBOT05BTUUgOyBlbnVtIFRXZWJDb3JlRXJyb3JHZXR0aW5nSW1hZ2Ug
Q1dlYkNvcmVCcmlkZ2U6OkZvY3VzZWRJbWFnZShjbGFzcyBUUG9pbnQsIGNsYXNzIFRXZWJDb3Jl
SW1hZ2VDYXJyaWVyICogJikNCisgICAgICAgID9Mb2FkRm9jdXNlZEltYWdlQENXZWJDb3JlQnJp
ZGdlQEBRQUVYVlRQb2ludEBAQFogQCAxNjEgTk9OQU1FIDsgdm9pZCBDV2ViQ29yZUJyaWRnZTo6
TG9hZEZvY3VzZWRJbWFnZShjbGFzcyBUUG9pbnQpDQogDQpJbmRleDogV2ViQ29yZS9FQUJJL1dl
YkNvcmVVLkRFRg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvRUFCSS9XZWJDb3JlVS5ERUYJKHJl
dmlzaW9uIDE4ODg1KQ0KKysrIFdlYkNvcmUvRUFCSS9XZWJDb3JlVS5ERUYJKHdvcmtpbmcgY29w
eSkNCkBAIC0xNjEsMyArMTYxLDYgQEAgRVhQT1JUUw0KICAgICAgICAgX1pUVjE2Q1dlYkNvcmVT
ZXR0aW5ncyBAIDE2MCBOT05BTUUgOyAjPFZUPiMNCiAgICAgICAgIF9aVFYyMENXZWJDb3JlUGFn
ZURhdGFJdGVtIEAgMTYxIE5PTkFNRSA7ICM8VlQ+Iw0KICAgICAgICAgX1pUVjIzQ1dlYkNvcmVH
cmFwaGljc0NvbnRleHQgQCAxNjIgTk9OQU1FIDsgIzxWVD4jDQorICAgICAgICBfWk4xNENXZWJD
b3JlQnJpZGdlMTJGb2N1c2VkSW1hZ2VFNlRQb2ludFJQMjBUV2ViQ29yZUltYWdlQ2FycmllciBA
IDE2MyBOT05BTUUNCisgICAgICAgIF9aTjE0Q1dlYkNvcmVCcmlkZ2UxNkxvYWRGb2N1c2VkSW1h
Z2VFNlRQb2ludCBAIDE2NCBOT05BTUUNCisNCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9XZWJDb3Jl
QnJpZGdlLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvYnJpZGdlL1dlYkNvcmVCcmlkZ2Uu
Y3BwCShyZXZpc2lvbiAxODg4NSkNCisrKyBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlQnJpZGdlLmNw
cAkod29ya2luZyBjb3B5KQ0KQEAgLTE1NDEsNiArMTU0MSwxNSBAQCBIQnVmQyogQ1dlYkNvcmVC
cmlkZ2U6OkdldFVybE9mTm9kZUluRm9jDQogICAgIGlQYXJ0LT5yZW5kZXJlcigpLT5sYXllcigp
LT5oaXRUZXN0KHJlbmRlckluZm8sIGFQb2ludC5pWCwgYVBvaW50LmlZKTsNCiANCiAgICAgTm9k
ZUltcGwgKmZvY3VzTm9kZSAgPSByZW5kZXJJbmZvLmlubmVyTm9kZSgpOw0KKyAgICBpZihmb2N1
c05vZGUgJiYgKGZvY3VzTm9kZS0+aWQoKSA9PSBJRF9BUkVBKSkNCisgICAgew0KKyAgICAgIEVs
ZW1lbnRJbXBsICplID0gc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwgKj4oZm9jdXNOb2RlKTsNCisg
ICAgICBRU3RyaW5nIHVybCA9IGUtPmdldEF0dHJpYnV0ZShBVFRSX0hSRUYpLnN0cmluZygpOw0K
KyAgICAgIEtVUkwgYWJzVXJsID0gaVBhcnQtPmNvbXBsZXRlVVJMKHVybCk7DQorICAgICAgbmV3
VXJsID0gSEJ1ZkM6Ok5ld0woYWJzVXJsLnVybCgpLmxlbmd0aCgpKTsNCisgICAgICBuZXdVcmwt
PkRlcygpLkNvcHkoYWJzVXJsLnVybCgpLkRlcygpKTsNCisgICAgfQ0KKyAgICBlbHNlIHsNCiAg
ICAgZm9yICg7IGZvY3VzTm9kZSA7IGZvY3VzTm9kZSA9IGZvY3VzTm9kZS0+cGFyZW50Tm9kZSgp
KSB7DQogICAgICAgaWYgKGZvY3VzTm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIGZvY3VzTm9kZS0+
aXNGb2N1c2FibGUoKSkgew0KICAgICAgICAgICAgIGJyZWFrOw0KQEAgLTE1NTYsNiArMTU2NSw3
IEBAIEhCdWZDKiBDV2ViQ29yZUJyaWRnZTo6R2V0VXJsT2ZOb2RlSW5Gb2MNCiAgICAgICAgIG5l
d1VybC0+RGVzKCkuQ29weShhYnNVcmwudXJsKCkuRGVzKCkpOw0KICAgICAgIH0NCiAgICAgfQ0K
KyAgfQ0KICAgcmV0dXJuIG5ld1VybDsNCiB9DQogDQpAQCAtMjcwNiwxMSArMjcxNiw0NSBAQCBU
Qm9vbCBDV2ViQ29yZUJyaWRnZTo6TmF2aWdhYmxlTm9kZVVuZGVyDQogICAgICAgICAgICAgICAg
IGVsc2UgaWYoIG5hdk5vZGUtPmlkKCkgPT0gSURfQVJFQSkgew0KICAgICAgICAgICAgICAgICAg
ICAgRWxlbWVudEltcGwqIGUgPSAgc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwqPihuYXZOb2RlKTsN
CiAgICAgICAgICAgICAgICAgICAgIGlmKGUgJiYgIWUtPmdldEF0dHJpYnV0ZShBVFRSX0hSRUYp
LmlzTnVsbCgpKSB7DQotICAgICAgICAgICAgICAgICAgICBhRWxUeXBlID0gRVdlYkNvcmVFbGVt
ZW50SW1hZ2VCb3g7DQorICAgICAgICAgICAgICAgICAgICBhRWxUeXBlID0gRVdlYkNvcmVFbGVt
ZW50QXJlYUJveDsNCiAgICAgICAgICAgICAgICAgICAgIGFGb2N1c1JlY3QgPSBuYXZOb2RlLT5n
ZXRSZWN0KCkuUmVjdCgpOw0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVUcnVlOw0KICAg
ICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAg
IGVsc2UgaWYoIG5hdk5vZGUtPmlkKCkgPT0gSURfSU1HKSB7DQorICAgICAgICAgICAgICAgICAg
ICAvLyBGaXJzdCBjaGVjayBpZiB0aGUgaW1hZ2UgaXMgaW5zaWRlIGFuIGFuY2hvcg0KKyAgICAg
ICAgICAgICAgICAgICAgZm9yIChOb2RlSW1wbCAqYU5vZGUgPSBuYXZOb2RlOyBhTm9kZTsgYU5v
ZGUgPSBhTm9kZS0+cGFyZW50Tm9kZSgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGFOb2RlLT5pZCgpID09IElEX0EpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWxl
bWVudEltcGwqIGUgPSAgc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwqPihhTm9kZSk7DQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmKGUgJiYgIWUtPmdldEF0dHJpYnV0ZShBVFRSX0hSRUYp
LmlzTnVsbCgpKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhRWxUeXBlID0g
RVdlYkNvcmVFbGVtZW50QW5jaG9yOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YUZvY3VzUmVjdCA9IG5hdk5vZGUtPmdldFJlY3QoKS5SZWN0KCk7DQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gRVRydWU7DQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9IC8vIGlmIChhTm9kZS0+aWQoKSA9PSBJ
RF9BKQ0KKyAgICAgICAgICAgICAgICAgICAgfSAvLyBmb3INCisgICAgICAgICAgICAgICAgICAg
IEhUTUxJbWFnZUVsZW1lbnRJbXBsKiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1h
Z2VFbGVtZW50SW1wbCAqPihuYXZOb2RlKTsNCisgICAgICAgICAgICAgICAgICAgIFJlbmRlcklt
YWdlICpyID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UgKj4obm9kZS0+cmVuZGVyZXIoKSk7DQor
ICAgICAgICAgICAgICAgICAgICBraHRtbDo6Q2FjaGVkSW1hZ2UqIGNpID0gci0+Z2V0SW1hZ2Uo
KTsNCisgICAgICAgICAgICAgICAgICAgIGlmIChjaS0+aXNFcnJvckltYWdlKCkpIHsNCisgICAg
ICAgICAgICAgICAgICAgICAgICBhRWxUeXBlID0gRVdlYkNvcmVFbGVtZW50QnJva2VuSW1hZ2U7
DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCisg
ICAgICAgICAgICAgICAgICAgICAgICBET01TdHJpbmcgYWx0ID0gaW1hZ2VFbGVtZW50LT5hbHRU
ZXh0KCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYWx0dGV4dCBpcyAi
Tm9raWEiIG9yICJOb19zYXZlIi4NCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuIGRv
IG5vdCBhZGQgdGhlIGltYWdlIHRvIHRoZSBsaXN0DQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogc3RyMSA9ICJOb2tpYSI7DQorICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogc3RyMiA9ICJOb19TYXZlIjsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IHN0cmNhc2VjbXAoIGFsdCwgc3RyMSkgJiYgc3RyY2FzZWNtcCggYWx0LCBzdHIyKSl7DQorICAg
ICAgICAgICAgICAgICAgICBhRWxUeXBlID0gRVdlYkNvcmVFbGVtZW50SW1hZ2VCb3g7DQorICAg
ICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhRWxUeXBlID0gRVdlYkNvcmVFbGVtZW50Tm9u
ZTsNCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgIGFGb2N1c1JlY3QgPSBuYXZO
b2RlLT5nZXRSZWN0KCkuUmVjdCgpOw0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVUcnVl
Ow0KKyAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5hdk5vZGUt
PnJlbmRlcmVyKCkgJiYgbmF2Tm9kZS0+cmVuZGVyZXIoKS0+bGF5ZXIoKSkgew0KICAgICAgICAg
ICAgICAgICAgICAgUVNjcm9sbEJhciogaGJhciA9IG5hdk5vZGUtPnJlbmRlcmVyKCktPmxheWVy
KCktPmhvcml6b250YWxTY3JvbGxiYXIoKTsNCiAgICAgICAgICAgICAgICAgICAgIGlmIChoYmFy
ICYmIFFSZWN0KGhiYXItPnBvcygpLGhiYXItPnNpemUoKSkuY29udGFpbnMoYVBvaW50LmlYLGFQ
b2ludC5pWSkpIHsNCkBAIC0yOTgxLDMgKzMwMjUsMTE4IEBAIFRCb29sIENXZWJDb3JlQnJpZGdl
OjpEZWZlcnNUaW1lcnMoKQ0KICAgICByZXR1cm4gUU9iamVjdDo6ZGVmZXJzVGltZXJzKCk7DQog
fQ0KIA0KK0VYUE9SVF9DDQorVFdlYkNvcmVFcnJvckdldHRpbmdJbWFnZSBDV2ViQ29yZUJyaWRn
ZTo6Rm9jdXNlZEltYWdlKFRQb2ludCBhUG9pbnQsIFRXZWJDb3JlSW1hZ2VDYXJyaWVyKiYgYUlt
YWdlQ2FycmllcikNCit7DQorICAgIFRXZWJDb3JlRXJyb3JHZXR0aW5nSW1hZ2UgcmV0ID0gRVdl
YkNvcmVFcnJvck5vRXJyb3I7DQorICAgIFRXZWJDb3JlSW1hZ2VDYXJyaWVyKiB0ID0gTlVMTDsN
CisgICAga2h0bWw6OlJlbmRlckltYWdlKiByID0gUmVuZGVySW1hZ2VBdFBvaW50KGFQb2ludCk7
DQorICAgIGlmIChyKSB7IA0KKyAgICAgICAgUVBpeG1hcCBwID0gci0+cGl4bWFwKCk7DQorICAg
ICAgICBraHRtbDo6Q2FjaGVkSW1hZ2UqIGNpID0gci0+Z2V0SW1hZ2UoKTsNCisgICAgICAgIGlm
KCBjaSApIHsNCisgICAgICAgICAgICBUUHRyQzggcmF3RGF0YSA9IGNpLT5yYXdEYXRhKCk7DQor
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgZGF0YSBpbiB0aGUgaW1hZ2UgYnVmZmVy
Lg0KKyAgICAgICAgICAgIC8vIEJyb2tlbiBsaW5rcyBkbyBub3QgaGF2ZSBkYXRhIGluIHRoZW0N
CisgICAgICAgICAgICBpZiAocmF3RGF0YS5MZW5ndGgoKSA+IDApIHsNCisgICAgICAgICAgICAg
ICAgLy8gR2V0IHRoZSBhbHQgdGV4dA0KKyAgICAgICAgICAgICAgICBET01TdHJpbmcgYWx0Ow0K
KyAgICAgICAgICAgICAgICBFbGVtZW50SW1wbCAqaSA9IHN0YXRpY19jYXN0PEVsZW1lbnRJbXBs
Kj4oci0+ZWxlbWVudCgpKTsNCisgICAgICAgICAgICAgICAgaWYgKGlkRnJvbU5vZGUoaSkgPT0g
SURfSU1HKSB7DQorICAgICAgICAgICAgICAgICAgICBhbHQgPSBzdGF0aWNfY2FzdDxIVE1MSW1h
Z2VFbGVtZW50SW1wbCAqPihpKS0+YWx0VGV4dCgpOw0KKyAgICAgICAgICAgICAgICB9DQorDQor
ICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGFsdHRleHQgaXMgIk5va2lhIiBvciAiTm9fc2F2
ZSIuDQorICAgICAgICAgICAgICAgIC8vIFRoZW4gZG8gbm90IGFkZCB0aGUgaW1hZ2UgdG8gdGhl
IGxpc3QNCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogc3RyMSA9ICJOb2tpYSI7DQorICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHN0cjIgPSAiTm9fU2F2ZSI7DQorICAgICAgICAgICAg
ICAgIGlmICggc3RyY2FzZWNtcCggYWx0LCBzdHIxKSAmJiBzdHJjYXNlY21wKCBhbHQsIHN0cjIp
KXsNCisgICAgICAgICAgICAgICAgICAgIERPTTo6RE9NU3RyaW5nIHVybCA9IGNpLT51cmwoKTsN
CisgICAgICAgICAgICAgICAgICAgIFRQdHJDIHB0clVybCgoVFVpbnQxNiopdXJsLnVuaWNvZGUo
KSwgdXJsLmxlbmd0aCgpKTsNCisgICAgICAgICAgICAgICAgICAgIFRQdHJDIGFsdFB0cigoVFVp
bnQxNiopYWx0LnVuaWNvZGUoKSwgYWx0Lmxlbmd0aCgpKTsNCisgICAgICAgICAgICAgICAgICAg
IC8vIENoZWNrIGZvciBPT00gaXMgZG9uZSBpbiBjbGllbnQgc2lkZQ0KKyAgICAgICAgICAgICAg
ICAgICAgdCA9IG5ldyBUV2ViQ29yZUltYWdlQ2FycmllcihyYXdEYXRhLCBwdHJVcmwsIGFsdFB0
ciwgcC5taW1lKCkuRGVzKCksIHAuaW1hZ2UoKSk7DQorICAgICAgICAgICAgICAgICAgICBpZiAo
IXQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBFV2ViQ29yZUVycm9yTm9NZW1v
cnk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAg
ICAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICByZXQgPSBFV2ViQ29yZUVycm9y
UHJvdGVjdGVkSW1hZ2U7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IC8vIGlm
IChyYXdEYXRhLkxlbmd0aCgpID4gMCkNCisgICAgICAgICAgICBlbHNlIHsgDQorICAgICAgICAg
ICAgICAgIHJldCA9IEVXZWJDb3JlRXJyb3JJbWFnZU5vdExvYWRlZDsNCisgICAgICAgICAgICB9
DQorICAgICAgICB9IC8vIGlmIChjaSkNCisgICAgICAgIGVsc2UgeyANCisgICAgICAgICAgICBy
ZXQgPSBFV2ViQ29yZUVycm9ySW1hZ2VOb3RMb2FkZWQ7DQorICAgICAgICB9DQorICAgIH0gLy8g
aWYgKHIpDQorICAgIGVsc2Ugew0KKyAgICAgICAgcmV0ID0gRVdlYkNvcmVFcnJvck5vTWVtb3J5
Ow0KKyAgICB9DQorICAgIGFJbWFnZUNhcnJpZXIgPSB0Ow0KKyAgICByZXR1cm4gcmV0Ow0KK30N
CisNCitFWFBPUlRfQw0KK3ZvaWQgQ1dlYkNvcmVCcmlkZ2U6OkxvYWRGb2N1c2VkSW1hZ2UoVFBv
aW50IGFQb2ludCkNCit7DQorICAgIFJlbmRlckltYWdlICpyID0gUmVuZGVySW1hZ2VBdFBvaW50
KGFQb2ludCk7DQorICAgIGlmIChyKSB7DQorICAgICAgICBraHRtbDo6Q2FjaGVkSW1hZ2UqIGNp
ID0gci0+Z2V0SW1hZ2UoKTsNCisgICAgICAgIGlmKCBjaSAmJiBjaS0+c3RhdHVzKCkgPT0ga2h0
bWw6OkNhY2hlZE9iamVjdDo6VW5rbm93biApIHsNCisgICAgICAgICAgICBraHRtbDo6Q2FjaGU6
OmxvYWRlcigpLT5sb2FkKGlQYXJ0LT54bWxEb2NJbXBsKCktPmRvY0xvYWRlcigpLCBjaSwgdHJ1
ZSk7DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQora2h0bWw6OlJlbmRlckltYWdlKiBDV2Vi
Q29yZUJyaWRnZTo6UmVuZGVySW1hZ2VBdFBvaW50KFRQb2ludCBhUG9pbnQpDQorew0KKyAgICBr
aHRtbDo6UmVuZGVySW1hZ2UgKnIgPSBOVUxMOw0KKyAgICBSZW5kZXJPYmplY3QgKnJlbmRlcmVy
ID0gaVBhcnQtPnJlbmRlcmVyKCk7DQorICAgIGlmICghcmVuZGVyZXIpIHsNCisgICAgICAgIHJl
dHVybiBOVUxMOw0KKyAgICB9DQorICAgIGlmKCFpUGFydCB8fCAhaVBhcnQtPnhtbERvY0ltcGwo
KSB8fCAhaVBhcnQtPnhtbERvY0ltcGwoKS0+cmVuZGVyZXIoKSkgew0KKyAgICAgICAgcmV0dXJu
IE5VTEw7DQorICAgIH0NCisgICAgUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyByZW5kZXJJbmZvKHRy
dWUsIGZhbHNlKTsNCisgICAgaVBhcnQtPnJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QocmVu
ZGVySW5mbywgYVBvaW50LmlYLCBhUG9pbnQuaVkpOw0KKyAgICBOb2RlSW1wbCAqbm9kZSA9IHJl
bmRlckluZm8uaW5uZXJOb2RlKCk7DQorICAgIGlmIChub2RlKSB7DQorICAgICAgICAvLyBnZXQg
dGhlIG5hdmlnYWJsZSBub2RlIGF0IHRoaXMgcG9pbnQNCisgICAgICAgIE5vZGVJbXBsICpuYXZO
b2RlID0gTlVMTDsNCisgICAgICAgIGZvciAobmF2Tm9kZSA9IG5vZGU7IG5hdk5vZGU7IG5hdk5v
ZGUgPSBuYXZOb2RlLT5wYXJlbnROb2RlKCkpIHsNCisgICAgICAgICAgICBpZiggbmF2Tm9kZS0+
aWQoKSA9PSBJRF9JTUcgfHwgbmF2Tm9kZS0+aWQoKSA9PSBJRF9NQVAgKSBicmVhazsNCisgICAg
ICAgIH0NCisgICAgICAgIGlmIChuYXZOb2RlKSB7DQorICAgICAgICAgICAgaWYoIG5hdk5vZGUt
PmlkKCkgPT0gSURfSU1HKSB7DQorICAgICAgICAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnRJbXBs
KiBpbWFnZUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50SW1wbCAqPihuYXZO
b2RlKTsNCisgICAgICAgICAgICAgICAgciA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlICo+KG5v
ZGUtPnJlbmRlcmVyKCkpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlIHsgLy8g
SURfTUFQDQorICAgICAgICAgICAgICAgIEtIVE1MVmlldyAqdmlldyA9IGlQYXJ0LT52aWV3KCk7
DQorICAgICAgICAgICAgICAgIFFQdHJMaXN0PGtodG1sOjpCb3hJbmZvPiAqYm94SW5mb0xpc3Qg
PSBuZXcgUVB0ckxpc3Q8a2h0bWw6OkJveEluZm8+Ow0KKyAgICAgICAgICAgICAgICBpZiAoYm94
SW5mb0xpc3QpIHsNCisgICAgICAgICAgICAgICAgICAgIFFSZWN0IHZpZXdyZWN0KDAsMCx2aWV3
LT5jb250ZW50c1dpZHRoKCksdmlldy0+Y29udGVudHNIZWlnaHQoKSk7DQorICAgICAgICAgICAg
ICAgICAgICBpUGFydC0+eG1sRG9jSW1wbCgpLT5yZW5kZXJlcigpLT5nZXRSZW5kZXJlcnNJblJl
Y3QoKmJveEluZm9MaXN0LDAsIDAsIHZpZXdyZWN0KTsNCisgICAgICAgICAgICAgICAgICAgIGto
dG1sOjpCb3hJbmZvICpiaSA9IGJveEluZm9MaXN0LT5maXJzdCgpOw0KKyAgICAgICAgICAgICAg
ICAgICAgZm9yICg7Ymk7IGJpID0gYm94SW5mb0xpc3QtPm5leHQoKSkgew0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChiaS0+cmVuZGVyT2JqZWN0ICYmIGJpLT5yZW5kZXJPYmplY3QtPmlz
SW1hZ2UoKSkgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlSW1wbCogbm9kZSA9
IGJpLT5yZW5kZXJPYmplY3QtPm5vZGUoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVuZGVySW1hZ2UgKm5vZGVSZW5kZXJlciA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlICo+KG5v
ZGUtPnJlbmRlcmVyKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBET006OkhUTUxN
YXBFbGVtZW50SW1wbCogbWFwID0gbm9kZVJlbmRlcmVyLT5pbWFnZU1hcCgpOw0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAobWFwICYmIG1hcCA9PSBuYXZOb2RlKSB7DQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbm9kZVJlbmRlcmVyOw0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0NCisgICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAgICB9IC8v
IGZvciBiaQ0KKyAgICAgICAgICAgICAgICBkZWxldGUgYm94SW5mb0xpc3Q7DQorICAgICAgICAg
ICAgICAgIH0gLy8gaWYgKGJveEluZm9MaXN0KSANCisgICAgICAgICAgICB9IC8vIGVsc2UgSURf
TUFQDQorICAgICAgICB9IC8vIGlmIChuYXZOb2RlKQ0KKyAgICB9IC8vIGlmIChub2RlKQ0KKyAg
ICByZXR1cm4gcjsNCit9DQpJbmRleDogV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViQ29yZS9icmlkZ2UvV2ViQ29yZUJyaWRnZS5oCShyZXZpc2lvbiAx
ODg4NSkNCisrKyBXZWJDb3JlL2JyaWRnZS9XZWJDb3JlQnJpZGdlLmgJKHdvcmtpbmcgY29weSkN
CkBAIC00MCw2ICs0MCw3IEBADQogI2luY2x1ZGUgPG9vbWRlZnMuaD4NCiAvLyNpbXBvcnQgPEph
dmFWTS9qbmkuaD4NCiANCisNCiAvLyBDT05TVEFOVFMNCiANCiAvLyBNQUNST1MNCkBAIC0xMjMs
OSArMTI0LDIwIEBAIHR5cGVkZWYgZW51bQ0KICAgICBFV2ViQ29yZUVsZW1lbnRSYWRpb0J1dHRv
blNlbGVjdGVkLA0KICAgICBFV2ViQ29yZUVsZW1lbnRSYWRpb0J1dHRvblVuU2VsZWN0ZWQsDQog
ICAgIEVXZWJDb3JlRWxlbWVudE1vdXNlQnV0dG9uTGlzdGVuZXIsDQotICAgIEVXZWJDb3JlRWxl
bWVudFNjcm9sbEJhcg0KKyAgICBFV2ViQ29yZUVsZW1lbnRTY3JvbGxCYXIsDQorICAgIEVXZWJD
b3JlRWxlbWVudFNtYXJ0TGlua1RlbCwNCisgICAgRVdlYkNvcmVFbGVtZW50U21hcnRMaW5rRW1h
aWwsDQorICAgIEVXZWJDb3JlRWxlbWVudEJyb2tlbkltYWdlDQogICB9IFRXZWJDb3JlRm9jdXNl
ZEVsZW1lbnRUeXBlOw0KIA0KK3R5cGVkZWYgZW51bQ0KKyAgICB7DQorICAgIEVXZWJDb3JlRXJy
b3JOb0Vycm9yLA0KKyAgICBFV2ViQ29yZUVycm9yTm9NZW1vcnksDQorICAgIEVXZWJDb3JlRXJy
b3JQcm90ZWN0ZWRJbWFnZSwNCisgICAgRVdlYkNvcmVFcnJvckltYWdlTm90TG9hZGVkDQorICAg
IH0gVFdlYkNvcmVFcnJvckdldHRpbmdJbWFnZTsNCisNCiBzdHJ1Y3QgVFdlYkNvcmVMaW5rSXRl
bQ0KICAgICB7DQogICAgIFRQdHJDIGlDaGFyc2V0Ow0KQEAgLTE1MSw2ICsxNjMsNyBAQCBuYW1l
c3BhY2UgS0pTIHsNCiBuYW1lc3BhY2Uga2h0bWwgew0KICAgICBjbGFzcyBSZW5kZXJQYXJ0Ow0K
ICAgICBjbGFzcyBSZW5kZXJPYmplY3Q7DQorICAgIGNsYXNzIFJlbmRlckltYWdlOw0KIH0NCiAN
CiBuYW1lc3BhY2UgRE9NIHsNCkBAIC01MDAsNiArNTEzLDggQEAgY2xhc3MgQ1dlYkNvcmVCcmlk
Z2UgOiBwdWJsaWMgQ0Jhc2UNCiANCiAgICAgICAgIElNUE9SVF9DIHN0YXRpYyB2b2lkIFNldERl
ZmVyc1RpbWVycyhUQm9vbCBhRGVmZXIpOw0KICAgICAgICAgSU1QT1JUX0Mgc3RhdGljIFRCb29s
IERlZmVyc1RpbWVycygpOw0KKyAgICAgICAgSU1QT1JUX0MgVFdlYkNvcmVFcnJvckdldHRpbmdJ
bWFnZSBGb2N1c2VkSW1hZ2UoVFBvaW50IGFQb2ludCwgVFdlYkNvcmVJbWFnZUNhcnJpZXIqJiBh
SW1hZ2VDYXJyaWVyKTsNCisgICAgICAgIElNUE9SVF9DIHZvaWQgTG9hZEZvY3VzZWRJbWFnZShU
UG9pbnQgYVBvaW50KTsNCiANCiAgICAgcHJpdmF0ZToNCiANCkBAIC01MTcsNiArNTMyLDcgQEAg
Y2xhc3MgQ1dlYkNvcmVCcmlkZ2UgOiBwdWJsaWMgQ0Jhc2UNCiAgICAgcHJpdmF0ZSA6IC8vIG5l
dyBmdW5jdGlvbnMNCiANCiAgICAgICAgIFRXZWJDb3JlRm9jdXNlZEVsZW1lbnRUeXBlIE5vZGVU
eXBlQiggRE9NOjpOb2RlSW1wbCogYUZvY3VzTm9kZSApIGNvbnN0Ow0KKyAgICAgICAga2h0bWw6
OlJlbmRlckltYWdlKiBSZW5kZXJJbWFnZUF0UG9pbnQoVFBvaW50IGFQb2ludCk7DQogDQogICAg
IHByb3RlY3RlZDogIC8vIERhdGENCiAgICAgICAgIC8vIEtRSyBwYXJ0IG9iamVjdCwgb3duZWQg
YnkgdGhlIGJyaWRnZQ0KSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODg4NykNCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDg5IEBADQorMjAwNy0wMS0xNiAgeWFoYXJvbiAgPHlh
ZWwuYWhhcm9uQG5va2lhLmNvbT4NCisNCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLg0KKyAgICAgICAgREVTQzogDQorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjIyNg0KKw0KKyAgICAgICAgKiBCcm93c2VyQ29udHJvbC9pbmMvQnJD
dGwuaDoNCisgICAgICAgICogQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oOg0KKyAgICAg
ICAgKFRCckN0bERlZnM6Oik6DQorICAgICAgICAqIEJyb3dzZXJDb250cm9sL2luYy9CckN0bElu
dGVyZmFjZS5oOg0KKyAgICAgICAgKiBCcm93c2VyQ29udHJvbC9pbmMvQnJDdGxTY3JvbGxpbmdQ
cm92aWRlci5oOg0KKyAgICAgICAgKE5PTlNIQVJBQkxFX0NMQVNTKToNCisgICAgICAgICogQnJv
d3NlckNvbnRyb2wvc3JjL0JyQ3RsLmNwcDoNCisgICAgICAgIChDQnJDdGw6OkNvbnN0cnVjdEwp
Og0KKyAgICAgICAgKENCckN0bDo6fkNCckN0bCk6DQorICAgICAgICAoQ0JyQ3RsOjpIYW5kbGVD
b21tYW5kTCk6DQorICAgICAgICAoQ0JyQ3RsOjpDb21wb25lbnRDb250cm9sKToNCisgICAgICAg
IChDQnJDdGw6OkRyYXdTY3JvbGxiYXJCYWNrZ3JvdW5kKToNCisgICAgICAgIChDQnJDdGw6OkRy
YXcpOg0KKyAgICAgICAgKENCckN0bDo6SGFuZGxlUmVzb3VyY2VDaGFuZ2UpOg0KKyAgICAgICAg
KENCckN0bDo6Rm9jdXNlZEltYWdlTEMpOg0KKyAgICAgICAgKiBCcm93c2VyQ29udHJvbC9zcmMv
QnJDdGxTY3JvbGxpbmdQcm92aWRlci5jcHA6DQorICAgICAgICAoQ0JyQ3RsU2Nyb2xsaW5nUHJv
dmlkZXI6OkNvbnN0cnVjdEwpOg0KKyAgICAgICAgKENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjp+
Q0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXIpOg0KKyAgICAgICAgKENCckN0bFNjcm9sbGluZ1Byb3Zp
ZGVyOjpVcGRhdGVWU2Nyb2xsQmFyTCk6DQorICAgICAgICAoQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlk
ZXI6OlVwZGF0ZUhTY3JvbGxCYXJMKToNCisgICAgICAgIChDQnJDdGxTY3JvbGxpbmdQcm92aWRl
cjo6Tm90aWZ5TGF5b3V0Q2hhbmdlKToNCisgICAgICAgIChDQnJDdGxTY3JvbGxpbmdQcm92aWRl
cjo6VlNjcm9sbEJhcldpZHRoKToNCisgICAgICAgIChDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6
SFNjcm9sbEJhckhlaWdodCk6DQorICAgICAgICAoQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXI6OlZT
Y3JvbGxCYXIpOg0KKyAgICAgICAgKENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpIU2Nyb2xsQmFy
KToNCisgICAgICAgIChDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6U2Nyb2xsQmFyQ29ybmVyV2lu
ZG93KToNCisgICAgICAgIChDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6U2V0U2Nyb2xsRGlzcGxh
eVJlY3QpOg0KKyAgICAgICAgKENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpIYW5kbGVTY3JvbGxF
dmVudEwpOg0KKyAgICAgICAgKENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpTa2luQ2hhbmdlZEwp
Og0KKyAgICAgICAgKiBCcm93c2VyQ29yZS9Gb3JtY29udHJvbHMvc3JjL0ZDb250cm9sSW5wdXRT
a2luLmNwcDoNCisgICAgICAgIChDRm9ybUlucHV0U2tpbjo6RGVBY3RpdmF0ZSk6DQorICAgICAg
ICAqIEJyb3dzZXJWaWV3L2luYy9Qb2ludGVyRXZlbnRIYW5kbGVyLmg6DQorICAgICAgICAqIEJy
b3dzZXJWaWV3L2luYy9Qb3B1cERyYXdlci5oOiBBZGRlZC4NCisgICAgICAgICogQnJvd3NlclZp
ZXcvaW5jL1dlYktpdFZpZXcuaDoNCisgICAgICAgICogQnJvd3NlclZpZXcvc3JjL0tleUV2ZW50
SGFuZGxlci5jcHA6DQorICAgICAgICAoQ0tleUV2ZW50SGFuZGxlcjo6SGFuZGxlT2ZmZXJLZXlF
dmVudEwpOg0KKyAgICAgICAgKiBCcm93c2VyVmlldy9zcmMvUG9pbnRlckV2ZW50SGFuZGxlci5j
cHA6DQorICAgICAgICAoTG9uZ1RhcENhbGxiYWNrKToNCisgICAgICAgIChDUG9pbnRlckV2ZW50
SGFuZGxlcjo6fkNQb2ludGVyRXZlbnRIYW5kbGVyKToNCisgICAgICAgIChDUG9pbnRlckV2ZW50
SGFuZGxlcjo6SGFuZGxlUG9pbnRlckV2ZW50TCk6DQorICAgICAgICAoQ1BvaW50ZXJFdmVudEhh
bmRsZXI6OkhhbmRsZUxvbmdUYXApOg0KKyAgICAgICAgKENQb2ludGVyRXZlbnRIYW5kbGVyOjpD
aGVja1NtYXJ0VGV4dEVudHJ5KToNCisgICAgICAgIChDUG9pbnRlckV2ZW50SGFuZGxlcjo6R2V0
RnJhbWVBdCk6DQorICAgICAgICAqIEJyb3dzZXJWaWV3L3NyYy9Qb3B1cERyYXdlci5jcHA6IEFk
ZGVkLg0KKyAgICAgICAgKFJlbW92ZVBvcHVwQ2FsbGJhY2spOg0KKyAgICAgICAgKENQb3B1cERy
YXdlcjo6TmV3TCk6DQorICAgICAgICAoQ1BvcHVwRHJhd2VyOjpDUG9wdXBEcmF3ZXIpOg0KKyAg
ICAgICAgKENQb3B1cERyYXdlcjo6Q29uc3RydWN0TCk6DQorICAgICAgICAoQ1BvcHVwRHJhd2Vy
Ojp+Q1BvcHVwRHJhd2VyKToNCisgICAgICAgIChDUG9wdXBEcmF3ZXI6OkRyYXdQb3B1cCk6DQor
ICAgICAgICAoQ1BvcHVwRHJhd2VyOjpSZW1vdmVQb3B1cCk6DQorICAgICAgICAoQ1BvcHVwRHJh
d2VyOjpTaXplQ2hhbmdlZEwpOg0KKyAgICAgICAgKENQb3B1cERyYXdlcjo6SGFuZGxlT2ZmZXJL
ZXlFdmVudEwpOg0KKyAgICAgICAgKENQb3B1cERyYXdlcjo6SGFuZGxlUG9pbnRlckV2ZW50TCk6
DQorICAgICAgICAoQ1BvcHVwRHJhd2VyOjpQcmVwYXJlVGV4dEwpOg0KKyAgICAgICAgKENQb3B1
cERyYXdlcjo6Q3JlYXRlQml0bWFwQW5kQ29udGV4dEwpOg0KKyAgICAgICAgKENQb3B1cERyYXdl
cjo6Q29uc3RydWN0U3ByaXRlKToNCisgICAgICAgIChDUG9wdXBEcmF3ZXI6OkNyZWF0ZUljb25J
Zk5lZWRlZEwpOg0KKyAgICAgICAgKiBCcm93c2VyVmlldy9zcmMvV2ViS2l0Q29udHJvbC5jcHA6
DQorICAgICAgICAoQ1dlYktpdENvbnRyb2w6OlBhZ2VJbmZvTEMpOg0KKyAgICAgICAgKENXZWJL
aXRDb250cm9sOjpGaW5hbFByb2dyZXNzQ29tcGxldGUpOg0KKyAgICAgICAgKiBCcm93c2VyVmll
dy9zcmMvV2ViS2l0Vmlldy5jcHA6DQorICAgICAgICAoQ1dlYktpdFZpZXc6On5DV2ViS2l0Vmll
dyk6DQorICAgICAgICAoQ1dlYktpdFZpZXc6OkdldFVybE9mTm9kZUluRm9jdXNMKToNCisgICAg
ICAgIChDV2ViS2l0Vmlldzo6RGVBY3RpdmF0ZUlmTmVlZGVkKToNCisgICAgICAgIChDV2ViS2l0
Vmlldzo6QWRqdXN0T2Zmc2NyZWVuUmVjdEwpOg0KKyAgICAgICAgKENXZWJLaXRWaWV3OjpTaXpl
Q2hhbmdlZCk6DQorICAgICAgICAoQ1dlYktpdFZpZXc6OkRyYXcpOg0KKyAgICAgICAgKENXZWJL
aXRWaWV3OjpQcm9ncmVzc0FuZEltYWdlRGVjb2RlQ29tcGxldGUpOg0KKyAgICAgICAgKENXZWJL
aXRWaWV3OjpOb2RlVW5kZXJQb2ludGVyKToNCisgICAgICAgIChDV2ViS2l0Vmlldzo6SGFuZGxl
U2hvd0FuY2hvckhyZWZMKToNCisgICAgICAgIChDV2ViS2l0Vmlldzo6Rm9jdXNlZEltYWdlTEMp
Og0KKyAgICAgICAgKENXZWJLaXRWaWV3OjpMb2FkRm9jdXNlZEltYWdlTCk6DQorICAgICAgICAo
Q1dlYktpdFZpZXc6OkZyYW1lQW5kUG9pbnRVbmRlckN1cnNvcik6DQorICAgICAgICAoQ1dlYktp
dFZpZXc6OlJlbW92ZVBvcHVwKToNCisgICAgICAgICogQ2hhbmdlTG9nOg0KKyAgICAgICAgKiBn
cm91cC9CV0lOU0NXL1dlYktpdF8zMFUuZGVmOg0KKyAgICAgICAgKiBncm91cC9Ccm93c2VyVmll
dy5tbXA6DQorICAgICAgICAqIGdyb3VwL0VBQkkvYnJvd3NlcmVuZ2luZVUuZGVmOg0KKw0KIDIw
MDctMDEtMTQgIGJybW9ycmlzICA8YnJhZGxleS5tb3JyaXNvbkBub2tpYS5jb20+DQogICAgICAg
ICANCiAgICAgICAgIERFU0M6IFJldmVydGVkIHJldmlzaW9uIDE4ODA5DQpJbmRleDogV2ViS2l0
L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dz
ZXJDb250cm9sL2luYy9CckN0bC5oCShyZXZpc2lvbiAxODg4NSkNCisrKyBXZWJLaXQvQnJvd3Nl
ckNvbnRyb2wvaW5jL0JyQ3RsLmgJKHdvcmtpbmcgY29weSkNCkBAIC04OSwxMCArODksNiBAQCBj
bGFzcyBDUGFnZVNjYWxlcjsNCiBjbGFzcyBNV0tXbWxJbnRlcmZhY2U7DQogY2xhc3MgQ1dlYktp
dFN1cmZhY2U7DQogY2xhc3MgQ1Bvc3REYXRhUGFydHM7DQotI2lmZGVmIFJEX0JST1dTRVJfU0NS
T0xMQkFSUw0KLWNsYXNzIENBa25zQmFzaWNCYWNrZ3JvdW5kQ29udHJvbENvbnRleHQ7DQotY2xh
c3MgIE1Ba25zU2tpbkluc3RhbmNlOw0KLSNlbmRpZg0KIA0KIC8vIENMQVNTIERFQ0xBUkFUSU9O
DQogY2xhc3MgTUJySGlzdG9yeUludGVyZmFjZSB7DQpAQCAtNjYzLDYgKzY1OSwxNCBAQCBjbGFz
cyBDQnJDdGwgOiBwdWJsaWMgQ0JyQ3RsSW50ZXJmYWNlLCBwDQogICAgICAgICBJTVBPUlRfQyBN
V2lkZ2V0RXh0ZW5zaW9uKiBDcmVhdGVXaWRnZXRFeHRlbnNpb25MKE1XaWRnZXRDYWxsYmFjayYg
YVdpZGdldENhbGxiYWNrKSA7DQogI2VuZGlmIC8vUkRfQlJPV1NFUl9XSURHRVRTDQogDQorICAg
ICAgICAvKioNCisgICAgICAgICogR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb2N1c2VkIGlt
YWdlLiBUaGUgZnVuY3Rpb24gbGVhdmVzIGlmIHRoZSBmb2N1cyBpcyBub3Qgb24gYW4gaW1hZ2UN
CisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0gDQorICAgICAgICAqIEBy
ZXR1cm4gVGhlIHJlcXVlc3RlZCBpbmZvcm1hdGlvbg0KKyAgICAgICAgKi8NCisgICAgICAgIElN
UE9SVF9DIFRCckN0bEltYWdlQ2FycmllciogRm9jdXNlZEltYWdlTEMoKTsNCisNCiAgICAgcHVi
bGljOiAvLyBmcm9tIE1CckN0bExvYWRFdmVudE9ic2VydmVyDQogDQogICAgICAgICB2b2lkIEhh
bmRsZUJyb3dzZXJMb2FkRXZlbnRMKCBUQnJDdGxEZWZzOjpUQnJDdGxMb2FkRXZlbnQgYUJyQ3Rs
TG9hZEV2ZW50LA0KQEAgLTczOCw3ICs3NDIsNiBAQCBjbGFzcyBDQnJDdGwgOiBwdWJsaWMgQ0Jy
Q3RsSW50ZXJmYWNlLCBwDQogICAgICAgICBUQm9vbCBTZW5kQ29tbWFuZHNUb0NsaWVudChUQnJD
dGxEZWZzOjpUQnJDdGxDbGllbnRDb21tYW5kcyBhQ29tbWFuZCwgY29uc3QgQ0FycmF5Rml4PFRQ
dHJDPiYgYUF0dHJpYnV0ZXNOYW1lcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ0FycmF5Rml4PFRQdHJDPiYgYUF0dHJpYnV0ZVZhbHVlcyk7DQogDQotI2lm
ZGVmIFJEX0JST1dTRVJfU0NST0xMQkFSUw0KICAgICAgICAgLyoqDQogICAgICAgICAqIFRoaXMg
ZnVuY3Rpb24gaXMgY2FsbGVkIGV4dGVybmFsbHkgd2hlbiBza2luIGlzIGNoYW5nZWQuDQogICAg
ICAgICAqIFRoaXMgcmVsb2FkcyB0aGUgaWNvbnMgd2hlbiBza2luIGNoYW5nZSBoYXBwZW5zLg0K
QEAgLTc0Nyw3ICs3NTAsNiBAQCBjbGFzcyBDQnJDdGwgOiBwdWJsaWMgQ0JyQ3RsSW50ZXJmYWNl
LCBwDQogICAgICAgICB2b2lkIEhhbmRsZVJlc291cmNlQ2hhbmdlKCBUSW50IGFUeXBlICk7DQog
ICAgICAgICANCiAgICAgICAgIHZvaWQgRHJhd1Njcm9sbGJhckJhY2tncm91bmQoKTsNCi0jZW5k
aWYNCiAgICAgcHJvdGVjdGVkOiAgLy8gRnVuY3Rpb25zIGZyb20gQ0NvZUNvbnRyb2wNCiANCiAg
ICAgICAgIC8qKg0KQEAgLTc2OCwxNCArNzcwLDEyIEBAIGNsYXNzIENCckN0bCA6IHB1YmxpYyBD
QnJDdGxJbnRlcmZhY2UsIHANCiAgICAgICAgICovDQogICAgICAgICBDQ29lQ29udHJvbCogQ29t
cG9uZW50Q29udHJvbChUSW50IGFJbmRleCkgY29uc3Q7DQogDQotI2lmZGVmIFJEX0JST1dTRVJf
U0NST0xMQkFSUw0KLSAgICAgICAgVFR5cGVVaWQ6OlB0ciBNb3BTdXBwbHlPYmplY3QoVFR5cGVV
aWQgYUlkKTsNCiAgICAgICAgIC8qKg0KICAgICAgICAgKiBGcm9tIENDb2VDb250cm9sDQogICAg
ICAgICAqIEhhbmRsZSBjaGFuZ2VzIGluIHNpemUgb2YgdGhlIGRpc3BsYXkuDQogICAgICAgICAq
Lw0KICAgICAgICAgdm9pZCBEcmF3KGNvbnN0IFRSZWN0JiBhUmVjdCkgY29uc3Q7DQotI2VuZGlm
DQorDQogICAgIHByaXZhdGU6ICAgIC8vIENvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3Rvcg0KIA0K
ICAgICAgICAgLyoqDQpAQCAtOTI2LDEwICs5MjYsNiBAQCBjbGFzcyBDQnJDdGwgOiBwdWJsaWMg
Q0JyQ3RsSW50ZXJmYWNlLCBwDQogICAgICAgICBUQnJDdGxXbWxTZXJ2aWNlT3B0aW9uKiAgICAg
ICAgIGlGaXJzdFByZXZEb0VsZW1lbnQ7DQogICAgICAgICBDSGlzdG9yeUNvbnRyb2xsZXIqICAg
ICAgICAgICAgICAgICBpSGlzdG9yeUNvbnRyb2xsZXI7ICAgLy8gb3duZWQNCiAgICAgICAgIENQ
YWdlU2NhbGVyKiAgICAgICAgICAgICAgICBpV21sUGFnZVNjYWxlcjsNCi0jaWZkZWYgUkRfQlJP
V1NFUl9TQ1JPTExCQVJTDQotICAgICAgICBDQWtuc0Jhc2ljQmFja2dyb3VuZENvbnRyb2xDb250
ZXh0KiBpQWtuQkdDQzsNCi0gICAgICAgIE1Ba25zU2tpbkluc3RhbmNlKiBpU2tpbjsNCi0jZW5k
aWYNCiAgICAgICAgIC8vUmVxdWlyZWQgYnkgdGhlIHdtbEVuZ2luZSBEeW5hbWljIExpYmFyeSBT
dXBwb3J0DQogICAgICAgICBSTGlicmFyeSAgICAgICAgICAgICAgICBpTGlicmFyeTsNCiAgICAg
ICAgIFRSZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmVjdDsNCkluZGV4
OiBXZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsRGVmcy5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bERlZnMuaAkocmV2aXNpb24gMTg4ODUpDQor
KysgV2ViS2l0L0Jyb3dzZXJDb250cm9sL2luYy9CckN0bERlZnMuaAkod29ya2luZyBjb3B5KQ0K
QEAgLTIwNiw3ICsyMDYsMTAgQEAgY2xhc3MgVEJyQ3RsRGVmcw0KICAgICAgICAgICAgIEVDb21t
YW5kU21hcnRMaW5rTWFrZUNhbGwsIC8vLzwNCiAgICAgICAgICAgICBFQ29tbWFuZFNtYXJ0TGlu
a1NlbmRNZXNzYWdlLCAvLy88DQogICAgICAgICAgICAgRUNvbW1hbmRTbWFydExpbmtBZGRUb1Bo
b25lQm9vaywgLy8vPA0KLSAgICAgICAgICAgIEVDb21tYW5kU2hvd1Rvb2xCYXIgLy8vPFNob3dz
IHRoZSB0b29sYmFyDQorICAgICAgICAgICAgRUNvbW1hbmRTaG93VG9vbEJhciwgLy8vPFNob3dz
IHRoZSB0b29sYmFyDQorICAgICAgICAgICAgRUNvbW1hbmRTbWFydExpbmtTZW5kRW1haWwsIC8v
LzwgDQorICAgICAgICAgICAgRUNvbW1hbmRTaG93QW5jaG9ySHJlZiwgIC8vLzxEaXNwbGF5IHRo
ZSBVUkwgb2YgYSBoeXBlcmxpbmsgLSBzdXBwb3J0ZWQgb25seSBmb3IgSFRNTA0KKyAgICAgICAg
ICAgIEVDb21tYW5kTG9hZEZvY3VzZWRJbWFnZSAvLy88TG9hZCB0aGUgZm9jdWVzZCBpbWFnZSAt
IHN1cHBvcnRlZCBvbmx5IGZvciBIVE1MDQogICAgICAgICAgICAgfTsNCiAgICAgICAgIC8qKg0K
ICAgICAgICAgKiBUaGUgbG9hZCBldmVudCB0aGF0IG9jY3VycmVkLg0KQEAgLTUzOSw3ICs1NDIs
OCBAQCBjbGFzcyBUQnJDdGxEZWZzDQogICAgICAgICAgICAgRVBhZ2VJbmZvVGl0bGUgPSAwLCAv
Ly88IFBhZ2UgdGl0bGUsIGlmIGEgdGl0bGUgd2FzIHNwZWNpZmllZA0KICAgICAgICAgICAgIEVQ
YWdlSW5mb1VybCwgICAgLy8vPCBVUkwgb2YgdGhlIGN1cnJlbnQgcGFnZQ0KICAgICAgICAgICAg
IEVQYWdlSW5mb0NvbnRlbnQsIC8vLzwgUGFnZSBjb250ZW50IGFzIGEgdGV4dCBidWZmZXINCi0g
ICAgICAgICAgICBFUGFnZUluZm9TYXZlZFBhZ2UgLy8vPCBQYWdlIGNvbnRlbnQsIGluY2x1ZGlu
ZyBhbGwgZW1iZWRkZWQgY29udGVudCwgYXMgYSBidWZmZXINCisgICAgICAgICAgICBFUGFnZUlu
Zm9TYXZlZFBhZ2UsIC8vLzwgUGFnZSBjb250ZW50LCBpbmNsdWRpbmcgYWxsIGVtYmVkZGVkIGNv
bnRlbnQsIGFzIGEgYnVmZmVyDQorICAgICAgICAgICAgRVBhZ2VJbmZvRm9jdXNlZE5vZGVVcmwg
Ly88IFVSTCBvZiB0aGUgZm9jdXNlZCBsaW5rLiBUaGUgZnVuY3Rpb24gbGVhdmVzIGlmIHRoZSBm
b2N1cyBpcyBub3Qgb24gYW4gYW5jaG9yIG9yIGltYWdlbWFwDQogICAgICAgICAgICAgfTsNCiAg
ICAgICAgIC8qKg0KICAgICAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgYnJvd3NlciBpcyBp
biBJbWFnZSBNYXAgdmlldy4NCkBAIC02MDUsNyArNjA5LDggQEAgY2xhc3MgVEJyQ3RsRGVmcw0K
ICAgICAgICAgICAgIEVFbGVtZW50U2Nyb2xsQmFyLCAgICAvLy88IEEgc2Nyb2xsIGJhcg0KIA0K
ICAgICAgICAgICAgIEVFbGVtZW50U21hcnRMaW5rVGVsLCAvLy88IEEgdGVsZXBob25lIG51bWJl
ciBpbiB0aGUgcGFnZS4NCi0gICAgICAgICAgICBFRWxlbWVudFNtYXJ0TGlua0VtYWlsIC8vLzwg
YW4gZW1haWwgYWRkcmVzcyBpbiB0aGUgcGFnZS4NCisgICAgICAgICAgICBFRWxlbWVudFNtYXJ0
TGlua0VtYWlsLCAvLy88IGFuIGVtYWlsIGFkZHJlc3MgaW4gdGhlIHBhZ2UuDQorICAgICAgICAg
ICAgRUVsZW1lbnRCcm9rZW5JbWFnZSAvLy88IEEgbWlzc2luZyBpbWFnZSANCiAgICAgICAgIH07
DQogDQogICAgICAgICAvKioNCkBAIC03MTQsNyArNzE5LDggQEAgY2xhc3MgVEJyQ3RsRGVmcw0K
ICAgICBlbnVtIFRCckN0bENsaWVudENvbW1hbmRzDQogICAgICAgICB7DQogICAgICAgICBFQ2xp
ZW50Q29tbWFuZExhdW5jaEZpbmRLZXl3b3JkID0gMCwNCi0gICAgICAgIEVDbGllbnRDb21tYW5k
U3Vic2NyaWJlVG9GZWVkcw0KKyAgICAgICAgRUNsaWVudENvbW1hbmRTdWJzY3JpYmVUb0ZlZWRz
LA0KKyAgICAgICAgRUNsaWVudENvbW1hbmRTaG93Q29udGV4dE1lbnUNCiAgICAgICAgIH07DQog
I2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCiAgICAgLyoqDQpJbmRleDogV2ViS2l0L0Jyb3dz
ZXJDb250cm9sL2luYy9CckN0bEludGVyZmFjZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jy
b3dzZXJDb250cm9sL2luYy9CckN0bEludGVyZmFjZS5oCShyZXZpc2lvbiAxODg4NSkNCisrKyBX
ZWJLaXQvQnJvd3NlckNvbnRyb2wvaW5jL0JyQ3RsSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkN
CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIE1XaWRnZXRFeHRlbnNpb247DQogI2VuZGlmIC8vUkRf
QlJPV1NFUl9XSURHRVRTDQogY2xhc3MgQ0JyQ3RsSW50ZXJmYWNlOw0KIGNsYXNzIENQbHVnaW5J
bmZvOw0KLQ0KK2NsYXNzIFRCckN0bEltYWdlQ2FycmllcjsNCiANCiAvKioNCiAqIENyZWF0ZXMg
dGhlIGJyb3dzZXIgY29udHJvbC4NCkBAIC02MDgsNiArNjA4LDE0IEBAIGNsYXNzIENCckN0bElu
dGVyZmFjZSA6IHB1YmxpYyBDQ29lQ29udHINCiAgICAgICAgICovDQogICAgICAgICBJTVBPUlRf
QyB2aXJ0dWFsIE1XaWRnZXRFeHRlbnNpb24qIENyZWF0ZVdpZGdldEV4dGVuc2lvbkwoTVdpZGdl
dENhbGxiYWNrJiBhV2lkZ2V0Q2FsbGJhY2spID0gMDsNCiAjZW5kaWYgLy9SRF9CUk9XU0VSX1dJ
REdFVFMNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQg
dGhlIGZvY3VzZWQgaW1hZ2UuIFRoZSBmdW5jdGlvbiBsZWF2ZXMgaWYgdGhlIGZvY3VzIGlzIG5v
dCBvbiBhbiBpbWFnZQ0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbSAN
CisgICAgICAgICogQHJldHVybiBUaGUgcmVxdWVzdGVkIGluZm9ybWF0aW9uDQorICAgICAgICAq
Lw0KKyAgICAgICAgSU1QT1JUX0MgdmlydHVhbCBUQnJDdGxJbWFnZUNhcnJpZXIqIEZvY3VzZWRJ
bWFnZUxDKCkgPSAwOw0KICAgICB9Ow0KIA0KIA0KSW5kZXg6IFdlYktpdC9Ccm93c2VyQ29udHJv
bC9pbmMvQnJDdGxTY3JvbGxpbmdQcm92aWRlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jy
b3dzZXJDb250cm9sL2luYy9CckN0bFNjcm9sbGluZ1Byb3ZpZGVyLmgJKHJldmlzaW9uIDE4ODg1
KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29udHJvbC9pbmMvQnJDdGxTY3JvbGxpbmdQcm92aWRlci5o
CSh3b3JraW5nIGNvcHkpDQpAQCAtNDcsMTAgKzQ3LDggQEANCiAvLyAgSU5DTFVERVMNCiAjaW5j
bHVkZSAiQnJDdGxMYXlvdXRPYnNlcnZlci5oIg0KICNpbmNsdWRlICJTY3JvbGxCYXIuaCINCi0j
aWZkZWYgUkRfQlJPV1NFUl9TQ1JPTExCQVJTDQogI2luY2x1ZGUgPGVpa3NiZnJtLmg+DQogI2lu
Y2x1ZGUgPGVpa3Nib2JzLmg+DQotI2VuZGlmDQogLy8gRk9SV0FSRCBERUNMQVJBVElPTg0KIGNs
YXNzIENCckN0bDsNCiBjbGFzcyBDU2Nyb2xsQmFyOw0KQEAgLTY0LDExICs2Miw3IEBAIGNsYXNz
IENDb2VDb250cm9sOw0KICogIEBsaWIgV2ViS2l0LmxpYg0KICogIEBzaW5jZSAzLjANCiAqLw0K
LSNpZmRlZiBSRF9CUk9XU0VSX1NDUk9MTEJBUlMNCiBOT05TSEFSQUJMRV9DTEFTUyhDQnJDdGxT
Y3JvbGxpbmdQcm92aWRlcikgOiBwdWJsaWMgQ0Jhc2UsIHB1YmxpYyBNRWlrU2Nyb2xsQmFyT2Jz
ZXJ2ZXINCi0jZWxzZQ0KLU5PTlNIQVJBQkxFX0NMQVNTKENCckN0bFNjcm9sbGluZ1Byb3ZpZGVy
KSA6IHB1YmxpYyBDQmFzZQ0KLSNlbmRpZg0KICAgICB7DQogICAgIHB1YmxpYzogICAgIC8vIENv
bnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMNCiAgICAgICAgIC8qKg0KQEAgLTE1NywxMSArMTUx
LDcgQEAgTk9OU0hBUkFCTEVfQ0xBU1MoQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZQ0KICAgICAgICAg
KiBAcGFyYW0gbm9uZQ0KICAgICAgICAgKiBAcmV0dXJuIHBvaW50ZXIgdG8gdmVydGljYWwgc2Ny
b2xsYmFyDQogICAgICAgICAqLw0KLSNpZmRlZiBSRF9CUk9XU0VSX1NDUk9MTEJBUlMNCiAgICAg
ICAgIGNvbnN0IENDb2VDb250cm9sKiBWU2Nyb2xsQmFyKCk7DQotI2Vsc2UNCi0gICAgICAgIGNv
bnN0IENTY3JvbGxCYXIqIFZTY3JvbGxCYXIoKTsNCi0jZW5kaWYNCiAgICAgICAgIA0KICAgICAg
ICAgLyoqDQogICAgICAgICAqIFJldHVybnMgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyDQpAQCAt
MTY5LDEyICsxNTksNyBAQCBOT05TSEFSQUJMRV9DTEFTUyhDQnJDdGxTY3JvbGxpbmdQcm92aWRl
DQogICAgICAgICAqIEBwYXJhbSBub25lDQogICAgICAgICAqIEByZXR1cm4gcG9pbnRlciB0byBo
b3J6b250YWwgc2Nyb2xsIGJhcg0KICAgICAgICAgKi8NCi0jaWZkZWYgUkRfQlJPV1NFUl9TQ1JP
TExCQVJTDQogICAgICAgICBjb25zdCBDQ29lQ29udHJvbCogSFNjcm9sbEJhcigpOw0KLSNlbHNl
DQotDQotICAgICAgICBjb25zdCBDU2Nyb2xsQmFyKiBIU2Nyb2xsQmFyKCk7DQotI2VuZGlmDQog
DQogICAgICAgICAvKioNCiAgICAgICAgICogUmV0dXJucyB0aGUgU2Nyb2xsQmFyQ29ybmVyV2lu
ZG93DQpAQCAtMTk3LDIzICsxODIsMjMgQEAgTk9OU0hBUkFCTEVfQ0xBU1MoQ0JyQ3RsU2Nyb2xs
aW5nUHJvdmlkZQ0KICAgICAgICAgKiBAcGFyYW0gYVJlY3QgdGhlIGRpc3BsYXlhYmxlIHJlY3Qg
c2l6ZQ0KICAgICAgICAgKiBAcmV0dXJuIG5vbmUNCiAgICAgICAgICovDQotICAgICAgICBUQm9v
bCBIYXNIb3J6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBpSGFzSG9yaXpvbnRhbFNj
cm9sbEJhcjsgfQ0KKyAgICAgICAgVEJvb2wgSGFzSG9yem9udGFsU2Nyb2xsYmFyKCkgIHsgcmV0
dXJuIChIU2Nyb2xsQmFyKCkgIT0gTlVMTCk7IH0NCiAgICAgICAgIA0KLSNpZmRlZiBSRF9CUk9X
U0VSX1NDUk9MTEJBUlMNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBIYW5kbGUgdXNlciBpbnRl
cmFjdGlvbiB3aXRoIHNjcm9sbGJhcnMNCisgICAgICAgICogQHNpbmNlIFNlcmllczYwX3ZlcnNp
b24gMy4yDQorICAgICAgICAqIEBwYXJhbSBhU2Nyb2xsYmFyIHRoZSBzY3JvbGxiYXIgdGhhdCB0
aGUgdXNlciBpbnRlcmFjdGVkIHdpdGgNCisgICAgICAgICogQHBhcmFtIGFFdmVudFR5cGUgVGhl
IHR5cGUgb2YgdXNlciBpbnRlcmFjdGlvbg0KKyAgICAgICAgKiBAcmV0dXJuIG5vbmUNCisgICAg
ICAgICovDQogICAgICAgICB2b2lkIEhhbmRsZVNjcm9sbEV2ZW50TChDRWlrU2Nyb2xsQmFyKiBh
U2Nyb2xsQmFyLCBURWlrU2Nyb2xsRXZlbnQgYUV2ZW50VHlwZSk7DQorDQorICAgICAgICAvKioN
CisgICAgICAgICogUmUtY3JlYXRlIHRoZSBzY3JvbGxiYXIgdXNpbmcgdGhlIG5ld2x5IHNlbGVj
dGVkIHNraW4NCisgICAgICAgICogQHNpbmNlIFNlcmllczYwX3ZlcnNpb24gMy4yDQorICAgICAg
ICAqIEByZXR1cm4gbm9uZQ0KKyAgICAgICAgKi8NCiAgICAgICAgIHZvaWQgU2tpbkNoYW5nZWRM
KCk7DQotICAgICAgICB2b2lkIERyYXdCYWNrZ3JvdW5kKCk7DQotI2VuZGlmDQotICAgICAgICAN
Ci0gICAgcHJpdmF0ZTogICAgLy8gQ2xhc3MgTWV0aG9kcw0KLSNpZmRlZiBSRF9CUk9XU0VSX1ND
Uk9MTEJBUlMNCi0gICAgICAgIHZvaWQgUmVzaXplQnJDdGxWaWV3KGNvbnN0IENFaWtTY3JvbGxC
YXI6OlRPcmllbnRhdGlvbiBhT3JpZW50YXRpb24pOw0KLSNlbHNlDQotICAgICAgICB2b2lkIFJl
c2l6ZUJyQ3RsVmlldyhjb25zdCBDU2Nyb2xsQmFyOjpUT3JpZW50YXRpb24gYU9yaWVudGF0aW9u
LA0KLSAgICAgICAgICAgIFRJbnQgYVBpeGVscyk7DQotI2VuZGlmDQotICAgICAgICANCi0gICAg
ICAgIHZvaWQgU2hpZnRCckN0bFZpZXcoKTsNCiAgICAgICAgIA0KICAgICBwcml2YXRlOiAgICAv
LyBEYXRhIE1lbWJlcnMNCiAgICAgICAgIC8vIHBvaW50ZXIgdG8gYnJvd3NlciBDb250cm9sDQpA
QCAtMjIzLDcgKzIwOCw2IEBAIE5PTlNIQVJBQkxFX0NMQVNTKENCckN0bFNjcm9sbGluZ1Byb3Zp
ZGUNCiAgICAgICAgIENTY3JvbGxCYXJGcmFtZSogaVNjcm9sbEJhckZyYW1lOw0KICAgICAgICAg
DQogICAgICAgICBUQm9vbCBpSGFzSG9yaXpvbnRhbFNjcm9sbEJhcjsNCi0jaWZkZWYgUkRfQlJP
V1NFUl9TQ1JPTExCQVJTDQogICAgICAgICBDRWlrU2Nyb2xsQmFyRnJhbWUqIGlTYkZyYW1lOw0K
ICAgICAgICAgVFNpemUgaURpc3BsYXlTaXplOw0KICAgICAgICAgVFNpemUgaURvY1NpemU7DQpA
QCAtMjM2LDcgKzIyMCw3IEBAIE5PTlNIQVJBQkxFX0NMQVNTKENCckN0bFNjcm9sbGluZ1Byb3Zp
ZGUNCiAgICAgICAgIFRFaWtTY3JvbGxFdmVudCBpU2Nyb2xsRXZlbnQ7DQogICAgICAgICBUSW50
NjQgaUxhc3RTY3JvbGxUaW1lOw0KICAgICAgICAgVEludDY0IGlTdGFydFNjcm9sbDsNCi0jZW5k
aWYNCisgICAgICAgIFRSZWN0IGlDbGllbnRSZWN0Ow0KICAgICB9Ow0KIA0KIA0KSW5kZXg6IFdl
YktpdC9Ccm93c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
L0Jyb3dzZXJDb250cm9sL3NyYy9CckN0bC5jcHAJKHJldmlzaW9uIDE4ODg1KQ0KKysrIFdlYktp
dC9Ccm93c2VyQ29udHJvbC9zcmMvQnJDdGwuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNzcsMTEg
Kzc3LDkgQEANCiAjaW5jbHVkZSAiRmF2aWNvbi5oIg0KICNpbmNsdWRlICJVcmxSZXF1ZXN0SW5m
by5oIg0KICNpbmNsdWRlICJUb29sQmFyLmgiDQotI2lmZGVmIFJEX0JST1dTRVJfU0NST0xMQkFS
Uw0KICNpbmNsdWRlIDxBa25zQmFzaWNCYWNrZ3JvdW5kQ29udHJvbENvbnRleHQuaD4NCiAjaW5j
bHVkZSA8QWtuc1V0aWxzLmg+DQogI2luY2x1ZGUgPEFrbnNEcmF3VXRpbHMuaD4NCi0jZW5kaWYN
CiAjaWZkZWYgIFJEX0JST1dTRVJfV0lER0VUUw0KICNpbmNsdWRlICJXaWRnZXRFeHRlbnNpb24u
aCINCiAjZW5kaWYgLy9SRF9CUk9XU0VSX1dJREdFVFMNCkBAIC0zODcsMTAgKzM4NSw2IEBAIHZv
aWQgQ0JyQ3RsOjpDb25zdHJ1Y3RMKA0KICAgICAvLyBTZXQgdGhlIHJlY3QgZm9yIEJyb3dzZXJD
b250cm9sIChhIENDb2VDb250cm9sKS4NCiAgICAgU2V0UmVjdChhUmVjdCk7DQogICAgIEFjdGl2
YXRlTCgpOw0KLSNpZmRlZiBSRF9CUk9XU0VSX1NDUk9MTEJBUlMNCi0gICAgaUFrbkJHQ0MgPSBD
QWtuc0Jhc2ljQmFja2dyb3VuZENvbnRyb2xDb250ZXh0OjpOZXdMKEtBa25zSUlEUXNuQmdBcmVh
TWFpbkhpZ2gsIGFQYXJlbnQtPlJlY3QoKSwgRUZhbHNlKTsgDQotICAgIGlTa2luID0gQWtuc1V0
aWxzOjpTa2luSW5zdGFuY2UoKTsNCi0jZW5kaWYNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQpAQCAtNDc4LDkgKzQ3Miw2IEBAIEVYUE9SVF9DIENCckN0bDo6fkNCckN0bCgp
DQogICAgIGlXbWxTZXJ2aWNlT3B0aW9uQXJyYXkuQ2xvc2UoKTsNCiAgICAgaVN1YnNjcmliZVRv
SXRlbXMuQ2xvc2UoKTsNCiAgICAgaVdtbFNlcnZpY2VPcHRpb24uQ2xvc2UoKTsNCi0jaWZkZWYg
UkRfQlJPV1NFUl9TQ1JPTExCQVJTDQotICAgIGRlbGV0ZSBpQWtuQkdDQzsNCi0jZW5kaWYNCiAg
ICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtNTMxLDYgKzUyMiw3IEBAIHZv
aWQgQ0JyQ3RsOjpIYW5kbGVCcm93c2VyTG9hZEV2ZW50TCgNCiAvLw0KIEVYUE9SVF9DIHZvaWQg
Q0JyQ3RsOjpIYW5kbGVDb21tYW5kTChUSW50IGFDb21tYW5kKQ0KICAgICB7DQorICAgIGlXZWJL
aXRDb250cm9sLT5XZWJLaXRWaWV3KCkuUmVtb3ZlUG9wdXAoKTsNCiAgICAgc3dpdGNoIChhQ29t
bWFuZCAtIGlDb21tYW5kSWRCYXNlKQ0KICAgICAgICAgew0KICAgICAgICAgY2FzZSBUQnJDdGxE
ZWZzOjpFQ29tbWFuZFJlbG9hZDoNCkBAIC03OTEsNiArNzgzLDExIEBAIEVYUE9SVF9DIHZvaWQg
Q0JyQ3RsOjpIYW5kbGVDb21tYW5kTChUSW4NCiAgICAgICAgICAgICBpV2ViS2l0Q29udHJvbC0+
V2ViS2l0VmlldygpLk1haW5GcmFtZSgpLlNtYXJ0TGlua0hhbmRsZXIoKS0+SGFuZGxlU2VuZE1l
c3NhZ2UoKTsNCiAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICB9DQorICAgICAgICBj
YXNlIFRCckN0bERlZnM6OkVDb21tYW5kU21hcnRMaW5rU2VuZEVtYWlsOg0KKyAgICAgICAgICAg
IHsNCisgICAgICAgICAgICBpV2ViS2l0Q29udHJvbC0+V2ViS2l0VmlldygpLk1haW5GcmFtZSgp
LlNtYXJ0TGlua0hhbmRsZXIoKS0+SGFuZGxlU2VuZE1lc3NhZ2UoKTsNCisgICAgICAgICAgICBi
cmVhazsNCisgICAgICAgICAgICB9DQogICAgICAgICBjYXNlIFRCckN0bERlZnM6OkVDb21tYW5k
U2hvd0Rvd25sb2FkczoNCiAgICAgICAgICAgICB7DQogICAgICAgICAgICAgaVdlYktpdENvbnRy
b2wtPldlYktpdFZpZXcoKS5NYWluRnJhbWUoKS5XZWJLaXRCcmlkZ2UoKS5Mb2FkZXIoKS5TaG93
RG93bmxvYWRzTCgpOw0KQEAgLTg2Myw2ICs4NjAsMjQgQEAgRVhQT1JUX0Mgdm9pZCBDQnJDdGw6
OkhhbmRsZUNvbW1hbmRMKFRJbg0KICAgICAgICAgICAgIFVubG9hZERsbFdtbEVuZ2luZSgpOw0K
ICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2UgVEJyQ3Rs
RGVmczo6RUNvbW1hbmRTaG93QW5jaG9ySHJlZjoNCisgICAgICAgICAgICB7DQorICAgICAgICAg
ICAgaWYgKCBXbWxNb2RlKCkgKQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAg
IFVzZXI6OkxlYXZlKEtFcnJOb3RTdXBwb3J0ZWQpOw0KKyAgICAgICAgICAgICAgICB9DQorICAg
ICAgICAgICAgaVdlYktpdENvbnRyb2wtPldlYktpdFZpZXcoKS5IYW5kbGVTaG93QW5jaG9ySHJl
ZkwoKTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICB9DQorICAgICAgICBjYXNl
IFRCckN0bERlZnM6OkVDb21tYW5kTG9hZEZvY3VzZWRJbWFnZToNCisgICAgICAgICAgICB7DQor
ICAgICAgICAgICAgaWYgKCBXbWxNb2RlKCkgKQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAg
ICAgICAgICAgIFVzZXI6OkxlYXZlKEtFcnJOb3RTdXBwb3J0ZWQpOw0KKyAgICAgICAgICAgICAg
ICB9DQorICAgICAgICAgICAgaVdlYktpdENvbnRyb2wtPldlYktpdFZpZXcoKS5Mb2FkRm9jdXNl
ZEltYWdlTCgpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIH0gICAgICAgICAg
ICANCiAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIGlmICgg
aVdtbEVuZ2luZUludGVyZmFjZSAmJg0KQEAgLTE3ODYsMjcgKzE4MDEsMTggQEAgQ0NvZUNvbnRy
b2wqIENCckN0bDo6Q29tcG9uZW50Q29udHJvbChUSQ0KIA0KICAgICByZXR1cm4gMDsNCiAgICAg
fQ0KLSNpZmRlZiBSRF9CUk9XU0VSX1NDUk9MTEJBUlMNCiB2b2lkIENCckN0bDo6RHJhd1Njcm9s
bGJhckJhY2tncm91bmQoKQ0KICAgICB7DQotICAgIGlmIChpQnJDdGxTY3JvbGxpbmdQcm92aWRl
cikNCisgICAgVFJlY3QgaG9yaXooVFBvaW50KDAsIFdlYktpdENvbnRyb2woKS0+V2ViS2l0Vmll
dygpLlJlY3QoKS5pQnIuaVkpLCBSZWN0KCkuaUJyKTsNCisgICAgaWYgKGhvcml6LkhlaWdodCgp
KQ0KICAgICAgICAgew0KLSAgICAgICAgaUJyQ3RsU2Nyb2xsaW5nUHJvdmlkZXItPkRyYXdCYWNr
Z3JvdW5kKCk7DQorICAgICAgICBEcmF3Tm93KGhvcml6KTsNCiAgICAgICAgIH0NCi0gICAgfQ0K
LQ0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KLS8vIENCcm93c2VyU291cmNlQ29udGFpbmVyOjpNb3BTdXBwbHlPYmplY3QNCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCi0vLw0KLVRUeXBlVWlkOjpQdHIgQ0JyQ3RsOjpNb3BTdXBwbHlPYmplY3QoVFR5cGVVaWQg
YUlkKQ0KLSAgICB7DQotICAgIGlmIChhSWQuaVVpZCA9PSBNQWtuc0NvbnRyb2xDb250ZXh0OjpF
VHlwZUlkICYmIGlBa25CR0NDKQ0KKyAgICBUUmVjdCB2ZXJ0KFRQb2ludChXZWJLaXRDb250cm9s
KCktPldlYktpdFZpZXcoKS5SZWN0KCkuaUJyLmlYLCAwKSwgUmVjdCgpLmlCcik7DQorICAgIGlm
ICh2ZXJ0LldpZHRoKCkpDQogICAgICAgICB7DQotICAgICAgICByZXR1cm4gTUFrbnNDb250cm9s
Q29udGV4dDo6U3VwcGx5TW9wT2JqZWN0KGFJZCwgaUFrbkJHQ0MpOw0KKyAgICAgICAgRHJhd05v
dyh2ZXJ0KTsNCiAgICAgICAgIH0NCi0NCi0gICAgcmV0dXJuIENDb2VDb250cm9sOjpNb3BTdXBw
bHlPYmplY3QoYUlkKTsNCiAgICAgfQ0KIA0KIHZvaWQgQ0JyQ3RsOjpEcmF3KGNvbnN0IFRSZWN0
JiBhUmVjdCkgY29uc3QNCkBAIC0xODE0LDM0ICsxODIwLDI4IEBAIHZvaWQgQ0JyQ3RsOjpEcmF3
KGNvbnN0IFRSZWN0JiBhUmVjdCkgY28NCiAgICAgaWYgKGlCckN0bFNjcm9sbGluZ1Byb3ZpZGVy
ICYmIChpQnJDdGxTY3JvbGxpbmdQcm92aWRlci0+VlNjcm9sbEJhcigpIHx8DQogICAgICAgICBp
QnJDdGxTY3JvbGxpbmdQcm92aWRlci0+SFNjcm9sbEJhcigpKSkNCiAgICAgICAgIHsNCisgICAg
ICAgIFRSZ2IgcmdiID0gaVdlYktpdENvbnRyb2wtPldlYktpdFZpZXcoKS5NYWluRnJhbWUoKS5X
ZWJLaXRCcmlkZ2UoKS5XZWJDb3JlQnJpZGdlKCkuQm9keUJhY2tncm91bmRDb2xvcigpOw0KICAg
ICAgICAgQ1dpbmRvd0djJiBnYyA9IFN5c3RlbUdjKCk7DQotICAgICAgICANCi0gICAgICAgIGlm
IChpQnJDdGxTY3JvbGxpbmdQcm92aWRlciAmJiBpQnJDdGxTY3JvbGxpbmdQcm92aWRlci0+VlNj
cm9sbEJhcigpKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBUSW50IGxlZnQ7DQotICAg
ICAgICAgICAgVEludCByaWdodDsNCi0gICAgICAgICAgICBpZiAoaVdlYktpdENvbnRyb2wtPldl
YktpdFZpZXcoKS5Jc1J0bFBhZ2UoKSkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAg
ICAgICBsZWZ0ID0gMDsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIGVsc2UNCisg
ICAgICAgIFRSZWN0IGhvcml6KFRQb2ludCgwLCBpV2ViS2l0Q29udHJvbC0+V2ViS2l0Vmlldygp
LlJlY3QoKS5pQnIuaVkpLCBSZWN0KCkuaUJyKTsNCisgICAgICAgIGlmIChob3Jpei5IZWlnaHQo
KSAmJiBob3Jpei5XaWR0aCgpICYmIGhvcml6LkludGVyc2VjdHMoYVJlY3QpKQ0KICAgICAgICAg
ICAgICAgICB7DQotICAgICAgICAgICAgICAgIGxlZnQgPSBSZWN0KCkuaUJyLmlYIC0gaUJyQ3Rs
U2Nyb2xsaW5nUHJvdmlkZXItPlZTY3JvbGxCYXJXaWR0aCgpOw0KLSAgICAgICAgICAgICAgICB9
DQotICAgICAgICAgICAgcmlnaHQgPSBsZWZ0ICsgaUJyQ3RsU2Nyb2xsaW5nUHJvdmlkZXItPlZT
Y3JvbGxCYXJXaWR0aCgpOw0KLQ0KLSAgICAgICAgICAgIFRSZWN0IHJlY3QoVFBvaW50KGxlZnQs
MCksIFRQb2ludChyaWdodCxSZWN0KCkuaUJyLmlZKSk7DQotICAgICAgICAgICAgQWtuc0RyYXdV
dGlsczo6QmFja2dyb3VuZChpU2tpbiwgaUFrbkJHQ0MsIE5VTEwsIGdjLCByZWN0KTsNCi0gICAg
ICAgICAgICB9DQotDQotICAgICAgICBpZiAoaUJyQ3RsU2Nyb2xsaW5nUHJvdmlkZXIgJiYgaUJy
Q3RsU2Nyb2xsaW5nUHJvdmlkZXItPkhTY3JvbGxCYXIoKSkNCi0gICAgICAgICAgICB7DQotICAg
ICAgICAgICAgVFJlY3QgcmVjdChUUG9pbnQoMCxSZWN0KCkuaUJyLmlZIC0gaUJyQ3RsU2Nyb2xs
aW5nUHJvdmlkZXItPkhTY3JvbGxCYXJIZWlnaHQoKSksIFJlY3QoKS5pQnIpOw0KLSAgICAgICAg
ICAgIEFrbnNEcmF3VXRpbHM6OkJhY2tncm91bmQoaVNraW4sIGlBa25CR0NDLCB0aGlzLCBnYywg
cmVjdCk7DQorICAgICAgICAgICAgZ2MuU2V0UGVuQ29sb3IocmdiKTsNCisgICAgICAgICAgICBn
Yy5TZXRCcnVzaENvbG9yKHJnYik7DQorICAgICAgICAgICAgZ2MuU2V0QnJ1c2hTdHlsZShDR3Jh
cGhpY3NDb250ZXh0OjpFU29saWRCcnVzaCk7DQorICAgICAgICAgICAgZ2MuU2V0UGVuU3R5bGUo
Q0dyYXBoaWNzQ29udGV4dDo6RVNvbGlkUGVuKTsNCisgICAgICAgICAgICBnYy5EcmF3UmVjdCho
b3Jpeik7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgIFRSZWN0IHZlcnQoVFBvaW50KGlX
ZWJLaXRDb250cm9sLT5XZWJLaXRWaWV3KCkuUmVjdCgpLmlCci5pWCwgMCksIFJlY3QoKS5pQnIp
Ow0KKyAgICAgICAgaWYgKHZlcnQuSGVpZ2h0KCkgJiYgdmVydC5XaWR0aCgpICYmIHZlcnQuSW50
ZXJzZWN0cyhhUmVjdCkpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGdjLlNldFBlbkNv
bG9yKHJnYik7DQorICAgICAgICAgICAgZ2MuU2V0QnJ1c2hDb2xvcihyZ2IpOw0KKyAgICAgICAg
ICAgIGdjLlNldEJydXNoU3R5bGUoQ0dyYXBoaWNzQ29udGV4dDo6RVNvbGlkQnJ1c2gpOw0KKyAg
ICAgICAgICAgIGdjLlNldFBlblN0eWxlKENHcmFwaGljc0NvbnRleHQ6OkVTb2xpZFBlbik7DQor
ICAgICAgICAgICAgZ2MuRHJhd1JlY3QodmVydCk7DQogICAgICAgICAgICAgfQ0KICAgICAgICAg
fQ0KICAgICB9DQotI2VuZGlmDQogDQogdm9pZCBDQnJDdGw6OlNldFdtbE1vZGUoVEJvb2wgYU1v
ZGUpDQogICB7DQpAQCAtMjQ2NCw3ICsyNDY0LDYgQEAgVEJvb2wgQ0JyQ3RsOjpTZW5kQ29tbWFu
ZHNUb0NsaWVudCgNCiAgICAgcmV0dXJuIEVUcnVlOw0KICAgICB9DQogDQotI2lmZGVmIFJEX0JS
T1dTRVJfU0NST0xMQkFSUw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIC8vIENCckN0bDo6SGFuZGxlUmVzb3VyY2VDaGFuZ2UN
CiAvLyBJZiBuZXcgc2tpbiBpcyBzZXQgdGhlIGljb25zIHdpbGwgYmUgcmVsb2FkZWQNCkBAIC0y
NDc5LDcgKzI0NzgsNiBAQCB2b2lkIENCckN0bDo6SGFuZGxlUmVzb3VyY2VDaGFuZ2UoIFRJbnQg
DQogICAgICAgICAgICAgew0KICAgICAgICAgICAgIGlmIChpQnJDdGxTY3JvbGxpbmdQcm92aWRl
cikNCiAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBpU2tpbiA9IEFrbnNVdGls
czo6U2tpbkluc3RhbmNlKCk7DQogICAgICAgICAgICAgICAgIFRSQVBfSUdOT1JFKGlCckN0bFNj
cm9sbGluZ1Byb3ZpZGVyLT5Ta2luQ2hhbmdlZEwoKSk7DQogICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICBicmVhazsNCkBAIC0yNDkwLDcgKzI0ODgsNiBAQCB2b2lkIENCckN0bDo6SGFu
ZGxlUmVzb3VyY2VDaGFuZ2UoIFRJbnQgDQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAg
ICB9DQotI2VuZGlmDQogI2lmZGVmICBSRF9CUk9XU0VSX1dJREdFVFMNCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KIC8vIENCckN0bDo6Q3JlYXRlV2lkZ2V0RXh0ZW5zaW9uDQpAQCAtMjUwMyw0
ICsyNTAwLDE5IEBAIEVYUE9SVF9DIE1XaWRnZXRFeHRlbnNpb24qIENCckN0bDo6Q3JlYXQNCiAg
ICAgfQ0KIA0KICNlbmRpZiAvL1JEX0JST1dTRVJfV0lER0VUUw0KKw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorLy8gQ0JyQ3RsOjpGb2N1c2VkSW1hZ2VMQw0KKy8vIEdldCBpbmZvcm1hdGlv
biBhYm91dCB0aGUgZm9jdXNlZCBpbWFnZS4gVGhlIGZ1bmN0aW9uIGxlYXZlcyBpZiB0aGUgZm9j
dXMgaXMgbm90IG9uIGFuIGltYWdlDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK0VY
UE9SVF9DIFRCckN0bEltYWdlQ2FycmllciogQ0JyQ3RsOjpGb2N1c2VkSW1hZ2VMQygpDQorICAg
IHsNCisgICAgaWYgKCBXbWxNb2RlKCkgKQ0KKyAgICAgICAgew0KKyAgICAgICAgVXNlcjo6TGVh
dmUoS0Vyck5vdFN1cHBvcnRlZCk7DQorICAgICAgICB9DQorICAgIHJldHVybiBXZWJLaXRDb250
cm9sKCktPldlYktpdFZpZXcoKS5Gb2N1c2VkSW1hZ2VMQygpOw0KKyAgICB9DQorDQogLy8gIEVu
ZCBvZiBGaWxlDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJDb250cm9sL3NyYy9CckN0bFNjcm9sbGlu
Z1Byb3ZpZGVyLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyQ29udHJvbC9zcmMv
QnJDdGxTY3JvbGxpbmdQcm92aWRlci5jcHAJKHJldmlzaW9uIDE4ODg1KQ0KKysrIFdlYktpdC9C
cm93c2VyQ29udHJvbC9zcmMvQnJDdGxTY3JvbGxpbmdQcm92aWRlci5jcHAJKHdvcmtpbmcgY29w
eSkNCkBAIC00OSw3ICs0OSw2IEBADQogI2luY2x1ZGUgIldlYktpdENvbnRyb2wuaCINCiAjaW5j
bHVkZSAiV21sRW5naW5lSW50ZXJmYWNlLmgiDQogDQotI2lmZGVmIFJEX0JST1dTRVJfU0NST0xM
QkFSUw0KICNpbmNsdWRlIDxlaWtzYmZybS5oPg0KICNpbmNsdWRlIDxlaWtzYm9icy5oPg0KICNp
bmNsdWRlICJXZWJLaXRGcmFtZS5oIg0KQEAgLTU5LDcgKzU4LDYgQEAgY29uc3QgVEludCBLV21s
U2Nyb2xsaW5nSnVtcCA9IDE4Ow0KIGNvbnN0IFRJbnQgS1BhZ2VTY2FsZXJTdGFydCA9IDEwMDAg
KiAxMDAwOw0KIGNvbnN0IFRJbnQgS1BhZ2VTY2FsZXJWaXNpYmlsaXR5VGltZSA9IDEzMDAqMTAw
MDsNCiBjb25zdCBUSW50IEtUaW1lQmV0d2VlbkV2ZW50cyA9IDUwMCoxMDAwOw0KLSNlbmRpZg0K
IC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBUd28gcGhhc2UgY29uc3RydWN0aW9uIChTeW1i
aWFuKQ0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC04NywxNyArODUsMTMgQEAgQ0JyQ3Rs
U2Nyb2xsaW5nUHJvdmlkZXI6OkNCckN0bFNjcm9sbGluZw0KIC8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCiB2b2lkIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpDb25zdHJ1Y3RMKCBjb25zdCBDQ29l
Q29udHJvbCYgYVBhcmVudCApDQogICAgIHsNCi0jaWZuZGVmIFJEX0JST1dTRVJfU0NST0xMQkFS
Uw0KLSAgICAvLyBDb25zdHJ1Y3QgdGhlIFNjcm9sbEJhciBmcmFtZSwgdGhpcyBpcyBvdXIgY29y
ZSBzY3JvbGxpbmcgQVBJDQotICAgIGlTY3JvbGxCYXJGcmFtZSA9IENTY3JvbGxCYXJGcmFtZTo6
TmV3TCggYVBhcmVudCApOw0KLSNlbHNlDQogICAgIENDb2VDb250cm9sKiBwYXJlbnQgPSAoQ0Nv
ZUNvbnRyb2wqKSgmYVBhcmVudCk7DQogICAgIGlTYkZyYW1lID0gbmV3IENFaWtTY3JvbGxCYXJG
cmFtZShwYXJlbnQsIHRoaXMpOw0KICAgICBpU2JGcmFtZS0+Q3JlYXRlRG91YmxlU3BhblNjcm9s
bEJhcnNMKEVGYWxzZSwgRUZhbHNlKTsgDQogICAgIGlTYkZyYW1lLT5TZXRUeXBlT2ZWU2Nyb2xs
QmFyKENFaWtTY3JvbGxCYXJGcmFtZTo6RURvdWJsZVNwYW4pOw0KICAgICBpU2JGcmFtZS0+U2V0
VHlwZU9mSFNjcm9sbEJhcihDRWlrU2Nyb2xsQmFyRnJhbWU6OkVEb3VibGVTcGFuKTsNCiAgICAg
aVNiRnJhbWUtPlNldFNjcm9sbEJhclZpc2liaWxpdHlMKENFaWtTY3JvbGxCYXJGcmFtZTo6RUF1
dG8sQ0Vpa1Njcm9sbEJhckZyYW1lOjpFT24pOw0KLSNlbmRpZg0KKyAgICBpU2JGcmFtZS0+RHJh
d0JhY2tncm91bmQoRUZhbHNlLCBFRmFsc2UpOw0KICAgICB9DQogDQogLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KQEAgLTEwNSwxMSArOTksNyBAQCB2b2lkIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVy
OjpDb25zdHJ1Y3RMDQogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIENCckN0bFNjcm9sbGluZ1By
b3ZpZGVyOjp+Q0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXIoKQ0KICAgICB7DQotI2lmbmRlZiBSRF9C
Uk9XU0VSX1NDUk9MTEJBUlMNCi0gICAgZGVsZXRlIGlTY3JvbGxCYXJGcmFtZTsNCi0jZWxzZQ0K
ICAgICBkZWxldGUgaVNiRnJhbWU7DQotI2VuZGlmDQogICAgIH0NCiANCiANCkBAIC0xMjEsMjUg
KzExMSw3IEBAIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjp+Q0JyQ3RsU2Nyb2xsaW4NCiB2b2lk
IENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpVcGRhdGVWU2Nyb2xsQmFyTCggVEludCBhRG9jdW1l
bnRIZWlnaHQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEludCBhRGlzcGxheVBvc1kgKQ0KICAgICB7DQotI2lmZGVmIFJEX0JST1dTRVJfU0NST0xM
QkFSUw0KICAgICBVcGRhdGVWU2Nyb2xsQmFyTChhRG9jdW1lbnRIZWlnaHQsIGlEaXNwbGF5U2l6
ZS5pSGVpZ2h0LCBhRGlzcGxheVBvc1kgKTsNCi0jZWxzZQ0KLSAgICAvLyBJZiBhIHNjcm9sbGJh
ciBpcyBuZWVkZWQsIHVwZGF0ZSBpdA0KLSAgICBUSW50IGhlaWdodCA9IGlTY3JvbGxCYXJGcmFt
ZS0+VlNjcm9sbEJhcldpZHRoTmVlZGVkKGFEb2N1bWVudEhlaWdodCwNCi0gICAgICAgIGFEaXNw
bGF5UG9zWSApOw0KLSAgICANCi0gICAgLy8gSWYgbmVjZXNzYXJ5IHJlc2l6ZSBCcm93c2VyIFZp
ZXcNCi0gICAgaWYgKCBoZWlnaHQgKQ0KLSAgICAgICAgew0KLSAgICAgICAgUmVzaXplQnJDdGxW
aWV3KCBDU2Nyb2xsQmFyOjpFVmVydGljYWwsIGhlaWdodCApOw0KLSAgICAgICAgfQ0KLSAgICAN
Ci0gICAgLy8gUGxhY2UgYSBjYWxsIHRvIHRha2UgY2FyZSBvZiBMVFIgYW5kIFJUTCBzd2l0Y2gN
Ci0gICAgU2hpZnRCckN0bFZpZXcoKTsNCi0gICAgDQotICAgIC8vIFVwZGF0ZSB0aGUgVmVydGlj
YWwgc2Nyb2xsYmFyDQotICAgIGlTY3JvbGxCYXJGcmFtZS0+VXBkYXRlVlNjcm9sbEJhckwoKTsN
Ci0jZW5kaWYNCiAgICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtMTQ4LDI5
ICsxMjAsNyBAQCB2b2lkIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpVcGRhdGVWU2NyDQogdm9p
ZCBDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6VXBkYXRlSFNjcm9sbEJhckwoVEludCBhRG9jdW1l
bnRXaWR0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnQgYURp
c3BsYXlQb3NYKQ0KICAgICB7DQotI2lmZGVmIFJEX0JST1dTRVJfU0NST0xMQkFSUw0KICAgICBV
cGRhdGVIU2Nyb2xsQmFyTChhRG9jdW1lbnRXaWR0aCwgaURpc3BsYXlTaXplLmlXaWR0aCwgYURp
c3BsYXlQb3NYKTsNCi0jZWxzZQ0KLSAgICAvLyBJZiBhIHNjcm9sbGJhciBpcyBuZWVkZWQsIHVw
ZGF0ZSBpdC4gV2hhdCBpcyB0aGUgaGVpZ2h0IG9mIHRoZSBkaXNwbGF5Lg0KLSAgICAvLyB2aWV3
IGFuZCBzY3JvbGxCYXJGcmFtZSdzIHJlY3Qgd2lsbCBjaGFuZ2UgZHVlIHRvIGFkZC9yZW1vdmUg
SHNjcm9sbGJhcg0KLSAgICAvLyBidXQgYnJjdGwncyByZWN0IHdpbGwgcmVtYWluIHRoZSBzYW1l
DQotICAgIFRSZWN0IHJlY3QgPSBpQnJDdGwtPlJlY3QoKTsNCi0gICAgVEludCBkaXNwbGF5SGVp
Z2h0ID0gcmVjdC5IZWlnaHQoKTsNCi0gICAgLy9DaGVjayBpZiBob3Jpem9udGFsIHNjb3JsbCBi
YXIgaXMgbmVlZGVkDQotICAgIFRJbnQgd2lkdGggPSBpU2Nyb2xsQmFyRnJhbWUtPkhTY3JvbGxC
YXJIZWlnaHROZWVkZWQoYURvY3VtZW50V2lkdGgsDQotICAgICAgICBhRGlzcGxheVBvc1gsDQot
ICAgICAgICBkaXNwbGF5SGVpZ2h0KTsNCi0gICAgLy8gSWYgbmVjZXNzYXJ5IHJlc2l6ZSBCcm93
c2VyIFZpZXcNCi0gICAgaWYgKHdpZHRoKQ0KLSAgICAgICAgew0KLSAgICAgICAgaUhhc0hvcml6
b250YWxTY3JvbGxCYXIgPSBFVHJ1ZTsNCi0gICAgICAgIFJlc2l6ZUJyQ3RsVmlldyhDU2Nyb2xs
QmFyOjpFSG9yaXpvbnRhbCwgd2lkdGgpOw0KLSAgICAgICAgfQ0KLSAgICAvLyBQbGFjZSBhIGNh
bGwgdG8gdGFrZSBjYXJlIG9mIExUUiBhbmQgUlRMIHN3aXRjaA0KLSAgICBTaGlmdEJyQ3RsVmll
dygpOw0KLSAgICAvLyBVcGRhdGUgdGhlIEhvcml6b250YWwgc2Nyb2xsYmFyDQotICAgIGlTY3Jv
bGxCYXJGcmFtZS0+VXBkYXRlSFNjcm9sbEJhckwoKTsNCi0jZW5kaWYNCiAgICAgfQ0KIA0KIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtMTgwLDcgKzEzMCw2IEBAIHZvaWQgQ0JyQ3RsU2Ny
b2xsaW5nUHJvdmlkZXI6OlVwZGF0ZUhTY3INCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50IGFEaXNwbGF5V2lkdGgsDQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludCBhRGlzcGxheVBvc1ggKQ0KICAg
ICB7DQotI2lmZGVmIFJEX0JST1dTRVJfU0NST0xMQkFSUw0KICAgICBpRGlzcGxheVNpemUuaVdp
ZHRoID0gYURpc3BsYXlXaWR0aDsNCiAgICAgaURvY1NpemUuaVdpZHRoID0gYURvY3VtZW50V2lk
dGg7DQogICAgIGlUaHVtYlBvcy5pWCA9IGFEaXNwbGF5UG9zWDsNCkBAIC0xOTYsNyArMTQ1LDkg
QEAgdm9pZCBDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6VXBkYXRlSFNjcg0KICAgICAgICAgew0K
ICAgICAgICAgaVNiRnJhbWUtPlNldFNjcm9sbEJhclZpc2liaWxpdHlMIChDRWlrU2Nyb2xsQmFy
RnJhbWU6OkVPbixDRWlrU2Nyb2xsQmFyRnJhbWU6OkVPbikgOw0KICAgICAgICAgfQ0KLSAgICBU
UmVjdCByZWN0KGlCckN0bC0+UmVjdCgpKTsNCisgICAgaVNiRnJhbWUtPkRyYXdCYWNrZ3JvdW5k
KEVGYWxzZSwgRUZhbHNlKTsNCisgICAgVFJlY3QgY2xSZWN0KGlCckN0bC0+UmVjdCgpKTsNCisg
ICAgVFJlY3QgaW5jUmVjdChpQnJDdGwtPlJlY3QoKSk7DQogICAgIFRFaWtTY3JvbGxCYXJGcmFt
ZUxheW91dCBsYXlvdXQ7DQogICAgIGxheW91dC5pVGlsaW5nTW9kZSA9IFRFaWtTY3JvbGxCYXJG
cmFtZUxheW91dDo6RUluY2x1c2l2ZVJlY3RDb25zdGFudDsNCiAgICAgbGF5b3V0LlNldENsaWVu
dE1hcmdpbigwKTsNCkBAIC0yMDQsMzEgKzE1NSwyMSBAQCB2b2lkIENCckN0bFNjcm9sbGluZ1By
b3ZpZGVyOjpVcGRhdGVIU2NyDQogICAgIFRBa25Eb3VibGVTcGFuU2Nyb2xsQmFyTW9kZWwgaERz
U2Jhck1vZGVsKGlIU2Jhck1vZGVsKTsNCiAgICAgVEFrbkRvdWJsZVNwYW5TY3JvbGxCYXJNb2Rl
bCB2RHNTYmFyTW9kZWwoaVZTYmFyTW9kZWwpOw0KICAgICANCi0gICAgaVNiRnJhbWUtPlRpbGVM
KCZoRHNTYmFyTW9kZWwsICZ2RHNTYmFyTW9kZWwsIHJlY3QsIHJlY3QsIGxheW91dCk7ICAgICAg
ICANCisgICAgaVNiRnJhbWUtPlRpbGVMKCZoRHNTYmFyTW9kZWwsICZ2RHNTYmFyTW9kZWwsIGNs
UmVjdCwgaW5jUmVjdCwgbGF5b3V0KTsgICAgICAgIA0KICAgICBpZiAoaVNiRnJhbWUtPlNjcm9s
bEJhckV4aXN0cyAoQ0Vpa1Njcm9sbEJhcjo6RUhvcml6b250YWwpKQ0KICAgICAgICAgew0KICAg
ICAgICAgaVNiRnJhbWUtPk1vdmVIb3JpelRodW1iVG8oaUhTYmFyTW9kZWwuaVRodW1iUG9zaXRp
b24pOw0KICAgICAgICAgfQ0KLSAgICBSZXNpemVCckN0bFZpZXcoIENFaWtTY3JvbGxCYXI6OkVI
b3Jpem9udGFsKTsNCi0jZWxzZQ0KLSAgICAvLyBJZiBhIHNjcm9sbGJhciBpcyBuZWVkZWQsIHVw
ZGF0ZSBpdC4gV2hhdCBpcyB0aGUgaGVpZ2h0IG9mIHRoZSBkaXNwbGF5Lg0KLSAgICAvLyB2aWV3
IGFuZCBzY3JvbGxCYXJGcmFtZSdzIHJlY3Qgd2lsbCBjaGFuZ2UgZHVlIHRvIGFkZC9yZW1vdmUg
SHNjcm9sbGJhcg0KLSAgICAvLyBidXQgYnJjdGwncyByZWN0IHdpbGwgcmVtYWluIHRoZSBzYW1l
DQotICAgIFRSZWN0IHJlY3QgPSBpQnJDdGwtPlJlY3QoKTsNCi0gICAgVEludCBkaXNwbGF5SGVp
Z2h0ID0gcmVjdC5IZWlnaHQoKTsNCi0gICAgDQotICAgIFRJbnQgd2lkdGggPSBpU2Nyb2xsQmFy
RnJhbWUtPkhTY3JvbGxCYXJOZWVkZWQoIGFEb2N1bWVudFdpZHRoLA0KLSAgICAgICAgYURpc3Bs
YXlXaWR0aCwNCi0gICAgICAgIGFEaXNwbGF5UG9zWCwNCi0gICAgICAgIGRpc3BsYXlIZWlnaHQg
KTsNCi0gICAgLy8gSWYgbmVjZXNzYXJ5IHJlc2l6ZSBDQnJDdGxWaWV3DQotICAgIFJlc2l6ZUJy
Q3RsVmlldyggQ1Njcm9sbEJhcjo6RUhvcml6b250YWwsIHdpZHRoICk7DQotICAgIA0KLSAgICBT
aGlmdEJyQ3RsVmlldygpOw0KLSAgICANCi0gICAgLy8gVXBkYXRlIHRoZSBIb3Jpem9udGFsIHNj
cm9sbGJhcg0KLSAgICBpU2Nyb2xsQmFyRnJhbWUtPlVwZGF0ZUhTY3JvbGxCYXJMKCk7DQotI2Vu
ZGlmDQorICAgIGlmIChjbFJlY3QgIT0gaUNsaWVudFJlY3QpDQorICAgICAgICB7DQorICAgICAg
ICBpQ2xpZW50UmVjdCA9IGNsUmVjdDsNCisgICAgICAgIGlCckN0bC0+V2ViS2l0Q29udHJvbCgp
LT5XZWJLaXRWaWV3KCkuU2V0UmVjdChpQ2xpZW50UmVjdCk7DQorICAgICAgICBpZihpQnJDdGwt
PiBXbWxNb2RlKCkpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGlCckN0bC0+V21sRW5n
aW5lSW50ZXJmYWNlKCktPlNldFJlY3QoaUNsaWVudFJlY3QpOw0KKyAgICAgICAgICAgIH0NCisg
ICAgICAgIGlCckN0bC0+RHJhd1Njcm9sbGJhckJhY2tncm91bmQoKTsNCisgICAgICAgIH0NCiAg
ICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtMjQzLDcgKzE4NCw2IEBAIHZv
aWQgQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXI6OlVwZGF0ZVZTY3INCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50IGFEaXNwbGF5SGVpZ2h0LA0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnQgYURpc3Bs
YXlQb3NZICkNCiAgICAgew0KLSNpZmRlZiBSRF9CUk9XU0VSX1NDUk9MTEJBUlMNCiAgICAgaURp
c3BsYXlTaXplLmlIZWlnaHQgPSBhRGlzcGxheUhlaWdodDsNCiAgICAgaURvY1NpemUuaUhlaWdo
dCA9IGFEb2N1bWVudEhlaWdodDsNCiAgICAgaVRodW1iUG9zLmlZID0gYURpc3BsYXlQb3NZOw0K
QEAgLTI1Miw3ICsxOTIsOCBAQCB2b2lkIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpVcGRhdGVW
U2NyDQogICAgIGlWU2Jhck1vZGVsLmlUaHVtYlBvc2l0aW9uID0gKGFEaXNwbGF5UG9zWSk7DQog
ICAgIGlWU2Jhck1vZGVsLmlTY3JvbGxTcGFuID0gKGFEb2N1bWVudEhlaWdodCk7DQogICAgIGlW
U2Jhck1vZGVsLmlUaHVtYlNwYW4gPSAoaURpc3BsYXlTaXplLmlIZWlnaHQpOw0KLSAgICBUUmVj
dCByZWN0KGlCckN0bC0+UmVjdCgpKTsNCisgICAgVFJlY3QgY2xSZWN0KGlCckN0bC0+UmVjdCgp
KTsNCisgICAgVFJlY3QgaW5jUmVjdChpQnJDdGwtPlJlY3QoKSk7DQogICAgIFRFaWtTY3JvbGxC
YXJGcmFtZUxheW91dCBsYXlvdXQ7DQogICAgIGxheW91dC5pVGlsaW5nTW9kZSA9IFRFaWtTY3Jv
bGxCYXJGcmFtZUxheW91dDo6RUluY2x1c2l2ZVJlY3RDb25zdGFudDsNCiAgICAgbGF5b3V0LlNl
dENsaWVudE1hcmdpbigwKTsNCkBAIC0yNjAsMzIgKzIwMSwxOCBAQCB2b2lkIENCckN0bFNjcm9s
bGluZ1Byb3ZpZGVyOjpVcGRhdGVWU2NyDQogICAgIFRBa25Eb3VibGVTcGFuU2Nyb2xsQmFyTW9k
ZWwgaERzU2Jhck1vZGVsKGlIU2Jhck1vZGVsKTsNCiAgICAgVEFrbkRvdWJsZVNwYW5TY3JvbGxC
YXJNb2RlbCB2RHNTYmFyTW9kZWwoaVZTYmFyTW9kZWwpOw0KICAgICANCi0gICAgaVNiRnJhbWUt
PlRpbGVMKCZoRHNTYmFyTW9kZWwsICZ2RHNTYmFyTW9kZWwsIHJlY3QsIHJlY3QsIGxheW91dCk7
ICAgICAgICANCisgICAgaVNiRnJhbWUtPlRpbGVMKCZoRHNTYmFyTW9kZWwsICZ2RHNTYmFyTW9k
ZWwsIGNsUmVjdCwgaW5jUmVjdCwgbGF5b3V0KTsgICAgICAgIA0KICAgICBpU2JGcmFtZS0+U2V0
VkZvY3VzUG9zVG9UaHVtYlBvcyh2RHNTYmFyTW9kZWwuRm9jdXNQb3NpdGlvbigpKTsNCi0gICAg
DQotICAgIFJlc2l6ZUJyQ3RsVmlldyggQ0Vpa1Njcm9sbEJhcjo6RVZlcnRpY2FsKTsNCi0gICAg
Ly8gU2hpZnQgQ1ZpZXcgdG8gdGhlIHJpZ2h0IHBvc2l0aW9uLCBpZiB3ZSBoYXZlIHN3aXRjaGVk
IGJldHdlZW4NCi0gICAgLy8gTFRSIGFuZCBSVEwgcGFnZXMgKG9yIHZpY2UtdmVyc2EpDQotICAg
IFNoaWZ0QnJDdGxWaWV3KCk7DQotI2Vsc2UNCi0gICAgLy8gSWYgYSBzY3JvbGxiYXIgaXMgbmVl
ZGVkLCB1cGRhdGUgaXQNCi0gICAgVEludCBoZWlnaHQgPSBpU2Nyb2xsQmFyRnJhbWUtPlZTY3Jv
bGxCYXJOZWVkZWQoIGFEb2N1bWVudEhlaWdodCwNCi0gICAgICAgIGFEaXNwbGF5SGVpZ2h0LA0K
LSAgICAgICAgYURpc3BsYXlQb3NZICk7DQotICAgIA0KLSAgICAvLyBJZiBuZWNlc3NhcnkgcmVz
aXplIGNicmN0bHZpZXcNCi0gICAgaWYgKCBoZWlnaHQgKQ0KKyAgICBpZiAoY2xSZWN0ICE9IGlD
bGllbnRSZWN0KQ0KICAgICAgICAgew0KLSAgICAgICAgUmVzaXplQnJDdGxWaWV3KCBDU2Nyb2xs
QmFyOjpFVmVydGljYWwsIGhlaWdodCApOw0KKyAgICAgICAgaUNsaWVudFJlY3QgPSBjbFJlY3Q7
DQorICAgICAgICBpQnJDdGwtPldlYktpdENvbnRyb2woKS0+V2ViS2l0VmlldygpLlNldFJlY3Qo
aUNsaWVudFJlY3QpOw0KKyAgICAgICAgaWYoaUJyQ3RsLT4gV21sTW9kZSgpKQ0KKyAgICAgICAg
ICAgIHsNCisgICAgICAgICAgICBpQnJDdGwtPldtbEVuZ2luZUludGVyZmFjZSgpLT5TZXRSZWN0
KGlDbGllbnRSZWN0KTsNCisgICAgICAgICAgICB9DQorICAgICAgICBpQnJDdGwtPkRyYXdTY3Jv
bGxiYXJCYWNrZ3JvdW5kKCk7DQogICAgICAgICB9DQotDQotICAgIC8vIFNoaWZ0IENWaWV3IHRv
IHRoZSByaWdodCBwb3NpdGlvbiwgaWYgd2UgaGF2ZSBzd2l0Y2hlZCBiZXR3ZWVuDQotICAgIC8v
IExUUiBhbmQgUlRMIHBhZ2VzIChvciB2aWNlLXZlcnNhKQ0KLSAgICBTaGlmdEJyQ3RsVmlldygp
Ow0KLSAgICANCi0gICAgLy8gVXBkYXRlIHRoZSBWZXJ0aWNhbCBzY3JvbGxiYXINCi0gICAgaVNj
cm9sbEJhckZyYW1lLT5VcGRhdGVWU2Nyb2xsQmFyTCgpOw0KLSNlbmRpZg0KICAgICB9DQogDQog
DQpAQCAtMjk1LDExICsyMjIsNyBAQCB2b2lkIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpVcGRh
dGVWU2NyDQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiB2b2lkIENCckN0bFNjcm9sbGluZ1By
b3ZpZGVyOjpOb3RpZnlMYXlvdXRDaGFuZ2UoVEJyQ3RsTGF5b3V0IGFMYXlvdXQpDQogICAgIHsN
Ci0jaWZkZWYgUkRfQlJPV1NFUl9TQ1JPTExCQVJTDQogICAgIGlCckN0bExheW91dCA9IGFMYXlv
dXQ7DQotI2Vsc2UNCi0gICAgaVNjcm9sbEJhckZyYW1lLT5Ob3RpZnlMYXlvdXRDaGFuZ2UoYUxh
eW91dCk7DQotI2VuZGlmDQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAg
LTMwNywxMSArMjMwLDcgQEAgdm9pZCBDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6Tm90aWZ5TGF5
bw0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogVEludCBDQnJDdGxTY3JvbGxpbmdQcm92aWRl
cjo6VlNjcm9sbEJhcldpZHRoKCkNCiAgICAgew0KLSNpZmRlZiBSRF9CUk9XU0VSX1NDUk9MTEJB
UlMNCiAgICAgcmV0dXJuIGlTYkZyYW1lLT5TY3JvbGxCYXJCcmVhZHRoKENFaWtTY3JvbGxCYXI6
OkVWZXJ0aWNhbCk7DQotI2Vsc2UNCi0gICAgcmV0dXJuIGlTY3JvbGxCYXJGcmFtZS0+VlNjcm9s
bEJhcldpZHRoKCk7DQotI2VuZGlmDQogICAgIH0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KQEAgLTMxOSw1MSArMjM4LDI5IEBAIFRJbnQgQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXI6OlZT
Y3JvbGxCYXINCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIFRJbnQgQ0JyQ3RsU2Nyb2xsaW5n
UHJvdmlkZXI6OkhTY3JvbGxCYXJIZWlnaHQoKQ0KICAgICB7DQotI2lmZGVmIFJEX0JST1dTRVJf
U0NST0xMQkFSUw0KICAgICByZXR1cm4gaVNiRnJhbWUtPlNjcm9sbEJhckJyZWFkdGgoQ0Vpa1Nj
cm9sbEJhcjo6RUhvcml6b250YWwpOw0KLSNlbHNlDQotICAgIHJldHVybiBpU2Nyb2xsQmFyRnJh
bWUtPkhTY3JvbGxCYXJIZWlnaHQoKTsNCi0jZW5kaWYNCiAgICAgfQ0KIC8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCiAvLyBDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6VlNjcm9sbEJhcg0KIC8vLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NCi0jaWZkZWYgUkRfQlJPV1NFUl9TQ1JPTExCQVJTDQogY29uc3Qg
Q0NvZUNvbnRyb2wqIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpWU2Nyb2xsQmFyKCkNCiAgICAg
ew0KICAgICByZXR1cm4gaVNiRnJhbWUtPkdldFNjcm9sbEJhckhhbmRsZShDRWlrU2Nyb2xsQmFy
OjpFVmVydGljYWwpOw0KICAgICB9DQotI2Vsc2UNCi1jb25zdCBDU2Nyb2xsQmFyKiBDQnJDdGxT
Y3JvbGxpbmdQcm92aWRlcjo6VlNjcm9sbEJhcigpDQotICAgIHsNCi0gICAgcmV0dXJuIGlTY3Jv
bGxCYXJGcmFtZS0+VlNjcm9sbEJhcigpOw0KLSAgICB9DQotI2VuZGlmDQogDQogLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIC8vIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpIU2Nyb2xsQmFyDQog
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSNpZmRlZiBSRF9CUk9XU0VSX1NDUk9MTEJBUlMNCi1j
b25zdCBDQ29lQ29udHJvbCogQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXI6OkhTY3JvbGxCYXIoKQ0K
K2NvbnN0IENDb2VDb250cm9sKiBDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6SFNjcm9sbEJhcigp
IA0KICAgICB7DQogICAgIHJldHVybiBpU2JGcmFtZS0+R2V0U2Nyb2xsQmFySGFuZGxlKENFaWtT
Y3JvbGxCYXI6OkVIb3Jpem9udGFsKTsNCiAgICAgfQ0KLSNlbHNlDQotY29uc3QgQ1Njcm9sbEJh
ciogQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXI6OkhTY3JvbGxCYXIoKQ0KLSAgICB7DQotICAgIHJl
dHVybiBpU2Nyb2xsQmFyRnJhbWUtPkhTY3JvbGxCYXIoKTsNCi0gICAgfQ0KLSNlbmRpZg0KIC8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6U2Nyb2xs
QmFyQ29ybmVyV2luZG93DQogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIENTY3JvbGxCYXJDb3Ju
ZXJXaW5kb3cqIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpTY3JvbGxCYXJDb3JuZXJXaW5kb3co
KQ0KICAgICB7DQotI2lmZGVmIFJEX0JST1dTRVJfU0NST0xMQkFSUw0KICAgICByZXR1cm4gTlVM
TDsNCi0jZWxzZQ0KLSAgICByZXR1cm4gaVNjcm9sbEJhckZyYW1lLT5TY3JvbGxCYXJDb3JuZXJX
aW5kb3coKTsNCi0jZW5kaWYNCiAgICAgfQ0KIA0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBA
IC0zNzEsMjczICsyNjgsMTYgQEAgQ1Njcm9sbEJhckNvcm5lcldpbmRvdyogQ0JyQ3RsU2Nyb2xs
aW5nUA0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiB2b2lkIENCckN0bFNjcm9sbGluZ1Byb3Zp
ZGVyOjpTZXRTY3JvbGxEaXNwbGF5UmVjdChUUmVjdCBhUmVjdCkNCiAgICAgew0KLSNpZmRlZiBS
RF9CUk9XU0VSX1NDUk9MTEJBUlMNCiAgICAgaURpc3BsYXlTaXplID0gYVJlY3QuU2l6ZSgpOw0K
LSNlbHNlDQotICAgIGlTY3JvbGxCYXJGcmFtZS0+U2V0RGlzcGxheVJlY3QoYVJlY3QpOw0KLSNl
bmRpZg0KLSAgICB9DQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLS8vIHZvaWQgQ0JyQ3RsU2Ny
b2xsaW5nUHJvdmlkZXI6OlJlc2l6ZUJyQ3RsVmlldw0KLS8vIFJlc2l6ZXMgdGhlIHJlY3Qgb2Yg
Vmlldw0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotI2lmZGVmIFJEX0JST1dTRVJfU0NST0xM
QkFSUw0KLXZvaWQgQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXI6OlJlc2l6ZUJyQ3RsVmlldyhjb25z
dCBDRWlrU2Nyb2xsQmFyOjpUT3JpZW50YXRpb24gYU9yaWVudGF0aW9uKQ0KLSAgICB7DQotICAg
IFRSZWN0IHJlY3Q7DQotICAgIGlmKGlCckN0bC0+IFdtbE1vZGUoKSkNCi0gICAgICAgIHsNCi0g
ICAgICAgIHJlY3QgPSBpQnJDdGwtPldtbEVuZ2luZUludGVyZmFjZSgpLT5XbWxWaWV3UmVjdGFu
Z2xlKCk7DQotICAgICAgICB9DQotICAgIGVsc2UNCi0gICAgICAgIHsNCi0gICAgICAgIC8vIE5v
dGU6IGNhbGxpbmcgLlJlY3QoKSByZXR1cm5zIGEgaVRsIG9mIDAsMCBpbnN0ZWFkIG9mIHRoZSBw
b3NpdGlvbg0KLSAgICAgICAgLy8gd2UgaGFkIHRvIHVzZSB0aGlzIHNsaWdodGx5IGluZWZmaWNp
ZW50IHdvcmthcm91bmQNCi0gICAgICAgIHJlY3QuU2V0UmVjdChpQnJDdGwtPldlYktpdENvbnRy
b2woKS0+V2ViS2l0VmlldygpLlBvc2l0aW9uKCksDQotICAgICAgICAgICAgaUJyQ3RsLT5XZWJL
aXRDb250cm9sKCktPldlYktpdFZpZXcoKS5TaXplKCkpOw0KLSAgICAgICAgfQ0KLSAgICANCi0g
ICAgLy8gQnJjdGwgcmVjdCBzaXplDQotICAgIC8vIHRoZXNlIHZhcmlhYmxlcyBvbmx5IHVzZWQg
b25jZSEgc2hhbGwgd2Uga2VlcCB0aGVtPw0KLSAgICBUSW50IGRpc3BsYXlXaWR0aCA9IGlEaXNw
bGF5U2l6ZS5pV2lkdGg7DQotICAgIFRJbnQgZGlzcGxheUhlaWdodCAgPSBpRGlzcGxheVNpemUu
aUhlaWdodDsNCi0gICAgDQotICAgIA0KLSAgICANCi0gICAgLy8gRG9uJ3QgdXBkYXRlIGlmIG5v
dCBuZWNlc3NhcnksIHJlY3QgY2FsbGJhY2tzIGNhbiBjcmVhdGUgZW5kbGVzcyBsb29wDQotICAg
IGlmICggYU9yaWVudGF0aW9uID09IENFaWtTY3JvbGxCYXI6OkVWZXJ0aWNhbCApDQotICAgICAg
ICB7DQotICAgICAgICBUSW50IHBpeGVscyA9IGlTYkZyYW1lLT5TY3JvbGxCYXJCcmVhZHRoKENF
aWtTY3JvbGxCYXI6OkVWZXJ0aWNhbCk7DQotICAgICAgICBpZiAoICghaUhhc1ZlcnRpY2FsU2Ny
b2xsQmFyKSB8fCAoIHJlY3QuV2lkdGgoKSAhPSBkaXNwbGF5V2lkdGggKSApDQotICAgICAgICAg
ICAgew0KLSAgICAgICAgICAgIGlIYXNWZXJ0aWNhbFNjcm9sbEJhciA9IEVUcnVlOw0KLSAgICAg
ICAgICAgIC8vIFNocmluayBpbiB0aGUgaG9yaXpvbnRhbCBwbGFuZQ0KLSAgICAgICAgICAgIC8v
IFRTaXplIHJlY3RTaXplID0gcmVjdC5TaXplKCk7DQotICAgICAgICAgICAgcmVjdC5TZXRXaWR0
aCggcmVjdC5XaWR0aCgpIC0gcGl4ZWxzICk7DQotICAgICAgICAgICAgDQotICAgICAgICAgICAg
Ly8gRm9yIFJpZ2h0IHRvIExlZnQgcGFnZXMsIHNocmluayBkaXNwbGF5IG9uIHRoZSBsZWZ0IHNp
ZGUNCi0gICAgICAgICAgICBpZiAoIGlCckN0bExheW91dCA9PSBFT3JpZ2luVG9wUmlnaHQpDQot
ICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgLy8gU2hpZnQgdG8gdGhlIHJpZ2h0
DQotICAgICAgICAgICAgICAgIHJlY3QuTW92ZSggcGl4ZWxzICwgMCApOw0KLSAgICAgICAgICAg
ICAgICB9DQotICAgICAgICAgICAgDQotICAgICAgICAgICAgaURpc3BsYXlTaXplLmlXaWR0aCA9
IHJlY3QuV2lkdGgoKSA7DQotICAgICAgICAgICAgDQotICAgICAgICAgICAgLy8gTW9kaWZ5IEJy
Q3RsIHJlY3QsIGlmIG5lY2Vzc2FyeQ0KLSAgICAgICAgICAgIGlCckN0bC0+V2ViS2l0Q29udHJv
bCgpLT5XZWJLaXRWaWV3KCkuU2V0UmVjdCggcmVjdCApOw0KLSAgICAgICAgICAgIH0NCi0gICAg
ICAgIH0NCi0gICAgZWxzZQ0KLSAgICAgICAgLy8gSG9yaXpvbnRhbA0KLSAgICAgICAgew0KLSAg
ICAgICAgLy8gV2UgbmVlZCB0byBrbm93IHdoYXQgd2FzIHRoZSBoZWlnaHQgb2YgdGhlIGhvcml6
b250YWwgc2Nyb2xsYmFyLCBhbmQgYnkgaG93IG11Y2ggdG8gaW5jcmVhc2UgDQotICAgICAgICAv
LyB0aGUgV2ViS2l0IGhlaWdodCwgYWZ0ZXIgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyIHdhcyBy
ZW1vdmVkLiBUaGVyZSBpcyBubyBBUEkgZm9yIHRoYXQsIA0KLSAgICAgICAgLy8gc28gd2UganVz
dCBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgaXQgd2hpbGUgdGhlIHNjcm9sbGJhciBpcyBzdGlsbCB0
aGVyZQ0KLSAgICAgICAgaUhTQmFyV2lkdGggPSAoaVNiRnJhbWUtPlNjcm9sbEJhckJyZWFkdGgo
Q0Vpa1Njcm9sbEJhcjo6RUhvcml6b250YWwpICE9IDApID8gDQotICAgICAgICAgICAgKGlTYkZy
YW1lLT5TY3JvbGxCYXJCcmVhZHRoKENFaWtTY3JvbGxCYXI6OkVIb3Jpem9udGFsKSkgOiBpSFNC
YXJXaWR0aDsNCi0gICAgICAgIA0KLSAgICAgICAgVEludCBwaXhlbHMgPSAoaURpc3BsYXlTaXpl
LmlXaWR0aCA+PSBpRG9jU2l6ZS5pV2lkdGgpID8gMCA6IGlTYkZyYW1lLT5TY3JvbGxCYXJCcmVh
ZHRoKENFaWtTY3JvbGxCYXI6OkVIb3Jpem9udGFsKTsNCi0gICAgICAgICAgICB7DQotICAgICAg
ICAgICAgVEJvb2wgY2hhbmdlTmVlZGVkID0gKCByZWN0LkhlaWdodCgpICE9IGRpc3BsYXlIZWln
aHQgKTsNCi0gICAgICAgICAgICBpZiAocGl4ZWxzICYmICghaUhhc0hvcml6b250YWxTY3JvbGxC
YXIpKSANCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBjaGFuZ2VOZWVkZWQg
PSBFVHJ1ZTsNCi0gICAgICAgICAgICAgICAgaUhhc0hvcml6b250YWxTY3JvbGxCYXIgPSBFVHJ1
ZTsNCi0gICAgICAgICAgICAgICAgcGl4ZWxzID0gcGl4ZWxzICogLTE7DQotICAgICAgICAgICAg
ICAgIH0NCi0gICAgICAgICAgICBlbHNlIGlmICgoIXBpeGVscykgJiYgaUhhc0hvcml6b250YWxT
Y3JvbGxCYXIpIA0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHBpeGVscyA9
IGlIU0JhcldpZHRoOy8vQ0Vpa1Njcm9sbEJhcjo6RGVmYXVsdFNjcm9sbEJhckJyZWFkdGgoKTsN
Ci0gICAgICAgICAgICAgICAgY2hhbmdlTmVlZGVkID0gRVRydWU7DQotICAgICAgICAgICAgICAg
IGlIYXNIb3Jpem9udGFsU2Nyb2xsQmFyID0gRUZhbHNlOw0KLSAgICAgICAgICAgICAgICBpSFNC
YXJXaWR0aCA9IENFaWtTY3JvbGxCYXI6OkRlZmF1bHRTY3JvbGxCYXJCcmVhZHRoKCk7Ly9pU2JG
cmFtZS0+U2Nyb2xsQmFyQnJlYWR0aChDRWlrU2Nyb2xsQmFyOjpFSG9yaXpvbnRhbCk7IC8vIE5v
IEFQSSB0byBnZXQgdGhlIFNjcm9sbGJhciB3aWR0aC4uLg0KLSAgICAgICAgICAgICAgICB9DQot
ICAgICAgICAgICAgaWYgKGNoYW5nZU5lZWRlZCkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAg
ICAgICAgICAgICBpZiAocGl4ZWxzKQ0KLSAgICAgICAgICAgICAgICAgICAgew0KLSAgICAgICAg
ICAgICAgICAgICAgLy8gU2hyaW5rIGluIHRoZSB2ZXJ0aWNhbCBwbGFuZQ0KLSAgICAgICAgICAg
ICAgICAgICAgcmVjdC5TZXRIZWlnaHQoIHJlY3QuSGVpZ2h0KCkgKyBwaXhlbHMgKTsNCi0gICAg
ICAgICAgICAgICAgICAgIGlEaXNwbGF5U2l6ZS5pSGVpZ2h0ID0gcmVjdC5IZWlnaHQoKTsNCi0g
ICAgICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICAgICAgaWYoaUJyQ3RsLT4gV21s
TW9kZSgpKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpQnJDdGwtPldtbEVuZ2luZUludGVyZmFjZSgpLT5TZXRSZWN0KHJlY3QpOw0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgICAgIGVsc2UNCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICAgICAgaUJyQ3RsLT5XZWJL
aXRDb250cm9sKCktPldlYktpdFZpZXcoKS5TZXRSZWN0KHJlY3QpOw0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgfQ0K
LSAgICAgICAgICAgIH0NCi0gICAgICAgIH0NCi0gICAgfQ0KLSNlbHNlDQotdm9pZCBDQnJDdGxT
Y3JvbGxpbmdQcm92aWRlcjo6UmVzaXplQnJDdGxWaWV3KGNvbnN0IENTY3JvbGxCYXI6OlRPcmll
bnRhdGlvbiBhT3JpZW50YXRpb24sDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50IGFQaXhlbHMpDQotICAgIHsNCi0gICAgVFJlY3QgcmVjdDsNCi0gICAgaWYoaUJyQ3RsLT4g
V21sTW9kZSgpKQ0KLSAgICAgICAgew0KLSAgICAgICAgcmVjdCA9IGlCckN0bC0+V21sRW5naW5l
SW50ZXJmYWNlKCktPldtbFZpZXdSZWN0YW5nbGUoKTsNCi0gICAgICAgIH0NCi0gICAgZWxzZQ0K
LSAgICAgICAgew0KLSAgICAgICAgLy8gTm90ZTogY2FsbGluZyAuUmVjdCgpIHJldHVybnMgYSBp
VGwgb2YgMCwwIGluc3RlYWQgb2YgdGhlIHBvc2l0aW9uDQotICAgICAgICAvLyB3ZSBoYWQgdG8g
dXNlIHRoaXMgc2xpZ2h0bHkgaW5lZmZpY2llbnQgd29ya2Fyb3VuZA0KLSAgICAgICAgcmVjdC5T
ZXRSZWN0KGlCckN0bC0+V2ViS2l0Q29udHJvbCgpLT5XZWJLaXRWaWV3KCkuUG9zaXRpb24oKSwN
Ci0gICAgICAgICAgICBpQnJDdGwtPldlYktpdENvbnRyb2woKS0+V2ViS2l0VmlldygpLlNpemUo
KSk7DQotICAgICAgICB9DQotICAgIA0KLSAgICAvLyBCcmN0bCByZWN0IHNpemUNCi0gICAgDQot
ICAgIC8vIHRoZXNlIHZhcmlhYmxlcyBvbmx5IHVzZWQgb25jZSEgc2hhbGwgd2Uga2VlcCB0aGVt
Pw0KLSAgICBUSW50IGRpc3BsYXlXaWR0aCA9IGlTY3JvbGxCYXJGcmFtZS0+RGlzcGxheSgpLldp
ZHRoKCk7DQotICAgIFRJbnQgZGlzcGxheUhlaWdodCAgPSBpU2Nyb2xsQmFyRnJhbWUtPkRpc3Bs
YXkoKS5IZWlnaHQoKTsNCi0gICAgDQotICAgIC8vIERvbid0IHVwZGF0ZSBpZiBub3QgbmVjZXNz
YXJ5LCByZWN0IGNhbGxiYWNrcyBjYW4gY3JlYXRlIGVuZGxlc3MgbG9vcA0KLSAgICBpZiAoIGFP
cmllbnRhdGlvbiA9PSBDU2Nyb2xsQmFyOjpFVmVydGljYWwgKQ0KLSAgICAgICAgew0KLSAgICAg
ICAgaWYgKCBhUGl4ZWxzIHx8ICggcmVjdC5XaWR0aCgpICE9IGRpc3BsYXlXaWR0aCApICkNCi0g
ICAgICAgICAgICB7DQotICAgICAgICAgICAgLy8gU2hyaW5rIGluIHRoZSBob3Jpem9udGFsIHBs
YW5lDQotICAgICAgICAgICAgLy8gVFNpemUgcmVjdFNpemUgPSByZWN0LlNpemUoKTsNCi0gICAg
ICAgICAgICByZWN0LlNldFdpZHRoKCByZWN0LldpZHRoKCkgLSBhUGl4ZWxzICk7DQotICAgICAg
ICAgICAgDQotICAgICAgICAgICAgLy8gRm9yIFJpZ2h0IHRvIExlZnQgcGFnZXMsIHNocmluayBk
aXNwbGF5IG9uIHRoZSBsZWZ0IHNpZGUNCi0gICAgICAgICAgICBpZiAoIGlTY3JvbGxCYXJGcmFt
ZS0+TGF5b3V0KCkgPT0gRU9yaWdpblRvcFJpZ2h0DQotICAgICAgICAgICAgICAgICYmIGFQaXhl
bHMgKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIC8vIFNoaWZ0IHRvIHRo
ZSByaWdodA0KLSAgICAgICAgICAgICAgICByZWN0Lk1vdmUoIGFQaXhlbHMgLCAwICk7DQotICAg
ICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICANCi0gICAgICAgICAgICBpU2Nyb2xsQmFyRnJh
bWUtPlNldERpc3BsYXlXaWR0aCggcmVjdC5XaWR0aCgpICk7DQotICAgICAgICAgICAgDQotICAg
ICAgICAgICAgLy8gTW9kaWZ5IEJyQ3RsIHJlY3QsIGlmIG5lY2Vzc2FyeQ0KLSAgICAgICAgICAg
IGlmICggYVBpeGVscyApDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgaUJy
Q3RsLT5XZWJLaXRDb250cm9sKCktPldlYktpdFZpZXcoKS5TZXRSZWN0KCByZWN0ICk7DQotICAg
ICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICB9DQotICAgICAgICB9DQotICAgIGVsc2UNCi0g
ICAgICAgIC8vIEhvcml6b250YWwNCi0gICAgICAgIHsNCi0gICAgICAgIGlmICggYVBpeGVscyB8
fCAoIHJlY3QuSGVpZ2h0KCkgIT0gZGlzcGxheUhlaWdodCApICkNCi0gICAgICAgICAgICB7DQot
ICAgICAgICAgICAgLy8gU2hyaW5rIGluIHRoZSB2ZXJ0aWNhbCBwbGFuZQ0KLSAgICAgICAgICAg
IHJlY3QuU2V0SGVpZ2h0KCByZWN0LkhlaWdodCgpIC0gYVBpeGVscyApOw0KLSAgICAgICAgICAg
IGlTY3JvbGxCYXJGcmFtZS0+U2V0RGlzcGxheUhlaWdodCggcmVjdC5IZWlnaHQoKSApOw0KLSAg
ICAgICAgICAgIA0KLSAgICAgICAgICAgIC8vIE1vZGlmeSBCckN0bCByZWN0LCBpZiBuZWNlc3Nh
cnkNCi0gICAgICAgICAgICBpZiAoIGFQaXhlbHMgKQ0KLSAgICAgICAgICAgICAgICB7DQotICAg
ICAgICAgICAgICAgIGlmKGlCckN0bC0+IFdtbE1vZGUoKSkNCi0gICAgICAgICAgICAgICAgICAg
IHsNCi0gICAgICAgICAgICAgICAgICAgIGlCckN0bC0+V21sRW5naW5lSW50ZXJmYWNlKCktPlNl
dFJlY3QocmVjdCk7DQotICAgICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIGVs
c2UNCi0gICAgICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGlCckN0bC0+
V2ViS2l0Q29udHJvbCgpLT5XZWJLaXRWaWV3KCkuU2V0UmVjdChyZWN0KTsNCi0gICAgICAgICAg
ICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAg
IH0NCi0jZW5kaWYNCiAgICAgfQ0KIA0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotLy8gdm9p
ZCBDQnJDdGxTY3JvbGxpbmdQcm92aWRlcjo6U2hpZnRCckN0bFZpZXcoKQ0KLS8vIFNoaWZ0cyB0
aGUgcmVjdCBvZiB2aWV3DQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi12b2lkIENCckN0bFNj
cm9sbGluZ1Byb3ZpZGVyOjpTaGlmdEJyQ3RsVmlldygpDQotICAgIHsNCi0jaWZkZWYgUkRfQlJP
V1NFUl9TQ1JPTExCQVJTDQotICAgIC8vIEVuc3VyZSB0aGF0IHZpZXcgaGFzIG5vdCBiZWVuIGRy
YXduIG92ZXIgdGhlIHRvcCBvZiB0aGUNCi0gICAgLy8gdmVydGljYWwgc2Nyb2xsYmFyDQotICAg
IFRJbnQgcG9zWCA9IGlTYkZyYW1lLT5TY3JvbGxCYXJCcmVhZHRoKENFaWtTY3JvbGxCYXI6OkVW
ZXJ0aWNhbCk7DQotICAgIA0KLSAgICAvLyBOb3RlOiBjYWxsaW5nIC5SZWN0KCkgYWx3YXlzIHJl
dHVybnMgYSBpVGwgb2YgMCwwIGluc3RlYWQgb2YgdGhlDQotICAgIC8vIHBvc2l0aW9uIHdlIGhh
ZCB0byB1c2UgdGhpcyBzbGlnaHRseSBpbmVmZmljaWVudCB3b3JrYXJvdW5kDQotICAgIFRSZWN0
IHJlY3QoIGlCckN0bC0+V2ViS2l0Q29udHJvbCgpLT5XZWJLaXRWaWV3KCkuUG9zaXRpb24oKSwN
Ci0gICAgICAgIGlCckN0bC0+V2ViS2l0Q29udHJvbCgpLT5XZWJLaXRWaWV3KCkuU2l6ZSgpICk7
DQotICAgIA0KLSAgICBpZiAoIChpQnJDdGxMYXlvdXQgPT0gRU9yaWdpblRvcExlZnQgKQ0KLSAg
ICAgICAgJiYgKCByZWN0LmlUbC5pWCA9PSBwb3NYICkgKQ0KLSAgICAgICAgew0KLSAgICAgICAg
Ly8gU2hpZnQgTFRSIHBhZ2VzIHRvIHRoZSBsZWZ0DQotICAgICAgICByZWN0Lk1vdmUoICggLTEg
KiBwb3NYICksIDAgKTsNCi0gICAgICAgIGlCckN0bC0+V2ViS2l0Q29udHJvbCgpLT5XZWJLaXRW
aWV3KCkuU2V0UmVjdCggcmVjdCApOw0KLSAgICAgICAgLy8gTW92ZSB0aGUgdmVydGljYWwgc2Ny
b2xsYmFyDQotICAgICAgICBDRWlrU2Nyb2xsQmFyKiB2U2Nyb2xsQmFyID0gaVNiRnJhbWUtPkdl
dFNjcm9sbEJhckhhbmRsZShDRWlrU2Nyb2xsQmFyOjpFVmVydGljYWwpOw0KLSAgICAgICAgVFJl
Y3Qgc2JSZWN0ID0gdlNjcm9sbEJhci0+UmVjdCgpOw0KLSAgICAgICAgc2JSZWN0Lk1vdmUocmVj
dC5XaWR0aCgpLCAwKTsNCi0gICAgICAgIHZTY3JvbGxCYXItPlNldFJlY3Qoc2JSZWN0KTsNCi0g
ICAgICAgIA0KLSAgICAgICAgLy8gTW92ZSB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXINCi0gICAg
ICAgIENFaWtTY3JvbGxCYXIqIGhTY3JvbGxCYXIgPSBpU2JGcmFtZS0+R2V0U2Nyb2xsQmFySGFu
ZGxlKENFaWtTY3JvbGxCYXI6OkVIb3Jpem9udGFsKTsNCi0gICAgICAgIGlmIChoU2Nyb2xsQmFy
KQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBzYlJlY3QgPSBoU2Nyb2xsQmFyLT5SZWN0
KCk7DQotICAgICAgICAgICAgc2JSZWN0Lk1vdmUoaUJyQ3RsLT5SZWN0KCkuV2lkdGgoKSAtIHNi
UmVjdC5XaWR0aCgpLCAwKTsNCi0gICAgICAgICAgICBoU2Nyb2xsQmFyLT5TZXRSZWN0KHNiUmVj
dCk7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICBlbHNlIGlmDQotICAgICAgICAo
ICggaUJyQ3RsTGF5b3V0ID09IEVPcmlnaW5Ub3BSaWdodCApDQotICAgICAgICAmJiAoIHJlY3Qu
aVRsLmlYID09IDAgKSApDQotICAgICAgICB7DQotICAgICAgICAvLyBTaGlmdCBSVEwgcGFnZXMg
dG8gdGhlIHJpZ2h0DQotICAgICAgICByZWN0Lk1vdmUoIHBvc1gsIDAgKTsNCi0gICAgICAgIGlC
ckN0bC0+V2ViS2l0Q29udHJvbCgpLT5XZWJLaXRWaWV3KCkuU2V0UmVjdCggcmVjdCApOw0KLSAg
ICAgICAgLy8gTW92ZSB0aGUgdmVydGljYWwgc2Nyb2xsYmFyDQotICAgICAgICBDRWlrU2Nyb2xs
QmFyKiB2U2Nyb2xsQmFyID0gaVNiRnJhbWUtPkdldFNjcm9sbEJhckhhbmRsZShDRWlrU2Nyb2xs
QmFyOjpFVmVydGljYWwpOw0KLSAgICAgICAgVFJlY3Qgc2JSZWN0ID0gdlNjcm9sbEJhci0+UmVj
dCgpOw0KLSAgICAgICAgc2JSZWN0Lk1vdmUoKC0xKSAqIHJlY3QuV2lkdGgoKSwgMCk7DQotICAg
ICAgICB2U2Nyb2xsQmFyLT5TZXRSZWN0KHNiUmVjdCk7DQotICAgICAgICANCi0gICAgICAgIC8v
IE1vdmUgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyDQotICAgICAgICBDRWlrU2Nyb2xsQmFyKiBo
U2Nyb2xsQmFyID0gaVNiRnJhbWUtPkdldFNjcm9sbEJhckhhbmRsZShDRWlrU2Nyb2xsQmFyOjpF
SG9yaXpvbnRhbCk7DQotICAgICAgICBpZiAoaFNjcm9sbEJhcikNCi0gICAgICAgICAgICB7DQot
ICAgICAgICAgICAgc2JSZWN0ID0gaFNjcm9sbEJhci0+UmVjdCgpOw0KLSAgICAgICAgICAgIHNi
UmVjdC5Nb3ZlKHNiUmVjdC5XaWR0aCgpIC0gaUJyQ3RsLT5SZWN0KCkuV2lkdGgoKSwgMCk7DQot
ICAgICAgICAgICAgaFNjcm9sbEJhci0+U2V0UmVjdChzYlJlY3QpOw0KLSAgICAgICAgICAgIH0N
Ci0gICAgICAgIH0NCi0gICAgaVNiRnJhbWUtPkRyYXdCYWNrZ3JvdW5kKGlTYkZyYW1lLT5TY3Jv
bGxCYXJFeGlzdHMoQ0Vpa1Njcm9sbEJhcjo6RUhvcml6b250YWwpLA0KLSAgICAgICAgaVNiRnJh
bWUtPlNjcm9sbEJhckV4aXN0cyhDRWlrU2Nyb2xsQmFyOjpFVmVydGljYWwpKTsNCi0jZWxzZQ0K
LSAgICBUSW50IHBvc1ggPSBpU2Nyb2xsQmFyRnJhbWUtPlZTY3JvbGxCYXJXaWR0aCgpOw0KLSAg
ICANCi0gICAgLy8gTm90ZTogY2FsbGluZyAuUmVjdCgpIGFsd2F5cyByZXR1cm5zIGEgaVRsIG9m
IDAsMCBpbnN0ZWFkIG9mIHRoZQ0KLSAgICAvLyBwb3NpdGlvbiB3ZSBoYWQgdG8gdXNlIHRoaXMg
c2xpZ2h0bHkgaW5lZmZpY2llbnQgd29ya2Fyb3VuZA0KLSAgICBUUmVjdCByZWN0KCBpQnJDdGwt
PldlYktpdENvbnRyb2woKS0+V2ViS2l0VmlldygpLlBvc2l0aW9uKCksDQotICAgICAgICBpQnJD
dGwtPldlYktpdENvbnRyb2woKS0+V2ViS2l0VmlldygpLlNpemUoKSApOw0KLSAgICANCi0gICAg
aWYgKCAoIGlTY3JvbGxCYXJGcmFtZS0+TGF5b3V0KCkgPT0gRU9yaWdpblRvcExlZnQgKQ0KLSAg
ICAgICAgJiYgKCByZWN0LmlUbC5pWCA9PSBwb3NYICkgKQ0KLSAgICAgICAgew0KLSAgICAgICAg
Ly8gU2hpZnQgTFRSIHBhZ2VzIHRvIHRoZSBsZWZ0DQotICAgICAgICByZWN0Lk1vdmUoICggLTEg
KiBwb3NYICksIDAgKTsNCi0gICAgICAgIGlCckN0bC0+V2ViS2l0Q29udHJvbCgpLT5XZWJLaXRW
aWV3KCkuU2V0UmVjdCggcmVjdCApOw0KLSAgICAgICAgfQ0KLSAgICBlbHNlIGlmDQotICAgICAg
ICAoICggaVNjcm9sbEJhckZyYW1lLT5MYXlvdXQoKSA9PSBFT3JpZ2luVG9wUmlnaHQgKQ0KLSAg
ICAgICAgJiYgKCByZWN0LmlUbC5pWCA9PSAwICkgKQ0KLSAgICAgICAgew0KLSAgICAgICAgLy8g
U2hpZnQgUlRMIHBhZ2VzIHRvIHRoZSByaWdodA0KLSAgICAgICAgcmVjdC5Nb3ZlKCBwb3NYLCAw
ICk7DQotICAgICAgICBpQnJDdGwtPldlYktpdENvbnRyb2woKS0+V2ViS2l0VmlldygpLlNldFJl
Y3QoIHJlY3QgKTsNCi0gICAgICAgIH0NCi0jZW5kaWYNCi0gICAgfQ0KLSNpZmRlZiBSRF9CUk9X
U0VSX1NDUk9MTEJBUlMNCisNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ0JyQ3RsU2Ny
b2xsaW5nUHJvdmlkZXI6OkhhbmRsZVNjcm9sbEV2ZW50TA0KKy8vLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCiB2b2lkIENCckN0bFNjcm9sbGluZ1Byb3ZpZGVyOjpIYW5kbGVTY3JvbGxFdmVudEwoQ0Vp
a1Njcm9sbEJhciogLyphU2Nyb2xsQmFyKi8sIFRFaWtTY3JvbGxFdmVudCBhRXZlbnRUeXBlKQ0K
ICAgICB7DQorICAgIGlCckN0bC0+V2ViS2l0Q29udHJvbCgpLT5XZWJLaXRWaWV3KCkuRGVBY3Rp
dmF0ZUlmTmVlZGVkKEVUcnVlKTsNCiAgICAgVFRpbWUgdGhlVGltZTsNCiAgICAgdGhlVGltZS5V
bml2ZXJzYWxUaW1lKCk7DQogICAgIGNvbnN0IFRJbnQ2NCBub3cgPSAgdGhlVGltZS5JbnQ2NCgp
Ow0KQEAgLTc1NSwxNyArMzk1LDEwIEBAIHZvaWQgQ0JyQ3RsU2Nyb2xsaW5nUHJvdmlkZXI6OlNr
aW5DaGFuZ2UNCiAgICAgaVNiRnJhbWUtPkNyZWF0ZURvdWJsZVNwYW5TY3JvbGxCYXJzTChFRmFs
c2UsIEVGYWxzZSk7IA0KICAgICBpU2JGcmFtZS0+U2V0VHlwZU9mVlNjcm9sbEJhcihDRWlrU2Ny
b2xsQmFyRnJhbWU6OkVEb3VibGVTcGFuKTsNCiAgICAgaVNiRnJhbWUtPlNldFNjcm9sbEJhclZp
c2liaWxpdHlMKENFaWtTY3JvbGxCYXJGcmFtZTo6RUF1dG8sQ0Vpa1Njcm9sbEJhckZyYW1lOjpF
T24pOw0KKyAgICBpU2JGcmFtZS0+RHJhd0JhY2tncm91bmQoRUZhbHNlLCBFRmFsc2UpOw0KICAg
ICBpU2JGcmFtZS0+RHJhd1Njcm9sbEJhcnNOb3coKTsNCiAgICAgVXBkYXRlVlNjcm9sbEJhckwo
aURvY1NpemUuaUhlaWdodCwgaVRodW1iUG9zLmlZKTsNCiAgICAgVXBkYXRlSFNjcm9sbEJhckwo
aURvY1NpemUuaVdpZHRoLCBpVGh1bWJQb3MuaVgpOw0KICAgICB9DQogDQotDQotdm9pZCBDQnJD
dGxTY3JvbGxpbmdQcm92aWRlcjo6RHJhd0JhY2tncm91bmQoKQ0KLSAgICB7DQotICAgIGlTYkZy
YW1lLT5EcmF3QmFja2dyb3VuZChpU2JGcmFtZS0+U2Nyb2xsQmFyRXhpc3RzKENFaWtTY3JvbGxC
YXI6OkVIb3Jpem9udGFsKSwNCi0gICAgICAgIGlTYkZyYW1lLT5TY3JvbGxCYXJFeGlzdHMoQ0Vp
a1Njcm9sbEJhcjo6RVZlcnRpY2FsKSk7DQotICAgIGlTYkZyYW1lLT5EcmF3U2Nyb2xsQmFyc05v
dygpOw0KLSAgICB9DQotI2VuZGlmDQogLy8gRW5kIG9mIEZpbGUNCkluZGV4OiBXZWJLaXQvQnJv
d3NlckNvcmUvRm9ybWNvbnRyb2xzL3NyYy9GQ29udHJvbElucHV0U2tpbi5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXQvQnJvd3NlckNvcmUvRm9ybWNvbnRyb2xzL3NyYy9GQ29udHJvbElucHV0
U2tpbi5jcHAJKHJldmlzaW9uIDE4ODg1KQ0KKysrIFdlYktpdC9Ccm93c2VyQ29yZS9Gb3JtY29u
dHJvbHMvc3JjL0ZDb250cm9sSW5wdXRTa2luLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTkzMSw2
ICs5MzEsNyBAQCB2b2lkIENGb3JtSW5wdXRTa2luOjpEZUFjdGl2YXRlKFRCb29sIGFBDQogICAg
ICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICB3ZWJraXRGcmFtZS0+V2ViS2l0VmlldygpLlNl
dEZvY3VzZWRFbGVtZW50VHlwZShUQnJDdGxEZWZzOjpFRWxlbWVudElucHV0Qm94KTsNCisgICAg
VFJBUF9JR05PUkUod2Via2l0RnJhbWUtPldlYktpdFZpZXcoKS5XZWJLaXRDb250cm9sKCkuQnJD
dGwoKS5VcGRhdGVEZWZhdWx0U29mdGtleXNMKCkpOyAvLyBUaGlzIGlzIG5lZWRlZCB3aGVuIGNs
b3NpbmcgdGhlIGlucHV0IGJveCB3aXRoIHN0eWx1cw0KICAgICB9DQogDQogLy8gQ0Zvcm1JbnB1
dFNraW46OkRlc3Ryb3lMaXN0IC0gZGVsZXRlcyBsaXN0IGJveCBhbmQgZnJlZXMgcmVzb3VyY2Vz
DQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9Qb2ludGVyRXZlbnRIYW5kbGVyLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1BvaW50ZXJFdmVudEhhbmRsZXIu
aAkocmV2aXNpb24gMTg4ODUpDQorKysgV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9Qb2ludGVyRXZl
bnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkNCkBAIC01NCw2ICs1NCw3IEBADQogDQogLy8gRk9S
V0FSRCBERUNMQVJBVElPTlMNCiBjbGFzcyBDV2ViS2l0VmlldzsNCitjbGFzcyBDV2ViS2l0RnJh
bWU7DQogDQogLy8gQ0xBU1MgREVDTEFSQVRJT04NCiBjbGFzcyBDUG9pbnRlckV2ZW50SGFuZGxl
cjogcHVibGljIENCYXNlDQpAQCAtMTEyLDcgKzExMywzNCBAQCBjbGFzcyBDUG9pbnRlckV2ZW50
SGFuZGxlcjogcHVibGljIENCYXNlDQogICAgICAgICAqLw0KICAgICAgICAgdm9pZCBBdXRvU2Ny
b2xsKCk7DQogDQorICAgICAgICAvKioNCisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAg
KiBAcGFyYW0NCisgICAgICAgICogQHJldHVybg0KKyAgICAgICAgKi8NCisgICAgICAgIHZvaWQg
SGFuZGxlTG9uZ1RhcCgpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIEBzaW5jZSAzLjIN
CisgICAgICAgICogQHBhcmFtDQorICAgICAgICAqIEByZXR1cm4NCisgICAgICAgICovDQorICAg
ICAgICB2b2lkIENoZWNrU21hcnRUZXh0RW50cnkoKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAg
ICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIHBhcmFtDQorICAgICAgICAqIHJldHVybg0KKyAg
ICAgICAgKi8NCisgICAgICAgIFRSZWN0JiBFbGVtZW50UmVjdCgpIHsgcmV0dXJuIGlFbGVtZW50
UmVjdDsgfQ0KKw0KICAgICBwcml2YXRlOiAvLyBOZXcgZnVuY3Rpb25zDQorICAgICAgICAvKioN
CisgICAgICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0NCisgICAgICAgICogQHJl
dHVybg0KKyAgICAgICAgKi8NCisgICAgICAgIENXZWJLaXRGcmFtZSogR2V0RnJhbWVBdChUUG9p
bnQgYVBvaW50KTsNCiANCiAgICAgcHJpdmF0ZTogICAgLy8gRGF0YQ0KIA0KQEAgLTEyNSw2ICsx
NTMsNyBAQCBjbGFzcyBDUG9pbnRlckV2ZW50SGFuZGxlcjogcHVibGljIENCYXNlDQogICAgICAg
ICBUQm9vbCBpRW5hYmxlVG9vbEJhcjsNCiAgICAgICAgIFRUaW1lIGlQYWdlT3ZlcnZpZXdFdmVu
dFRpbWU7DQogICAgICAgICBUUmVjdCBpRWxlbWVudFJlY3Q7DQorICAgICAgICBDUGVyaW9kaWMq
IGlMb25ndGFwVGltZXI7DQogICAgICAgICBUQm9vbCBpQWN0aXZlV2lkZ2V0Q29uc3VtZXM7DQog
ICAgIH07DQogDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9Qb3B1cERyYXdlci5oDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L2luYy9Qb3B1cERyYXdlci5oCShyZXZp
c2lvbiAwKQ0KKysrIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvUG9wdXBEcmF3ZXIuaAkocmV2aXNp
b24gMCkNCkBAIC0wLDAgKzEsMTgwIEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
KyogIE5hbWUgICAgICAgIDogUG9wdXBEcmF3ZXIuaA0KKyogIFBhcnQgb2YgICAgIDogV0VCS0lU
IC8gQnJvd3NlciBWaWV3DQorKiAgSW50ZXJmYWNlICAgOiBCcm93c2VyIFZpZXcNCisqICBEZXNj
cmlwdGlvbiA6IEltcGxlbWVudHMgUG9pbnRlciBldmVudCBoYW5kbGVyDQorKiAgVmVyc2lvbiAg
ICAgOiAzLjENCisqDQorKiAgICBDb3B5cmlnaHQgKGMpIDIwMDYsIE5va2lhIENvcnBvcmF0aW9u
DQorKiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyogIA0KKyogICBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisqICAg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zDQorKiAgIGFyZSBtZXQ6DQorKiAgDQorKiAgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisqICAgICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuDQorKiAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisqICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCisqICAgICAgICB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
DQorKiAgICAgICAgZGlzdHJpYnV0aW9uLg0KKyogICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIE5va2lhIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzDQorKiAgICAgICAgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkDQorKiAgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLg0KKyogIA0KKyogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTDQorKiAgICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
DQorKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUg0KKyogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVA0KKyogICBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwN
CisqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVA0KKyogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwNCisqICAgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZDQorKiAg
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQNCisqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUNCisqICAgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KKyogICBEQU1BR0UuDQor
KiAgDQorKiAgICBQbGVhc2Ugc2VlIGZpbGUgcGF0ZW50bGljZW5zZS50eHQgZm9yIGZ1cnRoZXIg
Z3JhbnRzLg0KKyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorKi8NCisNCisNCisjaWZuZGVmIFBP
UFVQRFJBV0VSX0gNCisjZGVmaW5lIFBPUFVQRFJBV0VSX0gNCisNCisvLyAgSU5DTFVERVMNCisj
aW5jbHVkZSA8ZTMyYmFzZS5oPg0KKyNpbmNsdWRlIDxjb2VkZWYuaD4NCisjaW5jbHVkZSA8dzMy
c3RkLmg+DQorDQorDQorLy8gTUFDUk9TDQorDQorLy8gRk9SV0FSRCBERUNMQVJBVElPTlMNCitj
bGFzcyBDV2ViS2l0VmlldzsNCitjbGFzcyBDV2ViS2l0RnJhbWU7DQorDQorLy8gQ0xBU1MgREVD
TEFSQVRJT04NCitjbGFzcyBDUG9wdXBEcmF3ZXI6IHB1YmxpYyBDQmFzZQ0KKyAgICB7DQorICAg
IHB1YmxpYzogIC8vIENvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yDQorDQorICAgICAgICAvKioN
CisgICAgICAgICogVHdvLXBoYXNlZCBjb25zdHJ1Y3Rvci4NCisgICAgICAgICovDQorICAgICAg
ICBzdGF0aWMgQ1BvcHVwRHJhd2VyKiBOZXdMKCBDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcsIFRQ
dHJDJiBhVGV4dFRvRHJhdywgVFJlY3QmIGFFbFJlY3QgKTsNCisNCisgICAgICAgIC8qKg0KKyAg
ICAgICAgKiBEZXN0cnVjdG9yLg0KKyAgICAgICAgKi8NCisgICAgICAgIHZpcnR1YWwgfkNQb3B1
cERyYXdlcigpOw0KKw0KKyAgICBwcml2YXRlOiAgLy8gQ29uc3RydWN0b3JzDQorDQorICAgICAg
ICAvKioNCisgICAgICAgICogQysrIGRlZmF1bHQgY29uc3RydWN0b3IuDQorICAgICAgICAqLw0K
KyAgICAgICAgQ1BvcHVwRHJhd2VyKCBDV2ViS2l0VmlldyYgYVdlYktpdFZpZXcsIFRSZWN0JiBh
RWxSZWN0ICk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogQnkgZGVmYXVsdCBTeW1iaWFu
IDJuZCBwaGFzZSBjb25zdHJ1Y3RvciBpcyBwcml2YXRlLg0KKyAgICAgICAgKi8NCisgICAgICAg
IHZvaWQgQ29uc3RydWN0TChUUHRyQyYgYVRleHRUb0RyYXcpOw0KKw0KKyAgICBwdWJsaWM6IC8v
IE5ldyBmdW5jdGlvbnMNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQor
ICAgICAgICAqIEBwYXJhbQ0KKyAgICAgICAgKiBAcmV0dXJuDQorICAgICAgICAqLw0KKyAgICAg
ICAgdm9pZCBEcmF3UG9wdXAoKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBAc2luY2Ug
My4yDQorICAgICAgICAqIEBwYXJhbQ0KKyAgICAgICAgKiBAcmV0dXJuDQorICAgICAgICAqLw0K
KyAgICAgICAgdm9pZCBSZW1vdmVQb3B1cCgpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAq
IEBzaW5jZSAzLjINCisgICAgICAgICogQHBhcmFtDQorICAgICAgICAqIEByZXR1cm4NCisgICAg
ICAgICovDQorICAgICAgICB2b2lkIFNpemVDaGFuZ2VkTCgpOw0KKw0KKyAgICAgICAgLyoqDQor
ICAgICAgICAqIEhhbmRsZU9mZmVyS2V5RXZlbnRMDQorICAgICAgICAqIEhhbmRsZXMga2V5IGV2
ZW50cw0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEByZXR1cm4gRUtleVdhc0Nv
bnN1bWVkDQorICAgICAgICAqLw0KKyAgICAgICAgVEtleVJlc3BvbnNlIEhhbmRsZU9mZmVyS2V5
RXZlbnRMKCBjb25zdCBUS2V5RXZlbnQmIGFLZXlFdmVudCwgVEV2ZW50Q29kZSBhRXZlbnRDb2Rl
ICk7DQorDQorICAgICAgICAvKioNCisgICAgICAgICogSGFuZGxlUG9pbnRlckV2ZW50TA0KKyAg
ICAgICAgKiBIYW5kbGVzIHBvaW50ZXIgZXZlbnRzDQorICAgICAgICAqIEBzaW5jZSAzLjINCisg
ICAgICAgICogQHJldHVybiANCisgICAgICAgICovDQorICAgICAgICB2b2lkIEhhbmRsZVBvaW50
ZXJFdmVudEwoIGNvbnN0IFRQb2ludGVyRXZlbnQmIGFQb2ludGVyRXZlbnQpOw0KKw0KKyAgICBw
cml2YXRlOiAvLyBOZXcgZnVuY3Rpb25zDQorDQorICAgICAgICAvKioNCisgICAgICAgICogQHNp
bmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0NCisgICAgICAgICogQHJldHVybg0KKyAgICAgICAg
Ki8NCisgICAgICAgIHZvaWQgUHJlcGFyZVRleHRMKCk7DQorDQorICAgICAgICAvKioNCisgICAg
ICAgICogQHNpbmNlIDMuMg0KKyAgICAgICAgKiBAcGFyYW0NCisgICAgICAgICogQHJldHVybg0K
KyAgICAgICAgKi8NCisgICAgICAgIHZvaWQgQ3JlYXRlQml0bWFwQW5kQ29udGV4dEwoKTsNCisN
CisgICAgICAgIC8qKg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAgICAqIEBwYXJhbQ0K
KyAgICAgICAgKiBAcmV0dXJuDQorICAgICAgICAqLw0KKyAgICAgICAgdm9pZCBDb25zdHJ1Y3RT
cHJpdGUoKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBAc2luY2UgMy4yDQorICAgICAg
ICAqIEBwYXJhbQ0KKyAgICAgICAgKiBAcmV0dXJuDQorICAgICAgICAqLw0KKyAgICAgICAgdm9p
ZCBDcmVhdGVJY29uSWZOZWVkZWRMKCk7DQorDQorICAgIHByaXZhdGU6ICAgIC8vIERhdGENCisN
CisgICAgICAgIC8vIFBvaW50ZXIgdG8gb3duaW5nIHZpZXcNCisgICAgICAgIENXZWJLaXRWaWV3
JiBpV2ViS2l0VmlldzsgLy8gbm90IG93bmVkDQorICAgICAgICBDUGVyaW9kaWMqIGlSZW1vdmVQ
b3B1cFBlcmlvZGljOyAvLyBvd25lZA0KKyAgICAgICAgSEJ1ZkMqIGlUZXh0VG9EcmF3OyAvLyBv
d25lZA0KKyAgICAgICAgQ0FycmF5Rml4RmxhdDxUSW50PiogaUxpbmVXaWR0aEFycmF5OyAvLyBv
d25lZA0KKyAgICAgICAgY29uc3QgQ0ZvbnQqIGlGb250OyAvLyBvd25lZA0KKyAgICAgICAgQ0Fy
cmF5Rml4RmxhdDxUUHRyQz4qIGlXcmFwcGVkQXJyYXk7IC8vb3duZWQNCisgICAgICAgIENHdWxJ
Y29uKiBpSWNvbjsgLy8gb3duZWQNCisgICAgICAgIFJXc1Nwcml0ZSBpU3ByaXRlOw0KKyAgICAg
ICAgQ0Zic0JpdG1hcERldmljZSogaVNwcml0ZUJpdG1hcERldmljZTsgICAgIC8vIG93bmVkDQor
ICAgICAgICBDRmJzQml0R2MqIGlTcHJpdGVCaXRtYXBDb250ZXh0OyAvLyBvd25lZA0KKyAgICAg
ICAgQ0Zic0JpdG1hcCogaVNwcml0ZUJpdG1hcDsgLy9vd25lZA0KKyAgICAgICAgQ0Zic0JpdG1h
cERldmljZSogICAgICAgIGlTcHJpdGVNYXNrQml0bWFwRGV2aWNlOyAgICAgLy8gb3duZWQNCisg
ICAgICAgIENGYnNCaXRHYyogICAgICAgICAgICAgICBpU3ByaXRlTWFza0JpdG1hcENvbnRleHQ7
IC8vIG93bmVkDQorICAgICAgICBDRmJzQml0bWFwKiAgICAgICAgICAgICAgaVNwcml0ZU1hc2tC
aXRtYXA7IC8vb3duZWQNCisgICAgICAgIFRSZWN0IGlXZWJLaXRSZWN0Ow0KKyAgICAgICAgVFNp
emUgaVNpemU7DQorICAgICAgICBUUG9pbnQgaVBvc2l0aW9uOw0KKyAgICAgICAgVFJlY3QgaUVs
UmVjdDsNCisgICAgfTsNCisNCisjZW5kaWYgICAgICAvLyBQT1BVUERSQVdFUl9IDQorDQorLy8g
RW5kIG9mIEZpbGUNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dlYktpdFZpZXcuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYktpdC9Ccm93c2VyVmlldy9pbmMvV2ViS2l0Vmlldy5oCShyZXZp
c2lvbiAxODg4NSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvaW5jL1dlYktpdFZpZXcuaAkod29y
a2luZyBjb3B5KQ0KQEAgLTExOSw3ICsxMTksOCBAQCBjbGFzcyBDV2ViS2l0Q3Vyc29yOw0KIGNs
YXNzIENXZWJLaXRTdXJmYWNlOw0KIGNsYXNzIENXZWJLaXRUb29sQmFySW50ZXJmYWNlOw0KIGNs
YXNzIENUb29sQmFyOw0KLQ0KK2NsYXNzIFRCckN0bEltYWdlQ2FycmllcjsNCitjbGFzcyBDUG9w
dXBEcmF3ZXI7DQogLyoqDQogKiAgQ1dlYktpdFZpZXcNCiAqICBUaGUgQ1ZpZXcgY2xhc3MgaXMg
cmVzcG9uc2libGUgZm9yIGRpc3BsYXlpbmcgdGhlIHJlbmRlciB0cmVlLCBhbmQNCkBAIC0zNDQs
NiArMzQ1LDEyIEBAIGNsYXNzIENXZWJLaXRWaWV3OiBwdWJsaWMgQ0Vpa0JvcmRlcmVkQ28NCiAg
ICAgICAgIHZvaWQgRGVBY3RpdmF0ZSggVEJvb2wgYUFjY2VwdENoYW5nZXMgKTsNCiANCiAgICAg
ICAgIC8qDQorICAgICAgICAqIERlQWN0aXZhdGVJZk5lZWRlZA0KKyAgICAgICAgKg0KKyAgICAg
ICAgKi8NCisgICAgICAgIHZvaWQgRGVBY3RpdmF0ZUlmTmVlZGVkKCBUQm9vbCBhQWNjZXB0Q2hh
bmdlcyApOw0KKw0KKyAgICAgICAgLyoNCiAgICAgICAgICogY2xlYXJzIHRoZSBmaWxlbmFtZSBm
cm9tIHRoZSBmaWxlIGlucHV0DQogICAgICAgICAqDQogICAgICAgICAqLw0KQEAgLTYxNyw2ICs2
MjQsNDggQEAgY2xhc3MgQ1dlYktpdFZpZXc6IHB1YmxpYyBDRWlrQm9yZGVyZWRDbw0KICAgICAg
ICAgKi8NCiAgICAgICAgIFRCb29sIE5vZGVVbmRlclBvaW50ZXIoVFBvaW50IGFQb2ludCk7DQog
DQorICAgICAgICAvKioNCisgICAgICAgICogRGlzcGxheSBhIHBvcHVwIHdpdGggdGhlIHVybCBv
ZiBhbiBhbmNob3INCisgICAgICAgICoNCisgICAgICAgICoNCisgICAgICAgICovDQorICAgICAg
ICB2b2lkIEhhbmRsZVNob3dBbmNob3JIcmVmTCgpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAg
ICAqIFJldHVybiB0aGUgaW1hZ2UgdGhhdCBpcyB1bmRlciB0aGUgY3Vyc29yDQorICAgICAgICAq
DQorICAgICAgICAqDQorICAgICAgICAqLw0KKyAgICAgICAgVEJyQ3RsSW1hZ2VDYXJyaWVyKiBG
b2N1c2VkSW1hZ2VMQygpOw0KKw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIExvYWQgdGhlIGlt
YWdlIHRoYXQgaXMgdW5kZXIgdGhlIGN1cnNvcg0KKyAgICAgICAgKg0KKyAgICAgICAgKg0KKyAg
ICAgICAgKi8NCisgICAgICAgIHZvaWQgTG9hZEZvY3VzZWRJbWFnZUwoKTsNCisNCisgICAgICAg
IC8qKg0KKyAgICAgICAgKiBHZXQgdGhlIGZyYW1lIGFuZCB0aGUgcG9pbnQgYXQgdGhlIGN1cnNv
ciBwb3NpdGlvbiwgd2hpbGUgdGFraW5nIGludG8gYWNjb3VudCBzY3JvbGxpbmcgcG9zaXRpb24g
YW5kIHpvbW1pbmcgbGV2ZWwNCisgICAgICAgICoNCisgICAgICAgICoNCisgICAgICAgICovDQor
ICAgICAgICB2b2lkIEZyYW1lQW5kUG9pbnRVbmRlckN1cnNvcihUUG9pbnQmIGFQb2ludCwgQ1dl
YktpdEZyYW1lKiYgYUZyYW1lKTsNCisNCisgICAgICAgIC8qKg0KKyAgICAgICAgKiBHZXQgdGhl
IHBvcHVwRHJhd2VyDQorICAgICAgICAqDQorICAgICAgICAqDQorICAgICAgICAqLw0KKyAgICAg
ICAgQ1BvcHVwRHJhd2VyKiBQb3B1cERyYXdlcigpIHsgcmV0dXJuIGlQb3B1cERyYXdlcjsgfQ0K
Kw0KKyAgICAgICAgLyoqDQorICAgICAgICAqIERlbGV0ZSB0aGUgcG9wdXBEcmF3ZXINCisgICAg
ICAgICoNCisgICAgICAgICoNCisgICAgICAgICovDQorICAgICAgICB2b2lkIFJlbW92ZVBvcHVw
KCk7DQorDQogICAgIHByaXZhdGU6ICAgIC8vIENsYXNzIE1ldGhvZHMNCiANCiAgICAgICAgIC8q
Kg0KQEAgLTcxNyw2ICs3NjYsOCBAQCBjbGFzcyBDV2ViS2l0VmlldzogcHVibGljIENFaWtCb3Jk
ZXJlZENvDQogICAgICAgICBDS2V5RXZlbnRIYW5kbGVyKiAgICAgICAgaUtleUV2ZW50SGFuZGxl
cjsgIC8vIG93bmVkDQogICAgICAgICAvLw0KICAgICAgICAgQ1BvaW50ZXJFdmVudEhhbmRsZXIq
ICAgIGlQb2ludGVyRXZlbnRIYW5kbGVyOyAgLy8gb3duZWQNCisgICAgICAgIC8vDQorICAgICAg
ICBDUG9wdXBEcmF3ZXIqICAgICAgICAgICAgaVBvcHVwRHJhd2VyOw0KICAgICAgICAgLy8NCiAg
ICAgICAgIENXZWJDb3JlR3JhcGhpY3NDb250ZXh0KiBpV2ViQ29yZUNvbnRleHQ7ICAgLy8gb3du
ZWQNCiAgICAgICAgIC8vDQpJbmRleDogV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9LZXlFdmVudEhh
bmRsZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9LZXlFdmVu
dEhhbmRsZXIuY3BwCShyZXZpc2lvbiAxODg4NSkNCisrKyBXZWJLaXQvQnJvd3NlclZpZXcvc3Jj
L0tleUV2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC01MCw2ICs1MCw3IEBADQog
I2luY2x1ZGUgIlRvb2xCYXIuaCINCiAjaW5jbHVkZSA8YWtudXRpbHMuaD4NCiAjaW5jbHVkZSAi
U21hcnRMaW5rSGFuZGxlci5oIg0KKyNpbmNsdWRlICJQb3B1cERyYXdlci5oIg0KIA0KIC8vIGNv
bnN0YW50cw0KIGNvbnN0IFRJbnQgS05vcm1hbFNjcm9sbFJhbmdlID0gNjA7DQpAQCAtMTQwLDcg
KzE0MSwxMCBAQCBDS2V5RXZlbnRIYW5kbGVyOjpIYW5kbGVPZmZlcktleUV2ZW50TCgNCiAgICAg
ICAgIGtleVJlc3BvbnNlID0gaVdlYktpdFZpZXctPlRvb2xCYXIoKS0+SGFuZGxlT2ZmZXJLZXlF
dmVudEwoYUtleUV2ZW50LGFFdmVudENvZGUpOw0KICAgICAgICAgcmV0dXJuIGtleVJlc3BvbnNl
Ow0KICAgICAgICAgfQ0KLQ0KKyAgICBpZiAoaVdlYktpdFZpZXctPlBvcHVwRHJhd2VyKCkpDQor
ICAgICAgICB7DQorICAgICAgICByZXR1cm4gaVdlYktpdFZpZXctPlBvcHVwRHJhd2VyKCktPkhh
bmRsZU9mZmVyS2V5RXZlbnRMKGFLZXlFdmVudCwgYUV2ZW50Q29kZSApOw0KKyAgICAgICAgfQ0K
ICAgICBpZiAoYUV2ZW50Q29kZSA9PSBFRXZlbnRLZXlVcCkNCiAgICAgICAgIHsNCiAgICAgICAg
IC8vc3RvcCBzY3JvbGxpbmcNCkluZGV4OiBXZWJLaXQvQnJvd3NlclZpZXcvc3JjL1BvaW50ZXJF
dmVudEhhbmRsZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jyb3dzZXJWaWV3L3NyYy9Q
b2ludGVyRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gMTg4ODUpDQorKysgV2ViS2l0L0Jyb3dz
ZXJWaWV3L3NyYy9Qb2ludGVyRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQx
LDE4ICs0MSwzMCBAQA0KIA0KIC8vIElOQ0xVREUgRklMRVMNCiAjaW5jbHVkZSA8YWtudXRpbHMu
aD4NCisjaW5jbHVkZSA8YmFyc3JlYWQuaD4NCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50SGFuZGxl
ci5oIg0KICNpbmNsdWRlICJXZWJLaXRDb250cm9sLmgiDQogI2luY2x1ZGUgIldlYktpdEN1cnNv
ci5oIg0KICNpbmNsdWRlICJXZWJLaXRCcmlkZ2UuaCINCiAjaW5jbHVkZSAiV2ViQ29yZUJyaWRn
ZS5oIg0KKyNpbmNsdWRlICJXZWJLaXRGcmFtZS5oIg0KICNpbmNsdWRlICJXZWJLaXRWaWV3Lmgi
DQogI2luY2x1ZGUgImhpc3Rvcnl2aWV3LmgiDQorI2luY2x1ZGUgIkJyQ3RsLmgiDQorI2luY2x1
ZGUgIkJyQ3RsRGVmcy5oIg0KKyNpbmNsdWRlICJTbWFydExpbmtNYXAuaCINCisjaW5jbHVkZSAi
U21hcnRMaW5rSGFuZGxlci5oIg0KKyNpbmNsdWRlICJQb3B1cERyYXdlci5oIg0KIA0KIC8vIGNv
bnN0YW50cw0KIGNvbnN0IFRJbnQgS0F1dG9TY3JvbGxQZXJpb2RpYyA9IDIwICogMTAwMDsgLy8g
VXBkYXRlIGZyZXF1ZW50bHkgZm9yIGZhc3Rlciwgc21vb3RoZXIgc2Nyb2xsaW5nDQotY29uc3Qg
VFRpbWVJbnRlcnZhbE1pY3JvU2Vjb25kcyBLTWljcm9JbnRlcnZhbCA9IDMwMDAwMDsNCi0NCitj
b25zdCBUSW50IEtNaWNyb0ludGVydmFsID0gMzAwMDAwOw0KK2NvbnN0IFRJbnQgS0xvbmd0YXBU
aW1lb3V0ID0gMzAwMDAwOyAvLyBBZnRlciA4MDAgbXMsIGEgdGFwIGlzIGNvbnNpZGVyZWQgbG9u
Z3RhcA0KKy8vY29uc3QgVFRpbWVJbnRlcnZhbE1pY3JvU2Vjb25kcyBLTWljcm9JbnRlcnZhbCA9
IDMwMDAwMDsNCisvL2NvbnN0IFRUaW1lSW50ZXJ2YWxNaWNyb1NlY29uZHMzMiBLTG9uZ3RhcFRp
bWVvdXQgPSA4MDAwMDA7IC8vIEFmdGVyIDgwMCBtcywgYSB0YXAgaXMgY29uc2lkZXJlZCBsb25n
dGFwDQorX0xJVChLRWxlbWVudFR5cGUsICJFbFR5cGUiKTsNCitfTElUKEtQb2ludFgsICJQb2lu
dFgiKTsNCitfTElUKEtQb2ludFksICJQb2ludFkiKTsNCiAvLyA9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSBMT0NBTCBGVU5DVElPTlMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KIFRJbnQgQXV0b1Njcm9sbENhbGxiYWNrKCBUQW55KiBhUHRyICkNCiAgICAgew0KQEAgLTYw
LDYgKzcyLDEzIEBAIFRJbnQgQXV0b1Njcm9sbENhbGxiYWNrKCBUQW55KiBhUHRyICkNCiAgICAg
cmV0dXJuIEtFcnJOb25lOw0KICAgICB9DQogDQorVEludCBMb25nVGFwQ2FsbGJhY2soIFRBbnkq
IGFQdHIgKQ0KKyAgICB7DQorICAgIHN0YXRpY19jYXN0PENQb2ludGVyRXZlbnRIYW5kbGVyKj4o
YVB0ciktPkhhbmRsZUxvbmdUYXAoKTsNCisgICAgcmV0dXJuIEtFcnJOb25lOw0KKyAgICB9DQor
DQorDQogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PSBNRU1CRVIgRlVOQ1RJT05TID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KQEAgLTEwNiw4ICsxMjUsMTIgQEAgQ1BvaW50ZXJFdmVudEhhbmRsZXI6On5DUG9pbnRlckV2
ZW50SGFuZA0KICAgICAgICAgaUF1dG9TY3JvbGxQZXJpb2RpYy0+Q2FuY2VsKCk7DQogICAgICAg
ICBkZWxldGUgaUF1dG9TY3JvbGxQZXJpb2RpYzsNCiAgICAgICAgIH0NCisgICAgaWYgKGlMb25n
dGFwVGltZXIpDQorICAgICAgICB7DQorICAgICAgICBpTG9uZ3RhcFRpbWVyLT5DYW5jZWwoKTsN
CisgICAgICAgIGRlbGV0ZSBpTG9uZ3RhcFRpbWVyOw0KKyAgICAgICAgfQ0KICAgICB9DQotDQog
dm9pZCBDUG9pbnRlckV2ZW50SGFuZGxlcjo6SGFuZGxlUG9pbnRlckV2ZW50TChjb25zdCBUUG9p
bnRlckV2ZW50JiBhUG9pbnRlckV2ZW50KQ0KICAgICB7DQogICAgIGlmIChBa25MYXlvdXRVdGls
czo6UGVuRW5hYmxlZCgpKQ0KQEAgLTEyOCw4ICsxNTEsMTMgQEAgdm9pZCBDUG9pbnRlckV2ZW50
SGFuZGxlcjo6SGFuZGxlUG9pbnRlcg0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICByZXR1
cm47DQogICAgICAgICAgICAgfQ0KKyAgICAgICAgLy8gSGFuZGxlIHBvcHVwDQorICAgICAgICBp
ZiAoaVdlYktpdFZpZXctPlBvcHVwRHJhd2VyKCkpDQorICAgICAgICAgICAgew0KKyAgICAgICAg
ICAgIGlXZWJLaXRWaWV3LT5Qb3B1cERyYXdlcigpLT5IYW5kbGVQb2ludGVyRXZlbnRMKGFQb2lu
dGVyRXZlbnQpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQogICAgICAg
ICAvLyBIYW5kbGUgaW5wdXQgYm94DQotICAgICAgIA0KICAgICAgICAgQ0NvZUNvbnRyb2wqIGFj
dGl2ZVdpZGdldCA9IGlXZWJLaXRWaWV3LT5BY3RpdmVXaWRnZXQoKTsNCiAgICAgICAgIGlmIChh
Y3RpdmVXaWRnZXQgJiYgKGlXZWJLaXRWaWV3LT5BY3RpdmVXaWRnZXRSZWN0KCkuQ29udGFpbnMo
YVBvaW50ZXJFdmVudC5pUG9zaXRpb24pIHx8IGlBY3RpdmVXaWRnZXRDb25zdW1lcykpDQogICAg
ICAgICAgICAgew0KQEAgLTE1MCw2ICsxNzgsMTAgQEAgdm9pZCBDUG9pbnRlckV2ZW50SGFuZGxl
cjo6SGFuZGxlUG9pbnRlcg0KICAgICAgICAgVFJlY3QgZWxSZWN0Ow0KICAgICAgICAgZnJhbWUt
PldlYktpdEJyaWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5OYXZpZ2FibGVOb2RlVW5kZXJDdXJzb3Io
YWJzQ3Vyc29yUG9zLCBlbFR5cGUsIGVsUmVjdCk7DQogICAgICAgICBpV2ViS2l0Vmlldy0+U2V0
Rm9jdXNlZEVsZW1lbnRUeXBlKChUQnJDdGxEZWZzOjpUQnJDdGxFbGVtZW50VHlwZSllbFR5cGUp
Ow0KKyAgICAgICAgaWYgKGVsVHlwZSA9PSBUQnJDdGxEZWZzOjpFRWxlbWVudE5vbmUpDQorICAg
ICAgICAgICAgew0KKyAgICAgICAgICAgIENoZWNrU21hcnRUZXh0RW50cnkoKTsNCisgICAgICAg
ICAgICB9DQogDQogICAgICAgICBUUG9pbnRlckV2ZW50IHBvaW50ZXJFdmVudCA9IGFQb2ludGVy
RXZlbnQ7DQogICAgICAgICBwb2ludGVyRXZlbnQuaVBvc2l0aW9uID0gYWJzQ3Vyc29yUG9zOw0K
QEAgLTE2MiwxNyArMTk0LDQ2IEBAIHZvaWQgQ1BvaW50ZXJFdmVudEhhbmRsZXI6OkhhbmRsZVBv
aW50ZXINCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgZnJhbWUtPldlYktpdEJyaWRnZSgpLldl
YkNvcmVCcmlkZ2UoKS5Qb2ludGVyRXZlbnQocG9pbnRlckV2ZW50KTsNCiANCisgICAgICAgIGlm
IChwb2ludGVyRXZlbnQuaVR5cGUgPT0gVFBvaW50ZXJFdmVudDo6RUJ1dHRvbjFEb3duKQ0KKyAg
ICAgICAgICAgIHsNCisgICAgICAgICAgICBpTGFzdFBvaW50ZXJFdmVudCA9IGFQb2ludGVyRXZl
bnQ7DQorICAgICAgICAgICAgaUVsZW1lbnRSZWN0ID0gZWxSZWN0Ow0KKyAgICAgICAgICAgIGlm
IChpTG9uZ3RhcFRpbWVyKQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGlM
b25ndGFwVGltZXItPkNhbmNlbCgpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAg
ZWxzZQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGlMb25ndGFwVGltZXIg
PSBDUGVyaW9kaWM6Ok5ld0woQ0FjdGl2ZTo6RVByaW9yaXR5TG93KTsNCisgICAgICAgICAgICAg
ICAgfQ0KKyAgICAgICAgICAgIGlMb25ndGFwVGltZXItPlN0YXJ0KEtMb25ndGFwVGltZW91dCwg
S0xvbmd0YXBUaW1lb3V0LCBUQ2FsbEJhY2soJkxvbmdUYXBDYWxsYmFjaywgdGhpcykpOw0KKyAg
ICAgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAg
aWYgKGlMb25ndGFwVGltZXIpDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAg
aUxvbmd0YXBUaW1lci0+Q2FuY2VsKCk7DQorICAgICAgICAgICAgICAgIH0NCiAgICAgICAgIGlm
IChwb2ludGVyRXZlbnQuaVR5cGUgPT0gVFBvaW50ZXJFdmVudDo6RUJ1dHRvbjFVcCkNCiAgICAg
ICAgICAgICB7DQogICAgICAgICAgICAgaWYgKGVsUmVjdCA9PSBpRWxlbWVudFJlY3QpIC8vIGRv
d24gYW5kIHVwIG9uIHNhbWUgZWxlbWVudD8NCiAgICAgICAgICAgICAgICAgew0KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGlXZWJLaXRWaWV3LT5Gb2N1c2VkRWxlbWVudFR5cGUoKSAhPSBUQnJD
dGxEZWZzOjpFRWxlbWVudE5vbmUpIC8vIFdlYkNvcmUgY3Jhc2hlcyBvbiBlbXB0eSBwYWdlDQor
ICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAg
ICAgICAgIGZyYW1lLT5XZWJLaXRCcmlkZ2UoKS5XZWJDb3JlQnJpZGdlKCkuQWN0aXZhdGVFdmVu
dChhYnNDdXJzb3JQb3MpOw0KICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgICAg
ICAvLyBzcGVjaWFsIGhhbmRsaW5nIGZvciBicm9rZW4gaW1hZ2UNCisgICAgICAgICAgICAgICAg
ICAgIGlmIChpV2ViS2l0Vmlldy0+Rm9jdXNlZEVsZW1lbnRUeXBlKCkgPT0gVEJyQ3RsRGVmczo6
RUVsZW1lbnRCcm9rZW5JbWFnZSkNCisgICAgICAgICAgICAgICAgICAgICAgICB7DQorICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPldlYktpdEJyaWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5M
b2FkRm9jdXNlZEltYWdlKGFic0N1cnNvclBvcyk7DQogICAgICAgICAgICAgfQ0KLSAgICAgICAg
aWYgKHBvaW50ZXJFdmVudC5pVHlwZSA9PSBUUG9pbnRlckV2ZW50OjpFQnV0dG9uMURvd24pDQor
ICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGhhbmRsaW5nIGZvciBlLW1haWwgYWRkcmVz
cw0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGlXZWJLaXRWaWV3LT5Gb2N1c2VkRWxlbWVudFR5
cGUoKSA9PSBUQnJDdGxEZWZzOjpFRWxlbWVudFNtYXJ0TGlua0VtYWlsKQ0KICAgICAgICAgICAg
IHsNCi0gICAgICAgICAgICBpTGFzdFBvaW50ZXJFdmVudCA9IGFQb2ludGVyRXZlbnQ7DQotICAg
ICAgICAgICAgaUVsZW1lbnRSZWN0ID0gZWxSZWN0Ow0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5TbWFydExpbmtIYW5kbGVyKCktPkhhbmRsZVNlbmRNZXNzYWdlKCk7DQorICAgICAg
ICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAg
ICAgICB9DQogICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICB9DQpAQCAtMjQ0LDUgKzMw
NSwxMTAgQEAgdm9pZCBDUG9pbnRlckV2ZW50SGFuZGxlcjo6QXV0b1Njcm9sbCgpDQogICAgICAg
ICAgICAgICAgICAgICBIYW5kbGVQYWdlU2NhbGVyUG9pbnRlckV2ZW50TChpTGFzdFBvaW50ZXJF
dmVudCkgKTsNCiAgICAgaVBhZ2VPdmVydmlld0V2ZW50VGltZSA9IHRtOw0KICAgICB9DQorDQor
dm9pZCBDUG9pbnRlckV2ZW50SGFuZGxlcjo6SGFuZGxlTG9uZ1RhcCgpDQorICAgIHsNCisgICAg
aUxvbmd0YXBUaW1lci0+Q2FuY2VsKCk7DQorICAgIFRCdWY8Mz4gZWxUeXBlU3RyOw0KKyAgICBU
QnVmPDU+IHhTdHI7DQorICAgIFRCdWY8NT4geVN0cjsNCisgICAgVEJvb2wgc2VuZENvbW1hbmQg
PSBFVHJ1ZTsNCisgICAgc3dpdGNoIChpV2ViS2l0Vmlldy0+Rm9jdXNlZEVsZW1lbnRUeXBlKCkp
DQorICAgICAgICB7DQorICAgICAgICBjYXNlIFRCckN0bERlZnM6OkVFbGVtZW50QXJlYUJveDoN
CisgICAgICAgICAgICB7DQorICAgICAgICAgICAgQ1dlYktpdEZyYW1lKiBmcmFtZSA9IE5VTEw7
DQorICAgICAgICAgICAgVFBvaW50IHBvaW50Ow0KKyAgICAgICAgICAgIGlXZWJLaXRWaWV3LT5G
cmFtZUFuZFBvaW50VW5kZXJDdXJzb3IocG9pbnQsIGZyYW1lKTsNCisgICAgICAgICAgICBUV2Vi
Q29yZUltYWdlQ2FycmllciogaW1nID0gTlVMTDsNCisgICAgICAgICAgICBUV2ViQ29yZUVycm9y
R2V0dGluZ0ltYWdlIHJldCA9IGZyYW1lLT5XZWJLaXRCcmlkZ2UoKS5XZWJDb3JlQnJpZGdlKCku
Rm9jdXNlZEltYWdlKHBvaW50LCBpbWcpOw0KKyAgICAgICAgICAgIGlmIChyZXQgPT0gRVdlYkNv
cmVFcnJvck5vTWVtb3J5IHx8IHJldCA9PSBFV2ViQ29yZUVycm9yUHJvdGVjdGVkSW1hZ2UpDQor
ICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgc2VuZENvbW1hbmQgPSBFRmFsc2U7
DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAg
ICAgaWYgKHJldCA9PSBFV2ViQ29yZUVycm9ySW1hZ2VOb3RMb2FkZWQpDQorICAgICAgICAgICAg
ICAgIHsNCisgICAgICAgICAgICAgICAgaVdlYktpdFZpZXctPlNldEZvY3VzZWRFbGVtZW50VHlw
ZShUQnJDdGxEZWZzOjpFRWxlbWVudEJyb2tlbkltYWdlKTsNCisgICAgICAgICAgICAgICAgaWYg
KGlXZWJLaXRWaWV3LT5XZWJLaXRDb250cm9sKCkuR2V0QnJvd3NlclNldHRpbmdMKFRCckN0bERl
ZnM6OkVTZXR0aW5nc0F1dG9Mb2FkSW1hZ2VzKSkNCisgICAgICAgICAgICAgICAgICAgIHsNCisg
ICAgICAgICAgICAgICAgICAgIHNlbmRDb21tYW5kID0gRUZhbHNlOw0KKyAgICAgICAgICAgICAg
ICAgICAgfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgZWxzZSAvLyByZXQgPT0g
RVdlYkNvcmVFcnJvck5vRXJyb3INCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAg
ICBkZWxldGUgaW1nOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgYnJlYWs7DQor
ICAgICAgICAgICAgfQ0KKyAgICAgICAgY2FzZSBUQnJDdGxEZWZzOjpFRWxlbWVudEltYWdlQm94
Og0KKyAgICAgICAgY2FzZSBUQnJDdGxEZWZzOjpFRWxlbWVudEJyb2tlbkltYWdlOg0KKyAgICAg
ICAgY2FzZSBUQnJDdGxEZWZzOjpFRWxlbWVudE5vbmU6DQorICAgICAgICBjYXNlIFRCckN0bERl
ZnM6OkVFbGVtZW50QW5jaG9yOg0KKyAgICAgICAgY2FzZSBUQnJDdGxEZWZzOjpFRWxlbWVudFRl
bEFuY2hvcjoNCisgICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RUVsZW1lbnRNYWlsdG9BbmNob3I6
DQorICAgICAgICBjYXNlIFRCckN0bERlZnM6OkVFbGVtZW50U21hcnRMaW5rVGVsOg0KKyAgICAg
ICAgY2FzZSBUQnJDdGxEZWZzOjpFRWxlbWVudFNtYXJ0TGlua0VtYWlsOg0KKyAgICAgICAgICAg
IGJyZWFrOw0KKyAgICAgICAgZGVmYXVsdDoNCisgICAgICAgICAgICBzZW5kQ29tbWFuZCA9IEVG
YWxzZTsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgaWYgKHNlbmRDb21t
YW5kKQ0KKyAgICAgICAgew0KKyAgICAgICAgaVdlYktpdFZpZXctPklnbm9yZUV2ZW50c1VudGls
TmV4dFBvaW50ZXJVcCgpOw0KKyAgICAgICAgQ0FycmF5Rml4RmxhdDxUUHRyQz4gKmF0dHJOYW1l
cyA9IG5ldyAoRUxlYXZlKSBDQXJyYXlGaXhGbGF0PFRQdHJDPigzKTsNCisgICAgICAgIENsZWFu
dXBTdGFjazo6UHVzaEwoYXR0ck5hbWVzKTsNCisgICAgICAgIENBcnJheUZpeEZsYXQ8VFB0ckM+
ICphdHRyVmFsdWVzID0gbmV3IChFTGVhdmUpIENBcnJheUZpeEZsYXQ8VFB0ckM+KDMpOw0KKyAg
ICAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTChhdHRyVmFsdWVzKTsNCisNCisgICAgICAgIGVsVHlw
ZVN0ci5OdW1VQyhpV2ViS2l0Vmlldy0+Rm9jdXNlZEVsZW1lbnRUeXBlKCkpOyAgDQorICAgICAg
ICBhdHRyTmFtZXMtPkFwcGVuZEwoS0VsZW1lbnRUeXBlKCkpOw0KKyAgICAgICAgYXR0clZhbHVl
cy0+QXBwZW5kTChlbFR5cGVTdHIpOw0KKyAgICAgICAgDQorICAgICAgICB4U3RyLk51bVVDKGlM
YXN0UG9pbnRlckV2ZW50LmlQb3NpdGlvbi5pWCk7ICANCisgICAgICAgIGF0dHJOYW1lcy0+QXBw
ZW5kTChLUG9pbnRYKCkpOw0KKyAgICAgICAgYXR0clZhbHVlcy0+QXBwZW5kTCh4U3RyKTsNCisN
CisgICAgICAgIHlTdHIuTnVtVUMoaUxhc3RQb2ludGVyRXZlbnQuaVBvc2l0aW9uLmlZKTsgIA0K
KyAgICAgICAgYXR0ck5hbWVzLT5BcHBlbmRMKEtQb2ludFkoKSk7DQorICAgICAgICBhdHRyVmFs
dWVzLT5BcHBlbmRMKHlTdHIpOw0KKyAgICAgICAgDQorICAgICAgICBpV2ViS2l0Vmlldy0+V2Vi
S2l0Q29udHJvbCgpLkJyQ3RsKCkuU2VuZENvbW1hbmRzVG9DbGllbnQoVEJyQ3RsRGVmczo6RUNs
aWVudENvbW1hbmRTaG93Q29udGV4dE1lbnUsICphdHRyTmFtZXMsICphdHRyVmFsdWVzKTsNCisg
ICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgyKTsgLy8gYXR0ck5hbWUsIGF0dHJW
YWx1ZXMNCisgICAgICAgIH0NCisgICAgfQ0KKw0KK3ZvaWQgQ1BvaW50ZXJFdmVudEhhbmRsZXI6
OkNoZWNrU21hcnRUZXh0RW50cnkoKQ0KKyAgICB7DQorICAgIENXZWJLaXRGcmFtZSogZm9jdXNl
ZCA9IEdldEZyYW1lQXQoaUxhc3RQb2ludGVyRXZlbnQuaVBvc2l0aW9uKTsNCisgICAgaWYgKGZv
Y3VzZWQpDQorICAgICAgICB7ICAgICAgICAgICAgIA0KKyAgICAgICAgVFBvaW50IHB0Q3Vyc29y
ID0gZm9jdXNlZC0+Vmlld0Nvb3Jkc0luRnJhbWVDb29yZHMoaUxhc3RQb2ludGVyRXZlbnQuaVBv
c2l0aW9uKTsNCisgICAgICAgIENTbWFydExpbmsqIGVudHJ5ID0gZm9jdXNlZC0+U21hcnRMaW5r
TWFwKCktPkdldEVudHJ5KFRSZWN0KHB0Q3Vyc29yLFRTaXplKDEsMSkpKTsNCisgICAgICAgIGlm
ICggZW50cnkgIT0gTlVMTCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgaWYoZW50cnkt
PmlFbnRyeVR5cGUgPT0gQ0ZpbmRJdGVtRW5naW5lOjpFRmluZEl0ZW1TZWFyY2hQaG9uZU51bWJl
ckJpbikNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBpV2ViS2l0Vmlldy0+
U2V0Rm9jdXNlZEVsZW1lbnRUeXBlKCBUQnJDdGxEZWZzOjpFRWxlbWVudFNtYXJ0TGlua1RlbCAp
Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAg
ICB7DQorICAgICAgICAgICAgICAgIGlXZWJLaXRWaWV3LT5TZXRGb2N1c2VkRWxlbWVudFR5cGUo
IFRCckN0bERlZnM6OkVFbGVtZW50U21hcnRMaW5rRW1haWwgKTsNCisgICAgICAgICAgICAgICAg
fQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfSAgICAgICANCisNCisNCitDV2Vi
S2l0RnJhbWUqIENQb2ludGVyRXZlbnRIYW5kbGVyOjpHZXRGcmFtZUF0KFRQb2ludCBhUG9pbnQp
DQorICAgIHsNCisgICAgVFBvaW50IGFic0N1cnNvclBvcyA9IGlXZWJLaXRWaWV3LT5NYWluRnJh
bWUoKS5Ub0RvY0Nvb3JkcyhhUG9pbnQpICsgaVdlYktpdFZpZXctPk1haW5GcmFtZSgpLkNvbnRl
bnRQb3NpdGlvbigpOw0KKyAgICBhYnNDdXJzb3JQb3MgPSBpV2ViS2l0Vmlldy0+TWFpbkZyYW1l
KCkuVG9WaWV3Q29vcmRzKGFic0N1cnNvclBvcyk7DQorICAgIENXZWJLaXRGcmFtZSogZnJhbWUg
PSBpV2ViS2l0Vmlldy0+TWFpbkZyYW1lKCkuRnJhbWVBdFBvaW50KGFic0N1cnNvclBvcyk7DQor
ICAgIGlmICghZnJhbWUpIGZyYW1lID0gJmlXZWJLaXRWaWV3LT5NYWluRnJhbWUoKTsNCisgICAg
cmV0dXJuIGZyYW1lOw0KKyAgICB9DQorDQogDQogLy8gIEVuZCBvZiBGaWxlDQpJbmRleDogV2Vi
S2l0L0Jyb3dzZXJWaWV3L3NyYy9Qb3B1cERyYXdlci5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvQnJvd3NlclZpZXcvc3JjL1BvcHVwRHJhd2VyLmNwcAkocmV2aXNpb24gMCkNCisrKyBXZWJL
aXQvQnJvd3NlclZpZXcvc3JjL1BvcHVwRHJhd2VyLmNwcAkocmV2aXNpb24gMCkNCkBAIC0wLDAg
KzEsMzc4IEBADQorLyoNCisqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyogIE5hbWUgICAgICAg
IDogUG9wdXBEcmF3ZXIuY3BwDQorKiAgUGFydCBvZiAgICAgOiBXZWJLaXQgLyBCcm93c2VyVmll
dw0KKyogIERlc2NyaXB0aW9uIDoNCisqICBWZXJzaW9uICAgICA6IDMuMQ0KKyoNCisqICAgIENv
cHlyaWdodCAoYykgMjAwNiwgTm9raWEgQ29ycG9yYXRpb24NCisqICAgIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuDQorKg0KKyogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCisqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQorKiAgIGFyZSBtZXQ6
DQorKg0KKyogICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0DQorKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyogICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
DQorKiAgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluDQorKiAgICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KKyogICAgICAgIGRpc3RyaWJ1dGlvbi4N
CisqICAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBOb2tpYSBDb3Jwb3JhdGlvbiBub3Ig
dGhlIG5hbWVzIG9mIGl0cw0KKyogICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KKyogICAgICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCisqDQor
KiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMNCisqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QNCisqICAgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SDQorKiAgIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUDQorKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLA0KKyogICBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UDQorKiAgIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLA0KKyogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkNCisqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVA0KKyogICAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQ0K
KyogICBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIDQorKiAgIERBTUFHRS4NCisqDQorKiAgICBQbGVhc2Ugc2VlIGZpbGUgcGF0
ZW50bGljZW5zZS50eHQgZm9yIGZ1cnRoZXIgZ3JhbnRzLg0KKyogPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQorKi8NCisNCisvLyBJTkNMVURFIEZJTEVTDQorI2luY2x1ZGUgPGFrbnV0aWxzLmg+DQor
I2luY2x1ZGUgPGd1bGljb24uaD4NCisjaW5jbHVkZSAiUG9wdXBEcmF3ZXIuaCINCisjaW5jbHVk
ZSAiV2ViS2l0Vmlldy5oIg0KKyNpbmNsdWRlICJXZWJLaXRDb250cm9sLmgiDQorDQorLy8gY29u
c3RhbnRzDQorY29uc3QgVEludCBLUG9wdXBUaW1lb3V0ID0gNTAwMCAqIDEwMDA7DQorY29uc3Qg
VEludCBLQm9yZGVyU2l6ZSA9IDg7DQorY29uc3QgVEludCBLUm93TWFyZ2luID0gNTsNCitjb25z
dCBUSW50IEtJY29uTWFyZ2luID0gNTsNCitjb25zdCBUSW50IEtTcGFjZVVuZGVybmVhdGggPSAz
MDsNCisNCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBMT0NBTCBGVU5DVElPTlMg
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KK1RJbnQgUmVtb3ZlUG9wdXBDYWxsYmFj
ayggVEFueSogYVB0ciApDQorICAgIHsNCisgICAgc3RhdGljX2Nhc3Q8Q1BvcHVwRHJhd2VyKj4o
YVB0ciktPlJlbW92ZVBvcHVwKCk7DQorICAgIHJldHVybiBLRXJyTm9uZTsNCisgICAgfQ0KKw0K
Ky8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gTUVNQkVSIEZVTkNUSU9OUyA9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQorDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisv
LyBDUG9wdXBEcmF3ZXI6Ok5ld0wNCisvLyBUaGUgdHdvLXBoYXNlIFN5bWJpYW4gY29uc3RydWN0
b3INCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorQ1BvcHVwRHJhd2VyKiBDUG9wdXBE
cmF3ZXI6Ok5ld0woQ1dlYktpdFZpZXcmIGFXZWJLaXRWaWV3LCBUUHRyQyYgYVRleHRUb0RyYXcs
IFRSZWN0JiBhRWxSZWN0ICkNCisgICAgew0KKyAgICBDUG9wdXBEcmF3ZXIqIHNlbGYgPSBuZXcg
KEVMZWF2ZSkgQ1BvcHVwRHJhd2VyKCBhV2ViS2l0VmlldywgYUVsUmVjdCAgKTsNCisgICAgQ2xl
YW51cFN0YWNrOjpQdXNoTChzZWxmKTsNCisgICAgc2VsZi0+Q29uc3RydWN0TChhVGV4dFRvRHJh
dyk7DQorICAgIENsZWFudXBTdGFjazo6UG9wKCk7IC8vc2VsZg0KKyAgICByZXR1cm4gc2VsZjsN
CisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1BvcHVwRHJhd2VyOjpD
UG9wdXBEcmF3ZXINCisvLyBDKysgZGVmYXVsdCBjb25zdHJ1Y3RvciBjYW4gTk9UIGNvbnRhaW4g
YW55IGNvZGUsIHRoYXQNCisvLyBtaWdodCBsZWF2ZS4NCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vDQorQ1BvcHVwRHJhd2VyOjpDUG9wdXBEcmF3ZXIoQ1dlYktpdFZpZXcmIGFXZWJLaXRW
aWV3LCBUUmVjdCYgYUVsUmVjdCApDQorICAgIDogaVdlYktpdFZpZXcoIGFXZWJLaXRWaWV3ICkg
LCBpRWxSZWN0KGFFbFJlY3QpDQorICAgIHsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tDQorLy8gQ1BvcHVwRHJhd2VyOjpDb25zdHJ1Y3RMDQorLy8gVGhlIGNvbnN0cnVjdG9y
IHRoYXQgY2FuIGNvbnRhaW4gY29kZSB0aGF0IG1pZ2h0IGxlYXZlLg0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorLy8NCit2b2lkIENQb3B1cERyYXdlcjo6Q29uc3RydWN0TChUUHRyQyYgYVRl
eHRUb0RyYXcpDQorICAgIHsNCisgICAgaWYgKGFUZXh0VG9EcmF3Lkxlbmd0aCgpID09IDApDQor
ICAgICAgICB7DQorICAgICAgICBVc2VyOjpMZWF2ZShLRXJyQXJndW1lbnQpOw0KKyAgICAgICAg
fQ0KKyAgICBpVGV4dFRvRHJhdyA9IGFUZXh0VG9EcmF3LkFsbG9jTCgpOw0KKyAgICBpUmVtb3Zl
UG9wdXBQZXJpb2RpYyA9IENQZXJpb2RpYzo6TmV3TCggQ0FjdGl2ZTo6RVByaW9yaXR5TG93ICk7
DQorICAgIGlSZW1vdmVQb3B1cFBlcmlvZGljLT5TdGFydCggS1BvcHVwVGltZW91dCwgMCwgVENh
bGxCYWNrKCAmUmVtb3ZlUG9wdXBDYWxsYmFjaywgdGhpcyApICk7DQorICAgIFNpemVDaGFuZ2Vk
TCgpOw0KKyAgICBDb25zdHJ1Y3RTcHJpdGUoKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tDQorLy8gRGVzdHJ1Y3Rvcg0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorQ1Bv
cHVwRHJhd2VyOjp+Q1BvcHVwRHJhd2VyKCkNCisgICAgew0KKyAgICBkZWxldGUgaVRleHRUb0Ry
YXc7DQorICAgIGlmIChpUmVtb3ZlUG9wdXBQZXJpb2RpYykNCisgICAgICAgIHsNCisgICAgICAg
IGlSZW1vdmVQb3B1cFBlcmlvZGljLT5DYW5jZWwoKTsNCisgICAgICAgIGRlbGV0ZSBpUmVtb3Zl
UG9wdXBQZXJpb2RpYzsNCisgICAgICAgIH0NCisgICAgZGVsZXRlIGlMaW5lV2lkdGhBcnJheTsN
CisgICAgZGVsZXRlIGlXcmFwcGVkQXJyYXk7DQorICAgIGlTcHJpdGUuQ2xvc2UoKTsNCisgICAg
ZGVsZXRlIGlTcHJpdGVNYXNrQml0bWFwRGV2aWNlOw0KKyAgICBkZWxldGUgaVNwcml0ZU1hc2tC
aXRtYXBDb250ZXh0Ow0KKyAgICBkZWxldGUgaVNwcml0ZU1hc2tCaXRtYXA7DQorICAgIH0NCisN
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENQb3B1cERyYXdlcjo6RHJhd1BvcHVwDQor
Ly8gRHJhdyB0aGUgcG9wdXAuDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK3ZvaWQg
Q1BvcHVwRHJhd2VyOjpEcmF3UG9wdXAoKQ0KKyAgICB7DQorICAgIGlTcHJpdGUuU2V0UG9zaXRp
b24oaVBvc2l0aW9uKTsNCisgICAgfQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8g
Q1BvcHVwRHJhd2VyOjpSZW1vdmVQb3B1cA0KKy8vIFN0b3AgZGlzcGxheWluZyB0aGUgcG9wdXAu
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLw0KK3ZvaWQgQ1BvcHVwRHJhd2VyOjpSZW1v
dmVQb3B1cCgpDQorICAgIHsNCisgICAgaVdlYktpdFZpZXcuUmVtb3ZlUG9wdXAoKTsNCisgICAg
fQ0KKw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gQ1BvcHVwRHJhd2VyOjpTaXplQ2hh
bmdlZEwNCisvLyBSZWNyZWF0ZSB0aGUgYml0bWFwIHRvIGZpdCBpbiB0aGUgbmV3IHNpemUNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQordm9pZCBDUG9wdXBEcmF3ZXI6OlNpemVDaGFu
Z2VkTCgpDQorICAgIHsNCisgICAgVFJlY3QgcmVjdChpV2ViS2l0Vmlldy5SZWN0KCkpOw0KKyAg
ICBpZiAocmVjdCAhPSBpV2ViS2l0UmVjdCkNCisgICAgICAgIHsNCisgICAgICAgIGlmIChyZWN0
LldpZHRoKCkgPiAwICYmIHJlY3QuSGVpZ2h0KCkgPiAwKQ0KKyAgICAgICAgICAgIHsNCisgICAg
ICAgICAgICBpV2ViS2l0UmVjdCA9IHJlY3Q7DQorICAgICAgICAgICAgUHJlcGFyZVRleHRMKCk7
DQorICAgICAgICAgICAgQ3JlYXRlQml0bWFwQW5kQ29udGV4dEwoKTsNCisgICAgICAgICAgICB9
DQorICAgICAgICB9DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENQ
b3B1cERyYXdlcjo6SGFuZGxlT2ZmZXJLZXlFdmVudEwNCisvLyBIYW5kbGVzIGtleSBldmVudHMN
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQorVEtleVJlc3BvbnNlIENQb3B1cERyYXdl
cjo6SGFuZGxlT2ZmZXJLZXlFdmVudEwoIGNvbnN0IFRLZXlFdmVudCYgLyphS2V5RXZlbnQqLywg
VEV2ZW50Q29kZSBhRXZlbnRDb2RlICkNCisgICAgew0KKyAgICBpZiAoYUV2ZW50Q29kZSA9PSBF
RXZlbnRLZXlVcCkNCisgICAgICAgIHsNCisgICAgICAgIFJlbW92ZVBvcHVwKCk7DQorICAgICAg
ICB9DQorICAgIHJldHVybiBFS2V5V2FzQ29uc3VtZWQ7DQorICAgIH0NCisNCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KKy8vIENQb3B1cERyYXdlcjo6SGFuZGxlUG9pbnRlckV2ZW50TA0KKy8v
IEhhbmRsZXMgcG9pbnRlciBldmVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQor
dm9pZCBDUG9wdXBEcmF3ZXI6OkhhbmRsZVBvaW50ZXJFdmVudEwoIGNvbnN0IFRQb2ludGVyRXZl
bnQmIC8qYVBvaW50ZXJFdmVudCovKQ0KKyAgICB7DQorICAgIGlXZWJLaXRWaWV3Lklnbm9yZUV2
ZW50c1VudGlsTmV4dFBvaW50ZXJVcCgpOw0KKyAgICBSZW1vdmVQb3B1cCgpOw0KKyAgICB9DQor
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisvLyBDUG9wdXBEcmF3ZXI6OlByZXBhcmVUZXh0
TA0KKy8vIFBvc2l0aW9uIGFuZCB3cmFwIHRoZSB0ZXh0IGNhbGxlZCBkdXJpbmcgY29uc3RydWN0
aW9uIGFuZCB3aGVuIHRoZSBzaXplIG9mIFdlYktpdCBjaGFuZ2VzDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCisvLw0KK3ZvaWQgQ1BvcHVwRHJhd2VyOjpQcmVwYXJlVGV4dEwoKQ0KKyAgICB7
DQorICAgIGRlbGV0ZSBpTGluZVdpZHRoQXJyYXk7DQorICAgIGlMaW5lV2lkdGhBcnJheSA9IE5V
TEw7DQorICAgIGRlbGV0ZSBpV3JhcHBlZEFycmF5Ow0KKyAgICBpV3JhcHBlZEFycmF5ID0gTlVM
TDsNCisgICAgVEludCB3aWR0aCA9ICg4ICogaVdlYktpdFJlY3QuV2lkdGgoKSkgLyAxMCAtIDIg
KiBLQm9yZGVyU2l6ZTsNCisgICAgQ3JlYXRlSWNvbklmTmVlZGVkTCgpOw0KKyAgICBpRm9udCA9
IExhdGluQm9sZDE5KCk7DQorICAgIGlMaW5lV2lkdGhBcnJheSA9IG5ldyggRUxlYXZlICkgQ0Fy
cmF5Rml4RmxhdDxUSW50PigyKTsNCisgICAgaUxpbmVXaWR0aEFycmF5LT5BcHBlbmRMKHdpZHRo
IC0gaUljb24tPkJpdG1hcCgpLT5TaXplSW5QaXhlbHMoKS5pV2lkdGggLSBLSWNvbk1hcmdpbik7
DQorICAgIFRJbnQgbWF4TnVtYmVyT2ZSb3dzID0gaVdlYktpdFJlY3QuSGVpZ2h0KCkgLyAoaUZv
bnQtPkhlaWdodEluUGl4ZWxzKCkgKyBLUm93TWFyZ2luKTsNCisgICAgVEludCBpOw0KKyAgICBm
b3IgKGkgPSAxOyBpIDwgbWF4TnVtYmVyT2ZSb3dzOyBpKyspDQorICAgICAgICB7DQorICAgICAg
ICBpTGluZVdpZHRoQXJyYXktPkFwcGVuZEwod2lkdGgpOw0KKyAgICAgICAgfQ0KKyAgICBpV3Jh
cHBlZEFycmF5ID0gbmV3KCBFTGVhdmUgKSBDQXJyYXlGaXhGbGF0PFRQdHJDPiggMTAgKTsNCisg
ICAgQWtuVGV4dFV0aWxzOjpXcmFwVG9BcnJheUwoICppVGV4dFRvRHJhdywgKmlMaW5lV2lkdGhB
cnJheSwgKmlGb250LCAqaVdyYXBwZWRBcnJheSApOw0KKyAgICBUSW50IHJvd0hlaWdodCggaUZv
bnQtPkhlaWdodEluUGl4ZWxzKCkgKyAgS1Jvd01hcmdpbiApOw0KKyAgICBpU2l6ZS5pV2lkdGgg
PSAoOCAqIGlXZWJLaXRSZWN0LldpZHRoKCkpIC8gMTA7DQorICAgIGlTaXplLmlIZWlnaHQgPSAo
aVdyYXBwZWRBcnJheS0+Q291bnQoKSArIDEgKSAqIHJvd0hlaWdodDsNCisgICAgaWYgKGlTaXpl
LmlIZWlnaHQgKyAyICogS1NwYWNlVW5kZXJuZWF0aCA+IGlXZWJLaXRSZWN0LkhlaWdodCgpKQ0K
KyAgICAgICAgew0KKyAgICAgICAgVEludCB0b1JlbW92ZSgoaVdlYktpdFJlY3QuSGVpZ2h0KCkg
LSBpU2l6ZS5pSGVpZ2h0ICsgMiAqIEtTcGFjZVVuZGVybmVhdGggKyAocm93SGVpZ2h0IC0gMSkp
IC8gcm93SGVpZ2h0KTsNCisgICAgICAgIGlXcmFwcGVkQXJyYXktPkRlbGV0ZSgoaVdyYXBwZWRB
cnJheS0+Q291bnQoKSAtIHRvUmVtb3ZlKSAvIDIsIHRvUmVtb3ZlKTsNCisgICAgICAgIGlXcmFw
cGVkQXJyYXktPkNvbXByZXNzKCk7DQorICAgICAgICBpU2l6ZS5pSGVpZ2h0ID0gKGlXcmFwcGVk
QXJyYXktPkNvdW50KCkgKyAxICkgKiByb3dIZWlnaHQ7DQorICAgICAgICB9DQorICAgIGlQb3Np
dGlvbi5pWCA9IGlXZWJLaXRSZWN0LldpZHRoKCkgLyAxMDsNCisNCisgICAgaWYgKCBpRWxSZWN0
LmlCci5pWSA+IDAgJiYgaUVsUmVjdC5pQnIuaVkgPCBpV2ViS2l0UmVjdC5IZWlnaHQoKSAmJg0K
KyAgICAgICAgaVdlYktpdFJlY3QuSGVpZ2h0KCkgLSBpRWxSZWN0LmlCci5pWSAtIGlTaXplLmlI
ZWlnaHQgLSBLU3BhY2VVbmRlcm5lYXRoID49IDApDQorICAgICAgICB7DQorICAgICAgICBpUG9z
aXRpb24uaVkgPSBpRWxSZWN0LmlCci5pWTsNCisgICAgICAgIH0NCisgICAgZWxzZSBpZiAoaVNp
emUuaUhlaWdodCArIEtTcGFjZVVuZGVybmVhdGggPD0gaUVsUmVjdC5pVGwuaVkpDQorICAgICAg
ICB7DQorICAgICAgICBpUG9zaXRpb24uaVkgPSBpRWxSZWN0LmlUbC5pWSAtIGlTaXplLmlIZWln
aHQ7DQorICAgICAgICB9DQorICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgIGlQb3NpdGlv
bi5pWSA9IChpV2ViS2l0UmVjdC5IZWlnaHQoKSAtIGlTaXplLmlIZWlnaHQpIC8gMjsvLyAtIEtT
cGFjZVVuZGVybmVhdGg7DQorICAgICAgICB9DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KKy8vIENQb3B1cERyYXdlcjo6Q3JlYXRlQml0bWFwQW5kQ29udGV4dEwNCisvLyBD
cmVhdGUgYml0bWFwIGFuZCBiaXRtYXAgY29udGV4dA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
DQorLy8NCit2b2lkIENQb3B1cERyYXdlcjo6Q3JlYXRlQml0bWFwQW5kQ29udGV4dEwoKQ0KKyAg
ICB7DQorICAgIGRlbGV0ZSBpU3ByaXRlQml0bWFwRGV2aWNlOw0KKyAgICBpU3ByaXRlQml0bWFw
RGV2aWNlID0gTlVMTDsNCisgICAgZGVsZXRlIGlTcHJpdGVCaXRtYXBDb250ZXh0Ow0KKyAgICBp
U3ByaXRlQml0bWFwQ29udGV4dCA9IE5VTEw7DQorICAgIGRlbGV0ZSBpU3ByaXRlQml0bWFwOw0K
KyAgICBpU3ByaXRlQml0bWFwID0gTlVMTDsNCisgICAgaVNwcml0ZUJpdG1hcCA9IG5ldyAoRUxl
YXZlKSBDRmJzQml0bWFwOw0KKyAgICBVc2VyOjpMZWF2ZUlmRXJyb3IoIGlTcHJpdGVCaXRtYXAt
PkNyZWF0ZSggaVNpemUsIEVDb2xvcjE2TUEgKSApOw0KKyAgICBpU3ByaXRlQml0bWFwRGV2aWNl
ID0gQ0Zic0JpdG1hcERldmljZTo6TmV3TCggaVNwcml0ZUJpdG1hcCApOw0KKyAgICBVc2VyOjpM
ZWF2ZUlmRXJyb3IoIGlTcHJpdGVCaXRtYXBEZXZpY2UtPkNyZWF0ZUNvbnRleHQoIGlTcHJpdGVC
aXRtYXBDb250ZXh0ICkgKTsNCisgICAgLy9tYXNrDQorICAgIGRlbGV0ZSBpU3ByaXRlTWFza0Jp
dG1hcERldmljZTsNCisgICAgaVNwcml0ZU1hc2tCaXRtYXBEZXZpY2UgPSBOVUxMOw0KKyAgICBk
ZWxldGUgaVNwcml0ZU1hc2tCaXRtYXBDb250ZXh0Ow0KKyAgICBpU3ByaXRlTWFza0JpdG1hcENv
bnRleHQgPSBOVUxMOw0KKyAgICBkZWxldGUgaVNwcml0ZU1hc2tCaXRtYXA7DQorICAgIGlTcHJp
dGVNYXNrQml0bWFwID0gTlVMTDsNCisgICAgaVNwcml0ZU1hc2tCaXRtYXAgPSBuZXcgKEVMZWF2
ZSkgQ0Zic0JpdG1hcDsNCisgICAgVXNlcjo6TGVhdmVJZkVycm9yKCBpU3ByaXRlTWFza0JpdG1h
cC0+Q3JlYXRlKCBpU2l6ZSwgRUdyYXkyICkgKTsNCisgICAgaVNwcml0ZU1hc2tCaXRtYXBEZXZp
Y2UgPSBDRmJzQml0bWFwRGV2aWNlOjpOZXdMKCBpU3ByaXRlTWFza0JpdG1hcCApOw0KKyAgICBV
c2VyOjpMZWF2ZUlmRXJyb3IoIGlTcHJpdGVNYXNrQml0bWFwRGV2aWNlLT5DcmVhdGVDb250ZXh0
KCBpU3ByaXRlTWFza0JpdG1hcENvbnRleHQgKSApOw0KKyAgICBUUmVjdCByKCBUUG9pbnQoIDAs
IDAgKSwgaVNwcml0ZU1hc2tCaXRtYXAtPlNpemVJblBpeGVscygpKTsNCisgICAgaVNwcml0ZU1h
c2tCaXRtYXBDb250ZXh0LT5TZXRCcnVzaFN0eWxlKCBDR3JhcGhpY3NDb250ZXh0OjpFU29saWRC
cnVzaCApOw0KKyAgICBpU3ByaXRlTWFza0JpdG1hcENvbnRleHQtPlNldFBlblN0eWxlKCBDR3Jh
cGhpY3NDb250ZXh0OjpFU29saWRQZW4gKTsNCisgICAgaVNwcml0ZU1hc2tCaXRtYXBDb250ZXh0
LT5TZXRCcnVzaENvbG9yKCBUUmdiKCAwLCAwLCAwKSApOw0KKyAgICBpU3ByaXRlTWFza0JpdG1h
cENvbnRleHQtPlNldFBlbkNvbG9yKCBUUmdiKCAwLCAwLCAwKSApOw0KKyAgICBpU3ByaXRlTWFz
a0JpdG1hcENvbnRleHQtPkRyYXdSb3VuZFJlY3QoIHIsIFRTaXplKEtCb3JkZXJTaXplICogMiwg
S0JvcmRlclNpemUgKiAyKSApOw0KKyAgICBpZiggaVdyYXBwZWRBcnJheS0+Q291bnQoKSApDQor
ICAgICAgICB7DQorICAgICAgICBUUmVjdCByKCBUUG9pbnQoIDAsIDAgKSwgaVNwcml0ZUJpdG1h
cC0+U2l6ZUluUGl4ZWxzKCkpOw0KKyAgICAgICAgaVNwcml0ZUJpdG1hcENvbnRleHQtPlNldEJy
dXNoU3R5bGUoIENHcmFwaGljc0NvbnRleHQ6OkVTb2xpZEJydXNoICk7DQorICAgICAgICBpU3By
aXRlQml0bWFwQ29udGV4dC0+U2V0UGVuU3R5bGUoIENHcmFwaGljc0NvbnRleHQ6OkVTb2xpZFBl
biApOw0KKyAgICAgICAgaVNwcml0ZUJpdG1hcENvbnRleHQtPlNldEJydXNoQ29sb3IoIFRSZ2Io
IDB4RkYsIDB4RkYsIDB4Y2MpICk7DQorICAgICAgICBpU3ByaXRlQml0bWFwQ29udGV4dC0+U2V0
UGVuQ29sb3IoIFRSZ2IoIDAsIDAsIDApICk7DQorICAgICAgICBpU3ByaXRlQml0bWFwQ29udGV4
dC0+RHJhd1JvdW5kUmVjdCggciwgVFNpemUoS0JvcmRlclNpemUgKiAyLCBLQm9yZGVyU2l6ZSAq
IDIpICk7DQorICAgICAgICBpU3ByaXRlQml0bWFwQ29udGV4dC0+VXNlRm9udCggaUZvbnQgKTsN
CisgICAgICAgIFRJbnQgcm93SGVpZ2h0KCBpRm9udC0+SGVpZ2h0SW5QaXhlbHMoKSArICBLUm93
TWFyZ2luICk7DQorICAgICAgICBUSW50IHggPSBLQm9yZGVyU2l6ZTsNCisgICAgICAgIFRJbnQg
eSA9IEtCb3JkZXJTaXplICsgS1Jvd01hcmdpbiAvIDI7DQorICAgICAgICBmb3IoIFRJbnQgaSA9
IDA7IGkgPCBpV3JhcHBlZEFycmF5LT5Db3VudCgpOyBpKyssIHkgKz0gcm93SGVpZ2h0ICkNCisg
ICAgICAgICAgICB7DQorICAgICAgICAgICAgVFB0ckMgdGV4dCA9IChpV3JhcHBlZEFycmF5LT5B
dChpKSk7ICAgICAgICAgICANCisgICAgICAgICAgICBpZiAoaSA9PSAwKQ0KKyAgICAgICAgICAg
ICAgICB7DQorICAgICAgICAgICAgICAgIC8vIGRyYXcgaWNvbg0KKyAgICAgICAgICAgICAgICBU
SW50IGljb25TaXplKCBNaW4oIHJvd0hlaWdodCwgaUljb24tPkJpdG1hcCgpLT5TaXplSW5QaXhl
bHMoKS5pSGVpZ2h0ICkgKTsNCisgICAgICAgICAgICAgICAgaVNwcml0ZUJpdG1hcENvbnRleHQt
PkJpdEJsdE1hc2tlZChUUG9pbnQoeCwgeSksIGlJY29uLT5CaXRtYXAoKSwNCisgICAgICAgICAg
ICAgICAgICAgIFRSZWN0KFRQb2ludCgwLCAwKSwgVFNpemUoaUljb24tPkJpdG1hcCgpLT5TaXpl
SW5QaXhlbHMoKS5pV2lkdGgsIGljb25TaXplKSksIGlJY29uLT5NYXNrKCksIEVGYWxzZSk7DQor
ICAgICAgICAgICAgICAgIGlTcHJpdGVCaXRtYXBDb250ZXh0LT5EcmF3VGV4dCggdGV4dCwgVFBv
aW50KCB4ICsgaUljb24tPkJpdG1hcCgpLT5TaXplSW5QaXhlbHMoKS5pV2lkdGggKyBLSWNvbk1h
cmdpbiwgeSArIHJvd0hlaWdodCAtIGlGb250LT5EZXNjZW50SW5QaXhlbHMoKSkgKTsNCisgICAg
ICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgew0KKyAg
ICAgICAgICAgICAgICBpU3ByaXRlQml0bWFwQ29udGV4dC0+RHJhd1RleHQoIHRleHQsIFRQb2lu
dCggeCwgeSArIHJvd0hlaWdodCAtIGlGb250LT5EZXNjZW50SW5QaXhlbHMoKSkgKTsNCisgICAg
ICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIGlTcHJpdGVCaXRtYXBDb250
ZXh0LT5EaXNjYXJkRm9udCgpOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQordm9pZCBDUG9wdXBE
cmF3ZXI6OkNvbnN0cnVjdFNwcml0ZSgpDQorICAgIHsgICAgICAgIA0KKyAgICBpU3ByaXRlID0g
UldzU3ByaXRlKGlXZWJLaXRWaWV3LkNvbnRyb2xFbnYoKS0+V3NTZXNzaW9uKCkpOw0KKyAgICBS
V2luZG93VHJlZU5vZGUgKndpbmRvdyA9ICAoUkRyYXdhYmxlV2luZG93KiApaVdlYktpdFZpZXcu
V2ViS2l0Q29udHJvbCgpLkJyQ3RsKCkuQ0NvZUNvbnRyb2xQYXJlbnQoKS0+RHJhd2FibGVXaW5k
b3coKTsNCisgICAgaVNwcml0ZS5Db25zdHJ1Y3QoKndpbmRvdyxpUG9zaXRpb24sRVNwcml0ZU5v
Q2hpbGRDbGlwKTsNCisgICAgVFNwcml0ZU1lbWJlciBzcHJpdGVNZW07DQorICAgIHNwcml0ZU1l
bS5pQml0bWFwID0gaVNwcml0ZUJpdG1hcDsNCisgICAgc3ByaXRlTWVtLmlNYXNrQml0bWFwID0g
aVNwcml0ZU1hc2tCaXRtYXA7DQorICAgIHNwcml0ZU1lbS5pSW52ZXJ0TWFzayA9IEVUcnVlOw0K
KyAgICBpU3ByaXRlLkFwcGVuZE1lbWJlcihzcHJpdGVNZW0pOw0KKyAgICBpU3ByaXRlLkFjdGl2
YXRlKCk7DQorICAgIH0NCisNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIENQb3B1cERy
YXdlcjo6Q3JlYXRlSWNvbklmTmVlZGVkTA0KKy8vIERldGVybWluZSB3aGljaCBpY29uIHRvIGxv
YWQgYW5kIGxvYWQgaXQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vDQordm9pZCBDUG9w
dXBEcmF3ZXI6OkNyZWF0ZUljb25JZk5lZWRlZEwoKQ0KKyAgICB7DQorICAgIGlmIChpSWNvbiA9
PSBOVUxMKQ0KKyAgICAgICAgew0KKyAgICAgICAgX0xJVChLSHR0cFNjaGVtZSwgImh0dHAiKTsN
CisgICAgICAgIF9MSVQoS0h0dHBzU2NoZW1lLCAiaHR0cHMiKTsNCisgICAgICAgIF9MSVQoS0Zp
bGVTY2hlbWUsICJmaWxlIik7DQorICAgICAgICBfTElUKEtNYWlsVG9TY2hlbWUsICJtYWlsdG8i
KTsNCisgICAgICAgIF9MSVQoS1RlbFNjaGVtZSwgInRlbCIpOw0KKyAgICAgICAgX0xJVChLUnRz
cFNjaGVtZSwgInJ0c3AiKTsNCisgICAgICAgIENDYW5uZWRJbWFnZXM6OlRDYW5uZWRJbWFnZU5h
bWVzIGltYWdlVHlwZSA9IENDYW5uZWRJbWFnZXM6OkVJbWFnZVNtYXJ0TGlua1Bob25lOw0KKyAg
ICAgICAgVEludCBpID0gaVRleHRUb0RyYXctPkxvY2F0ZSgnOicpOw0KKyAgICAgICAgaWYgKGkg
IT0gS0Vyck5vdEZvdW5kKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICBUUHRyQyBzY2hl
bWVQdHIoaVRleHRUb0RyYXctPlB0cigpLCBpKTsNCisgICAgICAgICAgICBpZiAoS0h0dHBTY2hl
bWUoKS5Db21wYXJlRihzY2hlbWVQdHIpID09IDApDQorICAgICAgICAgICAgICAgIHsNCisgICAg
ICAgICAgICAgICAgaW1hZ2VUeXBlID0gQ0Nhbm5lZEltYWdlczo6RUltYWdlU21hcnRMaW5rUGhv
bmU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlIGlmIChLSHR0cHNTY2hl
bWUoKS5Db21wYXJlRihzY2hlbWVQdHIpID09IDApDQorICAgICAgICAgICAgICAgIHsNCisgICAg
ICAgICAgICAgICAgaW1hZ2VUeXBlID0gQ0Nhbm5lZEltYWdlczo6RUltYWdlU21hcnRMaW5rUGhv
bmU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlIGlmIChLRmlsZVNjaGVt
ZSgpLkNvbXBhcmVGKHNjaGVtZVB0cikgPT0gMCkNCisgICAgICAgICAgICAgICAgew0KKyAgICAg
ICAgICAgICAgICBpbWFnZVR5cGUgPSBDQ2FubmVkSW1hZ2VzOjpFSW1hZ2VTbWFydExpbmtQaG9u
ZTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGVsc2UgaWYgKEtNYWlsVG9TY2hl
bWUoKS5Db21wYXJlRihzY2hlbWVQdHIpID09IDApDQorICAgICAgICAgICAgICAgIHsNCisgICAg
ICAgICAgICAgICAgaW1hZ2VUeXBlID0gQ0Nhbm5lZEltYWdlczo6RUltYWdlU21hcnRMaW5rRW1h
aWw7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlIGlmIChLVGVsU2NoZW1l
KCkuQ29tcGFyZUYoc2NoZW1lUHRyKSA9PSAwKQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAg
ICAgICAgICAgIGltYWdlVHlwZSA9IENDYW5uZWRJbWFnZXM6OkVJbWFnZVNtYXJ0TGlua1Bob25l
Ow0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgZWxzZSBpZiAoS1J0c3BTY2hlbWUo
KS5Db21wYXJlRihzY2hlbWVQdHIpID09IDApDQorICAgICAgICAgICAgICAgIHsNCisgICAgICAg
ICAgICAgICAgaW1hZ2VUeXBlID0gQ0Nhbm5lZEltYWdlczo6RUltYWdlU21hcnRMaW5rUGhvbmU7
DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICBUQ2FubmVkSW1h
Z2VEYXRhIGNhbm5lZEltYWdlID0gQ1N0YXRpY09iamVjdENvbnRhaW5lcjo6SW5zdGFuY2UoKS5D
YW5uZWRJbWFnZXNMKCkuR2V0SW1hZ2UoaW1hZ2VUeXBlKTsNCisgICAgICAgIGlmIChjYW5uZWRJ
bWFnZS5pTWFzaykNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgaUljb24gPSBDR3VsSWNv
bjo6TmV3TChjYW5uZWRJbWFnZS5pSW1hZ2UsIGNhbm5lZEltYWdlLmlNYXNrKTsNCisgICAgICAg
ICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgIGlJY29u
ID0gQ0d1bEljb246Ok5ld0woY2FubmVkSW1hZ2UuaUltYWdlKTsNCisgICAgICAgICAgICB9DQor
ICAgICAgICB9DQorICAgIH0NCisNCisvLyAgRW5kIG9mIEZpbGUNCkluZGV4OiBXZWJLaXQvQnJv
d3NlclZpZXcvc3JjL1dlYktpdENvbnRyb2wuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L0Jy
b3dzZXJWaWV3L3NyYy9XZWJLaXRDb250cm9sLmNwcAkocmV2aXNpb24gMTg4ODUpDQorKysgV2Vi
S2l0L0Jyb3dzZXJWaWV3L3NyYy9XZWJLaXRDb250cm9sLmNwcAkod29ya2luZyBjb3B5KQ0KQEAg
LTkyNCw2ICs5MjQsMjAgQEAgSEJ1ZkMqIENXZWJLaXRDb250cm9sOjpQYWdlSW5mb0xDKA0KICAg
ICAgICAgICAgIHBhZ2VJbmZvID0gR2VuZXJhdGVTYXZlZFBhZ2VMKCk7ICAgICAgICAgICAgICAg
ICAgIA0KICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgIH0NCisgICAgICAgIGNhc2Ug
VEJyQ3RsRGVmczo6RVBhZ2VJbmZvRm9jdXNlZE5vZGVVcmw6DQorICAgICAgICAgICAgew0KKyAg
ICAgICAgICAgIHN3aXRjaCAoaVdlYktpdFZpZXctPkZvY3VzZWRFbGVtZW50VHlwZSgpKQ0KKyAg
ICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RUVsZW1l
bnRBbmNob3I6DQorICAgICAgICAgICAgICAgIGNhc2UgVEJyQ3RsRGVmczo6RUVsZW1lbnRBcmVh
Qm94Og0KKyAgICAgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgcGFnZUlu
Zm8gPSBpV2ViS2l0Vmlldy0+R2V0VXJsT2ZOb2RlSW5Gb2N1c0woKTsNCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBk
ZWZhdWx0Og0KKyAgICAgICAgICAgICAgICAgICAgVXNlcjo6TGVhdmUoS0Vyck5vdFN1cHBvcnRl
ZCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQogICAgICAgICBkZWZhdWx0
Og0KICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICBicmVhazsNCkBAIC0xNzQ0LDEwICsxNzU4
LDggQEAgdm9pZCBDV2ViS2l0Q29udHJvbDo6RmluYWxQcm9ncmVzc0NvbXBsZQ0KICAgICBpQnJD
dGwtPkhhbmRsZUJyb3dzZXJMb2FkRXZlbnRMKCBUQnJDdGxEZWZzOjpFRXZlbnRVcmxMb2FkaW5n
RmluaXNoZWQsIDAsIDAgKTsNCiAgICAgaUJyQ3RsLT5IYW5kbGVCcm93c2VyTG9hZEV2ZW50TCgg
VEJyQ3RsRGVmczo6RUV2ZW50Q29udGVudEZpbmlzaGVkLCAwLCAwICk7DQogICAgIGlCckN0bC0+
SGFuZGxlQnJvd3NlckxvYWRFdmVudEwoIFRCckN0bERlZnM6OkVFdmVudExvYWRGaW5pc2hlZCwg
MCwgMCApOw0KLSNpZmRlZiBSRF9CUk9XU0VSX1NDUk9MTEJBUlMNCisgICAgLy8gVG8gbWFrZSBz
dXJlIHdlIGRyYXcgdGhlIHNjcm9sbGJhcnMgd2l0aCB0aGUgY29ycmVjdCBiYWNrZ3JvdW5kIGNv
bG9yLCBmb3JjZSBkcmF3aW5nIHRoZW0gYWdhaW4NCiAgICAgaUJyQ3RsLT5EcmF3U2Nyb2xsYmFy
QmFja2dyb3VuZCgpOw0KLSAgICBpQnJDdGwtPkRyYXdOb3coKTsNCi0jZW5kaWYNCiANCiAgIGlm
ICggaVdlYktpdFZpZXctPlRhYmJlZE5hdmlnYXRpb24oKSkNCiAgICAgew0KSW5kZXg6IFdlYktp
dC9Ccm93c2VyVmlldy9zcmMvV2ViS2l0Vmlldy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
QnJvd3NlclZpZXcvc3JjL1dlYktpdFZpZXcuY3BwCShyZXZpc2lvbiAxODg4NSkNCisrKyBXZWJL
aXQvQnJvd3NlclZpZXcvc3JjL1dlYktpdFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtNTMs
NiArNTMsNyBAQA0KICNpbmNsdWRlICJXZWJLaXRDb250cm9sLmgiDQogI2luY2x1ZGUgIktleUV2
ZW50SGFuZGxlci5oIg0KICNpbmNsdWRlICJQb2ludGVyRXZlbnRIYW5kbGVyLmgiDQorI2luY2x1
ZGUgIlBvcHVwRHJhd2VyLmgiDQogI2luY2x1ZGUgIldlYktpdEJyaWRnZS5oIg0KICNpbmNsdWRl
ICJCckN0bFNjcm9sbGluZ1Byb3ZpZGVyLmgiDQogI2luY2x1ZGUgIldlYktpdEN1cnNvci5oIg0K
QEAgLTYwLDYgKzYxLDcgQEANCiAjaW5jbHVkZSAiV2ViS2l0U3VyZmFjZS5oIg0KICNpbmNsdWRl
ICJXZWJLaXRUb29sQmFySW50ZXJmYWNlLmgiDQogI2luY2x1ZGUgIlRvb2xCYXIuaCINCisjaW5j
bHVkZSAiQW5pbWF0aW9uRGVjb2Rlci5oIg0KICNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQog
I2luY2x1ZGUgIldpZGdldEV4dGVuc2lvbi5oIg0KICNpbmNsdWRlICJXaWRnZXRFbmdpbmVCcmlk
Z2UuaCINCkBAIC0yNDQsNiArMjQ2LDcgQEAgQ1dlYktpdFZpZXc6On5DV2ViS2l0VmlldygpDQog
ICAgIGRlbGV0ZSBpS2V5RXZlbnRIYW5kbGVyOw0KICAgICAvLyBEZWxldGUgdGhlIFBvaW50ZXJF
dmVudEhhbmRsZXINCiAgICAgZGVsZXRlIGlQb2ludGVyRXZlbnRIYW5kbGVyOw0KKyAgICBkZWxl
dGUgaVBvcHVwRHJhd2VyOw0KIA0KICAgICBkZWxldGUgaVdlYkNvcmVDb250ZXh0Ow0KICAgICBk
ZWxldGUgaUJpdG1hcERldmljZTsNCkBAIC00NDgsOCArNDUxLDEwIEBAIHZvaWQgQ1dlYktpdFZp
ZXc6OkhhbmRsZUFkZFRvQ29udGFjdHNDb20NCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogSEJ1
ZkMqIENXZWJLaXRWaWV3OjpHZXRVcmxPZk5vZGVJbkZvY3VzTCgpDQogICB7DQotICBUUG9pbnQg
cG9zKGlNYWluRnJhbWUtPkNvbnRlbnRQb3NpdGlvbigpICsgaUN1cnNvci0+UG9zaXRpb24oKSk7
DQotICByZXR1cm4gaU1haW5GcmFtZS0+Rm9jdXNlZEZyYW1lKCktPldlYktpdEJyaWRnZSgpLldl
YkNvcmVCcmlkZ2UoKS5HZXRVcmxPZk5vZGVJbkZvY3VzTChwb3MpOw0KKyAgICBUUG9pbnQgcG9z
ID0gaUN1cnNvci0+UG9zaXRpb24oKTsNCisgICAgQ1dlYktpdEZyYW1lKiBmcmFtZTsNCisgICAg
RnJhbWVBbmRQb2ludFVuZGVyQ3Vyc29yKHBvcywgZnJhbWUpOw0KKyAgICByZXR1cm4gZnJhbWUt
PldlYktpdEJyaWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5HZXRVcmxPZk5vZGVJbkZvY3VzTChwb3Mp
Ow0KICAgfQ0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC00NzEsNiArNDc2LDE5IEBA
IHZvaWQgQ1dlYktpdFZpZXc6OkRlQWN0aXZhdGUoDQogICByZXR1cm4gaU1haW5GcmFtZS0+Rm9j
dXNlZEZyYW1lKCktPldlYktpdEJyaWRnZSgpLldlYkNvcmVCcmlkZ2UoKS5EZUFjdGl2YXRlRXZl
bnQoIGFBY2NlcHRDaGFuZ2VzICk7DQogICB9DQogDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
Ky8vIENXZWJLaXRWaWV3OjpEZUFjdGl2YXRlSWZOZWVkZWQNCisvLw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCit2b2lkIENXZWJLaXRWaWV3OjpEZUFjdGl2YXRlSWZOZWVkZWQoDQorICAgIFRC
b29sIGFBY2NlcHRDaGFuZ2VzICkNCisgICAgew0KKyAgICBpZiAoaUZvY3VzZWRFbGVtZW50VHlw
ZSA9PSBUQnJDdGxEZWZzOjpFRWxlbWVudEFjdGl2YXRlZElucHV0Qm94IHx8IGlGb2N1c2VkRWxl
bWVudFR5cGUgPT0gVEJyQ3RsRGVmczo6RUVsZW1lbnRBY3RpdmF0ZWRPYmplY3RCb3gpDQorICAg
ICAgICB7DQorICAgICAgICBEZUFjdGl2YXRlKGFBY2NlcHRDaGFuZ2VzKTsNCisgICAgICAgIH0N
CisgICAgfQ0KKw0KIA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAvLyBDV2ViS2l0Vmlldzo6
UmVtb3ZlRmlsZU5hbWUNCkBAIC01MDYsNyArNTI0LDcgQEAgVEJvb2wgQ1dlYktpdFZpZXc6OkFk
anVzdE9mZnNjcmVlblJlY3RMKA0KICAgICBpZiggaVJlbmRlclRhcmdldC0+Q3VycmVudFZpZXco
KSA9PSB0aGlzICkNCiAgICAgICAgIHsNCiAgICAgICAgICAgICBUU2l6ZSBibVNpemUgPSBpUmVu
ZGVyVGFyZ2V0LT5PZmZzY3JlZW5CaXRtYXAoKS0+U2l6ZUluUGl4ZWxzKCk7DQotICAgICAgICAg
ICAgaWYgKGJtU2l6ZS5pV2lkdGg8aU9mZnNjcmVlblJlY3QuV2lkdGgoKSB8fCBibVNpemUuaUhl
aWdodDxpT2Zmc2NyZWVuUmVjdC5IZWlnaHQoKSkNCisgICAgICAgICAgICBpZiAoYm1TaXplLmlX
aWR0aCE9aU9mZnNjcmVlblJlY3QuV2lkdGgoKSB8fCBibVNpemUuaUhlaWdodCE9aU9mZnNjcmVl
blJlY3QuSGVpZ2h0KCkpDQogICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgaUJpdG1hcERl
dmljZS0+UmVzaXplKCByZWN0LlNpemUoKSApOw0KICAgICAgICAgICBpV2ViQ29yZUNvbnRleHQt
PlJlc2l6ZWQoKTsNCkBAIC03MTMsNyArNzMxLDcgQEAgdm9pZCBDV2ViS2l0Vmlldzo6U2l6ZUNo
YW5nZWQoKQ0KICAgICBUQm9vbCB3aWR0aENoYW5nZWQgPSBpT2Zmc2NyZWVuUmVjdC5XaWR0aCgp
ICE9IFJlY3QoKS5XaWR0aCgpOw0KICAgICBUQm9vbCBzZW5kUmVzaXplRXZlbnRzID0gRUZhbHNl
Ow0KICAgICBUUkFQX0lHTk9SRSggc2VuZFJlc2l6ZUV2ZW50cyA9IEFkanVzdE9mZnNjcmVlblJl
Y3RMKCkgKTsNCi0gICAgaWYgKGlNYWluRnJhbWUpDQorICAgIGlmIChpTWFpbkZyYW1lICYmICFp
V2ViS2l0Q29udHJvbC0+QnJDdGwoKS5XbWxNb2RlKCkpDQogICAgICAgICB7DQogICAgICAgICBU
UmVjdCByKGlNYWluRnJhbWUtPkZyYW1lUmVjdCgpKTsNCiAgICAgICAgIHIuU2V0U2l6ZShSZWN0
KCkuU2l6ZSgpKTsNCkBAIC05MjQsNiArOTQyLDEwIEBAIHZvaWQgQ1dlYktpdFZpZXc6OkRyYXco
DQogICAgICAgew0KICAgICAgIGlUb29sQmFyLT5EcmF3KGdjKTsNCiAgICAgICB9DQorICAgIGlm
IChpUG9wdXBEcmF3ZXIpDQorICAgICAgICB7DQorICAgICAgICBpUG9wdXBEcmF3ZXItPkRyYXdQ
b3B1cCgpOw0KKyAgICAgICAgfQ0KIA0KICNpZiBEUkFXX0RFQlVHDQogICAgIGlmIChpTWFpbkZy
YW1lLT5XZWJLaXRCcmlkZ2UoKS5XZWJDb3JlQnJpZGdlKCkuU2hvd2luZ0Zhc3RQcmV2aWV3KCkp
DQpAQCAtMTcyMSw2ICsxNzQzLDcgQEAgdm9pZCBDV2ViS2l0Vmlldzo6UHJvZ3Jlc3NBbmRJbWFn
ZURlY29kZQ0KICAgLy9FdmVyeXRoaW5nIGlzIHJlYWR5LCBsZXQncyBkbyBhIGRyYXcgb24gdGhl
IHZpc2libGUgYXJlYQ0KICAgLy9pbiBjYXNlIHNvbWUgaW1hZ2UgaGFzIG5vdCBiZWVuIGRyYXdu
IGFmdGVyIGZpbmlzaGluZyBkZWNvZGluZw0KICAgU2NoZWR1bGVSZXBhaW50KCBpTWFpbkZyYW1l
LT5WaXNpYmxlUmVjdCgpICk7DQorICAgIGlXZWJLaXRDb250cm9sLT5CckN0bCgpLkRyYXdTY3Jv
bGxiYXJCYWNrZ3JvdW5kKCk7DQogICAgIH0NCiANCiBDRmJzQml0bWFwKiBDV2ViS2l0Vmlldzo6
T2Zmc2NyZWVuQml0bWFwKCkgY29uc3QNCkBAIC0xNzkxLDYgKzE4MTQsMTIxIEBAIFRCb29sIENX
ZWJLaXRWaWV3OjpOb2RlVW5kZXJQb2ludGVyKFRQb2kNCiAgICAgVFdlYkNvcmVGb2N1c2VkRWxl
bWVudFR5cGUgZWxUeXBlOw0KICAgICBUUmVjdCByZWN0Ow0KICAgICByZXR1cm4gaU1haW5GcmFt
ZS0+V2ViS2l0QnJpZGdlKCkuV2ViQ29yZUJyaWRnZSgpLk5hdmlnYWJsZU5vZGVVbmRlckN1cnNv
cihhUG9pbnQsIGVsVHlwZSwgcmVjdCk7DQorICAgIH0NCisNCisvLy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0NCisvLyBIYW5kbGVTaG93QW5jaG9ySHJlZigpDQorLy8gRGlzcGxheSBhIHBvcHVwIHdp
dGggdGhlIHVybCBvZiBhbiBhbmNob3INCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCit2b2lk
IENXZWJLaXRWaWV3OjpIYW5kbGVTaG93QW5jaG9ySHJlZkwoKQ0KKyAgICB7DQorICAgIEhCdWZD
KiB1cmwgPSBHZXRVcmxPZk5vZGVJbkZvY3VzTCgpOw0KKyAgICBpZiAodXJsKQ0KKyAgICAgICAg
ew0KKyAgICAgICAgQ2xlYW51cFN0YWNrOjpQdXNoTCh1cmwpOw0KKyAgICAgICAgVFB0ckMgdXJs
UHRyKHVybC0+RGVzKCkpOw0KKyAgICAgICAgVFJlY3QgcmVjdChpUG9pbnRlckV2ZW50SGFuZGxl
ci0+RWxlbWVudFJlY3QoKSk7DQorICAgICAgICBDV2ViS2l0RnJhbWUqIGZyYW1lID0gaU1haW5G
cmFtZS0+Rm9jdXNlZEZyYW1lKCk7DQorICAgICAgICANCisgICAgICAgIHJlY3QuU2V0UmVjdChm
cmFtZS0+RnJhbWVDb29yZHNJblZpZXdDb29yZHMocmVjdC5pVGwpLCBmcmFtZS0+RnJhbWVDb29y
ZHNJblZpZXdDb29yZHMocmVjdC5pQnIpKTsNCisgICAgICAgIGlQb3B1cERyYXdlciA9IENQb3B1
cERyYXdlcjo6TmV3TCgqdGhpcywgdXJsUHRyLCByZWN0KTsNCisgICAgICAgIERyYXdOb3coKTsN
CisgICAgICAgIENsZWFudXBTdGFjazo6UG9wQW5kRGVzdHJveSgpOyAvLyB1cmwNCisgICAgICAg
IH0NCisgICAgfQ0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIEZvY3VzZWRJbWFn
ZUxDKCkNCisvLyBSZXR1cm4gdGhlIGltYWdlIHRoYXQgaXMgdW5kZXIgdGhlIGN1cnNvcg0KKy8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KK1RCckN0bEltYWdlQ2FycmllciogQ1dlYktpdFZpZXc6
OkZvY3VzZWRJbWFnZUxDKCkNCisgICAgew0KKyAgICBpZiAoaUZvY3VzZWRFbGVtZW50VHlwZSAh
PSBUQnJDdGxEZWZzOjpFRWxlbWVudEltYWdlQm94ICYmIGlGb2N1c2VkRWxlbWVudFR5cGUgIT0g
VEJyQ3RsRGVmczo6RUVsZW1lbnRBcmVhQm94KQ0KKyAgICAgICAgew0KKyAgICAgICAgVXNlcjo6
TGVhdmUoS0Vyck5vdFN1cHBvcnRlZCk7DQorICAgICAgICB9DQorICAgIENXZWJLaXRGcmFtZSog
ZnJhbWUgPSBOVUxMOw0KKyAgICBUUG9pbnQgYWJzQ3Vyc29yUG9zOw0KKyAgICBGcmFtZUFuZFBv
aW50VW5kZXJDdXJzb3IoYWJzQ3Vyc29yUG9zLCBmcmFtZSk7DQorICAgIFRCckN0bEltYWdlQ2Fy
cmllciogaW1hZ2VDYXJyaWVyID0gTlVMTDsNCisNCisgICAgVFdlYkNvcmVJbWFnZUNhcnJpZXIq
IHdlYkNvcmVJbWFnZUNhcnJpZXIgPSBOVUxMOw0KKyAgICBUV2ViQ29yZUVycm9yR2V0dGluZ0lt
YWdlIHJldCA9IGZyYW1lLT5XZWJLaXRCcmlkZ2UoKS5XZWJDb3JlQnJpZGdlKCkuRm9jdXNlZElt
YWdlKGFic0N1cnNvclBvcywgd2ViQ29yZUltYWdlQ2Fycmllcik7DQorICAgIGlmIChyZXQgPT0g
RVdlYkNvcmVFcnJvck5vTWVtb3J5KQ0KKyAgICB7DQorICAgICAgICBVc2VyOjpMZWF2ZShLRXJy
Tm9NZW1vcnkpOw0KKyAgICB9DQorICAgIGlmIChyZXQgIT0gRVdlYkNvcmVFcnJvck5vRXJyb3Ip
DQorICAgIHsNCisgICAgICAgIFVzZXI6OkxlYXZlKEtFcnJOb3RTdXBwb3J0ZWQpOw0KKyAgICB9
DQorICAgIGlmICh3ZWJDb3JlSW1hZ2VDYXJyaWVyKQ0KKyAgICAgICAgew0KKyAgICAgICAgVEJy
Q3RsSW1hZ2VUeXBlIGJyQ3RsVHR5cGUoIEVJbWFnZVR5cGVBbnkgKTsNCisgICAgICAgIGlmKCB3
ZWJDb3JlSW1hZ2VDYXJyaWVyLT5JbWFnZVR5cGUoKS5GaW5kKEtNaW1lV0JNUCkgIT0gS0Vyck5v
dEZvdW5kICkNCisgICAgICAgICAgew0KKyAgICAgICAgICBickN0bFR0eXBlID0gRUltYWdlVHlw
ZVdibXA7DQorICAgICAgICAgIH0NCisgICAgICAgIGVsc2UgaWYgKCB3ZWJDb3JlSW1hZ2VDYXJy
aWVyLT5JbWFnZVR5cGUoKS5GaW5kKEtNaW1lT1RBKSAhPSBLRXJyTm90Rm91bmQgKQ0KKyAgICAg
ICAgICB7DQorICAgICAgICAgIGJyQ3RsVHR5cGUgPSBFSW1hZ2VUeXBlT3RhOw0KKyAgICAgICAg
ICB9DQorDQorICAgICAgICBpbWFnZUNhcnJpZXIgPSBuZXcgKEVMZWF2ZSlUQnJDdGxJbWFnZUNh
cnJpZXIod2ViQ29yZUltYWdlQ2Fycmllci0+UmF3RGF0YSgpLCB3ZWJDb3JlSW1hZ2VDYXJyaWVy
LT5VcmwoKSwNCisgICAgICAgICAgICB3ZWJDb3JlSW1hZ2VDYXJyaWVyLT5BbHRUZXh0KCksIGJy
Q3RsVHR5cGUsIHdlYkNvcmVJbWFnZUNhcnJpZXItPkltYWdlVHlwZSgpKTsNCisgICAgICAgIGRl
bGV0ZSB3ZWJDb3JlSW1hZ2VDYXJyaWVyOw0KKyAgICAgICAgd2ViQ29yZUltYWdlQ2FycmllciA9
IE5VTEw7DQorICAgICAgICB9DQorICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgIFVzZXI6
OkxlYXZlKEtFcnJOb01lbW9yeSk7DQorICAgICAgICB9DQorICAgIENsZWFudXBTdGFjazo6UHVz
aEwoaW1hZ2VDYXJyaWVyKTsNCisgICAgcmV0dXJuIGltYWdlQ2FycmllcjsNCisgICAgfQ0KKw0K
Ky8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKy8vIExvYWRGb2N1c2VkSW1hZ2VMKCkNCisvLyBM
b2FkIHRoZSBpbWFnZSB0aGF0IGlzIHVuZGVyIHRoZSBjdXJzb3INCisvLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0NCit2b2lkIENXZWJLaXRWaWV3OjpMb2FkRm9jdXNlZEltYWdlTCgpDQorICAgIHsN
CisgICAgLy8gRW5zdXJlIGN1cnNvciBpcyBvbiBhIGJyb2tlbiBpbWFnZSBhbmQgaW1hZ2UgbG9h
ZGluZyBpcyBkaXNhYmxlZA0KKyAgICBpZiAoaUZvY3VzZWRFbGVtZW50VHlwZSAhPSBUQnJDdGxE
ZWZzOjpFRWxlbWVudEJyb2tlbkltYWdlIHx8IGlXZWJLaXRDb250cm9sLT5HZXRCcm93c2VyU2V0
dGluZ0woVEJyQ3RsRGVmczo6RVNldHRpbmdzQXV0b0xvYWRJbWFnZXMpKQ0KKyAgICAgICAgew0K
KyAgICAgICAgVXNlcjo6TGVhdmUoS0Vyck5vdFN1cHBvcnRlZCk7DQorICAgICAgICB9DQorICAg
IENXZWJLaXRGcmFtZSogZnJhbWUgPSBOVUxMOw0KKyAgICBUUG9pbnQgYWJzQ3Vyc29yUG9zOw0K
KyAgICBGcmFtZUFuZFBvaW50VW5kZXJDdXJzb3IoYWJzQ3Vyc29yUG9zLCBmcmFtZSk7DQorICAg
IGZyYW1lLT5XZWJLaXRCcmlkZ2UoKS5XZWJDb3JlQnJpZGdlKCkuTG9hZEZvY3VzZWRJbWFnZShh
YnNDdXJzb3JQb3MpOw0KKyAgICB9DQorDQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8g
RnJhbWVBbmRQb2ludFVuZGVyQ3Vyc29yKCkNCisvLyBHZXQgdGhlIGZyYW1lIGFuZCB0aGUgcG9p
bnQgYXQgdGhlIGN1cnNvciBwb3NpdGlvbiwgd2hpbGUgdGFraW5nIGludG8gYWNjb3VudCBzY3Jv
bGxpbmcgcG9zaXRpb24gYW5kIHpvbW1pbmcgbGV2ZWwNCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NCit2b2lkIENXZWJLaXRWaWV3OjpGcmFtZUFuZFBvaW50VW5kZXJDdXJzb3IoVFBvaW50JiBh
UG9pbnQsIENXZWJLaXRGcmFtZSomIGFGcmFtZSkNCisgICAgew0KKyAgICBUUG9pbnQgYWJzQ3Vy
c29yUG9zID0gaU1haW5GcmFtZS0+VG9Eb2NDb29yZHMoaUN1cnNvci0+UG9zaXRpb24oKSkgKyBp
TWFpbkZyYW1lLT5Db250ZW50UG9zaXRpb24oKTsNCisgICAgYWJzQ3Vyc29yUG9zID0gaU1haW5G
cmFtZS0+VG9WaWV3Q29vcmRzKGFic0N1cnNvclBvcyk7DQorICAgIENXZWJLaXRGcmFtZSogZnJh
bWUgPSBpTWFpbkZyYW1lLT5GcmFtZUF0UG9pbnQoYWJzQ3Vyc29yUG9zKTsNCisgICAgaWYgKCFm
cmFtZSkgZnJhbWUgPSBpTWFpbkZyYW1lOw0KKyAgICBhYnNDdXJzb3JQb3MgLT0gZnJhbWUtPlJl
Y3RJbkdsb2JhbENvb3JkcygpLmlUbDsNCisgICAgYWJzQ3Vyc29yUG9zID0gaU1haW5GcmFtZS0+
VG9Eb2NDb29yZHMoYWJzQ3Vyc29yUG9zKTsNCisgICAgYVBvaW50ID0gYWJzQ3Vyc29yUG9zOw0K
KyAgICBhRnJhbWUgPSBmcmFtZTsNCisgICAgfQ0KKw0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KKy8vIFJlbW92ZVBvcHVwKCkNCisvLyBEZWxldGUgdGhlIHBvcHVwRHJhd2VyDQorLy8tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tDQordm9pZCBDV2ViS2l0Vmlldzo6UmVtb3ZlUG9wdXAoKQ0KKyAg
ICB7DQorICAgIGRlbGV0ZSBpUG9wdXBEcmF3ZXI7DQorICAgIGlQb3B1cERyYXdlciA9IE5VTEw7
DQorICAgIERyYXdOb3coKTsNCiAgICAgfQ0KIA0KIC8vIGVuZCBvZiBmaWxlDQpJbmRleDogV2Vi
S2l0L2dyb3VwL0Jyb3dzZXJWaWV3Lm1tcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9ncm91cC9C
cm93c2VyVmlldy5tbXAJKHJldmlzaW9uIDE4ODg1KQ0KKysrIFdlYktpdC9ncm91cC9Ccm93c2Vy
Vmlldy5tbXAJKHdvcmtpbmcgY29weSkNCkBAIC03NSw2ICs3NSw3IEBAIFNPVVJDRSAgICAgICAg
ICBXZWJLaXRUb29sQmFySW50ZXJmYWNlLmMNCiBTT1VSQ0UgICAgICAgICAgUGx1Z2luQ29udGVu
dFBsYXllci5jcHANCiBTT1VSQ0UgICAgICAgICAgU21hcnRMaW5rSGFuZGxlci5jcHANCiBTT1VS
Q0UgICAgICAgICAgU21hcnRMaW5rTWFwLmNwcA0KK1NPVVJDRQkJCVBvcHVwRHJhd2VyLmNwcA0K
ICNpZmRlZiAgUkRfQlJPV1NFUl9XSURHRVRTDQogU09VUkNFICAgICAgICAgIFdpZGdldEV4dGVu
c2lvbi5jcHANCiBTT1VSQ0UgICAgICAgICAgV2lkZ2V0UHJlZmVyZW5jZXMuY3BwDQpJbmRleDog
V2ViS2l0L2dyb3VwL0JXSU5TQ1cvV2ViS2l0XzMwVS5kZWYNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvZ3JvdXAvQldJTlNDVy9XZWJLaXRfMzBVLmRlZgkocmV2aXNpb24gMTg4ODUpDQorKysgV2Vi
S2l0L2dyb3VwL0JXSU5TQ1cvV2ViS2l0XzMwVS5kZWYJKHdvcmtpbmcgY29weSkNCkBAIC0xLDQ0
ICsxLDQ1IEBADQogRVhQT1JUUw0KLQk/PzFDQnJDdGxAQFVBRUBYWiBAIDEgTk9OQU1FIDsgQ0Jy
Q3RsOjp+Q0JyQ3RsKHZvaWQpDQotCT9BZGRMb2FkRXZlbnRPYnNlcnZlckxAQ0JyQ3RsQEBVQUVY
UEFWTUJyQ3RsTG9hZEV2ZW50T2JzZXJ2ZXJAQEBaIEAgMiBOT05BTUUgOyB2b2lkIENCckN0bDo6
QWRkTG9hZEV2ZW50T2JzZXJ2ZXJMKGNsYXNzIE1CckN0bExvYWRFdmVudE9ic2VydmVyICopDQot
CT9BZGRPcHRpb25NZW51SXRlbXNMQENCckN0bEBAVUFFWEFBVkNFaWtNZW51UGFuZUBASEhAWiBA
IDMgTk9OQU1FIDsgdm9pZCBDQnJDdGw6OkFkZE9wdGlvbk1lbnVJdGVtc0woY2xhc3MgQ0Vpa01l
bnVQYW5lICYsIGludCwgaW50KQ0KLQk/QWRkU3RhdGVDaGFuZ2VPYnNlcnZlckxAQ0JyQ3RsQEBV
QUVYUEFWTUJyQ3RsU3RhdGVDaGFuZ2VPYnNlcnZlckBAQFogQCA0IE5PTkFNRSA7IHZvaWQgQ0Jy
Q3RsOjpBZGRTdGF0ZUNoYW5nZU9ic2VydmVyTChjbGFzcyBNQnJDdGxTdGF0ZUNoYW5nZU9ic2Vy
dmVyICopDQotCT9Ccm93c2VyU2V0dGluZ0xAQ0JyQ3RsQEBVQUVJSUBaIEAgNSBOT05BTUUgOyB1
bnNpZ25lZCBpbnQgQ0JyQ3RsOjpCcm93c2VyU2V0dGluZ0wodW5zaWduZWQgaW50KQ0KLQk/Q2Vy
dEluZm9AQ0JyQ3RsQEBVQUVQQlZUQ2VydEluZm9AQFhaIEAgNiBOT05BTUUgOyBjbGFzcyBUQ2Vy
dEluZm8gY29uc3QgKiBDQnJDdGw6OkNlcnRJbmZvKHZvaWQpDQotCT9DbGVhckNhY2hlQENCckN0
bEBAVUFFSVhaIEAgNyBOT05BTUUgOyB1bnNpZ25lZCBpbnQgQ0JyQ3RsOjpDbGVhckNhY2hlKHZv
aWQpDQotCT9DbGVhckl0ZW1JbkNhY2hlQENCckN0bEBAVUFFSEFBVlREZXNDMTZAQEBaIEAgOCBO
T05BTUUgOyBpbnQgQ0JyQ3RsOjpDbGVhckl0ZW1JbkNhY2hlKGNsYXNzIFREZXNDMTYgJikNCi0J
P0NvbnRlbnRTaXplQENCckN0bEBAVUFFP0FWVFNpemVAQFhaIEAgOSBOT05BTUUgOyBjbGFzcyBU
U2l6ZSBDQnJDdGw6OkNvbnRlbnRTaXplKHZvaWQpDQotCT9DcmVhdGVCcm93c2VyQ29udHJvbExA
QFlBUEFWQ0JyQ3RsSW50ZXJmYWNlQEBQQVZDQ29lQ29udHJvbEBAVlRSZWN0QEBJSVBBVk1CckN0
bFNvZnRrZXlzT2JzZXJ2ZXJAQFBBVk1CckN0bExpbmtSZXNvbHZlckBAUEFWTUJyQ3RsU3BlY2lh
bExvYWRPYnNlcnZlckBAUEFWTUJyQ3RsTGF5b3V0T2JzZXJ2ZXJAQFBBVk1CckN0bERpYWxvZ3NQ
cm92aWRlckBAUEFWTUJyQ3RsV2luZG93T2JzZXJ2ZXJAQFBBVk1CckN0bERvd25sb2FkT2JzZXJ2
ZXJAQEBaIEAgMTAgTk9OQU1FIDsgY2xhc3MgQ0JyQ3RsSW50ZXJmYWNlICogQ3JlYXRlQnJvd3Nl
ckNvbnRyb2xMKGNsYXNzIENDb2VDb250cm9sICosIGNsYXNzIFRSZWN0LCB1bnNpZ25lZCBpbnQs
IHVuc2lnbmVkIGludCwgY2xhc3MgTUJyQ3RsU29mdGtleXNPYnNlcnZlciAqLCBjbGFzcyBNQnJD
dGxMaW5rUmVzb2x2ZXIgKiwgY2xhc3MgTUJyQ3RsU3BlY2lhbExvYWRPYnNlcnZlciAqLCBjbGFz
cyBNQnJDdGxMYXlvdXRPYnNlcnZlciAqLCBjbGFzcyBNQnJDdGxEaWFsb2dzUHJvdmlkZXIgKiwg
Y2xhc3MgTUJyQ3RsV2luZG93T2JzZXJ2ZXIgKiwgY2xhc3MgTUJyQ3RsRG93bmxvYWRPYnNlcnZl
ciAqKQ0KLQk/RmluZEtleXdvcmRAQ0JyQ3RsQEBVQUVIQUJWVERlc0MxNkBAQFogQCAxMSBOT05B
TUUgOyBpbnQgQ0JyQ3RsOjpGaW5kS2V5d29yZChjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9G
aW5kS2V5d29yZEFnYWluQENCckN0bEBAVUFFP0FXNFRCckN0bEZpbmRSZXNwb25zZUBUQnJDdGxE
ZWZzQEBIQFogQCAxMiBOT05BTUUgOyBlbnVtIFRCckN0bERlZnM6OlRCckN0bEZpbmRSZXNwb25z
ZSBDQnJDdGw6OkZpbmRLZXl3b3JkQWdhaW4oaW50KQ0KLQk/Rm9jdXNlZEVsZW1lbnRUeXBlQENC
ckN0bEBAVUFFP0FXNFRCckN0bEVsZW1lbnRUeXBlQFRCckN0bERlZnNAQFhaIEAgMTMgTk9OQU1F
IDsgZW51bSBUQnJDdGxEZWZzOjpUQnJDdGxFbGVtZW50VHlwZSBDQnJDdGw6OkZvY3VzZWRFbGVt
ZW50VHlwZSh2b2lkKQ0KLQk/SGFuZGxlQ29tbWFuZExAQ0JyQ3RsQEBVQUVYSEBaIEAgMTQgTk9O
QU1FIDsgdm9pZCBDQnJDdGw6OkhhbmRsZUNvbW1hbmRMKGludCkNCi0JP0hhbmRsZURvd25sb2Fk
Q29tbWFuZExAQ0JyQ3RsQEBVQUVYR1c0VEJyQ3RsRG93bmxvYWRDbWRAVEJyQ3RsRGVmc0BAQFog
QCAxNSBOT05BTUUgOyB2b2lkIENCckN0bDo6SGFuZGxlRG93bmxvYWRDb21tYW5kTCh1bnNpZ25l
ZCBzaG9ydCwgZW51bSBUQnJDdGxEZWZzOjpUQnJDdGxEb3dubG9hZENtZCkNCi0JP0ltYWdlQ291
bnRMQENCckN0bEBAVUFFSFhaIEAgMTYgTk9OQU1FIDsgaW50IENCckN0bDo6SW1hZ2VDb3VudEwo
dm9pZCkNCi0JP0luaXRMb2FkRGF0YUxAQ0JyQ3RsQEBVQUVYQUJWVERlc0MxNkBAQUJWVERhdGFU
eXBlQEBWVFVpZEBASVBBVk1CckN0bERhdGFMb2FkU3VwcGxpZXJAQFBBUEFWTUJyQ3RsRGF0YUxv
YWRDb25zdW1lckBAQFogQCAxNyBOT05BTUUgOyB2b2lkIENCckN0bDo6SW5pdExvYWREYXRhTChj
bGFzcyBURGVzQzE2IGNvbnN0ICYsIGNsYXNzIFREYXRhVHlwZSBjb25zdCAmLCBjbGFzcyBUVWlk
LCB1bnNpZ25lZCBpbnQsIGNsYXNzIE1CckN0bERhdGFMb2FkU3VwcGxpZXIgKiwgY2xhc3MgTUJy
Q3RsRGF0YUxvYWRDb25zdW1lciAqICopDQotCT9Jc1VybEluQ2FjaGVAQ0JyQ3RsQEBVQUVIQUFW
VERlc0MxNkBAQFogQCAxOCBOT05BTUUgOyBpbnQgQ0JyQ3RsOjpJc1VybEluQ2FjaGUoY2xhc3Mg
VERlc0MxNiAmKQ0KLQk/TG9hZERhdGFMQENCckN0bEBAVUFFWEFCVlREZXNDMTZAQEFCVlREZXND
OEBAQUJWVERhdGFUeXBlQEBWVFVpZEBAQFogQCAxOSBOT05BTUUgOyB2b2lkIENCckN0bDo6TG9h
ZERhdGFMKGNsYXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0M4IGNvbnN0ICYsIGNsYXNz
IFREYXRhVHlwZSBjb25zdCAmLCBjbGFzcyBUVWlkKQ0KLQk/TG9hZEZpbGVMQENCckN0bEBAVUFF
WEFBVlJGaWxlQEBAWiBAIDIwIE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpMb2FkRmlsZUwoY2xhc3Mg
UkZpbGUgJikNCi0JP0xvYWRGaWxlTEBDQnJDdGxAQFVBRVhBQlZURGVzQzE2QEBAWiBAIDIxIE5P
TkFNRSA7IHZvaWQgQ0JyQ3RsOjpMb2FkRmlsZUwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/
TG9hZFNhdmVkUGFnZUxAQ0JyQ3RsQEBVQUVYQUJWVERlc0MxNkBAQUFWMkBAWiBAIDIyIE5PTkFN
RSA7IHZvaWQgQ0JyQ3RsOjpMb2FkU2F2ZWRQYWdlTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNs
YXNzIFREZXNDMTYgJikNCi0JP0xvYWRVcmxMQENCckN0bEBAVUFFWEFCVlREZXNDMTZAQEhXNFRC
ckN0bENhY2hlTW9kZUBUQnJDdGxEZWZzQEBAWiBAIDIzIE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpM
b2FkVXJsTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgZW51bSBUQnJDdGxEZWZzOjpUQnJD
dGxDYWNoZU1vZGUpDQotCT9NaW5pbXVtU2l6ZUBDQnJDdGxAQFVBRT9BVlRTaXplQEBYWiBAIDI0
IE5PTkFNRSA7IGNsYXNzIFRTaXplIENCckN0bDo6TWluaW11bVNpemUodm9pZCkNCi0JP05hdmln
YXRpb25BdmFpbGFibGVAQ0JyQ3RsQEBVQUVIVzRUQnJDdGxOYXZpZ2F0aW9uRGlyZWN0aW9uQFRC
ckN0bERlZnNAQEBaIEAgMjUgTk9OQU1FIDsgaW50IENCckN0bDo6TmF2aWdhdGlvbkF2YWlsYWJs
ZShlbnVtIFRCckN0bERlZnM6OlRCckN0bE5hdmlnYXRpb25EaXJlY3Rpb24pDQotCT9PZmZlcktl
eUV2ZW50TEBDQnJDdGxAQFVBRT9BVzRUS2V5UmVzcG9uc2VAQEFCVVRLZXlFdmVudEBAVzRURXZl
bnRDb2RlQEBAWiBAIDI2IE5PTkFNRSA7IGVudW0gVEtleVJlc3BvbnNlIENCckN0bDo6T2ZmZXJL
ZXlFdmVudEwoc3RydWN0IFRLZXlFdmVudCBjb25zdCAmLCBlbnVtIFRFdmVudENvZGUpDQotCT9P
a1RvRXhpdEBDQnJDdGxAQFVBRUhYWiBAIDI3IE5PTkFNRSA7IGludCBDQnJDdGw6Ok9rVG9FeGl0
KHZvaWQpDQotCT9QYWdlSW5mb0xDQENCckN0bEBAVUFFUEFWSEJ1ZkMxNkBAVzRUQnJDdGxQYWdl
SW5mb0BUQnJDdGxEZWZzQEBAWiBAIDI4IE5PTkFNRSA7IGNsYXNzIEhCdWZDMTYgKiBDQnJDdGw6
OlBhZ2VJbmZvTEMoZW51bSBUQnJDdGxEZWZzOjpUQnJDdGxQYWdlSW5mbykNCi0JP1JlbW92ZUxv
YWRFdmVudE9ic2VydmVyQENCckN0bEBAVUFFWFBBVk1CckN0bExvYWRFdmVudE9ic2VydmVyQEBA
WiBAIDI5IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpSZW1vdmVMb2FkRXZlbnRPYnNlcnZlcihjbGFz
cyBNQnJDdGxMb2FkRXZlbnRPYnNlcnZlciAqKQ0KLQk/UmVtb3ZlU3RhdGVDaGFuZ2VPYnNlcnZl
ckBDQnJDdGxAQFVBRVhQQVZNQnJDdGxTdGF0ZUNoYW5nZU9ic2VydmVyQEBAWiBAIDMwIE5PTkFN
RSA7IHZvaWQgQ0JyQ3RsOjpSZW1vdmVTdGF0ZUNoYW5nZU9ic2VydmVyKGNsYXNzIE1CckN0bFN0
YXRlQ2hhbmdlT2JzZXJ2ZXIgKikNCi0JP1NhdmVUb0ZpbGVMQENCckN0bEBAVUFFR0FCVlREZXND
MTZAQEBaIEAgMzEgTk9OQU1FIDsgdW5zaWduZWQgc2hvcnQgQ0JyQ3RsOjpTYXZlVG9GaWxlTChj
bGFzcyBURGVzQzE2IGNvbnN0ICYpDQotCT9TZXRCcm93c2VyU2V0dGluZ0xAQ0JyQ3RsQEBVQUVY
SUlAWiBAIDMyIE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpTZXRCcm93c2VyU2V0dGluZ0wodW5zaWdu
ZWQgaW50LCB1bnNpZ25lZCBpbnQpDQotCT9TZXRGb2N1c0BDQnJDdGxAQFVBRVhIVzRURHJhd05v
d0BAQFogQCAzMyBOT05BTUUgOyB2b2lkIENCckN0bDo6U2V0Rm9jdXMoaW50LCBlbnVtIFREcmF3
Tm93KQ0KLQk/U2V0UGFyYW1MQENCckN0bEBAVUFFWFc0VEJyQ3RsUGFyYW1zQFRCckN0bERlZnNA
QEFCVlREZXNDMTZAQEBaIEAgMzQgTk9OQU1FIDsgdm9pZCBDQnJDdGw6OlNldFBhcmFtTChlbnVt
IFRCckN0bERlZnM6OlRCckN0bFBhcmFtcywgY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KLQk/U2V0
U2VsZkRvd25sb2FkQ29udGVudFR5cGVzTEBDQnJDdGxAQFVBRVhBQVZURGVzQzE2QEBAWiBAIDM1
IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpTZXRTZWxmRG93bmxvYWRDb250ZW50VHlwZXNMKGNsYXNz
IFREZXNDMTYgJikNCi0JP1ZlcnNpb25JbmZvTENAQ0JyQ3RsQEBVQUVQQVZIQnVmQzE2QEBXNFRC
ckN0bFZlcnNpb25JbmZvQFRCckN0bERlZnNAQEBaIEAgMzYgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMx
NiAqIENCckN0bDo6VmVyc2lvbkluZm9MQyhlbnVtIFRCckN0bERlZnM6OlRCckN0bFZlcnNpb25J
bmZvKQ0KLQk/V01MT3B0aW9uTWVudUl0ZW1zTEBDQnJDdGxAQFVBRVBBVj8kUlBvaW50ZXJBcnJh
eUBWVEJyQ3RsV21sU2VydmljZU9wdGlvbkBAQEBYWiBAIDM3IE5PTkFNRSA7IGNsYXNzIFJQb2lu
dGVyQXJyYXk8Y2xhc3MgVEJyQ3RsV21sU2VydmljZU9wdGlvbj4gKiBDQnJDdGw6OldNTE9wdGlv
bk1lbnVJdGVtc0wodm9pZCkNCi0JP1pvb21MZXZlbHNAQ0JyQ3RsQEBVQkVQQVY/JFJBcnJheUBJ
QEBYWiBAIDM4IE5PTkFNRSA7IGNsYXNzIFJBcnJheTx1bnNpZ25lZCBpbnQ+ICogQ0JyQ3RsOjpa
b29tTGV2ZWxzKHZvaWQpIGNvbnN0DQotCT9TdWJzY3JpYmVUb01lbnVJdGVtc0xAQ0JyQ3RsQEBV
QUVBQlY/JFJQb2ludGVyQXJyYXlAVlRCckN0bFN1YnNjcmliZVRvQEBAQFhaIEAgMzkgTk9OQU1F
IDsgY2xhc3MgUlBvaW50ZXJBcnJheTxjbGFzcyBUQnJDdGxTdWJzY3JpYmVUbz4gY29uc3QgJiBD
QnJDdGw6OlN1YnNjcmliZVRvTWVudUl0ZW1zTCh2b2lkKQ0KLQk/R2V0Qml0bWFwRGF0YUBDQnJD
dGxAQFVBRVBBVkNHdWxJY29uQEBBQlZURGVzQzE2QEBXNFRCckN0bEJpdG1hcEluZm9AVEJyQ3Rs
RGVmc0BAQFogQCA0MCBOT05BTUUgOyBjbGFzcyBDR3VsSWNvbiAqIENCckN0bDo6R2V0Qml0bWFw
RGF0YShjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGVudW0gVEJyQ3RsRGVmczo6VEJyQ3RsQml0bWFw
SW5mbykNCi0JP0FkZENvbW1hbmRPYnNlcnZlckxAQ0JyQ3RsQEBVQUVYUEFWTUJyQ3RsQ29tbWFu
ZE9ic2VydmVyQEBAWiBAIDQxIE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpBZGRDb21tYW5kT2JzZXJ2
ZXJMKGNsYXNzIE1CckN0bENvbW1hbmRPYnNlcnZlciAqKQ0KLQk/UmVtb3ZlQ29tbWFuZE9ic2Vy
dmVyQENCckN0bEBAVUFFWFBBVk1CckN0bENvbW1hbmRPYnNlcnZlckBAQFogQCA0MiBOT05BTUUg
OyB2b2lkIENCckN0bDo6UmVtb3ZlQ29tbWFuZE9ic2VydmVyKGNsYXNzIE1CckN0bENvbW1hbmRP
YnNlcnZlciAqKQ0KKyAgICA/PzFDQnJDdGxAQFVBRUBYWiBAIDEgTk9OQU1FIDsgQ0JyQ3RsOjp+
Q0JyQ3RsKHZvaWQpDQorICAgID9BZGRMb2FkRXZlbnRPYnNlcnZlckxAQ0JyQ3RsQEBVQUVYUEFW
TUJyQ3RsTG9hZEV2ZW50T2JzZXJ2ZXJAQEBaIEAgMiBOT05BTUUgOyB2b2lkIENCckN0bDo6QWRk
TG9hZEV2ZW50T2JzZXJ2ZXJMKGNsYXNzIE1CckN0bExvYWRFdmVudE9ic2VydmVyICopDQorICAg
ID9BZGRPcHRpb25NZW51SXRlbXNMQENCckN0bEBAVUFFWEFBVkNFaWtNZW51UGFuZUBASEhAWiBA
IDMgTk9OQU1FIDsgdm9pZCBDQnJDdGw6OkFkZE9wdGlvbk1lbnVJdGVtc0woY2xhc3MgQ0Vpa01l
bnVQYW5lICYsIGludCwgaW50KQ0KKyAgICA/QWRkU3RhdGVDaGFuZ2VPYnNlcnZlckxAQ0JyQ3Rs
QEBVQUVYUEFWTUJyQ3RsU3RhdGVDaGFuZ2VPYnNlcnZlckBAQFogQCA0IE5PTkFNRSA7IHZvaWQg
Q0JyQ3RsOjpBZGRTdGF0ZUNoYW5nZU9ic2VydmVyTChjbGFzcyBNQnJDdGxTdGF0ZUNoYW5nZU9i
c2VydmVyICopDQorICAgID9Ccm93c2VyU2V0dGluZ0xAQ0JyQ3RsQEBVQUVJSUBaIEAgNSBOT05B
TUUgOyB1bnNpZ25lZCBpbnQgQ0JyQ3RsOjpCcm93c2VyU2V0dGluZ0wodW5zaWduZWQgaW50KQ0K
KyAgICA/Q2VydEluZm9AQ0JyQ3RsQEBVQUVQQlZUQ2VydEluZm9AQFhaIEAgNiBOT05BTUUgOyBj
bGFzcyBUQ2VydEluZm8gY29uc3QgKiBDQnJDdGw6OkNlcnRJbmZvKHZvaWQpDQorICAgID9DbGVh
ckNhY2hlQENCckN0bEBAVUFFSVhaIEAgNyBOT05BTUUgOyB1bnNpZ25lZCBpbnQgQ0JyQ3RsOjpD
bGVhckNhY2hlKHZvaWQpDQorICAgID9DbGVhckl0ZW1JbkNhY2hlQENCckN0bEBAVUFFSEFBVlRE
ZXNDMTZAQEBaIEAgOCBOT05BTUUgOyBpbnQgQ0JyQ3RsOjpDbGVhckl0ZW1JbkNhY2hlKGNsYXNz
IFREZXNDMTYgJikNCisgICAgP0NvbnRlbnRTaXplQENCckN0bEBAVUFFP0FWVFNpemVAQFhaIEAg
OSBOT05BTUUgOyBjbGFzcyBUU2l6ZSBDQnJDdGw6OkNvbnRlbnRTaXplKHZvaWQpDQorICAgID9D
cmVhdGVCcm93c2VyQ29udHJvbExAQFlBUEFWQ0JyQ3RsSW50ZXJmYWNlQEBQQVZDQ29lQ29udHJv
bEBAVlRSZWN0QEBJSVBBVk1CckN0bFNvZnRrZXlzT2JzZXJ2ZXJAQFBBVk1CckN0bExpbmtSZXNv
bHZlckBAUEFWTUJyQ3RsU3BlY2lhbExvYWRPYnNlcnZlckBAUEFWTUJyQ3RsTGF5b3V0T2JzZXJ2
ZXJAQFBBVk1CckN0bERpYWxvZ3NQcm92aWRlckBAUEFWTUJyQ3RsV2luZG93T2JzZXJ2ZXJAQFBB
Vk1CckN0bERvd25sb2FkT2JzZXJ2ZXJAQEBaIEAgMTAgTk9OQU1FIDsgY2xhc3MgQ0JyQ3RsSW50
ZXJmYWNlICogQ3JlYXRlQnJvd3NlckNvbnRyb2xMKGNsYXNzIENDb2VDb250cm9sICosIGNsYXNz
IFRSZWN0LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgY2xhc3MgTUJyQ3RsU29mdGtleXNP
YnNlcnZlciAqLCBjbGFzcyBNQnJDdGxMaW5rUmVzb2x2ZXIgKiwgY2xhc3MgTUJyQ3RsU3BlY2lh
bExvYWRPYnNlcnZlciAqLCBjbGFzcyBNQnJDdGxMYXlvdXRPYnNlcnZlciAqLCBjbGFzcyBNQnJD
dGxEaWFsb2dzUHJvdmlkZXIgKiwgY2xhc3MgTUJyQ3RsV2luZG93T2JzZXJ2ZXIgKiwgY2xhc3Mg
TUJyQ3RsRG93bmxvYWRPYnNlcnZlciAqKQ0KKyAgICA/RmluZEtleXdvcmRAQ0JyQ3RsQEBVQUVI
QUJWVERlc0MxNkBAQFogQCAxMSBOT05BTUUgOyBpbnQgQ0JyQ3RsOjpGaW5kS2V5d29yZChjbGFz
cyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9GaW5kS2V5d29yZEFnYWluQENCckN0bEBAVUFFP0FX
NFRCckN0bEZpbmRSZXNwb25zZUBUQnJDdGxEZWZzQEBIQFogQCAxMiBOT05BTUUgOyBlbnVtIFRC
ckN0bERlZnM6OlRCckN0bEZpbmRSZXNwb25zZSBDQnJDdGw6OkZpbmRLZXl3b3JkQWdhaW4oaW50
KQ0KKyAgICA/Rm9jdXNlZEVsZW1lbnRUeXBlQENCckN0bEBAVUFFP0FXNFRCckN0bEVsZW1lbnRU
eXBlQFRCckN0bERlZnNAQFhaIEAgMTMgTk9OQU1FIDsgZW51bSBUQnJDdGxEZWZzOjpUQnJDdGxF
bGVtZW50VHlwZSBDQnJDdGw6OkZvY3VzZWRFbGVtZW50VHlwZSh2b2lkKQ0KKyAgICA/SGFuZGxl
Q29tbWFuZExAQ0JyQ3RsQEBVQUVYSEBaIEAgMTQgTk9OQU1FIDsgdm9pZCBDQnJDdGw6OkhhbmRs
ZUNvbW1hbmRMKGludCkNCisgICAgP0hhbmRsZURvd25sb2FkQ29tbWFuZExAQ0JyQ3RsQEBVQUVY
R1c0VEJyQ3RsRG93bmxvYWRDbWRAVEJyQ3RsRGVmc0BAQFogQCAxNSBOT05BTUUgOyB2b2lkIENC
ckN0bDo6SGFuZGxlRG93bmxvYWRDb21tYW5kTCh1bnNpZ25lZCBzaG9ydCwgZW51bSBUQnJDdGxE
ZWZzOjpUQnJDdGxEb3dubG9hZENtZCkNCisgICAgP0ltYWdlQ291bnRMQENCckN0bEBAVUFFSFha
IEAgMTYgTk9OQU1FIDsgaW50IENCckN0bDo6SW1hZ2VDb3VudEwodm9pZCkNCisgICAgP0luaXRM
b2FkRGF0YUxAQ0JyQ3RsQEBVQUVYQUJWVERlc0MxNkBAQUJWVERhdGFUeXBlQEBWVFVpZEBASVBB
Vk1CckN0bERhdGFMb2FkU3VwcGxpZXJAQFBBUEFWTUJyQ3RsRGF0YUxvYWRDb25zdW1lckBAQFog
QCAxNyBOT05BTUUgOyB2b2lkIENCckN0bDo6SW5pdExvYWREYXRhTChjbGFzcyBURGVzQzE2IGNv
bnN0ICYsIGNsYXNzIFREYXRhVHlwZSBjb25zdCAmLCBjbGFzcyBUVWlkLCB1bnNpZ25lZCBpbnQs
IGNsYXNzIE1CckN0bERhdGFMb2FkU3VwcGxpZXIgKiwgY2xhc3MgTUJyQ3RsRGF0YUxvYWRDb25z
dW1lciAqICopDQorICAgID9Jc1VybEluQ2FjaGVAQ0JyQ3RsQEBVQUVIQUFWVERlc0MxNkBAQFog
QCAxOCBOT05BTUUgOyBpbnQgQ0JyQ3RsOjpJc1VybEluQ2FjaGUoY2xhc3MgVERlc0MxNiAmKQ0K
KyAgICA/TG9hZERhdGFMQENCckN0bEBAVUFFWEFCVlREZXNDMTZAQEFCVlREZXNDOEBAQUJWVERh
dGFUeXBlQEBWVFVpZEBAQFogQCAxOSBOT05BTUUgOyB2b2lkIENCckN0bDo6TG9hZERhdGFMKGNs
YXNzIFREZXNDMTYgY29uc3QgJiwgY2xhc3MgVERlc0M4IGNvbnN0ICYsIGNsYXNzIFREYXRhVHlw
ZSBjb25zdCAmLCBjbGFzcyBUVWlkKQ0KKyAgICA/TG9hZEZpbGVMQENCckN0bEBAVUFFWEFBVlJG
aWxlQEBAWiBAIDIwIE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpMb2FkRmlsZUwoY2xhc3MgUkZpbGUg
JikNCisgICAgP0xvYWRGaWxlTEBDQnJDdGxAQFVBRVhBQlZURGVzQzE2QEBAWiBAIDIxIE5PTkFN
RSA7IHZvaWQgQ0JyQ3RsOjpMb2FkRmlsZUwoY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/
TG9hZFNhdmVkUGFnZUxAQ0JyQ3RsQEBVQUVYQUJWVERlc0MxNkBAQUFWMkBAWiBAIDIyIE5PTkFN
RSA7IHZvaWQgQ0JyQ3RsOjpMb2FkU2F2ZWRQYWdlTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGNs
YXNzIFREZXNDMTYgJikNCisgICAgP0xvYWRVcmxMQENCckN0bEBAVUFFWEFCVlREZXNDMTZAQEhX
NFRCckN0bENhY2hlTW9kZUBUQnJDdGxEZWZzQEBAWiBAIDIzIE5PTkFNRSA7IHZvaWQgQ0JyQ3Rs
OjpMb2FkVXJsTChjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGludCwgZW51bSBUQnJDdGxEZWZzOjpU
QnJDdGxDYWNoZU1vZGUpDQorICAgID9NaW5pbXVtU2l6ZUBDQnJDdGxAQFVBRT9BVlRTaXplQEBY
WiBAIDI0IE5PTkFNRSA7IGNsYXNzIFRTaXplIENCckN0bDo6TWluaW11bVNpemUodm9pZCkNCisg
ICAgP05hdmlnYXRpb25BdmFpbGFibGVAQ0JyQ3RsQEBVQUVIVzRUQnJDdGxOYXZpZ2F0aW9uRGly
ZWN0aW9uQFRCckN0bERlZnNAQEBaIEAgMjUgTk9OQU1FIDsgaW50IENCckN0bDo6TmF2aWdhdGlv
bkF2YWlsYWJsZShlbnVtIFRCckN0bERlZnM6OlRCckN0bE5hdmlnYXRpb25EaXJlY3Rpb24pDQor
ICAgID9PZmZlcktleUV2ZW50TEBDQnJDdGxAQFVBRT9BVzRUS2V5UmVzcG9uc2VAQEFCVVRLZXlF
dmVudEBAVzRURXZlbnRDb2RlQEBAWiBAIDI2IE5PTkFNRSA7IGVudW0gVEtleVJlc3BvbnNlIENC
ckN0bDo6T2ZmZXJLZXlFdmVudEwoc3RydWN0IFRLZXlFdmVudCBjb25zdCAmLCBlbnVtIFRFdmVu
dENvZGUpDQorICAgID9Pa1RvRXhpdEBDQnJDdGxAQFVBRUhYWiBAIDI3IE5PTkFNRSA7IGludCBD
QnJDdGw6Ok9rVG9FeGl0KHZvaWQpDQorICAgID9QYWdlSW5mb0xDQENCckN0bEBAVUFFUEFWSEJ1
ZkMxNkBAVzRUQnJDdGxQYWdlSW5mb0BUQnJDdGxEZWZzQEBAWiBAIDI4IE5PTkFNRSA7IGNsYXNz
IEhCdWZDMTYgKiBDQnJDdGw6OlBhZ2VJbmZvTEMoZW51bSBUQnJDdGxEZWZzOjpUQnJDdGxQYWdl
SW5mbykNCisgICAgP1JlbW92ZUxvYWRFdmVudE9ic2VydmVyQENCckN0bEBAVUFFWFBBVk1CckN0
bExvYWRFdmVudE9ic2VydmVyQEBAWiBAIDI5IE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpSZW1vdmVM
b2FkRXZlbnRPYnNlcnZlcihjbGFzcyBNQnJDdGxMb2FkRXZlbnRPYnNlcnZlciAqKQ0KKyAgICA/
UmVtb3ZlU3RhdGVDaGFuZ2VPYnNlcnZlckBDQnJDdGxAQFVBRVhQQVZNQnJDdGxTdGF0ZUNoYW5n
ZU9ic2VydmVyQEBAWiBAIDMwIE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpSZW1vdmVTdGF0ZUNoYW5n
ZU9ic2VydmVyKGNsYXNzIE1CckN0bFN0YXRlQ2hhbmdlT2JzZXJ2ZXIgKikNCisgICAgP1NhdmVU
b0ZpbGVMQENCckN0bEBAVUFFR0FCVlREZXNDMTZAQEBaIEAgMzEgTk9OQU1FIDsgdW5zaWduZWQg
c2hvcnQgQ0JyQ3RsOjpTYXZlVG9GaWxlTChjbGFzcyBURGVzQzE2IGNvbnN0ICYpDQorICAgID9T
ZXRCcm93c2VyU2V0dGluZ0xAQ0JyQ3RsQEBVQUVYSUlAWiBAIDMyIE5PTkFNRSA7IHZvaWQgQ0Jy
Q3RsOjpTZXRCcm93c2VyU2V0dGluZ0wodW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpDQorICAg
ID9TZXRGb2N1c0BDQnJDdGxAQFVBRVhIVzRURHJhd05vd0BAQFogQCAzMyBOT05BTUUgOyB2b2lk
IENCckN0bDo6U2V0Rm9jdXMoaW50LCBlbnVtIFREcmF3Tm93KQ0KKyAgICA/U2V0UGFyYW1MQENC
ckN0bEBAVUFFWFc0VEJyQ3RsUGFyYW1zQFRCckN0bERlZnNAQEFCVlREZXNDMTZAQEBaIEAgMzQg
Tk9OQU1FIDsgdm9pZCBDQnJDdGw6OlNldFBhcmFtTChlbnVtIFRCckN0bERlZnM6OlRCckN0bFBh
cmFtcywgY2xhc3MgVERlc0MxNiBjb25zdCAmKQ0KKyAgICA/U2V0U2VsZkRvd25sb2FkQ29udGVu
dFR5cGVzTEBDQnJDdGxAQFVBRVhBQVZURGVzQzE2QEBAWiBAIDM1IE5PTkFNRSA7IHZvaWQgQ0Jy
Q3RsOjpTZXRTZWxmRG93bmxvYWRDb250ZW50VHlwZXNMKGNsYXNzIFREZXNDMTYgJikNCisgICAg
P1ZlcnNpb25JbmZvTENAQ0JyQ3RsQEBVQUVQQVZIQnVmQzE2QEBXNFRCckN0bFZlcnNpb25JbmZv
QFRCckN0bERlZnNAQEBaIEAgMzYgTk9OQU1FIDsgY2xhc3MgSEJ1ZkMxNiAqIENCckN0bDo6VmVy
c2lvbkluZm9MQyhlbnVtIFRCckN0bERlZnM6OlRCckN0bFZlcnNpb25JbmZvKQ0KKyAgICA/V01M
T3B0aW9uTWVudUl0ZW1zTEBDQnJDdGxAQFVBRVBBVj8kUlBvaW50ZXJBcnJheUBWVEJyQ3RsV21s
U2VydmljZU9wdGlvbkBAQEBYWiBAIDM3IE5PTkFNRSA7IGNsYXNzIFJQb2ludGVyQXJyYXk8Y2xh
c3MgVEJyQ3RsV21sU2VydmljZU9wdGlvbj4gKiBDQnJDdGw6OldNTE9wdGlvbk1lbnVJdGVtc0wo
dm9pZCkNCisgICAgP1pvb21MZXZlbHNAQ0JyQ3RsQEBVQkVQQVY/JFJBcnJheUBJQEBYWiBAIDM4
IE5PTkFNRSA7IGNsYXNzIFJBcnJheTx1bnNpZ25lZCBpbnQ+ICogQ0JyQ3RsOjpab29tTGV2ZWxz
KHZvaWQpIGNvbnN0DQorICAgID9TdWJzY3JpYmVUb01lbnVJdGVtc0xAQ0JyQ3RsQEBVQUVBQlY/
JFJQb2ludGVyQXJyYXlAVlRCckN0bFN1YnNjcmliZVRvQEBAQFhaIEAgMzkgTk9OQU1FIDsgY2xh
c3MgUlBvaW50ZXJBcnJheTxjbGFzcyBUQnJDdGxTdWJzY3JpYmVUbz4gY29uc3QgJiBDQnJDdGw6
OlN1YnNjcmliZVRvTWVudUl0ZW1zTCh2b2lkKQ0KKyAgICA/R2V0Qml0bWFwRGF0YUBDQnJDdGxA
QFVBRVBBVkNHdWxJY29uQEBBQlZURGVzQzE2QEBXNFRCckN0bEJpdG1hcEluZm9AVEJyQ3RsRGVm
c0BAQFogQCA0MCBOT05BTUUgOyBjbGFzcyBDR3VsSWNvbiAqIENCckN0bDo6R2V0Qml0bWFwRGF0
YShjbGFzcyBURGVzQzE2IGNvbnN0ICYsIGVudW0gVEJyQ3RsRGVmczo6VEJyQ3RsQml0bWFwSW5m
bykNCisgICAgP0FkZENvbW1hbmRPYnNlcnZlckxAQ0JyQ3RsQEBVQUVYUEFWTUJyQ3RsQ29tbWFu
ZE9ic2VydmVyQEBAWiBAIDQxIE5PTkFNRSA7IHZvaWQgQ0JyQ3RsOjpBZGRDb21tYW5kT2JzZXJ2
ZXJMKGNsYXNzIE1CckN0bENvbW1hbmRPYnNlcnZlciAqKQ0KKyAgICA/UmVtb3ZlQ29tbWFuZE9i
c2VydmVyQENCckN0bEBAVUFFWFBBVk1CckN0bENvbW1hbmRPYnNlcnZlckBAQFogQCA0MiBOT05B
TUUgOyB2b2lkIENCckN0bDo6UmVtb3ZlQ29tbWFuZE9ic2VydmVyKGNsYXNzIE1CckN0bENvbW1h
bmRPYnNlcnZlciAqKQ0KKyAgICA/Rm9jdXNlZEltYWdlTENAQ0JyQ3RsQEBVQUVQQVZUQnJDdGxJ
bWFnZUNhcnJpZXJAQFhaIEAgNDMgTk9OQU1FIDsgY2xhc3MgVEJyQ3RsSW1hZ2VDYXJyaWVyICog
Q0JyQ3RsOjpGb2N1c2VkSW1hZ2VMQyh2b2lkKQ0KIA0KSW5kZXg6IFdlYktpdC9ncm91cC9FQUJJ
L2Jyb3dzZXJlbmdpbmVVLmRlZg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9ncm91cC9FQUJJL2Jy
b3dzZXJlbmdpbmVVLmRlZgkocmV2aXNpb24gMTg4ODUpDQorKysgV2ViS2l0L2dyb3VwL0VBQkkv
YnJvd3NlcmVuZ2luZVUuZGVmCSh3b3JraW5nIGNvcHkpDQpAQCAtMSw0OCArMSw0OSBAQA0KIEVY
UE9SVFMNCi0JX1oyMUNyZWF0ZUJyb3dzZXJDb250cm9sTFAxMUNDb2VDb250cm9sNVRSZWN0ampQ
MjJNQnJDdGxTb2Z0a2V5c09ic2VydmVyUDE4TUJyQ3RsTGlua1Jlc29sdmVyUDI1TUJyQ3RsU3Bl
Y2lhbExvYWRPYnNlcnZlclAyME1CckN0bExheW91dE9ic2VydmVyUDIxTUJyQ3RsRGlhbG9nc1By
b3ZpZGVyUDIwTUJyQ3RsV2luZG93T2JzZXJ2ZXJQMjJNQnJDdGxEb3dubG9hZE9ic2VydmVyIEAg
MSBOT05BTUUNCi0JX1pONkNCckN0bDEwQ2xlYXJDYWNoZUV2IEAgMiBOT05BTUUNCi0JX1pONkNC
ckN0bDEwUGFnZUluZm9MQ0VOMTBUQnJDdGxEZWZzMTRUQnJDdGxQYWdlSW5mb0UgQCAzIE5PTkFN
RQ0KLQlfWk42Q0JyQ3RsMTFDb250ZW50U2l6ZUV2IEAgNCBOT05BTUUNCi0JX1pONkNCckN0bDEx
RmluZEtleXdvcmRFUks3VERlc0MxNiBAIDUgTk9OQU1FDQotCV9aTjZDQnJDdGwxMUltYWdlQ291
bnRMRXYgQCA2IE5PTkFNRQ0KLQlfWk42Q0JyQ3RsMTFNaW5pbXVtU2l6ZUV2IEAgNyBOT05BTUUN
Ci0JX1pONkNCckN0bDExU2F2ZVRvRmlsZUxFUks3VERlc0MxNiBAIDggTk9OQU1FDQotCV9aTjZD
QnJDdGwxMklzVXJsSW5DYWNoZUVSN1REZXNDMTYgQCA5IE5PTkFNRQ0KLQlfWk42Q0JyQ3RsMTNJ
bml0TG9hZERhdGFMRVJLN1REZXNDMTZSSzlURGF0YVR5cGU0VFVpZGpQMjJNQnJDdGxEYXRhTG9h
ZFN1cHBsaWVyUFAyMk1CckN0bERhdGFMb2FkQ29uc3VtZXIgQCAxMCBOT05BTUUNCi0JX1pONkNC
ckN0bDEzVmVyc2lvbkluZm9MQ0VOMTBUQnJDdGxEZWZzMTdUQnJDdGxWZXJzaW9uSW5mb0UgQCAx
MSBOT05BTUUNCi0JX1pONkNCckN0bDE0SGFuZGxlQ29tbWFuZExFaSBAIDEyIE5PTkFNRQ0KLQlf
Wk42Q0JyQ3RsMTRMb2FkU2F2ZWRQYWdlTEVSSzdURGVzQzE2UlMwXyBAIDEzIE5PTkFNRQ0KLQlf
Wk42Q0JyQ3RsMTRPZmZlcktleUV2ZW50TEVSSzlUS2V5RXZlbnQxMFRFdmVudENvZGUgQCAxNCBO
T05BTUUNCi0JX1pONkNCckN0bDE1QnJvd3NlclNldHRpbmdMRWogQCAxNSBOT05BTUUNCi0JX1pO
NkNCckN0bDE2Q2xlYXJJdGVtSW5DYWNoZUVSN1REZXNDMTYgQCAxNiBOT05BTUUNCi0JX1pONkNC
ckN0bDE2RmluZEtleXdvcmRBZ2FpbkVpIEAgMTcgTk9OQU1FDQotCV9aTjZDQnJDdGwxOEZvY3Vz
ZWRFbGVtZW50VHlwZUV2IEAgMTggTk9OQU1FDQotCV9aTjZDQnJDdGwxOFNldEJyb3dzZXJTZXR0
aW5nTEVqaiBAIDE5IE5PTkFNRQ0KLQlfWk42Q0JyQ3RsMTlBZGRPcHRpb25NZW51SXRlbXNMRVIx
MkNFaWtNZW51UGFuZWlpIEAgMjAgTk9OQU1FDQotCV9aTjZDQnJDdGwxOU5hdmlnYXRpb25BdmFp
bGFibGVFTjEwVEJyQ3RsRGVmczI1VEJyQ3RsTmF2aWdhdGlvbkRpcmVjdGlvbkUgQCAyMSBOT05B
TUUNCi0JX1pONkNCckN0bDE5V01MT3B0aW9uTWVudUl0ZW1zTEV2IEAgMjIgTk9OQU1FDQotCV9a
TjZDQnJDdGwyMUFkZExvYWRFdmVudE9ic2VydmVyTEVQMjNNQnJDdGxMb2FkRXZlbnRPYnNlcnZl
ciBAIDIzIE5PTkFNRQ0KLQlfWk42Q0JyQ3RsMjJIYW5kbGVEb3dubG9hZENvbW1hbmRMRXROMTBU
QnJDdGxEZWZzMTdUQnJDdGxEb3dubG9hZENtZEUgQCAyNCBOT05BTUUNCi0JX1pONkNCckN0bDIz
QWRkU3RhdGVDaGFuZ2VPYnNlcnZlckxFUDI1TUJyQ3RsU3RhdGVDaGFuZ2VPYnNlcnZlciBAIDI1
IE5PTkFNRQ0KLQlfWk42Q0JyQ3RsMjNSZW1vdmVMb2FkRXZlbnRPYnNlcnZlckVQMjNNQnJDdGxM
b2FkRXZlbnRPYnNlcnZlciBAIDI2IE5PTkFNRQ0KLQlfWk42Q0JyQ3RsMjVSZW1vdmVTdGF0ZUNo
YW5nZU9ic2VydmVyRVAyNU1CckN0bFN0YXRlQ2hhbmdlT2JzZXJ2ZXIgQCAyNyBOT05BTUUNCi0J
X1pONkNCckN0bDI4U2V0U2VsZkRvd25sb2FkQ29udGVudFR5cGVzTEVSN1REZXNDMTYgQCAyOCBO
T05BTUUNCi0JX1pONkNCckN0bDhDZXJ0SW5mb0V2IEAgMjkgTk9OQU1FDQotCV9aTjZDQnJDdGw4
TG9hZFVybExFUks3VERlc0MxNmlOMTBUQnJDdGxEZWZzMTVUQnJDdGxDYWNoZU1vZGVFIEAgMzAg
Tk9OQU1FDQotCV9aTjZDQnJDdGw4T2tUb0V4aXRFdiBAIDMxIE5PTkFNRQ0KLQlfWk42Q0JyQ3Rs
OFNldEZvY3VzRWk4VERyYXdOb3cgQCAzMiBOT05BTUUNCi0JX1pONkNCckN0bDlMb2FkRGF0YUxF
Uks3VERlc0MxNlJLNlREZXNDOFJLOVREYXRhVHlwZTRUVWlkIEAgMzMgTk9OQU1FDQotCV9aTjZD
QnJDdGw5TG9hZEZpbGVMRVI1UkZpbGUgQCAzNCBOT05BTUUNCi0JX1pONkNCckN0bDlMb2FkRmls
ZUxFUks3VERlc0MxNiBAIDM1IE5PTkFNRQ0KLQlfWk42Q0JyQ3RsOVNldFBhcmFtTEVOMTBUQnJD
dGxEZWZzMTJUQnJDdGxQYXJhbXNFUks3VERlc0MxNiBAIDM2IE5PTkFNRQ0KLQlfWk42Q0JyQ3Rs
RDBFdiBAIDM3IE5PTkFNRQ0KLQlfWk42Q0JyQ3RsRDFFdiBAIDM4IE5PTkFNRQ0KLQlfWk42Q0Jy
Q3RsRDJFdiBAIDM5IE5PTkFNRQ0KLQlfWk5LNkNCckN0bDEwWm9vbUxldmVsc0V2IEAgNDAgTk9O
QU1FDQotCV9aVEk2Q0JyQ3RsIEAgNDEgTk9OQU1FIDsgIzxUST4jDQotCV9aVFY2Q0JyQ3RsIEAg
NDIgTk9OQU1FIDsgIzxWVD4jDQotCV9aTjZDQnJDdGwyMVN1YnNjcmliZVRvTWVudUl0ZW1zTEV2
IEAgNDMgTk9OQU1FDQotCV9aTjZDQnJDdGwxM0dldEJpdG1hcERhdGFFUks3VERlc0MxNk4xMFRC
ckN0bERlZnMxNlRCckN0bEJpdG1hcEluZm9FIEAgNDQgTk9OQU1FDQotCV9aTjZDQnJDdGwxOUFk
ZENvbW1hbmRPYnNlcnZlckxFUDIxTUJyQ3RsQ29tbWFuZE9ic2VydmVyIEAgNDUgTk9OQU1FDQot
CV9aTjZDQnJDdGwyMVJlbW92ZUNvbW1hbmRPYnNlcnZlckVQMjFNQnJDdGxDb21tYW5kT2JzZXJ2
ZXIgQCA0NiBOT05BTUUNCisgICAgX1oyMUNyZWF0ZUJyb3dzZXJDb250cm9sTFAxMUNDb2VDb250
cm9sNVRSZWN0ampQMjJNQnJDdGxTb2Z0a2V5c09ic2VydmVyUDE4TUJyQ3RsTGlua1Jlc29sdmVy
UDI1TUJyQ3RsU3BlY2lhbExvYWRPYnNlcnZlclAyME1CckN0bExheW91dE9ic2VydmVyUDIxTUJy
Q3RsRGlhbG9nc1Byb3ZpZGVyUDIwTUJyQ3RsV2luZG93T2JzZXJ2ZXJQMjJNQnJDdGxEb3dubG9h
ZE9ic2VydmVyIEAgMSBOT05BTUUNCisgICAgX1pONkNCckN0bDEwQ2xlYXJDYWNoZUV2IEAgMiBO
T05BTUUNCisgICAgX1pONkNCckN0bDEwUGFnZUluZm9MQ0VOMTBUQnJDdGxEZWZzMTRUQnJDdGxQ
YWdlSW5mb0UgQCAzIE5PTkFNRQ0KKyAgICBfWk42Q0JyQ3RsMTFDb250ZW50U2l6ZUV2IEAgNCBO
T05BTUUNCisgICAgX1pONkNCckN0bDExRmluZEtleXdvcmRFUks3VERlc0MxNiBAIDUgTk9OQU1F
DQorICAgIF9aTjZDQnJDdGwxMUltYWdlQ291bnRMRXYgQCA2IE5PTkFNRQ0KKyAgICBfWk42Q0Jy
Q3RsMTFNaW5pbXVtU2l6ZUV2IEAgNyBOT05BTUUNCisgICAgX1pONkNCckN0bDExU2F2ZVRvRmls
ZUxFUks3VERlc0MxNiBAIDggTk9OQU1FDQorICAgIF9aTjZDQnJDdGwxMklzVXJsSW5DYWNoZUVS
N1REZXNDMTYgQCA5IE5PTkFNRQ0KKyAgICBfWk42Q0JyQ3RsMTNJbml0TG9hZERhdGFMRVJLN1RE
ZXNDMTZSSzlURGF0YVR5cGU0VFVpZGpQMjJNQnJDdGxEYXRhTG9hZFN1cHBsaWVyUFAyMk1CckN0
bERhdGFMb2FkQ29uc3VtZXIgQCAxMCBOT05BTUUNCisgICAgX1pONkNCckN0bDEzVmVyc2lvbklu
Zm9MQ0VOMTBUQnJDdGxEZWZzMTdUQnJDdGxWZXJzaW9uSW5mb0UgQCAxMSBOT05BTUUNCisgICAg
X1pONkNCckN0bDE0SGFuZGxlQ29tbWFuZExFaSBAIDEyIE5PTkFNRQ0KKyAgICBfWk42Q0JyQ3Rs
MTRMb2FkU2F2ZWRQYWdlTEVSSzdURGVzQzE2UlMwXyBAIDEzIE5PTkFNRQ0KKyAgICBfWk42Q0Jy
Q3RsMTRPZmZlcktleUV2ZW50TEVSSzlUS2V5RXZlbnQxMFRFdmVudENvZGUgQCAxNCBOT05BTUUN
CisgICAgX1pONkNCckN0bDE1QnJvd3NlclNldHRpbmdMRWogQCAxNSBOT05BTUUNCisgICAgX1pO
NkNCckN0bDE2Q2xlYXJJdGVtSW5DYWNoZUVSN1REZXNDMTYgQCAxNiBOT05BTUUNCisgICAgX1pO
NkNCckN0bDE2RmluZEtleXdvcmRBZ2FpbkVpIEAgMTcgTk9OQU1FDQorICAgIF9aTjZDQnJDdGwx
OEZvY3VzZWRFbGVtZW50VHlwZUV2IEAgMTggTk9OQU1FDQorICAgIF9aTjZDQnJDdGwxOFNldEJy
b3dzZXJTZXR0aW5nTEVqaiBAIDE5IE5PTkFNRQ0KKyAgICBfWk42Q0JyQ3RsMTlBZGRPcHRpb25N
ZW51SXRlbXNMRVIxMkNFaWtNZW51UGFuZWlpIEAgMjAgTk9OQU1FDQorICAgIF9aTjZDQnJDdGwx
OU5hdmlnYXRpb25BdmFpbGFibGVFTjEwVEJyQ3RsRGVmczI1VEJyQ3RsTmF2aWdhdGlvbkRpcmVj
dGlvbkUgQCAyMSBOT05BTUUNCisgICAgX1pONkNCckN0bDE5V01MT3B0aW9uTWVudUl0ZW1zTEV2
IEAgMjIgTk9OQU1FDQorICAgIF9aTjZDQnJDdGwyMUFkZExvYWRFdmVudE9ic2VydmVyTEVQMjNN
QnJDdGxMb2FkRXZlbnRPYnNlcnZlciBAIDIzIE5PTkFNRQ0KKyAgICBfWk42Q0JyQ3RsMjJIYW5k
bGVEb3dubG9hZENvbW1hbmRMRXROMTBUQnJDdGxEZWZzMTdUQnJDdGxEb3dubG9hZENtZEUgQCAy
NCBOT05BTUUNCisgICAgX1pONkNCckN0bDIzQWRkU3RhdGVDaGFuZ2VPYnNlcnZlckxFUDI1TUJy
Q3RsU3RhdGVDaGFuZ2VPYnNlcnZlciBAIDI1IE5PTkFNRQ0KKyAgICBfWk42Q0JyQ3RsMjNSZW1v
dmVMb2FkRXZlbnRPYnNlcnZlckVQMjNNQnJDdGxMb2FkRXZlbnRPYnNlcnZlciBAIDI2IE5PTkFN
RQ0KKyAgICBfWk42Q0JyQ3RsMjVSZW1vdmVTdGF0ZUNoYW5nZU9ic2VydmVyRVAyNU1CckN0bFN0
YXRlQ2hhbmdlT2JzZXJ2ZXIgQCAyNyBOT05BTUUNCisgICAgX1pONkNCckN0bDI4U2V0U2VsZkRv
d25sb2FkQ29udGVudFR5cGVzTEVSN1REZXNDMTYgQCAyOCBOT05BTUUNCisgICAgX1pONkNCckN0
bDhDZXJ0SW5mb0V2IEAgMjkgTk9OQU1FDQorICAgIF9aTjZDQnJDdGw4TG9hZFVybExFUks3VERl
c0MxNmlOMTBUQnJDdGxEZWZzMTVUQnJDdGxDYWNoZU1vZGVFIEAgMzAgTk9OQU1FDQorICAgIF9a
TjZDQnJDdGw4T2tUb0V4aXRFdiBAIDMxIE5PTkFNRQ0KKyAgICBfWk42Q0JyQ3RsOFNldEZvY3Vz
RWk4VERyYXdOb3cgQCAzMiBOT05BTUUNCisgICAgX1pONkNCckN0bDlMb2FkRGF0YUxFUks3VERl
c0MxNlJLNlREZXNDOFJLOVREYXRhVHlwZTRUVWlkIEAgMzMgTk9OQU1FDQorICAgIF9aTjZDQnJD
dGw5TG9hZEZpbGVMRVI1UkZpbGUgQCAzNCBOT05BTUUNCisgICAgX1pONkNCckN0bDlMb2FkRmls
ZUxFUks3VERlc0MxNiBAIDM1IE5PTkFNRQ0KKyAgICBfWk42Q0JyQ3RsOVNldFBhcmFtTEVOMTBU
QnJDdGxEZWZzMTJUQnJDdGxQYXJhbXNFUks3VERlc0MxNiBAIDM2IE5PTkFNRQ0KKyAgICBfWk42
Q0JyQ3RsRDBFdiBAIDM3IE5PTkFNRQ0KKyAgICBfWk42Q0JyQ3RsRDFFdiBAIDM4IE5PTkFNRQ0K
KyAgICBfWk42Q0JyQ3RsRDJFdiBAIDM5IE5PTkFNRQ0KKyAgICBfWk5LNkNCckN0bDEwWm9vbUxl
dmVsc0V2IEAgNDAgTk9OQU1FDQorICAgIF9aVEk2Q0JyQ3RsIEAgNDEgTk9OQU1FIDsgIzxUST4j
DQorICAgIF9aVFY2Q0JyQ3RsIEAgNDIgTk9OQU1FIDsgIzxWVD4jDQorICAgIF9aTjZDQnJDdGwy
MVN1YnNjcmliZVRvTWVudUl0ZW1zTEV2IEAgNDMgTk9OQU1FDQorICAgIF9aTjZDQnJDdGwxM0dl
dEJpdG1hcERhdGFFUks3VERlc0MxNk4xMFRCckN0bERlZnMxNlRCckN0bEJpdG1hcEluZm9FIEAg
NDQgTk9OQU1FDQorICAgIF9aTjZDQnJDdGwxOUFkZENvbW1hbmRPYnNlcnZlckxFUDIxTUJyQ3Rs
Q29tbWFuZE9ic2VydmVyIEAgNDUgTk9OQU1FDQorICAgIF9aTjZDQnJDdGwyMVJlbW92ZUNvbW1h
bmRPYnNlcnZlckVQMjFNQnJDdGxDb21tYW5kT2JzZXJ2ZXIgQCA0NiBOT05BTUUNCisgICAgX1pO
NkNCckN0bDE0Rm9jdXNlZEltYWdlTENFdiBAIDQ3IE5PTkFNRQ0KIA0KSW5kZXg6IFM2MEludGVy
bmFscy9TNjBEeW5hbWljTGlicy56aXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLg0Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQ0KDQpVRXNEQkFvQUFBQUFBTEtLZFRRQUFBQUFBQUFBQUFBQUFBQUhBQUFBUlhC
dll6TXlMMUJMQXdRVUFBQUFDQURQYWtrMDdLUm5JbFJzDQpBQUJnc2dJQUtBQUFBRVZ3YjJNek1p
OXlaV3hsWVhObEwzZHBibk5qZHk5MVpHVmlMMWh0YkVWdVoybHVaUzVzYVdLRTNBOTRGT2xkDQpC
L0QzOE1TSWlDZWVpSGdpUGZFODhVeTVRQ2xGUkVoQ1NLNzV1d201bEZMQ1pIZVNiTmpNN3MzT2hr
QXBSeW1sbEZKS0tiMWVLYVdVDQpVa29wcFJRUlQwVEVpSWg0SWlJaTRvbUlpQ2NpSWxhTUoySm45
L3ZkbWZkOTU5MTR6L041YnQ3ZiszMW5aM2Zuenp1enVYdlhYTXVODQo5ODRiOCs0cDZqOHZ2ampq
ZlRQZjkrS01tYlBWK25UK2UyYkZ6UGRnZWZrWUlVYS9WenhSWHk2ZWFCd1NUelN0RlU4MGQ5QVF0
RXluDQpQUkI3aXRiUmZXaGRUdGVnTFVaRHNIZzY3WUgyY2JTTzdzSEx5K2s9DQoNCkluZGV4OiBT
NjBJbnRlcm5hbHMvUzYwSGVhZGVycy56aXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkNhbm5vdCBkaXNwbGF5OiBm
aWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLg0Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQ0KDQpVRXNEQkJRQUFnQUlBUGVHNHpRVXZtTmtVQW9BQUFJcEFBQVpBSElB
UlhCdll6TXlMMmx1WTJ4MVpHVXZiMlZ0TDBGSVRFVXVhRk5FDQpYUUNrQUFBQUFBZ0FzVUJaTzJO
a1lHa1FZV0JnVUdHQUFBY2dabVFDTTFrVmdJUUNrTTNJQ3VHTEFvbkpqNU04bXJxWGFTakhKMmVE
DQoxREV4cERDd2dLVWxHUDR6eW1Qb1pXQVFnWWd6UXNTRjhLcVZZRmpKSUlRaXJnaGtBd0JWVkEw
QUIxS0VxVVNhT0xWRWdvMk9STFU9DQoNCg==
</data>
<flag name="review"
          id="4717"
          type_id="1"
          status="+"
          setter="bradley.morrison"
    />
          </attachment>
      

    </bug>

</bugzilla>