<?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>139348</bug_id>
          
          <creation_ts>2014-12-06 15:22:55 -0800</creation_ts>
          <short_desc>Introduce and deploy a function that allocates and returns an instance of a soft-linked class</short_desc>
          <delta_ts>2014-12-07 09:27:41 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1053067</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-12-06 15:22:55 -0800</bug_when>
    <thetext>In [[getFooClass() alloc] init*], the type of the result of +alloc is id, so the compiler picks an arbitrary declaration of init*, not necessarily the Foo one. This can then lead to warnings or errors if the types or attributes don’t match, or to runtime errors if Foo doesn’t even have the expected initializer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053068</commentid>
    <comment_count>1</comment_count>
      <attachid>242727</attachid>
    <who name="">mitz</who>
    <bug_when>2014-12-06 15:27:20 -0800</bug_when>
    <thetext>Created attachment 242727
Add and deploy alloc##className##Instance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053069</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-06 15:29:28 -0800</bug_when>
    <thetext>Attachment 242727 did not pass style-queue:


ERROR: Source/WebCore/platform/mac/SoftLinking.h:168:  Extra space before [  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/mac/SoftLinking.h:194:  Extra space before [  [whitespace/braces] [5]
Total errors found: 2 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053158</commentid>
    <comment_count>3</comment_count>
      <attachid>242746</attachid>
    <who name="">mitz</who>
    <bug_when>2014-12-07 08:34:59 -0800</bug_when>
    <thetext>Created attachment 242746
Add and deploy alloc##className##Instance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053161</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-07 08:36:59 -0800</bug_when>
    <thetext>Attachment 242746 did not pass style-queue:


ERROR: Source/WebCore/platform/mac/SoftLinking.h:168:  Extra space before [  [whitespace/braces] [5]
ERROR: Source/WebCore/platform/mac/SoftLinking.h:194:  Extra space before [  [whitespace/braces] [5]
Total errors found: 2 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053167</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-12-07 09:27:41 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r176924&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242727</attachid>
            <date>2014-12-06 15:27:20 -0800</date>
            <delta_ts>2014-12-07 08:34:59 -0800</delta_ts>
            <desc>Add and deploy alloc##className##Instance</desc>
            <filename>bug-139348-20141206152756.patch</filename>
            <type>text/plain</type>
            <size>45565</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDE0LTEyLTA2ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGFuZCBkZXBsb3kg
YSBmdW5jdGlvbiB0aGF0IGFsbG9jYXRlcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhIHNv
ZnQtbGlua2VkIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbiBbW2dldEZvb0NsYXNzKCkgYWxsb2NdIGluaXQqXSwgdGhlIHR5cGUgb2YgdGhl
IHJlc3VsdCBvZiArYWxsb2MgaXMgaWQsIHNvIHRoZSBjb21waWxlcgorICAgICAgICBwaWNrcyBh
biBhcmJpdHJhcnkgZGVjbGFyYXRpb24gb2YgaW5pdCosIG5vdCBuZWNlc3NhcmlseSB0aGUgRm9v
IG9uZS4gVGhpcyBjYW4gdGhlbiBsZWFkCisgICAgICAgIHRvIHdhcm5pbmdzIG9yIGVycm9ycyBp
ZiB0aGUgdHlwZXMgb3IgYXR0cmlidXRlcyBkb27igJl0IG1hdGNoLCBvciB0byBydW50aW1lIGVy
cm9ycyBpZiBGb28KKyAgICAgICAgZG9lc27igJl0IGV2ZW4gaGF2ZSB0aGUgZXhwZWN0ZWQgaW5p
dGlhbGl6ZXIuIFRoZSBuZXcgYWxsb2NGb29JbnN0YW5jZSgpIHJldHVybnMgYSBGb28gKiwgdGh1
cworICAgICAgICBhdm9pZGluZyB0aGUgYW1iaWd1aXR5LgorCisgICAgICAgICogZWRpdGluZy9t
YWMvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OmRl
dGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGFsbG9jYXRlVm9sdW1lVmlld10pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc10pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGVNaXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3Jl
YXRlQVZQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0cHV0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmVuc3VyZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c3RyZWFtU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FM
YXllck1hYzo6UGxhdGZvcm1DQUxheWVyTWFjKTogQ2FzdCB0aGUgcmVzdWx0IG9mICthbGxvYyB0
byBhbiBpbnN0YW5jZSBvZiB0aGUKKyAgICAgICAgZXhwZWN0ZWQgY2xhc3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3dMZXR0ZXJwcmVzc2VkR2x5cGhzV2l0aEFkdmFuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZUxheWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbToKKyAgICAg
ICAgKFNPRlRfTElOS19DT05TVEFOVCk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dy
YXBwZXIgc3BlYWtVdHRlcmFuY2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVN
b3Rpb25NYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciBpbml0aWFs
aXplT25NYWluVGhyZWFkXSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
aW5pdF0pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVw
RnVsbHNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0NvbnRlbnRGaWx0ZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKToKKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oOiBBZGRlZCBhbGxvYyMjY2xhc3NOYW1l
IyNpbnN0YW5jZSgpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIg
c2V0VmlkZW9FbGVtZW50Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJl
U291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNzaW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJl
U2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6OlF1aWNrTG9va0hhbmRsZSk6CisKIDIw
MTQtMTItMDYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggYnVpbGQgd2l0aCBuZXdlciB2ZXJzaW9ucyBvZiBjbGFuZy4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0RhdGFEZXRlY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRGF0YURldGVjdGlvbi5tbQkocmV2aXNpb24gMTc2OTE1KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRGF0YURldGVjdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtODUsNyArODUsNyBAQCBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBEYXRhRGV0
ZWN0aW9uCiAgICAgaWYgKCFtYWluUmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGFjdGlvbkNvbnRleHQgPSBhZG9wdE5TKFtb
Z2V0RERBY3Rpb25Db250ZXh0Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxE
REFjdGlvbkNvbnRleHQ+IGFjdGlvbkNvbnRleHQgPSBhZG9wdE5TKFthbGxvY0REQWN0aW9uQ29u
dGV4dEluc3RhbmNlKCkgaW5pdF0pOwogICAgIFthY3Rpb25Db250ZXh0IHNldEFsbFJlc3VsdHM6
QFsgKGlkKW1haW5SZXN1bHQgXV07CiAgICAgW2FjdGlvbkNvbnRleHQgc2V0TWFpblJlc3VsdDpt
YWluUmVzdWx0XTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHJldmlzaW9uIDE3Njkx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEsNyArMjQxLDcgQEAgLSAodm9pZClhbGxv
Y2F0ZVZvbHVtZVZpZXcKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgX3ZvbHVtZVZpZXcgPSBh
ZG9wdE5TKFtbZ2V0TVBWb2x1bWVWaWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIF92b2x1
bWVWaWV3ID0gYWRvcHROUyhbYWxsb2NNUFZvbHVtZVZpZXdJbnN0YW5jZSgpIGluaXRdKTsKICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlOikgbmFt
ZTpNUFZvbHVtZVZpZXdXaXJlbGVzc1JvdXRlc0F2YWlsYWJsZURpZENoYW5nZU5vdGlmaWNhdGlv
biBvYmplY3Q6X3ZvbHVtZVZpZXcuZ2V0KCldOwogICAgIAogfQpAQCAtMzI0LDcgKzMyNCw3IEBA
IC0gKHZvaWQpc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlcwogICAgICAgICBpZiAoc3Ryb25n
U2VsZi0+X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIHN0cm9uZ1NlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJv
bGxlciA9IGFkb3B0TlMoW1tnZXRNUEFWUm91dGluZ0NvbnRyb2xsZXJDbGFzcygpIGFsbG9jXSBp
bml0V2l0aE5hbWU6QCJXZWJDb3JlIC0gSFRNTCBtZWRpYSBlbGVtZW50IGNoZWNraW5nIGZvciBB
aXJQbGF5IHJvdXRlIHByZXNlbmNlIl0pOworICAgICAgICBzdHJvbmdTZWxmLT5fYWlyUGxheVBy
ZXNlbmNlUm91dGluZ0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY01QQVZSb3V0aW5nQ29udHJv
bGxlckluc3RhbmNlKCkgaW5pdFdpdGhOYW1lOkAiV2ViQ29yZSAtIEhUTUwgbWVkaWEgZWxlbWVu
dCBjaGVja2luZyBmb3IgQWlyUGxheSByb3V0ZSBwcmVzZW5jZSJdKTsKICAgICAgICAgW3N0cm9u
Z1NlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJvbGxlciBzZXREaXNjb3ZlcnlNb2Rl
Ok1QUm91dGVEaXNjb3ZlcnlNb2RlUHJlc2VuY2VdOwogICAgIH0pOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQkocmV2aXNpb24g
MTc2OTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyAr
MTg0LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRlTQogICAgIEFT
U0VSVChtX2F2UGxheWVySXRlbSk7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKIAotICAgIG1fYXZB
dWRpb01peCA9IGFkb3B0TlMoWyhBVk11dGFibGVBdWRpb01peCAqKVtnZXRBVk11dGFibGVBdWRp
b01peENsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICBtX2F2QXVkaW9NaXggPSBhZG9wdE5TKFth
bGxvY0FWTXV0YWJsZUF1ZGlvTWl4SW5zdGFuY2UoKSBpbml0XSk7CiAKICAgICBNVEF1ZGlvUHJv
Y2Vzc2luZ1RhcENhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIDAsCkBAIC0yMDEsNyAr
MjAxLDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRlTQogICAgIEFT
U0VSVCh0YXApOwogICAgIEFTU0VSVChtX3RhcCA9PSB0YXApOwogCi0gICAgUmV0YWluUHRyPEFW
TXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbKEFW
TXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJhbWV0ZXJzICopW2dldEFWTXV0YWJsZUF1ZGlvTWl4SW5w
dXRQYXJhbWV0ZXJzQ2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxBVk11dGFi
bGVBdWRpb01peElucHV0UGFyYW1ldGVycz4gcGFyYW1ldGVycyA9IGFkb3B0TlMoW2FsbG9jQVZN
dXRhYmxlQXVkaW9NaXhJbnB1dFBhcmFtZXRlcnNJbnN0YW5jZSgpIGluaXRdKTsKICAgICBbcGFy
YW1ldGVycyBzZXRBdWRpb1RhcFByb2Nlc3NvcjptX3RhcC5nZXQoKV07CiAKICAgICBDTVBlcnNp
c3RlbnRUcmFja0lEIGZpcnN0RW5hYmxlZEF1ZGlvVHJhY2tJRCA9IGtDTVBlcnNpc3RlbnRUcmFj
a0lEX0ludmFsaWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTc2OTE1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDE0ICszOCwxNCBAQAogI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8b2JqYy9vYmpjLXJ1bnRp
bWUuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElP
TkFMKEFWRm91bmRhdGlvbikKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWVVJMQXNz
ZXQpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdCkKICNkZWZpbmUgQVZVUkxBc3NldCBnZXRBVlVSTEFzc2V0Q2xhc3MoKQogI2RlZmlu
ZSBBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCBnZXRBVkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdCgpCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakM6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMqIHBhcmVudCkKICAgICA6IG1fcGFyZW50KHBhcmVudCkKICAgICAsIG1fY2xp
ZW50KG51bGxwdHIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5tbQkocmV2aXNpb24gMTc2OTE1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDYgQEAK
IAogU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCiAKLSNkZWZpbmUg
QVZQbGF5ZXIgZ2V0QVZQbGF5ZXJDbGFzcygpCi0jZGVmaW5lIEFWUGxheWVySXRlbSBnZXRBVlBs
YXllckl0ZW1DbGFzcygpCi0KIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVy
KQogU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtKQogU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0pCkBAIC02NSw2ICs2Miw4IEBAIFNP
RlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUMKIFNPRlRfTElOS19QT0lOVEVS
KEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljSXNNYWluUHJvZ3JhbUNvbnRlbnQs
IE5TU3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFy
YWN0ZXJpc3RpY0Vhc3lUb1JlYWQsIE5TU3RyaW5nICopCiAKKyNkZWZpbmUgQVZQbGF5ZXIgZ2V0
QVZQbGF5ZXJDbGFzcygpCisjZGVmaW5lIEFWUGxheWVySXRlbSBnZXRBVlBsYXllckl0ZW1DbGFz
cygpCiAjZGVmaW5lIEFWTWV0YWRhdGFJdGVtIGdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKQogI2Rl
ZmluZSBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0IGdldEFWUGxheWVySXRlbUxlZ2libGVPdXRw
dXRDbGFzcygpCiAjZGVmaW5lIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGUgZ2V0QVZNZWRp
YUNoYXJhY3RlcmlzdGljTGVnaWJsZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHJl
dmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6CiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3ZpZGVvTGF5ZXIgPSBhZG9wdE5TKFtbQVZQbGF5ZXJMYXllciBhbGxvY10gaW5pdF0pOwor
ICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJMYXllckluc3RhbmNlKCkg
aW5pdF0pOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0UGxheWVyOm1fYXZQbGF5ZXIuZ2V0KCldOwog
ICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoQ29sb3I6
OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CiAjaWZuZGVmIE5ERUJVRwpAQCAtODM4LDcg
KzgzOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICNlbmRp
ZgogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2FsVVJMKHVybCk7Ci0gICAgbV9hdkFz
c2V0ID0gYWRvcHROUyhbW0FWVVJMQXNzZXQgYWxsb2NdIGluaXRXaXRoVVJMOmNvY29hVVJMIG9w
dGlvbnM6b3B0aW9ucy5nZXQoKV0pOworICAgIG1fYXZBc3NldCA9IGFkb3B0TlMoW2FsbG9jQVZV
UkxBc3NldEluc3RhbmNlKCkgaW5pdFdpdGhVUkw6Y29jb2FVUkwgb3B0aW9uczpvcHRpb25zLmdl
dCgpXSk7CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCiAgICAgW1tt
X2F2QXNzZXQuZ2V0KCkgcmVzb3VyY2VMb2FkZXJdIHNldERlbGVnYXRlOm1fbG9hZGVyRGVsZWdh
dGUuZ2V0KCkgcXVldWU6Z2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpXTsKQEAgLTg3NSw3ICs4
NzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBz
ZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKIAotICAgIG1fYXZQbGF5ZXIgPSBhZG9wdE5TKFtbQVZQ
bGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBtX2F2UGxheWVyID0gYWRvcHROUyhbYWxsb2NBVlBs
YXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIFttX2F2UGxheWVyLmdldCgpIGFkZE9ic2VydmVy
Om1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOk5TS2V5VmFs
dWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZGb3VuZGF0
aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVyXTsKICNpZiBFTkFCTEUoSU9TX0FJUlBMQVkpCiAg
ICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkgZm9y
S2V5UGF0aDpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2Vy
dmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25PYnNl
cnZhdGlvbkNvbnRleHRQbGF5ZXJdOwpAQCAtOTA5LDcgKzkwOSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsK
IAogICAgIC8vIENyZWF0ZSB0aGUgcGxheWVyIGl0ZW0gc28gd2UgY2FuIGxvYWQgbWVkaWEgZGF0
YS4gCi0gICAgbV9hdlBsYXllckl0ZW0gPSBhZG9wdE5TKFtbQVZQbGF5ZXJJdGVtIGFsbG9jXSBp
bml0V2l0aEFzc2V0Om1fYXZBc3NldC5nZXQoKV0pOworICAgIG1fYXZQbGF5ZXJJdGVtID0gYWRv
cHROUyhbYWxsb2NBVlBsYXllckl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoQXNzZXQ6bV9hdkFzc2V0
LmdldCgpXSk7CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihkaWRFbmQ6
KSBuYW1lOkFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24gb2JqZWN0Om1f
YXZQbGF5ZXJJdGVtLmdldCgpXTsKIApAQCAtOTMwLDcgKzkzMCw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBjb25zdCBOU1RpbWVJbnRlcnZhbCBsZWdp
YmxlT3V0cHV0QWR2YW5jZUludGVydmFsID0gMjsKIAogICAgIFJldGFpblB0cjxOU0FycmF5PiBz
dWJ0eXBlcyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6W05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ01TdWJ0aXRsZUZvcm1hdFR5cGVfV2ViVlRUXSwg
bmlsXSk7Ci0gICAgbV9sZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbW0FWUGxheWVySXRlbUxlZ2li
bGVPdXRwdXQgYWxsb2NdIGluaXRXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2ZVJlcHJlc2VudGF0
aW9uOnN1YnR5cGVzLmdldCgpXSk7CisgICAgbV9sZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbYWxs
b2NBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhU3VidHlw
ZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbjpzdWJ0eXBlcy5nZXQoKV0pOwogICAgIFttX2xlZ2li
bGVPdXRwdXQuZ2V0KCkgc2V0U3VwcHJlc3Nlc1BsYXllclJlbmRlcmluZzpZRVNdOwogCiAgICAg
W21fbGVnaWJsZU91dHB1dC5nZXQoKSBzZXREZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQoKSBx
dWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBOU0RpY3Rpb25hcnkq
IGF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JB
XSwga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5pbF07CiAjZW5kaWYKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhb
W2dldEFWUGxheWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhQaXhlbEJ1
ZmZlckF0dHJpYnV0ZXM6YXR0cmlidXRlc10pOworICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5T
KFthbGxvY0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVm
ZmVyQXR0cmlidXRlczphdHRyaWJ1dGVzXSk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRwdXQpOwog
CiAgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV92aWRlb091dHB1dERlbGVnYXRlLmdl
dCgpIHF1ZXVlOmdsb2JhbFB1bGxEZWxlZ2F0ZVF1ZXVlKCldOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQkocmV2aXNpb24gMTc2OTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIHZv
aWQgQ01UaW1lYmFzZUVmZmVjdGl2ZVJhdGVDaGFuZwogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTWVkaWFQ
bGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fd2Vha1B0ckZh
Y3RvcnkodGhpcykKLSAgICAsIG1fc3luY2hyb25pemVyKGFkb3B0TlMoW1tnZXRBVlNhbXBsZUJ1
ZmZlclJlbmRlclN5bmNocm9uaXplckNsYXNzKCkgYWxsb2NdIGluaXRdKSkKKyAgICAsIG1fc3lu
Y2hyb25pemVyKGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6ZXJJ
bnN0YW5jZSgpIGluaXRdKSkKICAgICAsIG1fc2Vla1RpbWVyKCp0aGlzLCAmTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrVGltZXJGaXJlZCkKICAgICAsIG1fc2Vzc2lv
bihudWxscHRyKQogICAgICwgbV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQpAQCAt
NjA3LDcgKzYwNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmoK
ICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbW2dldEFWU2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcklu
c3RhbmNlKCkgaW5pdF0pOwogI2lmbmRlZiBOREVCVUcKICAgICBbbV9zYW1wbGVCdWZmZXJEaXNw
bGF5TGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlIEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyIl07CiAjZW5kaWYKQEAgLTY5NSw3ICs2OTUsNyBAQCBBVlN0cmVh
bVNlc3Npb24qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhCiAgICAgICAgIH0KIAogICAgICAgICBT
dHJpbmcgc3RvcmFnZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVj
dG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKLSAgICAgICAgbV9zdHJlYW1TZXNzaW9uID0gYWRv
cHROUyhbW2dldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgYWxsb2NdIGluaXRXaXRoU3RvcmFnZURp
cmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhdXSk7CisgICAg
ICAgIG1fc3RyZWFtU2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZTdHJlYW1TZXNzaW9uSW5zdGFu
Y2UoKSBpbml0V2l0aFN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnN0b3JhZ2VQYXRoXV0pOwogICAgIH0KICAgICByZXR1cm4gbV9zdHJlYW1TZXNzaW9uLmdldCgp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01ODAsNyArNTgwLDcgQEAgUmVmUHRyPFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyYwogCiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyogcGFy
ZW50KQogICAgIDogbV93ZWFrRmFjdG9yeSh0aGlzKQotICAgICwgbV9wYXJzZXIoYWRvcHROUyhb
W2dldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgYWxsb2NdIGluaXRdKSkKKyAgICAsIG1fcGFy
c2VyKGFkb3B0TlMoW2FsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkpCiAg
ICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lciBh
bGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OmNyZWF0ZVdlYWtQdHIo
KV0pKQogICAgICwgbV9lcnJvckxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZlckVy
cm9yTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fbWVkaWFT
b3VyY2UocGFyZW50KQpAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmFib3J0KCkKICAgICAvLyBGSVhNRSgxMzUxNjQpOiBTdXBwb3J0IHJlc2V0dGlu
ZyBwYXJzZXIgdG8gdGhlIGxhc3QgYXBwZW5kZWQgaW5pdGlhbGl6YXRpb24gc2VnbWVudC4KICAg
ICBkZXN0cm95UGFyc2VyKCk7CiAKLSAgICBtX3BhcnNlciA9IGFkb3B0TlMoW1tnZXRBVlN0cmVh
bURhdGFQYXJzZXJDbGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgbV9wYXJzZXIgPSBhZG9wdE5T
KFthbGxvY0FWU3RyZWFtRGF0YVBhcnNlckluc3RhbmNlKCkgaW5pdF0pOwogICAgIG1fZGVsZWdh
dGUgPSBhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxsb2NdIGluaXRX
aXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDpjcmVhdGVXZWFrUHRyKCldKTsKIH0KIApA
QCAtODYyLDcgKzg2Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNr
RGkKICAgICAgICAgbV9lbmFibGVkVmlkZW9UcmFja0lEID0gdHJhY2tJRDsKICAgICAgICAgW21f
cGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJRF07
CiAgICAgICAgIGlmICghbV9kaXNwbGF5TGF5ZXIpIHsKLSAgICAgICAgICAgIG1fZGlzcGxheUxh
eWVyID0gYWRvcHROUyhbW2dldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBhbGxv
Y10gaW5pdF0pOworICAgICAgICAgICAgbV9kaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFthbGxvY0FW
U2FtcGxlQnVmZmVyRGlzcGxheUxheWVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgICAgICAgICBb
bV9kaXNwbGF5TGF5ZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOl57CiAgICAgICAgICAgICAgICAgZGlkQmVjb21l
UmVhZHlGb3JNb3JlU2FtcGxlcyh0cmFja0lEKTsKICAgICAgICAgICAgIH1dOwpAQCAtODg2LDcg
Kzg4Niw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGkKICAgICAg
ICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJh
Y2tJRF07CiAgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+IHJl
bmRlcmVyOwogICAgICAgICBpZiAoIW1fYXVkaW9SZW5kZXJlcnMuY291bnQodHJhY2tJRCkpIHsK
LSAgICAgICAgICAgIHJlbmRlcmVyID0gYWRvcHROUyhbW2dldEFWU2FtcGxlQnVmZmVyQXVkaW9S
ZW5kZXJlckNsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgIHJlbmRlcmVyID0gYWRv
cHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJJbnN0YW5jZSgpIGluaXRdKTsK
ICAgICAgICAgICAgIFtyZW5kZXJlciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1ZTpk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XnsKICAgICAgICAgICAgICAgICBk
aWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKHRyYWNrSUQpOwogICAgICAgICAgICAgfV07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxh
eWVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI1NCw3ICsyNTQsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OlBs
YXRmb3JtQ0FMYXllck1hYyhMCiAgICAgfQogCiAgICAgaWYgKGxheWVyQ2xhc3MpCi0gICAgICAg
IG1fbGF5ZXIgPSBhZG9wdE5TKFtbbGF5ZXJDbGFzcyBhbGxvY10gaW5pdF0pOworICAgICAgICBt
X2xheWVyID0gYWRvcHROUyhbKENBTGF5ZXIgKilbbGF5ZXJDbGFzcyBhbGxvY10gaW5pdF0pOwog
CiAgICAgY29tbW9uSW5pdCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ZvbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIHZvaWQgc2hvd0xldHRlcnByZXNzZWRHbHlwaHNXaXRo
QQogCiAgICAgc3RhdGljIENVSVN0eWxlRWZmZWN0Q29uZmlndXJhdGlvbiAqc3R5bGVDb25maWd1
cmF0aW9uOwogICAgIGlmICghc3R5bGVDb25maWd1cmF0aW9uKSB7Ci0gICAgICAgIHN0eWxlQ29u
ZmlndXJhdGlvbiA9IFsoQ1VJU3R5bGVFZmZlY3RDb25maWd1cmF0aW9uICopW2dldENVSVN0eWxl
RWZmZWN0Q29uZmlndXJhdGlvbkNsYXNzKCkgYWxsb2NdIGluaXRdOworICAgICAgICBzdHlsZUNv
bmZpZ3VyYXRpb24gPSBbYWxsb2NDVUlTdHlsZUVmZmVjdENvbmZpZ3VyYXRpb25JbnN0YW5jZSgp
IGluaXRdOwogICAgICAgICBzdHlsZUNvbmZpZ3VyYXRpb24udXNlU2ltcGxpZmllZEVmZmVjdCA9
IFlFUzsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHJldmlz
aW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzI5LDcgKzMyOSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW8KICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIG1fcXRNb3ZpZSA9IGFkb3B0
TlMoW1tRVE1vdmllIGFsbG9jXSBpbml0V2l0aEF0dHJpYnV0ZXM6bW92aWVBdHRyaWJ1dGVzIGVy
cm9yOiZlcnJvcl0pOworICAgIG1fcXRNb3ZpZSA9IGFkb3B0TlMoW2FsbG9jUVRNb3ZpZUluc3Rh
bmNlKCkgaW5pdFdpdGhBdHRyaWJ1dGVzOm1vdmllQXR0cmlidXRlcyBlcnJvcjomZXJyb3JdKTsK
ICAgICAKICAgICBpZiAoIW1fcXRNb3ZpZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDI1LDcgKzQy
NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW8KICAgICBBU1NF
UlQoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpKTsKICAgICAKICAgICBpZiAoIW1fcXRW
aWRlb0xheWVyKSB7Ci0gICAgICAgIG1fcXRWaWRlb0xheWVyID0gYWRvcHROUyhbW1FUTW92aWVM
YXllciBhbGxvY10gaW5pdF0pOworICAgICAgICBtX3F0VmlkZW9MYXllciA9IGFkb3B0TlMoW2Fs
bG9jUVRNb3ZpZUxheWVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgICAgIGlmICghbV9xdFZpZGVv
TGF5ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1t
CShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERG
RG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFtbZ2V0UERGRG9jdW1lbnRD
bGFzcygpIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0p
OworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBp
bml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcklPUy5tbQkocmV2aXNpb24gMTc2OTE1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDcgKzQ2LDYgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVl
YwogI2RlZmluZSBBVlNwZWVjaFV0dGVyYW5jZURlZmF1bHRTcGVlY2hSYXRlIGdldEFWU3BlZWNo
VXR0ZXJhbmNlRGVmYXVsdFNwZWVjaFJhdGUoKQogI2RlZmluZSBBVlNwZWVjaFV0dGVyYW5jZU1h
eGltdW1TcGVlY2hSYXRlIGdldEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUoKQog
Ci0jZGVmaW5lIEFWU3BlZWNoU3ludGhlc2l6ZXJDbGFzcyBnZXRBVlNwZWVjaFN5bnRoZXNpemVy
Q2xhc3MoKQogI2RlZmluZSBBVlNwZWVjaFV0dGVyYW5jZUNsYXNzIGdldEFWU3BlZWNoVXR0ZXJh
bmNlQ2xhc3MoKQogI2RlZmluZSBBVlNwZWVjaFN5bnRoZXNpc1ZvaWNlQ2xhc3MgZ2V0QVZTcGVl
Y2hTeW50aGVzaXNWb2ljZUNsYXNzKCkKIApAQCAtOTcsNyArOTYsNyBAQCAtICh2b2lkKXNwZWFr
VXR0ZXJhbmNlOihQYXNzUmVmUHRyPFdlYkNvCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBp
ZiAoIW1fc3ludGhlc2l6ZXIpIHsKLSAgICAgICAgbV9zeW50aGVzaXplciA9IGFkb3B0TlMoWyhB
VlNwZWVjaFN5bnRoZXNpemVyICopW0FWU3BlZWNoU3ludGhlc2l6ZXJDbGFzcyBhbGxvY10gaW5p
dF0pOworICAgICAgICBtX3N5bnRoZXNpemVyID0gYWRvcHROUyhbYWxsb2NBVlNwZWVjaFN5bnRo
ZXNpemVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgICAgIFttX3N5bnRoZXNpemVyIHNldERlbGVn
YXRlOnNlbGZdOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dl
YkNvcmVNb3Rpb25NYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQkocmV2aXNpb24gMTc2OTE1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgLSAodm9pZClpbml0aWFsaXplT25NYWluVGhyZWFk
CiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKLSAgICBtX21vdGlvbk1h
bmFnZXIgPSBbKENNTW90aW9uTWFuYWdlciAqKVtnZXRDTU1vdGlvbk1hbmFnZXJDbGFzcygpIGFs
bG9jXSBpbml0XTsKKyAgICBtX21vdGlvbk1hbmFnZXIgPSBbYWxsb2NDTU1vdGlvbk1hbmFnZXJJ
bnN0YW5jZSgpIGluaXRdOwogCiAgICAgbV9neXJvQXZhaWxhYmxlID0gbV9tb3Rpb25NYW5hZ2Vy
LmRldmljZU1vdGlvbkF2YWlsYWJsZTsKIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIC0gKHZvaWQpaW5p
dGlhbGl6ZU9uTWFpblRocmVhZAogICAgIGVsc2UKICAgICAgICAgbV9tb3Rpb25NYW5hZ2VyLmFj
Y2VsZXJvbWV0ZXJVcGRhdGVJbnRlcnZhbCA9IGtNb3Rpb25VcGRhdGVJbnRlcnZhbDsKIAotICAg
IG1fbG9jYXRpb25NYW5hZ2VyID0gWyhDTExvY2F0aW9uTWFuYWdlciAqKVtnZXRDTExvY2F0aW9u
TWFuYWdlckNsYXNzKCkgYWxsb2NdIGluaXRdOworICAgIG1fbG9jYXRpb25NYW5hZ2VyID0gW2Fs
bG9jQ0xMb2NhdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdOwogICAgIG1faGVhZGluZ0F2YWls
YWJsZSA9IFtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgaGVhZGluZ0F2YWlsYWJsZV07CiAK
ICAgICBbc2VsZiBjaGVja0NsaWVudFN0YXR1c107CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEzNSw3ICsxMzUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgICAgICByZXR1cm4gc2Vs
ZjsKICAgICAKICAgICBpbml0QVZQbGF5ZXJDb250cm9sbGVyKCk7Ci0gICAgc2VsZi5wbGF5ZXJD
b250cm9sbGVyUHJveHkgPSBbW1tnZXRBVlBsYXllckNvbnRyb2xsZXJDbGFzcygpIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBbW2Fs
bG9jQVZQbGF5ZXJDb250cm9sbGVySW5zdGFuY2UoKSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAg
cmV0dXJuIHNlbGY7CiB9CiAKQEAgLTgwMSw5ICs4MDEsOSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpzCiAgICAgICAgIG1fcGFyZW50V2luZG93ID0gcGFyZW50Vmll
dy53aW5kb3c7CiAKICAgICAgICAgaWYgKCFhcHBsaWNhdGlvbklzQWRTaGVldCgpKSB7Ci0gICAg
ICAgICAgICBtX3dpbmRvdyA9IGFkb3B0TlMoW1tnZXRVSVdpbmRvd0NsYXNzKCkgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6W1tnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNjcmVlbl0gYm91bmRzXV0pOwor
ICAgICAgICAgICAgbV93aW5kb3cgPSBhZG9wdE5TKFthbGxvY1VJV2luZG93SW5zdGFuY2UoKSBp
bml0V2l0aEZyYW1lOltbZ2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dIGJvdW5kc11dKTsK
ICAgICAgICAgICAgIFttX3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFz
cygpIGNsZWFyQ29sb3JdXTsKLSAgICAgICAgICAgIG1fdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5T
KFtbZ2V0VUlWaWV3Q29udHJvbGxlckNsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAg
IG1fdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1VJVmlld0NvbnRyb2xsZXJJbnN0YW5j
ZSgpIGluaXRdKTsKICAgICAgICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBzZXRGcmFt
ZTpbbV93aW5kb3cgYm91bmRzXV07CiAgICAgICAgICAgICBbbV93aW5kb3cgc2V0Um9vdFZpZXdD
b250cm9sbGVyOm1fdmlld0NvbnRyb2xsZXIuZ2V0KCldOwogICAgICAgICAgICAgW21fd2luZG93
IG1ha2VLZXlBbmRWaXNpYmxlXTsKQEAgLTgxOSw3ICs4MTksNyBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzCiAgICAgICAgIENHUmVjdCB2aWRlb1JlY3QgPSBDR1Jl
Y3RNYWtlKDAsIDAsIHZpZGVvU2l6ZS53aWR0aCwgdmlkZW9TaXplLmhlaWdodCk7CiAgICAgICAg
IFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9SZWN0OnZpZGVvUmVjdF07CiAKLSAgICAg
ICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tnZXRBVlBsYXllclZpZXdDb250
cm9sbGVyQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhWaWRlb0xheWVyOm1fdmlkZW9MYXllckNvbnRh
aW5lci5nZXQoKV0pOworICAgICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhb
YWxsb2NBVlBsYXllclZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFZpZGVvTGF5ZXI6
bV92aWRlb0xheWVyQ29udGFpbmVyLmdldCgpXSk7CiAgICAgICAgIFttX3BsYXllclZpZXdDb250
cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpOT107CiAgICAgICAgIFttX3BsYXllclZp
ZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBs
YXllckNvbnRyb2xsZXIoKV07CiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldERl
bGVnYXRlOnBsYXllckNvbnRyb2xsZXIoKV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvQ29udGVudEZpbHRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvQ29udGVudEZpbHRlck1hYy5tbQkocmV2aXNpb24gMTc2OTE1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRlbnRGaWx0ZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEwMCwxMSArMTAwLDExIEBAIENvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIoY29u
c3QgUmVzb3UKICNlbmRpZgogewogICAgIGlmIChbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3Mo
KSBpc01hbmFnZWRTZXNzaW9uXSkKLSAgICAgICAgbV9wbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgPSBh
ZG9wdE5TKFtbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhSZXNw
b25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldKTsKKyAgICAgICAgbV9wbGF0Zm9ybUNvbnRl
bnRGaWx0ZXIgPSBhZG9wdE5TKFthbGxvY1dlYkZpbHRlckV2YWx1YXRvckluc3RhbmNlKCkgaW5p
dFdpdGhSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldKTsKIAogI2lmIEhBVkUoTkVf
RklMVEVSX1NPVVJDRSkKICAgICBpZiAoW2dldE5FRmlsdGVyU291cmNlQ2xhc3MoKSBmaWx0ZXJS
ZXF1aXJlZF0pIHsKLSAgICAgICAgbV9uZUZpbHRlclNvdXJjZSA9IGFkb3B0TlMoW1tnZXRORUZp
bHRlclNvdXJjZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoVVJMOltyZXNwb25zZS5uc1VSTFJlc3Bv
bnNlKCkgVVJMXSBkaXJlY3Rpb246TkVGaWx0ZXJTb3VyY2VEaXJlY3Rpb25JbmJvdW5kIHNvY2tl
dElkZW50aWZpZXI6MF0pOworICAgICAgICBtX25lRmlsdGVyU291cmNlID0gYWRvcHROUyhbYWxs
b2NORUZpbHRlclNvdXJjZUluc3RhbmNlKCkgaW5pdFdpdGhVUkw6W3Jlc3BvbnNlLm5zVVJMUmVz
cG9uc2UoKSBVUkxdIGRpcmVjdGlvbjpORUZpbHRlclNvdXJjZURpcmVjdGlvbkluYm91bmQgc29j
a2V0SWRlbnRpZmllcjowXSk7CiAgICAgICAgIG1fbmVGaWx0ZXJTb3VyY2VRdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYkNvcmUuTkVGaWx0ZXJTb3VyY2VRdWV1ZSIs
IERJU1BBVENIX1FVRVVFX1NFUklBTCk7CiAgICAgICAgIAogICAgICAgICBsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50U2l6ZSA9IFtyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlua2lu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlua2lu
Zy5oCShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU29m
dExpbmtpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0Myw3IEBACiAgICAgfQogCiAj
ZGVmaW5lIFNPRlRfTElOS19DTEFTUyhmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorICAgIEBjbGFz
cyBjbGFzc05hbWU7IFwKICAgICBzdGF0aWMgQ2xhc3MgaW5pdCMjY2xhc3NOYW1lKCk7IFwKICAg
ICBzdGF0aWMgQ2xhc3MgKCpnZXQjI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05h
bWU7IFwKICAgICBzdGF0aWMgQ2xhc3MgY2xhc3MjI2NsYXNzTmFtZTsgXApAQCAtMTU5LDkgKzE2
MCwxNyBAQAogICAgICAgICBBU1NFUlQoY2xhc3MjI2NsYXNzTmFtZSk7IFwKICAgICAgICAgZ2V0
IyNjbGFzc05hbWUjI0NsYXNzID0gY2xhc3NOYW1lIyNGdW5jdGlvbjsgXAogICAgICAgICByZXR1
cm4gY2xhc3MjI2NsYXNzTmFtZTsgXAotICAgIH0KKyAgICB9IFwKKyAgICBfUHJhZ21hKCJjbGFu
ZyBkaWFnbm9zdGljIHB1c2giKSBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkIFwiLVd1bnVzZWQtZnVuY3Rpb25cIiIpIFwKKyAgICBzdGF0aWMgY2xhc3NOYW1lICphbGxv
YyMjY2xhc3NOYW1lIyNJbnN0YW5jZSgpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIFtnZXQj
I2NsYXNzTmFtZSMjQ2xhc3MoKSBhbGxvY107IFwKKyAgICB9IFwKKyAgICBfUHJhZ21hKCJjbGFu
ZyBkaWFnbm9zdGljIHBvcCIpCiAKICNkZWZpbmUgU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKGZy
YW1ld29yaywgY2xhc3NOYW1lKSBcCisgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIHN0YXRp
YyBDbGFzcyBpbml0IyNjbGFzc05hbWUoKTsgXAogICAgIHN0YXRpYyBDbGFzcyAoKmdldCMjY2xh
c3NOYW1lIyNDbGFzcykoKSA9IGluaXQjI2NsYXNzTmFtZTsgXAogICAgIHN0YXRpYyBDbGFzcyBj
bGFzcyMjY2xhc3NOYW1lOyBcCkBAIC0xNzcsNyArMTg2LDE0IEBACiAgICAgICAgIGNsYXNzIyNj
bGFzc05hbWUgPSBvYmpjX2dldENsYXNzKCNjbGFzc05hbWUpOyBcCiAgICAgICAgIGdldCMjY2xh
c3NOYW1lIyNDbGFzcyA9IGNsYXNzTmFtZSMjRnVuY3Rpb247IFwKICAgICAgICAgcmV0dXJuIGNs
YXNzIyNjbGFzc05hbWU7IFwKLSAgICB9CisgICAgfSBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlh
Z25vc3RpYyBwdXNoIikgXAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCBc
Ii1XdW51c2VkLWZ1bmN0aW9uXCIiKSBcCisgICAgc3RhdGljIGNsYXNzTmFtZSAqYWxsb2MjI2Ns
YXNzTmFtZSMjSW5zdGFuY2UoKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBbZ2V0IyNjbGFz
c05hbWUjI0NsYXNzKCkgYWxsb2NdOyBcCisgICAgfSBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlh
Z25vc3RpYyBwb3AiKQogCiAjZGVmaW5lIFNPRlRfTElOS19QT0lOVEVSKGZyYW1ld29yaywgbmFt
ZSwgdHlwZSkgXAogICAgIHN0YXRpYyB0eXBlIGluaXQjI25hbWUoKTsgXApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjksNyArMTI5LDcgQEAgLSAodm9pZClzZXRWaWRlb0VsZW1lbnQ6KEhUTUxWaWRlb0VsZW1l
bgogICAgIGlmIChbc2VsZiBpc1dpbmRvd0xvYWRlZF0pIHsKICAgICAgICAgaWYgKF92aWRlb0Vs
ZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlID09IFBsYXRmb3JtTWVkaWE6OlFUTW92aWVUeXBl
KSB7CiAgICAgICAgICAgICBRVE1vdmllICptb3ZpZSA9IF92aWRlb0VsZW1lbnQtPnBsYXRmb3Jt
TWVkaWEoKS5tZWRpYS5xdE1vdmllOwotICAgICAgICAgICAgUVRNb3ZpZUxheWVyICpsYXllciA9
IFtbZ2V0UVRNb3ZpZUxheWVyQ2xhc3MoKSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBRVE1v
dmllTGF5ZXIgKmxheWVyID0gW2FsbG9jUVRNb3ZpZUxheWVySW5zdGFuY2UoKSBpbml0XTsKICAg
ICAgICAgICAgIFtsYXllciBzZXRNb3ZpZTptb3ZpZV07CiAgICAgICAgICAgICBbc2VsZiBzZXR1
cFZpZGVvT3ZlcmxheTpsYXllcl07CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCAtICh2b2lkKXNldFZp
ZGVvRWxlbWVudDooSFRNTFZpZGVvRWxlbWVuCiAKICAgICAgICAgfSBlbHNlIGlmIChfdmlkZW9F
bGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSA9PSBQbGF0Zm9ybU1lZGlhOjpBVkZvdW5kYXRp
b25NZWRpYVBsYXllclR5cGUpIHsKICAgICAgICAgICAgIEFWUGxheWVyICpwbGF5ZXIgPSBfdmlk
ZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEuYXZmTWVkaWFQbGF5ZXI7Ci0gICAgICAg
ICAgICBBVlBsYXllckxheWVyICpsYXllciA9IFtbZ2V0QVZQbGF5ZXJMYXllckNsYXNzKCkgYWxs
b2NdIGluaXRdOworICAgICAgICAgICAgQVZQbGF5ZXJMYXllciAqbGF5ZXIgPSBbYWxsb2NBVlBs
YXllckxheWVySW5zdGFuY2UoKSBpbml0XTsKICAgICAgICAgICAgIFtzZWxmIHNldHVwVmlkZW9P
dmVybGF5OmxheWVyXTsKICAgICAgICAgICAgIFtsYXllciBzZXRQbGF5ZXI6cGxheWVyXTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0
dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMTc2OTE1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJlU291
cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMiArNTEsNiBAQCBTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVECiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBB
VkNhcHR1cmVEZXZpY2VJbnB1dCkKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQ2Fw
dHVyZU91dHB1dCkKIAotI2RlZmluZSBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQgZ2V0QVZDYXB0
dXJlQXVkaW9EYXRhT3V0cHV0Q2xhc3MoKQotI2RlZmluZSBBVkNhcHR1cmVDb25uZWN0aW9uIGdl
dEFWQ2FwdHVyZUNvbm5lY3Rpb25DbGFzcygpCi0jZGVmaW5lIEFWQ2FwdHVyZURldmljZSBnZXRB
VkNhcHR1cmVEZXZpY2VDbGFzcygpCi0jZGVmaW5lIEFWQ2FwdHVyZURldmljZUlucHV0IGdldEFW
Q2FwdHVyZURldmljZUlucHV0Q2xhc3MoKQotI2RlZmluZSBBVkNhcHR1cmVPdXRwdXQgZ2V0QVZD
YXB0dXJlT3V0cHV0Q2xhc3MoKQotCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFW
TWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCiAKICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRpbyBn
ZXRBVk1lZGlhVHlwZUF1ZGlvKCkKQEAgLTkyLDEyICs4NiwxMiBAQCB2b2lkIEFWQXVkaW9DYXB0
dXJlU291cmNlOjp1cGRhdGVTdGF0ZXMoCiAKIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnNl
dHVwQ2FwdHVyZVNlc3Npb24oKQogewotICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2VJbnB1
dFR5cGU+IGF1ZGlvSW4gPSBhZG9wdE5TKFtbQVZDYXB0dXJlRGV2aWNlSW5wdXQgYWxsb2NdIGlu
aXRXaXRoRGV2aWNlOmRldmljZSgpIGVycm9yOm5pbF0pOworICAgIFJldGFpblB0cjxBVkNhcHR1
cmVEZXZpY2VJbnB1dFR5cGU+IGF1ZGlvSW4gPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZURldmlj
ZUlucHV0SW5zdGFuY2UoKSBpbml0V2l0aERldmljZTpkZXZpY2UoKSBlcnJvcjpuaWxdKTsKICAg
ICBBU1NFUlQoW3Nlc3Npb24oKSBjYW5BZGRJbnB1dDphdWRpb0luLmdldCgpXSk7CiAgICAgaWYg
KFtzZXNzaW9uKCkgY2FuQWRkSW5wdXQ6YXVkaW9Jbi5nZXQoKV0pCiAgICAgICAgIFtzZXNzaW9u
KCkgYWRkSW5wdXQ6YXVkaW9Jbi5nZXQoKV07CiAgICAgCi0gICAgUmV0YWluUHRyPEFWQ2FwdHVy
ZUF1ZGlvRGF0YU91dHB1dFR5cGU+IGF1ZGlvT3V0cHV0ID0gYWRvcHROUyhbW0FWQ2FwdHVyZUF1
ZGlvRGF0YU91dHB1dCBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxBVkNhcHR1cmVBdWRp
b0RhdGFPdXRwdXRUeXBlPiBhdWRpb091dHB1dCA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlQXVk
aW9EYXRhT3V0cHV0SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgc2V0QXVkaW9TYW1wbGVCdWZmZXJE
ZWxlZ2F0ZShhdWRpb091dHB1dC5nZXQoKSk7CiAgICAgQVNTRVJUKFtzZXNzaW9uKCkgY2FuQWRk
T3V0cHV0OmF1ZGlvT3V0cHV0LmdldCgpXSk7CiAgICAgaWYgKFtzZXNzaW9uKCkgY2FuQWRkT3V0
cHV0OmF1ZGlvT3V0cHV0LmdldCgpXSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5h
Z2VyLm1tCShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzU4LDcgKzM1OCw3IEBAIGJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29uc3QK
ICAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25zdHJhaW50czsKICAgICBj
b25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWludHMp
OwogICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgUmV0YWlu
UHRyPEFWQ2FwdHVyZVNlc3Npb25UeXBlPiBzZXNzaW9uID0gYWRvcHROUyhbW0FWQ2FwdHVyZVNl
c3Npb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgUmV0YWluUHRyPEFWQ2FwdHVyZVNlc3Npb25U
eXBlPiBzZXNzaW9uID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2UoKSBp
bml0XSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFuZGF0b3J5Q29uc3RyYWlu
dHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uc3RyYWludCYgY29u
c3RyYWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzW2ldOwogICAgICAgICAgICAgaWYgKCFzZXNz
aW9uU3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24uZ2V0KCksIHR5cGUsIGNvbnN0cmFpbnQubV9u
YW1lLCBjb25zdHJhaW50Lm1fdmFsdWUpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJlU291
cmNlLm1tCShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3
Nyw3ICsxNzcsNyBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24oCiAg
ICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zZXNzaW9uID0gYWRv
cHROUyhbW0FWQ2FwdHVyZVNlc3Npb24gYWxsb2NdIGluaXRdKTsKKyAgICBtX3Nlc3Npb24gPSBh
ZG9wdE5TKFthbGxvY0FWQ2FwdHVyZVNlc3Npb25JbnN0YW5jZSgpIGluaXRdKTsKICAgICAKICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2Jq
Y09ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihjYXB0dXJlU2Vzc2lvblN0b3BwZWRS
dW5uaW5nOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uRGlkU3RvcFJ1bm5pbmdOb3RpZmljYXRpb24g
b2JqZWN0Om5pbF07CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCShy
ZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsyMDgs
NyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpCiAKIHZvaWQgQVZW
aWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewotICAgIFJldGFpblB0
cjxBVkNhcHR1cmVEZXZpY2VJbnB1dFR5cGU+IHZpZGVvSW4gPSBhZG9wdE5TKFtbQVZDYXB0dXJl
RGV2aWNlSW5wdXQgYWxsb2NdIGluaXRXaXRoRGV2aWNlOmRldmljZSgpIGVycm9yOm5pbF0pOwor
ICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2VJbnB1dFR5cGU+IHZpZGVvSW4gPSBhZG9wdE5T
KFthbGxvY0FWQ2FwdHVyZURldmljZUlucHV0SW5zdGFuY2UoKSBpbml0V2l0aERldmljZTpkZXZp
Y2UoKSBlcnJvcjpuaWxdKTsKICAgICBBU1NFUlQoW3Nlc3Npb24oKSBjYW5BZGRJbnB1dDp2aWRl
b0luLmdldCgpXSk7CiAgICAgaWYgKFtzZXNzaW9uKCkgY2FuQWRkSW5wdXQ6dmlkZW9Jbi5nZXQo
KV0pCiAgICAgICAgIFtzZXNzaW9uKCkgYWRkSW5wdXQ6dmlkZW9Jbi5nZXQoKV07CkBAIC0yMTYs
NyArMjE2LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlUwogICAg
IGlmIChjb25zdHJhaW50cygpKQogICAgICAgICBhcHBseUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRz
KCkpOwogCi0gICAgUmV0YWluUHRyPEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGU+IHZpZGVv
T3V0cHV0ID0gYWRvcHROUyhbW0FWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCBhbGxvY10gaW5pdF0p
OworICAgIFJldGFpblB0cjxBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRUeXBlPiB2aWRlb091dHB1
dCA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0SW5zdGFuY2UoKSBpbml0
XSk7CiAgICAgc2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZSh2aWRlb091dHB1dC5nZXQoKSk7
CiAgICAgQVNTRVJUKFtzZXNzaW9uKCkgY2FuQWRkT3V0cHV0OnZpZGVvT3V0cHV0LmdldCgpXSk7
CiAgICAgaWYgKFtzZXNzaW9uKCkgY2FuQWRkT3V0cHV0OnZpZGVvT3V0cHV0LmdldCgpXSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xvb2su
bW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1F1aWNrTG9vay5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIFBhc3NP
d25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBXZWJDb3JlOjpyZWcKICAgICBpZiAoW1dlYkNvcmU6OlFM
UHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OnVwZGF0ZWRN
SU1FVHlwZS5nZXQoKV0pIHsKICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB1dGkgPSBhZG9w
dE5TKFdlYkNvcmU6OlFMVHlwZUNvcHlVVElGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIHVwZGF0ZWRN
SU1FVHlwZS5nZXQoKSkpOwogCi0gICAgICAgIFJldGFpblB0cjxpZD4gY29udmVydGVyID0gYWRv
cHROUyhbW1FMUHJldmlld0NvbnZlcnRlckNsYXNzKCkgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRh
IG5hbWU6bmlsIHV0aTp1dGkuZ2V0KCkgb3B0aW9uczpuaWxdKTsKKyAgICAgICAgUmV0YWluUHRy
PGlkPiBjb252ZXJ0ZXIgPSBhZG9wdE5TKFthbGxvY1FMUHJldmlld0NvbnZlcnRlckluc3RhbmNl
KCkgaW5pdFdpdGhEYXRhOmRhdGEgbmFtZTpuaWwgdXRpOnV0aS5nZXQoKSBvcHRpb25zOm5pbF0p
OwogICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbY29udmVydGVyIHByZXZpZXdSZXF1
ZXN0XTsKIAogICAgICAgICAvLyBXZSB1c2UgW3JlcXVlc3QgVVJMXSBoZXJlIGluc3RlYWQgb2Yg
dXJsIHNpbmNlIGl0IHdpbGwgYmUKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBzdGF0aWMgaW5saW5lIFF1
aWNrTG9va0hhbmRsZUNsaWVudCogZW1wCiAKIFF1aWNrTG9va0hhbmRsZTo6UXVpY2tMb29rSGFu
ZGxlKE5TVVJMICpmaXJzdFJlcXVlc3RVUkwsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwg
TlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSwgaWQgZGVsZWdhdGUpCiAgICAgOiBtX2ZpcnN0UmVx
dWVzdFVSTChmaXJzdFJlcXVlc3RVUkwpCi0gICAgLCBtX2NvbnZlcnRlcihhZG9wdE5TKFtbUUxQ
cmV2aWV3Q29udmVydGVyQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9uOmNvbm5lY3Rp
b24gZGVsZWdhdGU6ZGVsZWdhdGUgcmVzcG9uc2U6bnNSZXNwb25zZSBvcHRpb25zOm5pbF0pKQor
ICAgICwgbV9jb252ZXJ0ZXIoYWRvcHROUyhbYWxsb2NRTFByZXZpZXdDb252ZXJ0ZXJJbnN0YW5j
ZSgpIGluaXRXaXRoQ29ubmVjdGlvbjpjb25uZWN0aW9uIGRlbGVnYXRlOmRlbGVnYXRlIHJlc3Bv
bnNlOm5zUmVzcG9uc2Ugb3B0aW9uczpuaWxdKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUp
CiAgICAgLCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKGZhbHNlKQogICAgICwg
bV9uc1Jlc3BvbnNlKFttX2NvbnZlcnRlciBwcmV2aWV3UmVzcG9uc2VdKQpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTc2OTE1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTQtMTItMDYgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW5kIGRlcGxveSBhIGZ1bmN0aW9uIHRo
YXQgYWxsb2NhdGVzIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGEgc29mdC1saW5rZWQgY2xh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzOTM0
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIFtb
Z2V0Rm9vQ2xhc3MoKSBhbGxvY10gaW5pdCpdLCB0aGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9mICth
bGxvYyBpcyBpZCwgc28gdGhlIGNvbXBpbGVyCisgICAgICAgIHBpY2tzIGFuIGFyYml0cmFyeSBk
ZWNsYXJhdGlvbiBvZiBpbml0Kiwgbm90IG5lY2Vzc2FyaWx5IHRoZSBGb28gb25lLiBUaGlzIGNh
biB0aGVuIGxlYWQKKyAgICAgICAgdG8gd2FybmluZ3Mgb3IgZXJyb3JzIGlmIHRoZSB0eXBlcyBv
ciBhdHRyaWJ1dGVzIGRvbuKAmXQgbWF0Y2gsIG9yIHRvIHJ1bnRpbWUgZXJyb3JzIGlmIEZvbwor
ICAgICAgICBkb2VzbuKAmXQgZXZlbiBoYXZlIHRoZSBleHBlY3RlZCBpbml0aWFsaXplci4gVGhl
IG5ldyBhbGxvY0Zvb0luc3RhbmNlKCkgcmV0dXJucyBhIEZvbyAqLCB0aHVzCisgICAgICAgIGF2
b2lkaW5nIHRoZSBhbWJpZ3VpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
QWlyUGxheVJvdXRlUGlja2VyLm1tOgorICAgICAgICAoLVtXS0FpclBsYXlSb3V0ZVBpY2tlciBz
aG93QWlyUGxheVBpY2tlcklQYWQ6ZnJvbVJlY3Q6XSk6CisgICAgICAgICgtW1dLQWlyUGxheVJv
dXRlUGlja2VyIHNob3dBaXJQbGF5UGlja2VySVBob25lOl0pOgorICAgICAgICAoLVtXS0FpclBs
YXlSb3V0ZVBpY2tlciBzaG93OmZyb21SZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW06CisgICAgICAgICgtW19XS1ZpZGVvRmlsZVVwbG9h
ZEl0ZW0gZGlzcGxheUltYWdlXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0FjdGlvbk1l
bnVDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0FjdGlvbk1lbnVDb250cm9sbGVyIF9kZWZh
dWx0TWVudUl0ZW1zRm9yRGF0YURldGVjdGFibGVMaW5rXSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAgIChX
ZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUpOgorCiAyMDE0LTEyLTA2
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1
aWxkIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgY2xhbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIu
bW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tBaXJQbGF5Um91dGVQaWNrZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMs
NyBAQCAtICh2b2lkKXNob3dBaXJQbGF5UGlja2VySVBhZDooTVBBVkl0ZW1UCiAgICAgaWYgKF9w
b3BvdmVyQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX3BvcG92ZXJDb250cm9s
bGVyID0gYWRvcHROUyhbKE1QQXVkaW9WaWRlb1JvdXRpbmdQb3BvdmVyQ29udHJvbGxlciAqKVtn
ZXRNUEF1ZGlvVmlkZW9Sb3V0aW5nUG9wb3ZlckNvbnRyb2xsZXJDbGFzcygpIGFsbG9jXSBpbml0
V2l0aFR5cGU6aXRlbVR5cGVdKTsKKyAgICBfcG9wb3ZlckNvbnRyb2xsZXIgPSBhZG9wdE5TKFth
bGxvY01QQXVkaW9WaWRlb1JvdXRpbmdQb3BvdmVyQ29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdp
dGhUeXBlOml0ZW1UeXBlXSk7CiAgICAgW19wb3BvdmVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpz
ZWxmXTsKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl07CkBAIC0xMjgsNyArMTI4LDcgQEAgLSAodm9pZClzaG93
QWlyUGxheVBpY2tlcklQaG9uZTooTVBBVkl0ZQogICAgIGlmIChfYWN0aW9uU2hlZXQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIF9hY3Rpb25TaGVldCA9IGFkb3B0TlMoWyhNUEF1ZGlvVmlkZW9S
b3V0aW5nQWN0aW9uU2hlZXQgKilbZ2V0TVBBdWRpb1ZpZGVvUm91dGluZ0FjdGlvblNoZWV0Q2xh
c3MoKSBhbGxvY10gaW5pdFdpdGhUeXBlOml0ZW1UeXBlXSk7CisgICAgX2FjdGlvblNoZWV0ID0g
YWRvcHROUyhbYWxsb2NNUEF1ZGlvVmlkZW9Sb3V0aW5nQWN0aW9uU2hlZXRJbnN0YW5jZSgpIGlu
aXRXaXRoVHlwZTppdGVtVHlwZV0pOwogCiAgICAgW19hY3Rpb25TaGVldAogICAgICAgICBzaG93
V2l0aFZhbGlkSW50ZXJmYWNlT3JpZW50YXRpb25NYXNrQmxvY2s6XlVJSW50ZXJmYWNlT3JpZW50
YXRpb25NYXNrIHsKQEAgLTE0Myw3ICsxNDMsNyBAQCAtICh2b2lkKXNob3dBaXJQbGF5UGlja2Vy
SVBob25lOihNUEFWSXRlCiAKIC0gKHZvaWQpc2hvdzooQk9PTCloYXNWaWRlbyBmcm9tUmVjdDoo
Q0dSZWN0KWVsZW1lbnRSZWN0CiB7Ci0gICAgX3JvdXRpbmdDb250cm9sbGVyID0gYWRvcHROUyhb
KE1QQVZSb3V0aW5nQ29udHJvbGxlciAqKVtnZXRNUEFWUm91dGluZ0NvbnRyb2xsZXJDbGFzcygp
IGFsbG9jXSBpbml0V2l0aE5hbWU6QCJXZWJLaXQyIC0gSFRNTCBtZWRpYSBlbGVtZW50IHNob3dp
bmcgQWlyUGxheSByb3V0ZSBwaWNrZXIiXSk7CisgICAgX3JvdXRpbmdDb250cm9sbGVyID0gYWRv
cHROUyhbYWxsb2NNUEFWUm91dGluZ0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoTmFtZTpA
IldlYktpdDIgLSBIVE1MIG1lZGlhIGVsZW1lbnQgc2hvd2luZyBBaXJQbGF5IHJvdXRlIHBpY2tl
ciJdKTsKICAgICBbX3JvdXRpbmdDb250cm9sbGVyIHNldERpc2NvdmVyeU1vZGU6TVBSb3V0ZURp
c2NvdmVyeU1vZGVEZXRhaWxlZF07CiAKICAgICBNUEFWSXRlbVR5cGUgaXRlbVR5cGUgPSBoYXNW
aWRlbyA/IE1QQVZJdGVtVHlwZVZpZGVvIDogTVBBVkl0ZW1UeXBlQXVkaW87CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2Fk
UGFuZWwubW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2
LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIFNPRlRfTElOS19GUkFNRVdPUksoQVZGb3Vu
ZGF0aW9uKTsKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRJbWFnZUdlbmVy
YXRvcik7CiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KTsKLSNkZWZp
bmUgQVZBc3NldEltYWdlR2VuZXJhdG9yX2NsYXNzIGdldEFWQXNzZXRJbWFnZUdlbmVyYXRvckNs
YXNzKCkKLSNkZWZpbmUgQVZVUkxBc3NldF9jbGFzcyBnZXRBVlVSTEFzc2V0Q2xhc3MoKQogCiBT
T0ZUX0xJTktfRlJBTUVXT1JLKENvcmVNZWRpYSk7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29yZU1l
ZGlhLCBrQ01UaW1lWmVybywgQ01UaW1lKTsKQEAgLTIwNyw4ICsyMDUsOCBAQCAtIChOU1VSTCAq
KWZpbGVVUkwKIAogLSAoVUlJbWFnZSAqKWRpc3BsYXlJbWFnZQogewotICAgIFJldGFpblB0cjxB
VlVSTEFzc2V0PiBhc3NldCA9IGFkb3B0TlMoW1tBVlVSTEFzc2V0X2NsYXNzIGFsbG9jXSBpbml0
V2l0aFVSTDpfbWVkaWFVUkwuZ2V0KCkgb3B0aW9uczpuaWxdKTsKLSAgICBSZXRhaW5QdHI8QVZB
c3NldEltYWdlR2VuZXJhdG9yPiBnZW5lcmF0b3IgPSBhZG9wdE5TKFtbQVZBc3NldEltYWdlR2Vu
ZXJhdG9yX2NsYXNzIGFsbG9jXSBpbml0V2l0aEFzc2V0OmFzc2V0LmdldCgpXSk7CisgICAgUmV0
YWluUHRyPEFWVVJMQXNzZXQ+IGFzc2V0ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5zdGFu
Y2UoKSBpbml0V2l0aFVSTDpfbWVkaWFVUkwuZ2V0KCkgb3B0aW9uczpuaWxdKTsKKyAgICBSZXRh
aW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBnZW5lcmF0b3IgPSBhZG9wdE5TKFthbGxvY0FW
QXNzZXRJbWFnZUdlbmVyYXRvckluc3RhbmNlKCkgaW5pdFdpdGhBc3NldDphc3NldC5nZXQoKV0p
OwogICAgIFtnZW5lcmF0b3Igc2V0QXBwbGllc1ByZWZlcnJlZFRyYWNrVHJhbnNmb3JtOllFU107
CiAKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIubW0JKHJldmlzaW9u
IDE3NjkxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29u
dHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtODY0LDcgKzg2NCw3IEBAIC0gKE5TQXJyYXkg
KilfZGVmYXVsdE1lbnVJdGVtc0ZvcldoaXRlc3AKIC0gKE5TQXJyYXkgKilfZGVmYXVsdE1lbnVJ
dGVtc0ZvckRhdGFEZXRlY3RhYmxlTGluawogewogICAgIFJlZlB0cjxXZWJIaXRUZXN0UmVzdWx0
PiBoaXRUZXN0UmVzdWx0ID0gW3NlbGYgX3dlYkhpdFRlc3RSZXN1bHRdOwotICAgIFJldGFpblB0
cjxEREFjdGlvbkNvbnRleHQ+IGFjdGlvbkNvbnRleHQgPSBbW2dldEREQWN0aW9uQ29udGV4dENs
YXNzKCkgYWxsb2NdIGluaXRdOworICAgIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGFjdGlv
bkNvbnRleHQgPSBbYWxsb2NEREFjdGlvbkNvbnRleHRJbnN0YW5jZSgpIGluaXRdOwogCiAgICAg
Ly8gRklYTUU6IFNob3VsZCB0aGlzIHNob3cgYSB5ZWxsb3cgaGlnaGxpZ2h0PwogICAgIF9jdXJy
ZW50QWN0aW9uQ29udGV4dCA9IFthY3Rpb25Db250ZXh0IGNvbnRleHRGb3JWaWV3Ol93a1ZpZXcg
YWx0TW9kZTpZRVMgaW50ZXJhY3Rpb25TdGFydGVkSGFuZGxlcjpeKCkgewpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3Rl
Q3VzdG9tLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYQogICAgIGJvb2wgY29weUNvbnRlbnRzID0gdHJ1
ZTsKIAogICAgIGlmIChsYXllclR5cGUoKSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyKSB7Ci0g
ICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW2dldEFWUGxheWVyTGF5ZXJDbGFzcygpIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbYWxsb2NBVlBsYXll
ckxheWVySW5zdGFuY2UoKSBpbml0XSk7CiAKICAgICAgICAgQVZQbGF5ZXJMYXllciogZGVzdGlu
YXRpb25QbGF5ZXJMYXllciA9IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4oY2xvbmVkTGF5
ZXIuZ2V0KCkpOwogICAgICAgICBBVlBsYXllckxheWVyKiBzb3VyY2VQbGF5ZXJMYXllciA9IHN0
YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4ocGxhdGZvcm1MYXllcigpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2lvcy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE0LTEyLTA2ICBEYW4gQmVybnN0
ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGFuZCBkZXBsb3kgYSBm
dW5jdGlvbiB0aGF0IGFsbG9jYXRlcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhIHNvZnQt
bGlua2VkIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzkzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbiBbW2dldEZvb0NsYXNzKCkgYWxsb2NdIGluaXQqXSwgdGhlIHR5cGUgb2YgdGhlIHJl
c3VsdCBvZiArYWxsb2MgaXMgaWQsIHNvIHRoZSBjb21waWxlcgorICAgICAgICBwaWNrcyBhbiBh
cmJpdHJhcnkgZGVjbGFyYXRpb24gb2YgaW5pdCosIG5vdCBuZWNlc3NhcmlseSB0aGUgRm9vIG9u
ZS4gVGhpcyBjYW4gdGhlbiBsZWFkCisgICAgICAgIHRvIHdhcm5pbmdzIG9yIGVycm9ycyBpZiB0
aGUgdHlwZXMgb3IgYXR0cmlidXRlcyBkb27igJl0IG1hdGNoLCBvciB0byBydW50aW1lIGVycm9y
cyBpZiBGb28KKyAgICAgICAgZG9lc27igJl0IGV2ZW4gaGF2ZSB0aGUgZXhwZWN0ZWQgaW5pdGlh
bGl6ZXIuIFRoZSBuZXcgYWxsb2NGb29JbnN0YW5jZSgpIHJldHVybnMgYSBGb28gKiwgdGh1cwor
ICAgICAgICBhdm9pZGluZyB0aGUgYW1iaWd1aXR5LgorCisgICAgICAgICogTWlzYy9XZWJHZW9s
b2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tOgorICAgICAgICAoLVtXZWJHZW9sb2NhdGlv
bkNvcmVMb2NhdGlvblByb3ZpZGVyIGNyZWF0ZUxvY2F0aW9uTWFuYWdlcl0pOgorCiAyMDE0LTEy
LTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGJ1aWxkIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgY2xhbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
b3ZpZGVyLm1tCShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dl
Ykdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTY1
LDcgKzY1LDcgQEAgLSAodm9pZCljcmVhdGVMb2NhdGlvbk1hbmFnZXIKIHsKICAgICBBU1NFUlQo
IV9sb2NhdGlvbk1hbmFnZXIpOwogCi0gICAgX2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0TlMoWyhD
TExvY2F0aW9uTWFuYWdlciAqKVtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgYWxsb2NdIGlu
aXRdKTsKKyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9uTWFu
YWdlckluc3RhbmNlKCkgaW5pdF0pOwogICAgIF9sYXN0QXV0aG9yaXphdGlvblN0YXR1cyA9IFtn
ZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CiAKICAgICBb
IF9sb2NhdGlvbk1hbmFnZXIgc2V0RGVsZWdhdGU6c2VsZl07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0xMi0wNiAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhbmQgZGVwbG95IGEgZnVuY3Rpb24g
dGhhdCBhbGxvY2F0ZXMgYW5kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYSBzb2Z0LWxpbmtlZCBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5
MzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
W1tnZXRGb29DbGFzcygpIGFsbG9jXSBpbml0Kl0sIHRoZSB0eXBlIG9mIHRoZSByZXN1bHQgb2Yg
K2FsbG9jIGlzIGlkLCBzbyB0aGUgY29tcGlsZXIKKyAgICAgICAgcGlja3MgYW4gYXJiaXRyYXJ5
IGRlY2xhcmF0aW9uIG9mIGluaXQqLCBub3QgbmVjZXNzYXJpbHkgdGhlIEZvbyBvbmUuIFRoaXMg
Y2FuIHRoZW4gbGVhZAorICAgICAgICB0byB3YXJuaW5ncyBvciBlcnJvcnMgaWYgdGhlIHR5cGVz
IG9yIGF0dHJpYnV0ZXMgZG9u4oCZdCBtYXRjaCwgb3IgdG8gcnVudGltZSBlcnJvcnMgaWYgRm9v
CisgICAgICAgIGRvZXNu4oCZdCBldmVuIGhhdmUgdGhlIGV4cGVjdGVkIGluaXRpYWxpemVyLiBU
aGUgbmV3IGFsbG9jRm9vSW5zdGFuY2UoKSByZXR1cm5zIGEgRm9vICosIHRodXMKKyAgICAgICAg
YXZvaWRpbmcgdGhlIGFtYmlndWl0eS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViQWN0aW9uTWVu
dUNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkFjdGlvbk1lbnVDb250cm9sbGVyIF9kZWZh
dWx0TWVudUl0ZW1zRm9yRGF0YURldGVjdGFibGVMaW5rXSk6CisKIDIwMTQtMTItMDYgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzdHViYmVk
IG91dCB2ZXJzaW9uIG9mIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcgpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25NZW51Q29udHJvbGxlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlvbk1lbnVDb250cm9sbGVyLm1t
CShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlv
bk1lbnVDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjkyLDcgQEAgLSAo
TlNBcnJheSAqKV9kZWZhdWx0TWVudUl0ZW1zRm9yRGF0YURldAogICAgIGlmICghbm9kZSkKICAg
ICAgICAgcmV0dXJuIEBbIF07CiAKLSAgICBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBhY3Rp
b25Db250ZXh0ID0gW1tnZXREREFjdGlvbkNvbnRleHRDbGFzcygpIGFsbG9jXSBpbml0XTsKKyAg
ICBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0ID0gW2FsbG9jRERBY3Rp
b25Db250ZXh0SW5zdGFuY2UoKSBpbml0XTsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBz
aG93IGEgeWVsbG93IGhpZ2hsaWdodD8KICAgICBfY3VycmVudEFjdGlvbkNvbnRleHQgPSBbYWN0
aW9uQ29udGV4dCBjb250ZXh0Rm9yVmlldzpfd2ViVmlldyBhbHRNb2RlOllFUyBpbnRlcmFjdGlv
blN0YXJ0ZWRIYW5kbGVyOl4oKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242746</attachid>
            <date>2014-12-07 08:34:59 -0800</date>
            <delta_ts>2014-12-07 09:04:06 -0800</delta_ts>
            <desc>Add and deploy alloc##className##Instance</desc>
            <filename>139348_r2.diff</filename>
            <type>text/plain</type>
            <size>46594</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjkxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDE0LTEyLTA3ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGFuZCBkZXBsb3kg
YSBmdW5jdGlvbiB0aGF0IGFsbG9jYXRlcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhIHNv
ZnQtbGlua2VkIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbiBbW2dldEZvb0NsYXNzKCkgYWxsb2NdIGluaXQqXSwgdGhlIHR5cGUgb2YgdGhl
IHJlc3VsdCBvZiArYWxsb2MgaXMgaWQsIHNvIHRoZSBjb21waWxlcgorICAgICAgICBwaWNrcyBh
biBhcmJpdHJhcnkgZGVjbGFyYXRpb24gb2YgaW5pdCosIG5vdCBuZWNlc3NhcmlseSB0aGUgRm9v
IG9uZS4gVGhpcyBjYW4gdGhlbiBsZWFkCisgICAgICAgIHRvIHdhcm5pbmdzIG9yIGVycm9ycyBp
ZiB0aGUgdHlwZXMgb3IgYXR0cmlidXRlcyBkb27igJl0IG1hdGNoLCBvciB0byBydW50aW1lIGVy
cm9ycyBpZiBGb28KKyAgICAgICAgZG9lc27igJl0IGV2ZW4gaGF2ZSB0aGUgZXhwZWN0ZWQgaW5p
dGlhbGl6ZXIuIFRoZSBuZXcgYWxsb2NGb29JbnN0YW5jZSgpIHJldHVybnMgYSBGb28gKiwgdGh1
cworICAgICAgICBhdm9pZGluZyB0aGUgYW1iaWd1aXR5LgorCisgICAgICAgICogZWRpdGluZy9t
YWMvRGF0YURldGVjdGlvbi5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFEZXRlY3Rpb246OmRl
dGVjdEl0ZW1Bcm91bmRIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKC1bV2ViTWVkaWFTZXNzaW9u
SGVscGVyIGFsbG9jYXRlVm9sdW1lVmlld10pOgorICAgICAgICAoLVtXZWJNZWRpYVNlc3Npb25I
ZWxwZXIgc3RhcnRNb25pdG9yaW5nQWlyUGxheVJvdXRlc10pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGVNaXgpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3Jl
YXRlQVZQbGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0cHV0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmVuc3VyZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU291cmNlQVZGT2JqQzo6c3RyZWFtU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjp0cmFja0RpZENoYW5nZUVuYWJsZWQpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbToKKyAgICAgICAgKFBsYXRmb3JtQ0FM
YXllck1hYzo6UGxhdGZvcm1DQUxheWVyTWFjKTogQ2FzdCB0aGUgcmVzdWx0IG9mICthbGxvYyB0
byBhbiBpbnN0YW5jZSBvZiB0aGUKKyAgICAgICAgZXhwZWN0ZWQgY2xhc3MuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNo
b3dMZXR0ZXJwcmVzc2VkR2x5cGhzV2l0aEFkdmFuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZUxheWVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbToKKyAgICAg
ICAgKFNPRlRfTElOS19DT05TVEFOVCk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dy
YXBwZXIgc3BlYWtVdHRlcmFuY2U6XSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkNvcmVN
b3Rpb25NYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJDb3JlTW90aW9uTWFuYWdlciBpbml0aWFs
aXplT25NYWluVGhyZWFkXSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tOgorICAgICAgICAoLVtXZWJBVlBsYXllckNvbnRyb2xsZXIg
aW5pdF0pOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNldHVw
RnVsbHNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0NvbnRlbnRGaWx0ZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKToKKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9Tb2Z0TGlua2luZy5oOiBBZGRlZCBhbGxvYyMjY2xhc3NOYW1l
IyNpbnN0YW5jZSgpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIg
c2V0VmlkZW9FbGVtZW50Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJl
U291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFW
Q2FwdHVyZURldmljZU1hbmFnZXI6OnZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW06
CisgICAgICAgIChXZWJDb3JlOjpBVk1lZGlhQ2FwdHVyZVNvdXJjZTo6c2V0dXBTZXNzaW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2Uu
bW06CisgICAgICAgIChXZWJDb3JlOjpBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJl
U2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvUXVpY2tMb29rLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJRTFByZXZpZXdDb252ZXJ0ZXJJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpRdWlja0xvb2tIYW5kbGU6OlF1aWNrTG9va0hhbmRsZSk6CisKIDIw
MTQtMTItMDYgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVUlRCRiBhZnRlciByMTc2OTE1LgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RGF0YURldGVjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9EYXRhRGV0ZWN0aW9uLm1tCShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9EYXRhRGV0ZWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3
IEBAIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IERhdGFEZXRlY3Rpb24KICAgICBpZiAoIW1h
aW5SZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRyPEREQWN0
aW9uQ29udGV4dD4gYWN0aW9uQ29udGV4dCA9IGFkb3B0TlMoW1tnZXREREFjdGlvbkNvbnRleHRD
bGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPEREQWN0aW9uQ29udGV4dD4gYWN0
aW9uQ29udGV4dCA9IGFkb3B0TlMoW2FsbG9jRERBY3Rpb25Db250ZXh0SW5zdGFuY2UoKSBpbml0
XSk7CiAgICAgW2FjdGlvbkNvbnRleHQgc2V0QWxsUmVzdWx0czpAWyAoaWQpbWFpblJlc3VsdCBd
XTsKICAgICBbYWN0aW9uQ29udGV4dCBzZXRNYWluUmVzdWx0Om1haW5SZXN1bHRdOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVk
aWFTZXNzaW9uTWFuYWdlcklPUy5tbQkocmV2aXNpb24gMTc2OTE3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI0MSw3ICsyNDEsNyBAQCAtICh2b2lkKWFsbG9jYXRlVm9sdW1lVmlldwogICAg
ICAgICB9KTsKICAgICB9CiAKLSAgICBfdm9sdW1lVmlldyA9IGFkb3B0TlMoW1tnZXRNUFZvbHVt
ZVZpZXdDbGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgX3ZvbHVtZVZpZXcgPSBhZG9wdE5TKFth
bGxvY01QVm9sdW1lVmlld0luc3RhbmNlKCkgaW5pdF0pOwogICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3Io
d2lyZWxlc3NSb3V0ZXNBdmFpbGFibGVEaWRDaGFuZ2U6KSBuYW1lOk1QVm9sdW1lVmlld1dpcmVs
ZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpfdm9sdW1lVmll
dy5nZXQoKV07CiAgICAgCiB9CkBAIC0zMjQsNyArMzI0LDcgQEAgLSAodm9pZClzdGFydE1vbml0
b3JpbmdBaXJQbGF5Um91dGVzCiAgICAgICAgIGlmIChzdHJvbmdTZWxmLT5fYWlyUGxheVByZXNl
bmNlUm91dGluZ0NvbnRyb2xsZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgc3Ry
b25nU2VsZi0+X2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyID0gYWRvcHROUyhbW2dl
dE1QQVZSb3V0aW5nQ29udHJvbGxlckNsYXNzKCkgYWxsb2NdIGluaXRXaXRoTmFtZTpAIldlYkNv
cmUgLSBIVE1MIG1lZGlhIGVsZW1lbnQgY2hlY2tpbmcgZm9yIEFpclBsYXkgcm91dGUgcHJlc2Vu
Y2UiXSk7CisgICAgICAgIHN0cm9uZ1NlbGYtPl9haXJQbGF5UHJlc2VuY2VSb3V0aW5nQ29udHJv
bGxlciA9IGFkb3B0TlMoW2FsbG9jTVBBVlJvdXRpbmdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0
V2l0aE5hbWU6QCJXZWJDb3JlIC0gSFRNTCBtZWRpYSBlbGVtZW50IGNoZWNraW5nIGZvciBBaXJQ
bGF5IHJvdXRlIHByZXNlbmNlIl0pOwogICAgICAgICBbc3Ryb25nU2VsZi0+X2FpclBsYXlQcmVz
ZW5jZVJvdXRpbmdDb250cm9sbGVyIHNldERpc2NvdmVyeU1vZGU6TVBSb3V0ZURpc2NvdmVyeU1v
ZGVQcmVzZW5jZV07CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGVNCiAgICAgQVNTRVJUKG1fYXZQbGF5ZXJJdGVt
KTsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCi0gICAgbV9hdkF1ZGlvTWl4ID0gYWRvcHROUyhb
KEFWTXV0YWJsZUF1ZGlvTWl4ICopW2dldEFWTXV0YWJsZUF1ZGlvTWl4Q2xhc3MoKSBhbGxvY10g
aW5pdF0pOworICAgIG1fYXZBdWRpb01peCA9IGFkb3B0TlMoW2FsbG9jQVZNdXRhYmxlQXVkaW9N
aXhJbnN0YW5jZSgpIGluaXRdKTsKIAogICAgIE1UQXVkaW9Qcm9jZXNzaW5nVGFwQ2FsbGJhY2tz
IGNhbGxiYWNrcyA9IHsKICAgICAgICAgMCwKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIEF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGVNCiAgICAgQVNTRVJUKHRhcCk7CiAgICAgQVNT
RVJUKG1fdGFwID09IHRhcCk7CiAKLSAgICBSZXRhaW5QdHI8QVZNdXRhYmxlQXVkaW9NaXhJbnB1
dFBhcmFtZXRlcnM+IHBhcmFtZXRlcnMgPSBhZG9wdE5TKFsoQVZNdXRhYmxlQXVkaW9NaXhJbnB1
dFBhcmFtZXRlcnMgKilbZ2V0QVZNdXRhYmxlQXVkaW9NaXhJbnB1dFBhcmFtZXRlcnNDbGFzcygp
IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPEFWTXV0YWJsZUF1ZGlvTWl4SW5wdXRQYXJh
bWV0ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbYWxsb2NBVk11dGFibGVBdWRpb01peElucHV0
UGFyYW1ldGVyc0luc3RhbmNlKCkgaW5pdF0pOwogICAgIFtwYXJhbWV0ZXJzIHNldEF1ZGlvVGFw
UHJvY2Vzc29yOm1fdGFwLmdldCgpXTsKIAogICAgIENNUGVyc2lzdGVudFRyYWNrSUQgZmlyc3RF
bmFibGVkQXVkaW9UcmFja0lEID0ga0NNUGVyc2lzdGVudFRyYWNrSURfSW52YWxpZDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNl
c3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDLm1tCShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDE0IEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZG
b3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL29iamMtcnVudGltZS5oPgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KIFNPRlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQog
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldCkKIFNPRlRfTElOS19DTEFT
UyhBVkZvdW5kYXRpb24sIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KQogI2RlZmluZSBB
VlVSTEFzc2V0IGdldEFWVVJMQXNzZXRDbGFzcygpCiAjZGVmaW5lIEFWQXNzZXRSZXNvdXJjZUxv
YWRpbmdSZXF1ZXN0IGdldEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0KCkKIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworCiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Q0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50
KQogICAgIDogbV9wYXJlbnQocGFyZW50KQogICAgICwgbV9jbGllbnQobnVsbHB0cikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkZPYmpDLm1tCShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2Jq
Qy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsNiBAQAogCiBTT0ZUX0xJTktfRlJBTUVX
T1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKIAotI2RlZmluZSBBVlBsYXllciBnZXRBVlBsYXll
ckNsYXNzKCkKLSNkZWZpbmUgQVZQbGF5ZXJJdGVtIGdldEFWUGxheWVySXRlbUNsYXNzKCkKLQog
U09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1Mo
QVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW0pCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9u
LCBBVk1ldGFkYXRhSXRlbSkKQEAgLTY1LDYgKzYyLDggQEAgU09GVF9MSU5LX1BPSU5URVIoQVZG
b3VuZGF0aW9uLCBBVk1lZGlhQwogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1l
ZGlhQ2hhcmFjdGVyaXN0aWNJc01haW5Qcm9ncmFtQ29udGVudCwgTlNTdHJpbmcgKikKIFNPRlRf
TElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJhY3RlcmlzdGljRWFzeVRvUmVh
ZCwgTlNTdHJpbmcgKikKIAorI2RlZmluZSBBVlBsYXllciBnZXRBVlBsYXllckNsYXNzKCkKKyNk
ZWZpbmUgQVZQbGF5ZXJJdGVtIGdldEFWUGxheWVySXRlbUNsYXNzKCkKICNkZWZpbmUgQVZNZXRh
ZGF0YUl0ZW0gZ2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpCiAjZGVmaW5lIEFWUGxheWVySXRlbUxl
Z2libGVPdXRwdXQgZ2V0QVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dENsYXNzKCkKICNkZWZpbmUg
QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRBVk1lZGlhQ2hhcmFjdGVyaXN0aWNMZWdp
YmxlKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLm1tCShyZXZpc2lvbiAxNzY5MTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcs
NyArMzcsNiBAQAogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAKIFNPRlRfTElOS19GUkFNRVdP
UktfT1BUSU9OQUwoQVZGb3VuZGF0aW9uKQotI2RlZmluZSBBVlBsYXllckl0ZW0gZ2V0QVZQbGF5
ZXJJdGVtQ2xhc3MoKQogCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0
ZW0pCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhSXRlbSkKQEAgLTQ4
LDYgKzQ3LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlhQwogU09G
VF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRhQ29tbW9uS2V5VGl0bGUsIE5T
U3RyaW5nICopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWTWV0YWRhdGFLZXlT
cGFjZUNvbW1vbiwgTlNTdHJpbmcgKikKIAorI2RlZmluZSBBVlBsYXllckl0ZW0gZ2V0QVZQbGF5
ZXJJdGVtQ2xhc3MoKQogI2RlZmluZSBBVk1ldGFkYXRhSXRlbSBnZXRBVk1ldGFkYXRhSXRlbUNs
YXNzKCkKICNkZWZpbmUgQVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZSBnZXRBVk1lZGlhQ2hh
cmFjdGVyaXN0aWNMZWdpYmxlKCkKICNkZWZpbmUgQVZNZXRhZGF0YUNvbW1vbktleVRpdGxlIGdl
dEFWTWV0YWRhdGFDb21tb25LZXlUaXRsZSgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0J
KHJldmlzaW9uIDE3NjkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6CiAgICAgaWYgKCFtX2F2UGxheWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3ZpZGVvTGF5ZXIgPSBhZG9wdE5TKFtbQVZQbGF5ZXJMYXllciBhbGxvY10gaW5pdF0p
OworICAgIG1fdmlkZW9MYXllciA9IGFkb3B0TlMoW2FsbG9jQVZQbGF5ZXJMYXllckluc3RhbmNl
KCkgaW5pdF0pOwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0UGxheWVyOm1fYXZQbGF5ZXIuZ2V0KCld
OwogICAgIFttX3ZpZGVvTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoQ29s
b3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKV07CiAjaWZuZGVmIE5ERUJVRwpAQCAtODM4
LDcgKzgzOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICNl
bmRpZgogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2FsVVJMKHVybCk7Ci0gICAgbV9h
dkFzc2V0ID0gYWRvcHROUyhbW0FWVVJMQXNzZXQgYWxsb2NdIGluaXRXaXRoVVJMOmNvY29hVVJM
IG9wdGlvbnM6b3B0aW9ucy5nZXQoKV0pOworICAgIG1fYXZBc3NldCA9IGFkb3B0TlMoW2FsbG9j
QVZVUkxBc3NldEluc3RhbmNlKCkgaW5pdFdpdGhVUkw6Y29jb2FVUkwgb3B0aW9uczpvcHRpb25z
LmdldCgpXSk7CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9MT0FERVJfREVMRUdBVEUpCiAgICAg
W1ttX2F2QXNzZXQuZ2V0KCkgcmVzb3VyY2VMb2FkZXJdIHNldERlbGVnYXRlOm1fbG9hZGVyRGVs
ZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpXTsKQEAgLTg3NSw3
ICs4NzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAg
ICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKIAotICAgIG1fYXZQbGF5ZXIgPSBhZG9wdE5TKFtb
QVZQbGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBtX2F2UGxheWVyID0gYWRvcHROUyhbYWxsb2NB
VlBsYXllckluc3RhbmNlKCkgaW5pdF0pOwogICAgIFttX2F2UGxheWVyLmdldCgpIGFkZE9ic2Vy
dmVyOm1fb2JqY09ic2VydmVyLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOk5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDoodm9pZCAqKU1lZGlhUGxheWVyQVZGb3Vu
ZGF0aW9uT2JzZXJ2YXRpb25Db250ZXh0UGxheWVyXTsKICNpZiBFTkFCTEUoSU9TX0FJUlBMQVkp
CiAgICAgW21fYXZQbGF5ZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9vYmpjT2JzZXJ2ZXIuZ2V0KCkg
Zm9yS2V5UGF0aDpAImV4dGVybmFsUGxheWJhY2tBY3RpdmUiIG9wdGlvbnM6TlNLZXlWYWx1ZU9i
c2VydmluZ09wdGlvbk5ldyBjb250ZXh0Oih2b2lkICopTWVkaWFQbGF5ZXJBVkZvdW5kYXRpb25P
YnNlcnZhdGlvbkNvbnRleHRQbGF5ZXJdOwpAQCAtOTA5LDcgKzkwOSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVl
KTsKIAogICAgIC8vIENyZWF0ZSB0aGUgcGxheWVyIGl0ZW0gc28gd2UgY2FuIGxvYWQgbWVkaWEg
ZGF0YS4gCi0gICAgbV9hdlBsYXllckl0ZW0gPSBhZG9wdE5TKFtbQVZQbGF5ZXJJdGVtIGFsbG9j
XSBpbml0V2l0aEFzc2V0Om1fYXZBc3NldC5nZXQoKV0pOworICAgIG1fYXZQbGF5ZXJJdGVtID0g
YWRvcHROUyhbYWxsb2NBVlBsYXllckl0ZW1JbnN0YW5jZSgpIGluaXRXaXRoQXNzZXQ6bV9hdkFz
c2V0LmdldCgpXSk7CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJd
IGFkZE9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihkaWRF
bmQ6KSBuYW1lOkFWUGxheWVySXRlbURpZFBsYXlUb0VuZFRpbWVOb3RpZmljYXRpb24gb2JqZWN0
Om1fYXZQbGF5ZXJJdGVtLmdldCgpXTsKIApAQCAtOTMwLDcgKzkzMCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBjb25zdCBOU1RpbWVJbnRlcnZhbCBs
ZWdpYmxlT3V0cHV0QWR2YW5jZUludGVydmFsID0gMjsKIAogICAgIFJldGFpblB0cjxOU0FycmF5
PiBzdWJ0eXBlcyA9IGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6W05T
TnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ01TdWJ0aXRsZUZvcm1hdFR5cGVfV2ViVlRU
XSwgbmlsXSk7Ci0gICAgbV9sZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhbW0FWUGxheWVySXRlbUxl
Z2libGVPdXRwdXQgYWxsb2NdIGluaXRXaXRoTWVkaWFTdWJ0eXBlc0Zvck5hdGl2ZVJlcHJlc2Vu
dGF0aW9uOnN1YnR5cGVzLmdldCgpXSk7CisgICAgbV9sZWdpYmxlT3V0cHV0ID0gYWRvcHROUyhb
YWxsb2NBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aE1lZGlhU3Vi
dHlwZXNGb3JOYXRpdmVSZXByZXNlbnRhdGlvbjpzdWJ0eXBlcy5nZXQoKV0pOwogICAgIFttX2xl
Z2libGVPdXRwdXQuZ2V0KCkgc2V0U3VwcHJlc3Nlc1BsYXllclJlbmRlcmluZzpZRVNdOwogCiAg
ICAgW21fbGVnaWJsZU91dHB1dC5nZXQoKSBzZXREZWxlZ2F0ZTptX29iamNPYnNlcnZlci5nZXQo
KSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKQEAgLTIwMzEsNyArMjAzMSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoKICAgICBOU0RpY3Rpb25h
cnkqIGF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtl
eXM6W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprQ1ZQaXhlbEZvcm1hdFR5cGVfMzJC
R1JBXSwga0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5pbF07CiAjZW5kaWYKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHRO
UyhbW2dldEFWUGxheWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhQaXhl
bEJ1ZmZlckF0dHJpYnV0ZXM6YXR0cmlidXRlc10pOworICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9w
dE5TKFthbGxvY0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVs
QnVmZmVyQXR0cmlidXRlczphdHRyaWJ1dGVzXSk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRwdXQp
OwogCiAgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV92aWRlb091dHB1dERlbGVnYXRl
LmdldCgpIHF1ZXVlOmdsb2JhbFB1bGxEZWxlZ2F0ZVF1ZXVlKCldOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQkocmV2aXNpb24gMTc2OTE3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGlj
IHZvaWQgQ01UaW1lYmFzZUVmZmVjdGl2ZVJhdGVDaGFuZwogTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMoTWVk
aWFQbGF5ZXIqIHBsYXllcikKICAgICA6IG1fcGxheWVyKHBsYXllcikKICAgICAsIG1fd2Vha1B0
ckZhY3RvcnkodGhpcykKLSAgICAsIG1fc3luY2hyb25pemVyKGFkb3B0TlMoW1tnZXRBVlNhbXBs
ZUJ1ZmZlclJlbmRlclN5bmNocm9uaXplckNsYXNzKCkgYWxsb2NdIGluaXRdKSkKKyAgICAsIG1f
c3luY2hyb25pemVyKGFkb3B0TlMoW2FsbG9jQVZTYW1wbGVCdWZmZXJSZW5kZXJTeW5jaHJvbml6
ZXJJbnN0YW5jZSgpIGluaXRdKSkKICAgICAsIG1fc2Vla1RpbWVyKCp0aGlzLCAmTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrVGltZXJGaXJlZCkKICAgICAsIG1fc2Vz
c2lvbihudWxscHRyKQogICAgICwgbV9uZXR3b3JrU3RhdGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQpA
QCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmoKICAgICBpZiAobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbW2dldEFWU2FtcGxl
QnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBhbGxvY10gaW5pdF0pOworICAgIG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyID0gYWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXll
ckluc3RhbmNlKCkgaW5pdF0pOwogI2lmbmRlZiBOREVCVUcKICAgICBbbV9zYW1wbGVCdWZmZXJE
aXNwbGF5TGF5ZXIgc2V0TmFtZTpAIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlIEFWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyIl07CiAjZW5kaWYKQEAgLTY5NSw3ICs2OTUsNyBAQCBBVlN0
cmVhbVNlc3Npb24qIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhCiAgICAgICAgIH0KIAogICAgICAg
ICBTdHJpbmcgc3RvcmFnZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURp
cmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKLSAgICAgICAgbV9zdHJlYW1TZXNzaW9uID0g
YWRvcHROUyhbW2dldEFWU3RyZWFtU2Vzc2lvbkNsYXNzKCkgYWxsb2NdIGluaXRXaXRoU3RvcmFn
ZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhdXSk7Cisg
ICAgICAgIG1fc3RyZWFtU2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZTdHJlYW1TZXNzaW9uSW5z
dGFuY2UoKSBpbml0V2l0aFN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOnN0b3JhZ2VQYXRoXV0pOwogICAgIH0KICAgICByZXR1cm4gbV9zdHJlYW1TZXNzaW9uLmdl
dCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMubW0JKHJldmlzaW9uIDE3NjkxNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01ODAsNyArNTgwLDcgQEAgUmVmUHRyPFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDPiBTb3VyYwogCiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyog
cGFyZW50KQogICAgIDogbV93ZWFrRmFjdG9yeSh0aGlzKQotICAgICwgbV9wYXJzZXIoYWRvcHRO
UyhbW2dldEFWU3RyZWFtRGF0YVBhcnNlckNsYXNzKCkgYWxsb2NdIGluaXRdKSkKKyAgICAsIG1f
cGFyc2VyKGFkb3B0TlMoW2FsbG9jQVZTdHJlYW1EYXRhUGFyc2VySW5zdGFuY2UoKSBpbml0XSkp
CiAgICAgLCBtX2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5l
ciBhbGxvY10gaW5pdFdpdGhQYXJzZXI6bV9wYXJzZXIuZ2V0KCkgcGFyZW50OmNyZWF0ZVdlYWtQ
dHIoKV0pKQogICAgICwgbV9lcnJvckxpc3RlbmVyKGFkb3B0TlMoW1tXZWJBVlNhbXBsZUJ1ZmZl
ckVycm9yTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKICAgICAsIG1fbWVk
aWFTb3VyY2UocGFyZW50KQpAQCAtNzc3LDcgKzc3Nyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmFib3J0KCkKICAgICAvLyBGSVhNRSgxMzUxNjQpOiBTdXBwb3J0IHJlc2V0
dGluZyBwYXJzZXIgdG8gdGhlIGxhc3QgYXBwZW5kZWQgaW5pdGlhbGl6YXRpb24gc2VnbWVudC4K
ICAgICBkZXN0cm95UGFyc2VyKCk7CiAKLSAgICBtX3BhcnNlciA9IGFkb3B0TlMoW1tnZXRBVlN0
cmVhbURhdGFQYXJzZXJDbGFzcygpIGFsbG9jXSBpbml0XSk7CisgICAgbV9wYXJzZXIgPSBhZG9w
dE5TKFthbGxvY0FWU3RyZWFtRGF0YVBhcnNlckluc3RhbmNlKCkgaW5pdF0pOwogICAgIG1fZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbV2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxsb2NdIGlu
aXRXaXRoUGFyc2VyOm1fcGFyc2VyLmdldCgpIHBhcmVudDpjcmVhdGVXZWFrUHRyKCldKTsKIH0K
IApAQCAtODYyLDcgKzg2Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRy
YWNrRGkKICAgICAgICAgbV9lbmFibGVkVmlkZW9UcmFja0lEID0gdHJhY2tJRDsKICAgICAgICAg
W21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6dHJhY2tJ
RF07CiAgICAgICAgIGlmICghbV9kaXNwbGF5TGF5ZXIpIHsKLSAgICAgICAgICAgIG1fZGlzcGxh
eUxheWVyID0gYWRvcHROUyhbW2dldEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyQ2xhc3MoKSBh
bGxvY10gaW5pdF0pOworICAgICAgICAgICAgbV9kaXNwbGF5TGF5ZXIgPSBhZG9wdE5TKFthbGxv
Y0FWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgICAgICAg
ICBbbV9kaXNwbGF5TGF5ZXIgcmVxdWVzdE1lZGlhRGF0YVdoZW5SZWFkeU9uUXVldWU6ZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOl57CiAgICAgICAgICAgICAgICAgZGlkQmVj
b21lUmVhZHlGb3JNb3JlU2FtcGxlcyh0cmFja0lEKTsKICAgICAgICAgICAgIH1dOwpAQCAtODg2
LDcgKzg4Niw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGkKICAg
ICAgICAgW21fcGFyc2VyIHNldFNob3VsZFByb3ZpZGVNZWRpYURhdGE6WUVTIGZvclRyYWNrSUQ6
dHJhY2tJRF07CiAgICAgICAgIFJldGFpblB0cjxBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXI+
IHJlbmRlcmVyOwogICAgICAgICBpZiAoIW1fYXVkaW9SZW5kZXJlcnMuY291bnQodHJhY2tJRCkp
IHsKLSAgICAgICAgICAgIHJlbmRlcmVyID0gYWRvcHROUyhbW2dldEFWU2FtcGxlQnVmZmVyQXVk
aW9SZW5kZXJlckNsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgIHJlbmRlcmVyID0g
YWRvcHROUyhbYWxsb2NBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXJJbnN0YW5jZSgpIGluaXRd
KTsKICAgICAgICAgICAgIFtyZW5kZXJlciByZXF1ZXN0TWVkaWFEYXRhV2hlblJlYWR5T25RdWV1
ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6XnsKICAgICAgICAgICAgICAg
ICBkaWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKHRyYWNrSUQpOwogICAgICAgICAgICAgfV07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1D
QUxheWVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0JKHJldmlzaW9uIDE3NjkxNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1NCw3ICsyNTQsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJNYWM6
OlBsYXRmb3JtQ0FMYXllck1hYyhMCiAgICAgfQogCiAgICAgaWYgKGxheWVyQ2xhc3MpCi0gICAg
ICAgIG1fbGF5ZXIgPSBhZG9wdE5TKFtbbGF5ZXJDbGFzcyBhbGxvY10gaW5pdF0pOworICAgICAg
ICBtX2xheWVyID0gYWRvcHROUyhbKENBTGF5ZXIgKilbbGF5ZXJDbGFzcyBhbGxvY10gaW5pdF0p
OwogCiAgICAgY29tbW9uSW5pdCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0JKHJldmlzaW9uIDE3NjkxNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIHZvaWQgc2hvd0xldHRlcnByZXNzZWRHbHlwaHNX
aXRoQQogCiAgICAgc3RhdGljIENVSVN0eWxlRWZmZWN0Q29uZmlndXJhdGlvbiAqc3R5bGVDb25m
aWd1cmF0aW9uOwogICAgIGlmICghc3R5bGVDb25maWd1cmF0aW9uKSB7Ci0gICAgICAgIHN0eWxl
Q29uZmlndXJhdGlvbiA9IFsoQ1VJU3R5bGVFZmZlY3RDb25maWd1cmF0aW9uICopW2dldENVSVN0
eWxlRWZmZWN0Q29uZmlndXJhdGlvbkNsYXNzKCkgYWxsb2NdIGluaXRdOworICAgICAgICBzdHls
ZUNvbmZpZ3VyYXRpb24gPSBbYWxsb2NDVUlTdHlsZUVmZmVjdENvbmZpZ3VyYXRpb25JbnN0YW5j
ZSgpIGluaXRdOwogICAgICAgICBzdHlsZUNvbmZpZ3VyYXRpb24udXNlU2ltcGxpZmllZEVmZmVj
dCA9IFlFUzsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHJl
dmlzaW9uIDE3NjkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzI5LDcgKzMyOSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW8KICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIG1fcXRNb3ZpZSA9IGFk
b3B0TlMoW1tRVE1vdmllIGFsbG9jXSBpbml0V2l0aEF0dHJpYnV0ZXM6bW92aWVBdHRyaWJ1dGVz
IGVycm9yOiZlcnJvcl0pOworICAgIG1fcXRNb3ZpZSA9IGFkb3B0TlMoW2FsbG9jUVRNb3ZpZUlu
c3RhbmNlKCkgaW5pdFdpdGhBdHRyaWJ1dGVzOm1vdmllQXR0cmlidXRlcyBlcnJvcjomZXJyb3Jd
KTsKICAgICAKICAgICBpZiAoIW1fcXRNb3ZpZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDI1LDcg
KzQyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW8KICAgICBB
U1NFUlQoc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpKTsKICAgICAKICAgICBpZiAoIW1f
cXRWaWRlb0xheWVyKSB7Ci0gICAgICAgIG1fcXRWaWRlb0xheWVyID0gYWRvcHROUyhbW1FUTW92
aWVMYXllciBhbGxvY10gaW5pdF0pOworICAgICAgICBtX3F0VmlkZW9MYXllciA9IGFkb3B0TlMo
W2FsbG9jUVRNb3ZpZUxheWVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgICAgIGlmICghbV9xdFZp
ZGVvTGF5ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFj
Lm1tCShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRl
UERGRG9jdW1lbnQoKQogewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFtbZ2V0UERGRG9jdW1l
bnRDbGFzcygpIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2Uo
KSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogfQogCiB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcklPUy5tbQkocmV2aXNpb24gMTc2OTE3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDYgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZT
cGVlYwogI2RlZmluZSBBVlNwZWVjaFV0dGVyYW5jZURlZmF1bHRTcGVlY2hSYXRlIGdldEFWU3Bl
ZWNoVXR0ZXJhbmNlRGVmYXVsdFNwZWVjaFJhdGUoKQogI2RlZmluZSBBVlNwZWVjaFV0dGVyYW5j
ZU1heGltdW1TcGVlY2hSYXRlIGdldEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUo
KQogCi0jZGVmaW5lIEFWU3BlZWNoU3ludGhlc2l6ZXJDbGFzcyBnZXRBVlNwZWVjaFN5bnRoZXNp
emVyQ2xhc3MoKQogI2RlZmluZSBBVlNwZWVjaFV0dGVyYW5jZUNsYXNzIGdldEFWU3BlZWNoVXR0
ZXJhbmNlQ2xhc3MoKQogI2RlZmluZSBBVlNwZWVjaFN5bnRoZXNpc1ZvaWNlQ2xhc3MgZ2V0QVZT
cGVlY2hTeW50aGVzaXNWb2ljZUNsYXNzKCkKIApAQCAtOTcsNyArOTYsNyBAQCAtICh2b2lkKXNw
ZWFrVXR0ZXJhbmNlOihQYXNzUmVmUHRyPFdlYkNvCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBpZiAoIW1fc3ludGhlc2l6ZXIpIHsKLSAgICAgICAgbV9zeW50aGVzaXplciA9IGFkb3B0TlMo
WyhBVlNwZWVjaFN5bnRoZXNpemVyICopW0FWU3BlZWNoU3ludGhlc2l6ZXJDbGFzcyBhbGxvY10g
aW5pdF0pOworICAgICAgICBtX3N5bnRoZXNpemVyID0gYWRvcHROUyhbYWxsb2NBVlNwZWVjaFN5
bnRoZXNpemVySW5zdGFuY2UoKSBpbml0XSk7CiAgICAgICAgIFttX3N5bnRoZXNpemVyIHNldERl
bGVnYXRlOnNlbGZdOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJDb3JlTW90aW9uTWFuYWdlci5tbQkocmV2aXNpb24gMTc2OTE3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVNb3Rpb25NYW5hZ2VyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgLSAodm9pZClpbml0aWFsaXplT25NYWluVGhy
ZWFkCiB7CiAgICAgQVNTRVJUKCFXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKLSAgICBtX21vdGlv
bk1hbmFnZXIgPSBbKENNTW90aW9uTWFuYWdlciAqKVtnZXRDTU1vdGlvbk1hbmFnZXJDbGFzcygp
IGFsbG9jXSBpbml0XTsKKyAgICBtX21vdGlvbk1hbmFnZXIgPSBbYWxsb2NDTU1vdGlvbk1hbmFn
ZXJJbnN0YW5jZSgpIGluaXRdOwogCiAgICAgbV9neXJvQXZhaWxhYmxlID0gbV9tb3Rpb25NYW5h
Z2VyLmRldmljZU1vdGlvbkF2YWlsYWJsZTsKIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIC0gKHZvaWQp
aW5pdGlhbGl6ZU9uTWFpblRocmVhZAogICAgIGVsc2UKICAgICAgICAgbV9tb3Rpb25NYW5hZ2Vy
LmFjY2VsZXJvbWV0ZXJVcGRhdGVJbnRlcnZhbCA9IGtNb3Rpb25VcGRhdGVJbnRlcnZhbDsKIAot
ICAgIG1fbG9jYXRpb25NYW5hZ2VyID0gWyhDTExvY2F0aW9uTWFuYWdlciAqKVtnZXRDTExvY2F0
aW9uTWFuYWdlckNsYXNzKCkgYWxsb2NdIGluaXRdOworICAgIG1fbG9jYXRpb25NYW5hZ2VyID0g
W2FsbG9jQ0xMb2NhdGlvbk1hbmFnZXJJbnN0YW5jZSgpIGluaXRdOwogICAgIG1faGVhZGluZ0F2
YWlsYWJsZSA9IFtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgaGVhZGluZ0F2YWlsYWJsZV07
CiAKICAgICBbc2VsZiBjaGVja0NsaWVudFN0YXR1c107CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Lm1tCShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEzNSw3ICsxMzUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgICAgICByZXR1cm4g
c2VsZjsKICAgICAKICAgICBpbml0QVZQbGF5ZXJDb250cm9sbGVyKCk7Ci0gICAgc2VsZi5wbGF5
ZXJDb250cm9sbGVyUHJveHkgPSBbW1tnZXRBVlBsYXllckNvbnRyb2xsZXJDbGFzcygpIGFsbG9j
XSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgc2VsZi5wbGF5ZXJDb250cm9sbGVyUHJveHkgPSBb
W2FsbG9jQVZQbGF5ZXJDb250cm9sbGVySW5zdGFuY2UoKSBpbml0XSBhdXRvcmVsZWFzZV07CiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTgwMSw5ICs4MDEsOSBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpzCiAgICAgICAgIG1fcGFyZW50V2luZG93ID0gcGFyZW50
Vmlldy53aW5kb3c7CiAKICAgICAgICAgaWYgKCFhcHBsaWNhdGlvbklzQWRTaGVldCgpKSB7Ci0g
ICAgICAgICAgICBtX3dpbmRvdyA9IGFkb3B0TlMoW1tnZXRVSVdpbmRvd0NsYXNzKCkgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6W1tnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNjcmVlbl0gYm91bmRzXV0p
OworICAgICAgICAgICAgbV93aW5kb3cgPSBhZG9wdE5TKFthbGxvY1VJV2luZG93SW5zdGFuY2Uo
KSBpbml0V2l0aEZyYW1lOltbZ2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dIGJvdW5kc11d
KTsKICAgICAgICAgICAgIFttX3dpbmRvdyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JD
bGFzcygpIGNsZWFyQ29sb3JdXTsKLSAgICAgICAgICAgIG1fdmlld0NvbnRyb2xsZXIgPSBhZG9w
dE5TKFtbZ2V0VUlWaWV3Q29udHJvbGxlckNsYXNzKCkgYWxsb2NdIGluaXRdKTsKKyAgICAgICAg
ICAgIG1fdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFthbGxvY1VJVmlld0NvbnRyb2xsZXJJbnN0
YW5jZSgpIGluaXRdKTsKICAgICAgICAgICAgIFtbbV92aWV3Q29udHJvbGxlciB2aWV3XSBzZXRG
cmFtZTpbbV93aW5kb3cgYm91bmRzXV07CiAgICAgICAgICAgICBbbV93aW5kb3cgc2V0Um9vdFZp
ZXdDb250cm9sbGVyOm1fdmlld0NvbnRyb2xsZXIuZ2V0KCldOwogICAgICAgICAgICAgW21fd2lu
ZG93IG1ha2VLZXlBbmRWaXNpYmxlXTsKQEAgLTgxOSw3ICs4MTksNyBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzCiAgICAgICAgIENHUmVjdCB2aWRlb1JlY3QgPSBD
R1JlY3RNYWtlKDAsIDAsIHZpZGVvU2l6ZS53aWR0aCwgdmlkZW9TaXplLmhlaWdodCk7CiAgICAg
ICAgIFttX3ZpZGVvTGF5ZXJDb250YWluZXIgc2V0VmlkZW9SZWN0OnZpZGVvUmVjdF07CiAKLSAg
ICAgICAgbV9wbGF5ZXJWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tnZXRBVlBsYXllclZpZXdD
b250cm9sbGVyQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhWaWRlb0xheWVyOm1fdmlkZW9MYXllckNv
bnRhaW5lci5nZXQoKV0pOworICAgICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gYWRvcHRO
UyhbYWxsb2NBVlBsYXllclZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFZpZGVvTGF5
ZXI6bV92aWRlb0xheWVyQ29udGFpbmVyLmdldCgpXSk7CiAgICAgICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpOT107CiAgICAgICAgIFttX3BsYXll
clZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xsZXI6KEFWUGxheWVyQ29udHJvbGxlciAq
KXBsYXllckNvbnRyb2xsZXIoKV07CiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNl
dERlbGVnYXRlOnBsYXllckNvbnRyb2xsZXIoKV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ29udGVudEZpbHRlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvQ29udGVudEZpbHRlck1hYy5tbQkocmV2aXNpb24gMTc2OTE3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NvbnRlbnRGaWx0ZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEwMCwxMSArMTAwLDExIEBAIENvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3UKICNlbmRpZgogewogICAgIGlmIChbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xh
c3MoKSBpc01hbmFnZWRTZXNzaW9uXSkKLSAgICAgICAgbV9wbGF0Zm9ybUNvbnRlbnRGaWx0ZXIg
PSBhZG9wdE5TKFtbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhS
ZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldKTsKKyAgICAgICAgbV9wbGF0Zm9ybUNv
bnRlbnRGaWx0ZXIgPSBhZG9wdE5TKFthbGxvY1dlYkZpbHRlckV2YWx1YXRvckluc3RhbmNlKCkg
aW5pdFdpdGhSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldKTsKIAogI2lmIEhBVkUo
TkVfRklMVEVSX1NPVVJDRSkKICAgICBpZiAoW2dldE5FRmlsdGVyU291cmNlQ2xhc3MoKSBmaWx0
ZXJSZXF1aXJlZF0pIHsKLSAgICAgICAgbV9uZUZpbHRlclNvdXJjZSA9IGFkb3B0TlMoW1tnZXRO
RUZpbHRlclNvdXJjZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoVVJMOltyZXNwb25zZS5uc1VSTFJl
c3BvbnNlKCkgVVJMXSBkaXJlY3Rpb246TkVGaWx0ZXJTb3VyY2VEaXJlY3Rpb25JbmJvdW5kIHNv
Y2tldElkZW50aWZpZXI6MF0pOworICAgICAgICBtX25lRmlsdGVyU291cmNlID0gYWRvcHROUyhb
YWxsb2NORUZpbHRlclNvdXJjZUluc3RhbmNlKCkgaW5pdFdpdGhVUkw6W3Jlc3BvbnNlLm5zVVJM
UmVzcG9uc2UoKSBVUkxdIGRpcmVjdGlvbjpORUZpbHRlclNvdXJjZURpcmVjdGlvbkluYm91bmQg
c29ja2V0SWRlbnRpZmllcjowXSk7CiAgICAgICAgIG1fbmVGaWx0ZXJTb3VyY2VRdWV1ZSA9IGRp
c3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYkNvcmUuTkVGaWx0ZXJTb3VyY2VRdWV1
ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CiAgICAgICAgIAogICAgICAgICBsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50U2l6ZSA9IFtyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlu
a2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Tb2Z0TGlu
a2luZy5oCShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U29mdExpbmtpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTQzLDYgKzE0Myw3IEBACiAgICAgfQog
CiAjZGVmaW5lIFNPRlRfTElOS19DTEFTUyhmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorICAgIEBj
bGFzcyBjbGFzc05hbWU7IFwKICAgICBzdGF0aWMgQ2xhc3MgaW5pdCMjY2xhc3NOYW1lKCk7IFwK
ICAgICBzdGF0aWMgQ2xhc3MgKCpnZXQjI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFz
c05hbWU7IFwKICAgICBzdGF0aWMgQ2xhc3MgY2xhc3MjI2NsYXNzTmFtZTsgXApAQCAtMTU5LDkg
KzE2MCwxNyBAQAogICAgICAgICBBU1NFUlQoY2xhc3MjI2NsYXNzTmFtZSk7IFwKICAgICAgICAg
Z2V0IyNjbGFzc05hbWUjI0NsYXNzID0gY2xhc3NOYW1lIyNGdW5jdGlvbjsgXAogICAgICAgICBy
ZXR1cm4gY2xhc3MjI2NsYXNzTmFtZTsgXAotICAgIH0KKyAgICB9IFwKKyAgICBfUHJhZ21hKCJj
bGFuZyBkaWFnbm9zdGljIHB1c2giKSBcCisgICAgX1ByYWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkIFwiLVd1bnVzZWQtZnVuY3Rpb25cIiIpIFwKKyAgICBzdGF0aWMgY2xhc3NOYW1lICph
bGxvYyMjY2xhc3NOYW1lIyNJbnN0YW5jZSgpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIFtn
ZXQjI2NsYXNzTmFtZSMjQ2xhc3MoKSBhbGxvY107IFwKKyAgICB9IFwKKyAgICBfUHJhZ21hKCJj
bGFuZyBkaWFnbm9zdGljIHBvcCIpCiAKICNkZWZpbmUgU09GVF9MSU5LX0NMQVNTX09QVElPTkFM
KGZyYW1ld29yaywgY2xhc3NOYW1lKSBcCisgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAogICAgIHN0
YXRpYyBDbGFzcyBpbml0IyNjbGFzc05hbWUoKTsgXAogICAgIHN0YXRpYyBDbGFzcyAoKmdldCMj
Y2xhc3NOYW1lIyNDbGFzcykoKSA9IGluaXQjI2NsYXNzTmFtZTsgXAogICAgIHN0YXRpYyBDbGFz
cyBjbGFzcyMjY2xhc3NOYW1lOyBcCkBAIC0xNzcsNyArMTg2LDE0IEBACiAgICAgICAgIGNsYXNz
IyNjbGFzc05hbWUgPSBvYmpjX2dldENsYXNzKCNjbGFzc05hbWUpOyBcCiAgICAgICAgIGdldCMj
Y2xhc3NOYW1lIyNDbGFzcyA9IGNsYXNzTmFtZSMjRnVuY3Rpb247IFwKICAgICAgICAgcmV0dXJu
IGNsYXNzIyNjbGFzc05hbWU7IFwKLSAgICB9CisgICAgfSBcCisgICAgX1ByYWdtYSgiY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoIikgXAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCBcIi1XdW51c2VkLWZ1bmN0aW9uXCIiKSBcCisgICAgc3RhdGljIGNsYXNzTmFtZSAqYWxsb2Mj
I2NsYXNzTmFtZSMjSW5zdGFuY2UoKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBbZ2V0IyNj
bGFzc05hbWUjI0NsYXNzKCkgYWxsb2NdOyBcCisgICAgfSBcCisgICAgX1ByYWdtYSgiY2xhbmcg
ZGlhZ25vc3RpYyBwb3AiKQogCiAjZGVmaW5lIFNPRlRfTElOS19QT0lOVEVSKGZyYW1ld29yaywg
bmFtZSwgdHlwZSkgXAogICAgIHN0YXRpYyB0eXBlIGluaXQjI25hbWUoKTsgXApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE3NjkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjksNyArMTI5LDcgQEAgLSAodm9pZClzZXRWaWRlb0VsZW1lbnQ6KEhUTUxWaWRlb0Vs
ZW1lbgogICAgIGlmIChbc2VsZiBpc1dpbmRvd0xvYWRlZF0pIHsKICAgICAgICAgaWYgKF92aWRl
b0VsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlID09IFBsYXRmb3JtTWVkaWE6OlFUTW92aWVU
eXBlKSB7CiAgICAgICAgICAgICBRVE1vdmllICptb3ZpZSA9IF92aWRlb0VsZW1lbnQtPnBsYXRm
b3JtTWVkaWEoKS5tZWRpYS5xdE1vdmllOwotICAgICAgICAgICAgUVRNb3ZpZUxheWVyICpsYXll
ciA9IFtbZ2V0UVRNb3ZpZUxheWVyQ2xhc3MoKSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBR
VE1vdmllTGF5ZXIgKmxheWVyID0gW2FsbG9jUVRNb3ZpZUxheWVySW5zdGFuY2UoKSBpbml0XTsK
ICAgICAgICAgICAgIFtsYXllciBzZXRNb3ZpZTptb3ZpZV07CiAgICAgICAgICAgICBbc2VsZiBz
ZXR1cFZpZGVvT3ZlcmxheTpsYXllcl07CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCAtICh2b2lkKXNl
dFZpZGVvRWxlbWVudDooSFRNTFZpZGVvRWxlbWVuCiAKICAgICAgICAgfSBlbHNlIGlmIChfdmlk
ZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSA9PSBQbGF0Zm9ybU1lZGlhOjpBVkZvdW5k
YXRpb25NZWRpYVBsYXllclR5cGUpIHsKICAgICAgICAgICAgIEFWUGxheWVyICpwbGF5ZXIgPSBf
dmlkZW9FbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEuYXZmTWVkaWFQbGF5ZXI7Ci0gICAg
ICAgICAgICBBVlBsYXllckxheWVyICpsYXllciA9IFtbZ2V0QVZQbGF5ZXJMYXllckNsYXNzKCkg
YWxsb2NdIGluaXRdOworICAgICAgICAgICAgQVZQbGF5ZXJMYXllciAqbGF5ZXIgPSBbYWxsb2NB
VlBsYXllckxheWVySW5zdGFuY2UoKSBpbml0XTsKICAgICAgICAgICAgIFtzZWxmIHNldHVwVmlk
ZW9PdmVybGF5OmxheWVyXTsKICAgICAgICAgICAgIFtsYXllciBzZXRQbGF5ZXI6cGxheWVyXTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9D
YXB0dXJlU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQkocmV2aXNpb24gMTc2OTE3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0dXJl
U291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMiArNTEsNiBAQCBTT0ZUX0xJTktfQ0xB
U1MoQVZGb3VuZGF0aW9uLCBBVkNhcHR1cmVECiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9u
LCBBVkNhcHR1cmVEZXZpY2VJbnB1dCkKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFW
Q2FwdHVyZU91dHB1dCkKIAotI2RlZmluZSBBVkNhcHR1cmVBdWRpb0RhdGFPdXRwdXQgZ2V0QVZD
YXB0dXJlQXVkaW9EYXRhT3V0cHV0Q2xhc3MoKQotI2RlZmluZSBBVkNhcHR1cmVDb25uZWN0aW9u
IGdldEFWQ2FwdHVyZUNvbm5lY3Rpb25DbGFzcygpCi0jZGVmaW5lIEFWQ2FwdHVyZURldmljZSBn
ZXRBVkNhcHR1cmVEZXZpY2VDbGFzcygpCi0jZGVmaW5lIEFWQ2FwdHVyZURldmljZUlucHV0IGdl
dEFWQ2FwdHVyZURldmljZUlucHV0Q2xhc3MoKQotI2RlZmluZSBBVkNhcHR1cmVPdXRwdXQgZ2V0
QVZDYXB0dXJlT3V0cHV0Q2xhc3MoKQotCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24s
IEFWTWVkaWFUeXBlQXVkaW8sIE5TU3RyaW5nICopCiAKICNkZWZpbmUgQVZNZWRpYVR5cGVBdWRp
byBnZXRBVk1lZGlhVHlwZUF1ZGlvKCkKQEAgLTkyLDEyICs4NiwxMiBAQCB2b2lkIEFWQXVkaW9D
YXB0dXJlU291cmNlOjp1cGRhdGVTdGF0ZXMoCiAKIHZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6
OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewotICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2VJ
bnB1dFR5cGU+IGF1ZGlvSW4gPSBhZG9wdE5TKFtbQVZDYXB0dXJlRGV2aWNlSW5wdXQgYWxsb2Nd
IGluaXRXaXRoRGV2aWNlOmRldmljZSgpIGVycm9yOm5pbF0pOworICAgIFJldGFpblB0cjxBVkNh
cHR1cmVEZXZpY2VJbnB1dFR5cGU+IGF1ZGlvSW4gPSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZURl
dmljZUlucHV0SW5zdGFuY2UoKSBpbml0V2l0aERldmljZTpkZXZpY2UoKSBlcnJvcjpuaWxdKTsK
ICAgICBBU1NFUlQoW3Nlc3Npb24oKSBjYW5BZGRJbnB1dDphdWRpb0luLmdldCgpXSk7CiAgICAg
aWYgKFtzZXNzaW9uKCkgY2FuQWRkSW5wdXQ6YXVkaW9Jbi5nZXQoKV0pCiAgICAgICAgIFtzZXNz
aW9uKCkgYWRkSW5wdXQ6YXVkaW9Jbi5nZXQoKV07CiAgICAgCi0gICAgUmV0YWluUHRyPEFWQ2Fw
dHVyZUF1ZGlvRGF0YU91dHB1dFR5cGU+IGF1ZGlvT3V0cHV0ID0gYWRvcHROUyhbW0FWQ2FwdHVy
ZUF1ZGlvRGF0YU91dHB1dCBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxBVkNhcHR1cmVB
dWRpb0RhdGFPdXRwdXRUeXBlPiBhdWRpb091dHB1dCA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJl
QXVkaW9EYXRhT3V0cHV0SW5zdGFuY2UoKSBpbml0XSk7CiAgICAgc2V0QXVkaW9TYW1wbGVCdWZm
ZXJEZWxlZ2F0ZShhdWRpb091dHB1dC5nZXQoKSk7CiAgICAgQVNTRVJUKFtzZXNzaW9uKCkgY2Fu
QWRkT3V0cHV0OmF1ZGlvT3V0cHV0LmdldCgpXSk7CiAgICAgaWYgKFtzZXNzaW9uKCkgY2FuQWRk
T3V0cHV0OmF1ZGlvT3V0cHV0LmdldCgpXSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VN
YW5hZ2VyLm1tCShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzU4LDcgKzM1OCw3IEBAIGJvb2wgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcjo6dmVyaWZ5Q29u
c3QKICAgICBWZWN0b3I8TWVkaWFDb25zdHJhaW50PiBtYW5kYXRvcnlDb25zdHJhaW50czsKICAg
ICBjb25zdHJhaW50cy0+Z2V0TWFuZGF0b3J5Q29uc3RyYWludHMobWFuZGF0b3J5Q29uc3RyYWlu
dHMpOwogICAgIGlmIChtYW5kYXRvcnlDb25zdHJhaW50cy5zaXplKCkpIHsKLSAgICAgICAgUmV0
YWluUHRyPEFWQ2FwdHVyZVNlc3Npb25UeXBlPiBzZXNzaW9uID0gYWRvcHROUyhbW0FWQ2FwdHVy
ZVNlc3Npb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgUmV0YWluUHRyPEFWQ2FwdHVyZVNlc3Np
b25UeXBlPiBzZXNzaW9uID0gYWRvcHROUyhbYWxsb2NBVkNhcHR1cmVTZXNzaW9uSW5zdGFuY2Uo
KSBpbml0XSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWFuZGF0b3J5Q29uc3Ry
YWludHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IE1lZGlhQ29uc3RyYWludCYg
Y29uc3RyYWludCA9IG1hbmRhdG9yeUNvbnN0cmFpbnRzW2ldOwogICAgICAgICAgICAgaWYgKCFz
ZXNzaW9uU3VwcG9ydHNDb25zdHJhaW50KHNlc3Npb24uZ2V0KCksIHR5cGUsIGNvbnN0cmFpbnQu
bV9uYW1lLCBjb25zdHJhaW50Lm1fdmFsdWUpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWTWVkaWFDYXB0dXJl
U291cmNlLm1tCShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvQVZNZWRpYUNhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEFWTWVkaWFDYXB0dXJlU291cmNlOjpzZXR1cFNlc3Npb24o
CiAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zZXNzaW9uID0g
YWRvcHROUyhbW0FWQ2FwdHVyZVNlc3Npb24gYWxsb2NdIGluaXRdKTsKKyAgICBtX3Nlc3Npb24g
PSBhZG9wdE5TKFthbGxvY0FWQ2FwdHVyZVNlc3Npb25JbnN0YW5jZSgpIGluaXRdKTsKICAgICAK
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1f
b2JqY09ic2VydmVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihjYXB0dXJlU2Vzc2lvblN0b3Bw
ZWRSdW5uaW5nOikgbmFtZTpBVkNhcHR1cmVTZXNzaW9uRGlkU3RvcFJ1bm5pbmdOb3RpZmljYXRp
b24gb2JqZWN0Om5pbF07CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1t
CShyZXZpc2lvbiAxNzY5MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOCw3ICsy
MDgsNyBAQCBib29sIEFWVmlkZW9DYXB0dXJlU291cmNlOjphcHBseUNvbnN0cmFpCiAKIHZvaWQg
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OnNldHVwQ2FwdHVyZVNlc3Npb24oKQogewotICAgIFJldGFp
blB0cjxBVkNhcHR1cmVEZXZpY2VJbnB1dFR5cGU+IHZpZGVvSW4gPSBhZG9wdE5TKFtbQVZDYXB0
dXJlRGV2aWNlSW5wdXQgYWxsb2NdIGluaXRXaXRoRGV2aWNlOmRldmljZSgpIGVycm9yOm5pbF0p
OworICAgIFJldGFpblB0cjxBVkNhcHR1cmVEZXZpY2VJbnB1dFR5cGU+IHZpZGVvSW4gPSBhZG9w
dE5TKFthbGxvY0FWQ2FwdHVyZURldmljZUlucHV0SW5zdGFuY2UoKSBpbml0V2l0aERldmljZTpk
ZXZpY2UoKSBlcnJvcjpuaWxdKTsKICAgICBBU1NFUlQoW3Nlc3Npb24oKSBjYW5BZGRJbnB1dDp2
aWRlb0luLmdldCgpXSk7CiAgICAgaWYgKFtzZXNzaW9uKCkgY2FuQWRkSW5wdXQ6dmlkZW9Jbi5n
ZXQoKV0pCiAgICAgICAgIFtzZXNzaW9uKCkgYWRkSW5wdXQ6dmlkZW9Jbi5nZXQoKV07CkBAIC0y
MTYsNyArMjE2LDcgQEAgdm9pZCBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlUwog
ICAgIGlmIChjb25zdHJhaW50cygpKQogICAgICAgICBhcHBseUNvbnN0cmFpbnRzKGNvbnN0cmFp
bnRzKCkpOwogCi0gICAgUmV0YWluUHRyPEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dFR5cGU+IHZp
ZGVvT3V0cHV0ID0gYWRvcHROUyhbW0FWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCBhbGxvY10gaW5p
dF0pOworICAgIFJldGFpblB0cjxBVkNhcHR1cmVWaWRlb0RhdGFPdXRwdXRUeXBlPiB2aWRlb091
dHB1dCA9IGFkb3B0TlMoW2FsbG9jQVZDYXB0dXJlVmlkZW9EYXRhT3V0cHV0SW5zdGFuY2UoKSBp
bml0XSk7CiAgICAgc2V0VmlkZW9TYW1wbGVCdWZmZXJEZWxlZ2F0ZSh2aWRlb091dHB1dC5nZXQo
KSk7CiAgICAgQVNTRVJUKFtzZXNzaW9uKCkgY2FuQWRkT3V0cHV0OnZpZGVvT3V0cHV0LmdldCgp
XSk7CiAgICAgaWYgKFtzZXNzaW9uKCkgY2FuQWRkT3V0cHV0OnZpZGVvT3V0cHV0LmdldCgpXSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1F1aWNrTG9vay5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9RdWlja0xv
b2subW0JKHJldmlzaW9uIDE3NjkxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1F1aWNrTG9vay5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIFBh
c3NPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBXZWJDb3JlOjpyZWcKICAgICBpZiAoW1dlYkNvcmU6
OlFMUHJldmlld0dldFN1cHBvcnRlZE1JTUVUeXBlc1NldCgpIGNvbnRhaW5zT2JqZWN0OnVwZGF0
ZWRNSU1FVHlwZS5nZXQoKV0pIHsKICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiB1dGkgPSBh
ZG9wdE5TKFdlYkNvcmU6OlFMVHlwZUNvcHlVVElGb3JVUkxBbmRNaW1lVHlwZSh1cmwsIHVwZGF0
ZWRNSU1FVHlwZS5nZXQoKSkpOwogCi0gICAgICAgIFJldGFpblB0cjxpZD4gY29udmVydGVyID0g
YWRvcHROUyhbW1FMUHJldmlld0NvbnZlcnRlckNsYXNzKCkgYWxsb2NdIGluaXRXaXRoRGF0YTpk
YXRhIG5hbWU6bmlsIHV0aTp1dGkuZ2V0KCkgb3B0aW9uczpuaWxdKTsKKyAgICAgICAgUmV0YWlu
UHRyPGlkPiBjb252ZXJ0ZXIgPSBhZG9wdE5TKFthbGxvY1FMUHJldmlld0NvbnZlcnRlckluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEgbmFtZTpuaWwgdXRpOnV0aS5nZXQoKSBvcHRpb25zOm5p
bF0pOwogICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbY29udmVydGVyIHByZXZpZXdS
ZXF1ZXN0XTsKIAogICAgICAgICAvLyBXZSB1c2UgW3JlcXVlc3QgVVJMXSBoZXJlIGluc3RlYWQg
b2YgdXJsIHNpbmNlIGl0IHdpbGwgYmUKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBzdGF0aWMgaW5saW5l
IFF1aWNrTG9va0hhbmRsZUNsaWVudCogZW1wCiAKIFF1aWNrTG9va0hhbmRsZTo6UXVpY2tMb29r
SGFuZGxlKE5TVVJMICpmaXJzdFJlcXVlc3RVUkwsIE5TVVJMQ29ubmVjdGlvbiAqY29ubmVjdGlv
biwgTlNVUkxSZXNwb25zZSAqbnNSZXNwb25zZSwgaWQgZGVsZWdhdGUpCiAgICAgOiBtX2ZpcnN0
UmVxdWVzdFVSTChmaXJzdFJlcXVlc3RVUkwpCi0gICAgLCBtX2NvbnZlcnRlcihhZG9wdE5TKFtb
UUxQcmV2aWV3Q29udmVydGVyQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhDb25uZWN0aW9uOmNvbm5l
Y3Rpb24gZGVsZWdhdGU6ZGVsZWdhdGUgcmVzcG9uc2U6bnNSZXNwb25zZSBvcHRpb25zOm5pbF0p
KQorICAgICwgbV9jb252ZXJ0ZXIoYWRvcHROUyhbYWxsb2NRTFByZXZpZXdDb252ZXJ0ZXJJbnN0
YW5jZSgpIGluaXRXaXRoQ29ubmVjdGlvbjpjb25uZWN0aW9uIGRlbGVnYXRlOmRlbGVnYXRlIHJl
c3BvbnNlOm5zUmVzcG9uc2Ugb3B0aW9uczpuaWxdKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdh
dGUpCiAgICAgLCBtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKGZhbHNlKQogICAg
ICwgbV9uc1Jlc3BvbnNlKFttX2NvbnZlcnRlciBwcmV2aWV3UmVzcG9uc2VdKQpJbmRleDogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTc2OTE1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTQtMTItMDcgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgYW5kIGRlcGxveSBhIGZ1bmN0aW9u
IHRoYXQgYWxsb2NhdGVzIGFuZCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGEgc29mdC1saW5rZWQg
Y2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
OTM0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElu
IFtbZ2V0Rm9vQ2xhc3MoKSBhbGxvY10gaW5pdCpdLCB0aGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9m
ICthbGxvYyBpcyBpZCwgc28gdGhlIGNvbXBpbGVyCisgICAgICAgIHBpY2tzIGFuIGFyYml0cmFy
eSBkZWNsYXJhdGlvbiBvZiBpbml0Kiwgbm90IG5lY2Vzc2FyaWx5IHRoZSBGb28gb25lLiBUaGlz
IGNhbiB0aGVuIGxlYWQKKyAgICAgICAgdG8gd2FybmluZ3Mgb3IgZXJyb3JzIGlmIHRoZSB0eXBl
cyBvciBhdHRyaWJ1dGVzIGRvbuKAmXQgbWF0Y2gsIG9yIHRvIHJ1bnRpbWUgZXJyb3JzIGlmIEZv
bworICAgICAgICBkb2VzbuKAmXQgZXZlbiBoYXZlIHRoZSBleHBlY3RlZCBpbml0aWFsaXplci4g
VGhlIG5ldyBhbGxvY0Zvb0luc3RhbmNlKCkgcmV0dXJucyBhIEZvbyAqLCB0aHVzCisgICAgICAg
IGF2b2lkaW5nIHRoZSBhbWJpZ3VpdHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLQWlyUGxheVJvdXRlUGlja2VyLm1tOgorICAgICAgICAoLVtXS0FpclBsYXlSb3V0ZVBpY2tl
ciBzaG93QWlyUGxheVBpY2tlcklQYWQ6ZnJvbVJlY3Q6XSk6CisgICAgICAgICgtW1dLQWlyUGxh
eVJvdXRlUGlja2VyIHNob3dBaXJQbGF5UGlja2VySVBob25lOl0pOgorICAgICAgICAoLVtXS0Fp
clBsYXlSb3V0ZVBpY2tlciBzaG93OmZyb21SZWN0Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW06CisgICAgICAgICgtW19XS1ZpZGVvRmlsZVVw
bG9hZEl0ZW0gZGlzcGxheUltYWdlXSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0FjdGlv
bk1lbnVDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0FjdGlvbk1lbnVDb250cm9sbGVyIF9k
ZWZhdWx0TWVudUl0ZW1zRm9yRGF0YURldGVjdGFibGVMaW5rXSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW06CisgICAgICAg
IChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y2xvbmUpOgorCiAyMDE0LTEy
LTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGJ1aWxkIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgY2xhbmcuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLQWlyUGxheVJvdXRlUGlja2VyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tBaXJQbGF5Um91dGVQaWNr
ZXIubW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tBaXJQbGF5Um91dGVQaWNrZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsx
MTMsNyBAQCAtICh2b2lkKXNob3dBaXJQbGF5UGlja2VySVBhZDooTVBBVkl0ZW1UCiAgICAgaWYg
KF9wb3BvdmVyQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgX3BvcG92ZXJDb250
cm9sbGVyID0gYWRvcHROUyhbKE1QQXVkaW9WaWRlb1JvdXRpbmdQb3BvdmVyQ29udHJvbGxlciAq
KVtnZXRNUEF1ZGlvVmlkZW9Sb3V0aW5nUG9wb3ZlckNvbnRyb2xsZXJDbGFzcygpIGFsbG9jXSBp
bml0V2l0aFR5cGU6aXRlbVR5cGVdKTsKKyAgICBfcG9wb3ZlckNvbnRyb2xsZXIgPSBhZG9wdE5T
KFthbGxvY01QQXVkaW9WaWRlb1JvdXRpbmdQb3BvdmVyQ29udHJvbGxlckluc3RhbmNlKCkgaW5p
dFdpdGhUeXBlOml0ZW1UeXBlXSk7CiAgICAgW19wb3BvdmVyQ29udHJvbGxlciBzZXREZWxlZ2F0
ZTpzZWxmXTsKIAogICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07CkBAIC0xMjgsNyArMTI4LDcgQEAgLSAodm9pZClz
aG93QWlyUGxheVBpY2tlcklQaG9uZTooTVBBVkl0ZQogICAgIGlmIChfYWN0aW9uU2hlZXQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIF9hY3Rpb25TaGVldCA9IGFkb3B0TlMoWyhNUEF1ZGlvVmlk
ZW9Sb3V0aW5nQWN0aW9uU2hlZXQgKilbZ2V0TVBBdWRpb1ZpZGVvUm91dGluZ0FjdGlvblNoZWV0
Q2xhc3MoKSBhbGxvY10gaW5pdFdpdGhUeXBlOml0ZW1UeXBlXSk7CisgICAgX2FjdGlvblNoZWV0
ID0gYWRvcHROUyhbYWxsb2NNUEF1ZGlvVmlkZW9Sb3V0aW5nQWN0aW9uU2hlZXRJbnN0YW5jZSgp
IGluaXRXaXRoVHlwZTppdGVtVHlwZV0pOwogCiAgICAgW19hY3Rpb25TaGVldAogICAgICAgICBz
aG93V2l0aFZhbGlkSW50ZXJmYWNlT3JpZW50YXRpb25NYXNrQmxvY2s6XlVJSW50ZXJmYWNlT3Jp
ZW50YXRpb25NYXNrIHsKQEAgLTE0Myw3ICsxNDMsNyBAQCAtICh2b2lkKXNob3dBaXJQbGF5UGlj
a2VySVBob25lOihNUEFWSXRlCiAKIC0gKHZvaWQpc2hvdzooQk9PTCloYXNWaWRlbyBmcm9tUmVj
dDooQ0dSZWN0KWVsZW1lbnRSZWN0CiB7Ci0gICAgX3JvdXRpbmdDb250cm9sbGVyID0gYWRvcHRO
UyhbKE1QQVZSb3V0aW5nQ29udHJvbGxlciAqKVtnZXRNUEFWUm91dGluZ0NvbnRyb2xsZXJDbGFz
cygpIGFsbG9jXSBpbml0V2l0aE5hbWU6QCJXZWJLaXQyIC0gSFRNTCBtZWRpYSBlbGVtZW50IHNo
b3dpbmcgQWlyUGxheSByb3V0ZSBwaWNrZXIiXSk7CisgICAgX3JvdXRpbmdDb250cm9sbGVyID0g
YWRvcHROUyhbYWxsb2NNUEFWUm91dGluZ0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoTmFt
ZTpAIldlYktpdDIgLSBIVE1MIG1lZGlhIGVsZW1lbnQgc2hvd2luZyBBaXJQbGF5IHJvdXRlIHBp
Y2tlciJdKTsKICAgICBbX3JvdXRpbmdDb250cm9sbGVyIHNldERpc2NvdmVyeU1vZGU6TVBSb3V0
ZURpc2NvdmVyeU1vZGVEZXRhaWxlZF07CiAKICAgICBNUEFWSXRlbVR5cGUgaXRlbVR5cGUgPSBo
YXNWaWRlbyA/IE1QQVZJdGVtVHlwZVZpZGVvIDogTVBBVkl0ZW1UeXBlQXVkaW87CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBs
b2FkUGFuZWwubW0JKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDgg
KzU2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIFNPRlRfTElOS19GUkFNRVdPUksoQVZG
b3VuZGF0aW9uKTsKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRJbWFnZUdl
bmVyYXRvcik7CiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KTsKLSNk
ZWZpbmUgQVZBc3NldEltYWdlR2VuZXJhdG9yX2NsYXNzIGdldEFWQXNzZXRJbWFnZUdlbmVyYXRv
ckNsYXNzKCkKLSNkZWZpbmUgQVZVUkxBc3NldF9jbGFzcyBnZXRBVlVSTEFzc2V0Q2xhc3MoKQog
CiBTT0ZUX0xJTktfRlJBTUVXT1JLKENvcmVNZWRpYSk7CiBTT0ZUX0xJTktfQ09OU1RBTlQoQ29y
ZU1lZGlhLCBrQ01UaW1lWmVybywgQ01UaW1lKTsKQEAgLTIwNyw4ICsyMDUsOCBAQCAtIChOU1VS
TCAqKWZpbGVVUkwKIAogLSAoVUlJbWFnZSAqKWRpc3BsYXlJbWFnZQogewotICAgIFJldGFpblB0
cjxBVlVSTEFzc2V0PiBhc3NldCA9IGFkb3B0TlMoW1tBVlVSTEFzc2V0X2NsYXNzIGFsbG9jXSBp
bml0V2l0aFVSTDpfbWVkaWFVUkwuZ2V0KCkgb3B0aW9uczpuaWxdKTsKLSAgICBSZXRhaW5QdHI8
QVZBc3NldEltYWdlR2VuZXJhdG9yPiBnZW5lcmF0b3IgPSBhZG9wdE5TKFtbQVZBc3NldEltYWdl
R2VuZXJhdG9yX2NsYXNzIGFsbG9jXSBpbml0V2l0aEFzc2V0OmFzc2V0LmdldCgpXSk7CisgICAg
UmV0YWluUHRyPEFWVVJMQXNzZXQ+IGFzc2V0ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5z
dGFuY2UoKSBpbml0V2l0aFVSTDpfbWVkaWFVUkwuZ2V0KCkgb3B0aW9uczpuaWxdKTsKKyAgICBS
ZXRhaW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBnZW5lcmF0b3IgPSBhZG9wdE5TKFthbGxv
Y0FWQXNzZXRJbWFnZUdlbmVyYXRvckluc3RhbmNlKCkgaW5pdFdpdGhBc3NldDphc3NldC5nZXQo
KV0pOwogICAgIFtnZW5lcmF0b3Igc2V0QXBwbGllc1ByZWZlcnJlZFRyYWNrVHJhbnNmb3JtOllF
U107CiAKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51Q29udHJvbGxlci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLQWN0aW9uTWVudUNvbnRyb2xsZXIubW0JKHJldmlz
aW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tBY3Rpb25NZW51
Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtODY0LDcgKzg2NCw3IEBAIC0gKE5TQXJy
YXkgKilfZGVmYXVsdE1lbnVJdGVtc0ZvcldoaXRlc3AKIC0gKE5TQXJyYXkgKilfZGVmYXVsdE1l
bnVJdGVtc0ZvckRhdGFEZXRlY3RhYmxlTGluawogewogICAgIFJlZlB0cjxXZWJIaXRUZXN0UmVz
dWx0PiBoaXRUZXN0UmVzdWx0ID0gW3NlbGYgX3dlYkhpdFRlc3RSZXN1bHRdOwotICAgIFJldGFp
blB0cjxEREFjdGlvbkNvbnRleHQ+IGFjdGlvbkNvbnRleHQgPSBbW2dldEREQWN0aW9uQ29udGV4
dENsYXNzKCkgYWxsb2NdIGluaXRdOworICAgIFJldGFpblB0cjxEREFjdGlvbkNvbnRleHQ+IGFj
dGlvbkNvbnRleHQgPSBbYWxsb2NEREFjdGlvbkNvbnRleHRJbnN0YW5jZSgpIGluaXRdOwogCiAg
ICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHNob3cgYSB5ZWxsb3cgaGlnaGxpZ2h0PwogICAgIF9j
dXJyZW50QWN0aW9uQ29udGV4dCA9IFthY3Rpb25Db250ZXh0IGNvbnRleHRGb3JWaWV3Ol93a1Zp
ZXcgYWx0TW9kZTpZRVMgaW50ZXJhY3Rpb25TdGFydGVkSGFuZGxlcjpeKCkgewpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20ubW0JKHJldmlzaW9uIDE3NjkxNSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVt
b3RlQ3VzdG9tLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IFBsYQogICAgIGJvb2wgY29weUNvbnRlbnRzID0g
dHJ1ZTsKIAogICAgIGlmIChsYXllclR5cGUoKSA9PSBMYXllclR5cGVBVlBsYXllckxheWVyKSB7
Ci0gICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbW2dldEFWUGxheWVyTGF5ZXJDbGFzcygp
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIGNsb25lZExheWVyID0gYWRvcHROUyhbYWxsb2NBVlBs
YXllckxheWVySW5zdGFuY2UoKSBpbml0XSk7CiAKICAgICAgICAgQVZQbGF5ZXJMYXllciogZGVz
dGluYXRpb25QbGF5ZXJMYXllciA9IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4oY2xvbmVk
TGF5ZXIuZ2V0KCkpOwogICAgICAgICBBVlBsYXllckxheWVyKiBzb3VyY2VQbGF5ZXJMYXllciA9
IHN0YXRpY19jYXN0PEFWUGxheWVyTGF5ZXIgKj4ocGxhdGZvcm1MYXllcigpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2lv
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjkxNSkKKysrIFNvdXJjZS9XZWJLaXQvaW9zL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE0LTEyLTA3ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIGFuZCBkZXBsb3kg
YSBmdW5jdGlvbiB0aGF0IGFsbG9jYXRlcyBhbmQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBhIHNv
ZnQtbGlua2VkIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzkzNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbiBbW2dldEZvb0NsYXNzKCkgYWxsb2NdIGluaXQqXSwgdGhlIHR5cGUgb2YgdGhl
IHJlc3VsdCBvZiArYWxsb2MgaXMgaWQsIHNvIHRoZSBjb21waWxlcgorICAgICAgICBwaWNrcyBh
biBhcmJpdHJhcnkgZGVjbGFyYXRpb24gb2YgaW5pdCosIG5vdCBuZWNlc3NhcmlseSB0aGUgRm9v
IG9uZS4gVGhpcyBjYW4gdGhlbiBsZWFkCisgICAgICAgIHRvIHdhcm5pbmdzIG9yIGVycm9ycyBp
ZiB0aGUgdHlwZXMgb3IgYXR0cmlidXRlcyBkb27igJl0IG1hdGNoLCBvciB0byBydW50aW1lIGVy
cm9ycyBpZiBGb28KKyAgICAgICAgZG9lc27igJl0IGV2ZW4gaGF2ZSB0aGUgZXhwZWN0ZWQgaW5p
dGlhbGl6ZXIuIFRoZSBuZXcgYWxsb2NGb29JbnN0YW5jZSgpIHJldHVybnMgYSBGb28gKiwgdGh1
cworICAgICAgICBhdm9pZGluZyB0aGUgYW1iaWd1aXR5LgorCisgICAgICAgICogTWlzYy9XZWJH
ZW9sb2NhdGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyLm1tOgorICAgICAgICAoLVtXZWJHZW9sb2Nh
dGlvbkNvcmVMb2NhdGlvblByb3ZpZGVyIGNyZWF0ZUxvY2F0aW9uTWFuYWdlcl0pOgorCiAyMDE0
LTEyLTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGJ1aWxkIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgY2xhbmcuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2lvcy9NaXNjL1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9pb3MvTWlzYy9XZWJHZW9sb2NhdGlvbkNvcmVMb2NhdGlv
blByb3ZpZGVyLm1tCShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViS2l0L2lvcy9NaXNj
L1dlYkdlb2xvY2F0aW9uQ29yZUxvY2F0aW9uUHJvdmlkZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTY1LDcgKzY1LDcgQEAgLSAodm9pZCljcmVhdGVMb2NhdGlvbk1hbmFnZXIKIHsKICAgICBBU1NF
UlQoIV9sb2NhdGlvbk1hbmFnZXIpOwogCi0gICAgX2xvY2F0aW9uTWFuYWdlciA9IGFkb3B0TlMo
WyhDTExvY2F0aW9uTWFuYWdlciAqKVtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgYWxsb2Nd
IGluaXRdKTsKKyAgICBfbG9jYXRpb25NYW5hZ2VyID0gYWRvcHROUyhbYWxsb2NDTExvY2F0aW9u
TWFuYWdlckluc3RhbmNlKCkgaW5pdF0pOwogICAgIF9sYXN0QXV0aG9yaXphdGlvblN0YXR1cyA9
IFtnZXRDTExvY2F0aW9uTWFuYWdlckNsYXNzKCkgYXV0aG9yaXphdGlvblN0YXR1c107CiAKICAg
ICBbIF9sb2NhdGlvbk1hbmFnZXIgc2V0RGVsZWdhdGU6c2VsZl07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0xMi0wNyAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBhbmQgZGVwbG95IGEgZnVuY3Rp
b24gdGhhdCBhbGxvY2F0ZXMgYW5kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgYSBzb2Z0LWxpbmtl
ZCBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTM5MzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW4gW1tnZXRGb29DbGFzcygpIGFsbG9jXSBpbml0Kl0sIHRoZSB0eXBlIG9mIHRoZSByZXN1bHQg
b2YgK2FsbG9jIGlzIGlkLCBzbyB0aGUgY29tcGlsZXIKKyAgICAgICAgcGlja3MgYW4gYXJiaXRy
YXJ5IGRlY2xhcmF0aW9uIG9mIGluaXQqLCBub3QgbmVjZXNzYXJpbHkgdGhlIEZvbyBvbmUuIFRo
aXMgY2FuIHRoZW4gbGVhZAorICAgICAgICB0byB3YXJuaW5ncyBvciBlcnJvcnMgaWYgdGhlIHR5
cGVzIG9yIGF0dHJpYnV0ZXMgZG9u4oCZdCBtYXRjaCwgb3IgdG8gcnVudGltZSBlcnJvcnMgaWYg
Rm9vCisgICAgICAgIGRvZXNu4oCZdCBldmVuIGhhdmUgdGhlIGV4cGVjdGVkIGluaXRpYWxpemVy
LiBUaGUgbmV3IGFsbG9jRm9vSW5zdGFuY2UoKSByZXR1cm5zIGEgRm9vICosIHRodXMKKyAgICAg
ICAgYXZvaWRpbmcgdGhlIGFtYmlndWl0eS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViQWN0aW9u
TWVudUNvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dlYkFjdGlvbk1lbnVDb250cm9sbGVyIF9k
ZWZhdWx0TWVudUl0ZW1zRm9yRGF0YURldGVjdGFibGVMaW5rXSk6CisKIDIwMTQtMTItMDYgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzdHVi
YmVkIG91dCB2ZXJzaW9uIG9mIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcgpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBY3Rpb25NZW51Q29udHJvbGxlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFjdGlvbk1lbnVDb250cm9sbGVy
Lm1tCShyZXZpc2lvbiAxNzY5MTUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFj
dGlvbk1lbnVDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNyArMjkyLDcgQEAg
LSAoTlNBcnJheSAqKV9kZWZhdWx0TWVudUl0ZW1zRm9yRGF0YURldAogICAgIGlmICghbm9kZSkK
ICAgICAgICAgcmV0dXJuIEBbIF07CiAKLSAgICBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBh
Y3Rpb25Db250ZXh0ID0gW1tnZXREREFjdGlvbkNvbnRleHRDbGFzcygpIGFsbG9jXSBpbml0XTsK
KyAgICBSZXRhaW5QdHI8RERBY3Rpb25Db250ZXh0PiBhY3Rpb25Db250ZXh0ID0gW2FsbG9jRERB
Y3Rpb25Db250ZXh0SW5zdGFuY2UoKSBpbml0XTsKIAogICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBzaG93IGEgeWVsbG93IGhpZ2hsaWdodD8KICAgICBfY3VycmVudEFjdGlvbkNvbnRleHQgPSBb
YWN0aW9uQ29udGV4dCBjb250ZXh0Rm9yVmlldzpfd2ViVmlldyBhbHRNb2RlOllFUyBpbnRlcmFj
dGlvblN0YXJ0ZWRIYW5kbGVyOl4oKSB7Cg==
</data>
<flag name="review"
          id="267610"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>