<?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>150002</bug_id>
          
          <creation_ts>2015-10-10 10:29:57 -0700</creation_ts>
          <short_desc>[iOS] Remove unnecessary iOS version checks</short_desc>
          <delta_ts>2017-05-17 14:11:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Other</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 name="Nobody">webkit-unassigned</assigned_to>
          <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132141</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-10-10 10:29:57 -0700</bug_when>
    <thetext>Some checks for the target iOS version are unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132142</commentid>
    <comment_count>1</comment_count>
      <attachid>262829</attachid>
    <who name="">mitz</who>
    <bug_when>2015-10-10 10:32:17 -0700</bug_when>
    <thetext>Created attachment 262829
Remove redundant version checks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132143</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-10 10:34:07 -0700</bug_when>
    <thetext>Attachment 262829 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 48 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>1132155</commentid>
    <comment_count>3</comment_count>
      <attachid>262829</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-10-10 12:53:23 -0700</bug_when>
    <thetext>Comment on attachment 262829
Remove redundant version checks

View in context: https://bugs.webkit.org/attachment.cgi?id=262829&amp;action=review

&gt; Source/WebCore/loader/cocoa/DiskCacheMonitorCocoa.h:58
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt; 1090)

I suggest removing these parentheses.

&gt; Source/WebCore/svg/SVGToOTFFontConversion.cpp:1109
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt;= 101000)

Ditto.

&gt; Source/WebCore/svg/SVGToOTFFontConversion.cpp:1407
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &lt;= 101000)

Ditto.

&gt; Source/WebKit2/Shared/ios/NativeWebTouchEventIOS.mm:105
&gt; +#if defined UI_WEB_TOUCH_EVENT_HAS_IS_POTENTIAL_TAP &amp;&amp; UI_WEB_TOUCH_EVENT_HAS_IS_POTENTIAL_TAP

I didn&apos;t know one could use &quot;defined&quot; without parentheses. I suggest adding them for consistency.

&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:318
&gt; -		1A8B66B01BC43C860082DF77 /* PageLoadStateObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8B66AE1BC43C860082DF77 /* PageLoadStateObserver.h */; settings = {ASSET_TAGS = (); }; };
&gt; -		1A8B66B31BC45B010082DF77 /* WKBundleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A8B66B11BC45B010082DF77 /* WKBundleMac.mm */; settings = {ASSET_TAGS = (); }; };
&gt; +		1A8B66B01BC43C860082DF77 /* PageLoadStateObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8B66AE1BC43C860082DF77 /* PageLoadStateObserver.h */; };
&gt; +		1A8B66B31BC45B010082DF77 /* WKBundleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A8B66B11BC45B010082DF77 /* WKBundleMac.mm */; };

Is this change intentionally part of this patch?

&gt; Tools/WebKitTestRunner/ios/UIKitSPI.h:-48
&gt; -- (void)_handleHIDEvent:(IOHIDEventRef)event;

Just to confirm, this was removed because it&apos;s unneeded, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132157</commentid>
    <comment_count>4</comment_count>
      <attachid>262829</attachid>
    <who name="">mitz</who>
    <bug_when>2015-10-10 13:02:25 -0700</bug_when>
    <thetext>Comment on attachment 262829
Remove redundant version checks

View in context: https://bugs.webkit.org/attachment.cgi?id=262829&amp;action=review

&gt;&gt; Source/WebKit2/Shared/ios/NativeWebTouchEventIOS.mm:105
&gt;&gt; +#if defined UI_WEB_TOUCH_EVENT_HAS_IS_POTENTIAL_TAP &amp;&amp; UI_WEB_TOUCH_EVENT_HAS_IS_POTENTIAL_TAP
&gt; 
&gt; I didn&apos;t know one could use &quot;defined&quot; without parentheses. I suggest adding them for consistency.

We use both styles throughout the project.

&gt;&gt; Source/WebKit2/WebKit2.xcodeproj/project.pbxproj:318
&gt;&gt; +		1A8B66B31BC45B010082DF77 /* WKBundleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A8B66B11BC45B010082DF77 /* WKBundleMac.mm */; };
&gt; 
&gt; Is this change intentionally part of this patch?

No. Some versions of Xcode added empty ASSET_TAGS arrays, other versions take them out, but this is unrelated to what this patch is about.

&gt;&gt; Tools/WebKitTestRunner/ios/UIKitSPI.h:-48
&gt;&gt; -- (void)_handleHIDEvent:(IOHIDEventRef)event;
&gt; 
&gt; Just to confirm, this was removed because it&apos;s unneeded, correct?

It’s unneeded, but I’ll leave it since it’s outside the scope of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132158</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-10-10 13:06:40 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r190841&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262829</attachid>
            <date>2015-10-10 10:32:17 -0700</date>
            <delta_ts>2015-10-10 12:53:23 -0700</delta_ts>
            <desc>Remove redundant version checks</desc>
            <filename>150002_r1.diff</filename>
            <type>text/plain</type>
            <size>73183</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE1LTEwLTEwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAg
W2lPU10gUmVtb3ZlIHVubmVjZXNzYXJ5IGlPUyB2ZXJzaW9uIGNoZWNrcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMDAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsbHZtL2xpYnJhcnkvTExWTUV4
cG9ydHMuY3BwOgorICAgICAgICAoaW5pdGlhbGl6ZUFuZEdldEpTQ0xMVk1BUEkpOgorCiAyMDE1
LTEwLTA5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
TW9kZXJuaXplIGFuZCBjbGVhbnVwIGFuIE5TTnVtYmVyIGNvbnN0YW50CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGx2bS9saWJyYXJ5L0xMVk1FeHBvcnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGx2bS9saWJyYXJ5L0xMVk1FeHBvcnRzLmNwcAkocmV2
aXNpb24gMTkwODMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsdm0vbGlicmFyeS9MTFZN
RXhwb3J0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgZXh0ZXJuICJDIiBK
U0M6OkxMVk1BUEkqIGluaXRpYWxpemVBbmRHZQogICAgIExMVk1Jbml0aWFsaXplWDg2QXNtUHJp
bnRlcigpOwogICAgIExMVk1Jbml0aWFsaXplWDg2RGlzYXNzZW1ibGVyKCk7CiAjZWxpZiBDUFUo
QVJNNjQpCi0jaWYgKF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gODAyMDApIHx8
IE9TKExJTlVYKQorI2lmIFBMQVRGT1JNKElPUykgfHwgT1MoTElOVVgpCiAgICAgTExWTUluaXRp
YWxpemVBQXJjaDY0VGFyZ2V0SW5mbygpOwogICAgIExMVk1Jbml0aWFsaXplQUFyY2g2NFRhcmdl
dCgpOwogICAgIExMVk1Jbml0aWFsaXplQUFyY2g2NFRhcmdldE1DKCk7CkluZGV4OiBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNp
b24gMTkwODMyKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0xMC0xMCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgor
CisgICAgICAgIFtpT1NdIFJlbW92ZSB1bm5lY2Vzc2FyeSBpT1MgdmVyc2lvbiBjaGVja3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisKIDIwMTUtMTAtMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBDbGVhbiB1cCBNYXJrZWQgY2xhc3NlcwpJbmRleDogU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NTUsNyArNTU1LDcgQEAKICNkZWZpbmUgVVNFX1FVSUNLX0xPT0sgMQogI2VuZGlm
CiAKLSNpZiBkZWZpbmVkKFRBUkdFVF9PU19JT1MpICYmIFRBUkdFVF9PU19JT1MgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDAKKyNpZiBUQVJHRVRfT1NfSU9TCiAj
ZGVmaW5lIEhBVkVfQVBQX0xJTktTIDEKICNlbmRpZgogCkBAIC05ODYsMjEgKzk4NiwyMSBAQAog
I2VuZGlmCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDYwMDAwKSB8fCBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
SU9TKSB8fCBQTEFURk9STShNQUMpCiAjZGVmaW5lIFVTRV9DT1JFTUVESUEgMQogI2RlZmluZSBI
QVZFX0FWRk9VTkRBVElPTl9WSURFT19PVVRQVVQgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0o
SU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA1MDAwMCkgfHwgKFBM
QVRGT1JNKE1BQykgfHwgKE9TKFdJTkRPV1MpICYmIFVTRShDRykpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MCkKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9S
TShNQUMpIHx8IChPUyhXSU5ET1dTKSAmJiBVU0UoQ0cpKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwODApCiAjZGVmaW5lIEhBVkVfQVZGT1VOREFUSU9OX01FRElBX1NF
TEVDVElPTl9HUk9VUCAxCiAjZW5kaWYKIAotI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDcwMDAwKSB8fCAoKFBMQVRGT1JNKE1BQykgfHwg
KE9TKFdJTkRPV1MpICYmIFVTRShDRykpKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwOTApCisjaWYgUExBVEZPUk0oSU9TKSB8fCAoKFBMQVRGT1JNKE1BQykgfHwgKE9T
KFdJTkRPV1MpICYmIFVTRShDRykpKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwOTApCiAjZGVmaW5lIEhBVkVfQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBP
UlQgMQogI2RlZmluZSBIQVZFX01FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLIDEKICNlbmRp
ZgogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gNjAwMDApIHx8IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShJT1MpIHx8IFBMQVRG
T1JNKE1BQykKICNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTE9BREVSX0RFTEVHQVRFIDEKICNl
bmRpZgogCkBAIC0xMDU5LDcgKzEwNTksNyBAQAogI2RlZmluZSBVU0VfSU5TRVJUSU9OX1VORE9f
R1JPVVBJTkcgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApIHx8IFBMQVRGT1JN
KElPUykKICNkZWZpbmUgSEFWRV9USU1JTkdEQVRBT1BUSU9OUyAxCiAjZW5kaWYKIApAQCAtMTEx
Nyw3ICsxMTE3LDcgQEAKICNkZWZpbmUgVVNFX01FRElBVE9PTEJPWCAxCiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAw
MDAKKyNpZiBQTEFURk9STShJT1MpCiAjZGVmaW5lIEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05f
TU9ERSAxCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwODMyKQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIw
MTUtMTAtMTAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBSZW1vdmUgdW5uZWNlc3NhcnkgaU9TIHZlcnNpb24gY2hlY2tzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwMDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY29j
b2EvRGlza0NhY2hlTW9uaXRvckNvY29hLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNrQ2FjaGVN
b25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdTdG9yZUNyZWF0aW9uKToKKyAgICAgICAgKiBwYWdl
L21hYy9TZXR0aW5nc01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNhbnNTZXJpZlRyYWRpdGlv
bmFsSGFuRm9udEZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpzYW5zU2VyaWZTaW1wbGlmaWVk
SGFuRm9udEZhbWlseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kT3BlblR5cGVGZWF0dXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0U3lzdGVtRm9udEZhbGxiYWNrRm9yQ2hhcmFjdGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxvb2t1cEZhbGxiYWNrRm9udCk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViQ29yZVN5c3RlbUludGVyZmFjZUlPUy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW06Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV0FLV2luZG93Lm1tOgorICAgICAgICAo
K1tXQUtXaW5kb3cgaGFzTGFuZHNjYXBlT3JpZW50YXRpb25dKToKKyAgICAgICAgKC1bV0FLV2lu
ZG93IGhvc3RMYXllcl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFy
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29weUNvb2tpZXNGb3JVUkxXaXRoRmlyc3RQ
YXJ0eVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb29raWVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm86OmNvbnRhaW5zTm9uUm9vdFNIQTFTaWduZWRDZXJ0aWZpY2F0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oOgorICAgICAgICAq
IHBsYXRmb3JtL3NwaS9jb2NvYS9BVktpdFNQSS5oOgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9j
b2NvYS9Db3JlVGV4dFNQSS5oOgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9jb2NvYS9ORUZpbHRl
clNvdXJjZVNQSS5oOgorICAgICAgICAqIHBsYXRmb3JtL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJ
Lmg6CisgICAgICAgICogcGxhdGZvcm0vc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg6CisgICAgICAg
ICogcGxhdGZvcm0vc3BpL2lvcy9MYXVuY2hTZXJ2aWNlc1NQSS5oOgorICAgICAgICAqIHBsYXRm
b3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3Mu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW06Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhbGl6ZWREYXRlQ2FjaGU6OmNhbGN1bGF0ZU1heGltdW1XaWR0
aCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6TG9jYWxlTWFjOjpMb2NhbGVNYWMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpjYWNoZWRT
eXN0ZW1Gb250RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6
OnVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlvbik6CisgICAgICAgICogc3ZnL1NWR1Rv
T1RGRm9udENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29u
dmVydGVyOjphcHBlbmRLRVJOVGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250
Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0ZXIpOgorCiAyMDE1LTEwLTA5ICBBbmRlcnMg
Q2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGhhY2sgdGhh
dCBhbGxvd2VkIHBsdWctaW5zIHRvIGFsd2F5cyB0YWtlIG92ZXIgY2VydGFpbiBpbWFnZSBmb3Jt
YXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCShy
ZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29sIENhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKFNoCiAgICAgaWYgKCFtX2ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgZGF0YSkgewogICAgICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIoZGF0YSk7CiAKLSNpZiAoIVBMQVRGT1JNKE1B
QykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDkwKSAmJiAoIVBMQVRG
T1JNKElPUykgfHwgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCA4MDAwMCkKKyNp
ZiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAx
MDkwKSAmJiAhUExBVEZPUk0oSU9TKQogICAgICAgICBpZiAoaXNXT0ZGKGJ1ZmZlci5nZXQoKSkp
IHsKICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBjb252ZXJ0ZWRGb250OwogICAgICAgICAgICAg
aWYgKCFjb252ZXJ0V09GRlRvU2ZudChidWZmZXIuZ2V0KCksIGNvbnZlcnRlZEZvbnQpKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9EaXNrQ2FjaGVNb25pdG9y
Q29jb2EuaAkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L0Rpc2tDYWNoZU1vbml0b3JDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
IHByaXZhdGU6CiAgICAgU2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogfTsKIAotI2lmIChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgODAwMDApIHx8IChQ
TEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDkwKQor
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MDkwKQogCiBpbmxpbmUgdm9pZCBEaXNrQ2FjaGVNb25pdG9yOjptb25pdG9yRmlsZUJhY2tpbmdT
dG9yZUNyZWF0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlc3Npb25JRCwgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NldHRpbmdz
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NldHRpbmdzTWFj
Lm1tCShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXR0aW5n
c01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc2Fuc1NlcmlmVHJhZGl0aW9uYWxIYW5G
b250RmFtaWx5KCkKIHsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID49IDEwMTAwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gODAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApIHx8IFBMQVRGT1JNKElPUykK
ICAgICByZXR1cm4gIlBpbmdGYW5nIFRDIjsKICNlbHNlCiAgICAgcmV0dXJuICJIZWl0aSBUQyI7
CkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc2Fuc1NlcmlmVHJh
ZGkKIAogc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBzYW5zU2VyaWZTaW1wbGlmaWVkSGFuRm9u
dEZhbWlseSgpCiB7Ci0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEwMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDgwMDAwKQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwKSB8fCBQTEFURk9STShJT1MpCiAg
ICAgcmV0dXJuICJQaW5nRmFuZyBTQyI7CiAjZWxzZQogICAgIHJldHVybiAiSGVpdGkgU0MiOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29y
ZVRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFwcGVu
ZFRydWVUeXBlRmVhdHVyZQogCiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kT3BlblR5cGVGZWF0
dXJlKENGTXV0YWJsZUFycmF5UmVmIGZlYXR1cmVzLCBjb25zdCBGb250RmVhdHVyZSYgZmVhdHVy
ZSkKIHsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTAwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gODAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApIHx8IFBMQVRGT1JNKElPUykKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGZlYXR1cmVLZXkgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzKGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihmZWF0dXJlLnRhZygpLmRhdGEoKSksIGZlYXR1cmUudGFnKCkuc2l6ZSgpICogc2l6ZW9mKEZv
bnRGZWF0dXJlVGFnOjp2YWx1ZV90eXBlKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFsc2Up
KTsKICAgICBpbnQgcmF3RmVhdHVyZVZhbHVlID0gZmVhdHVyZS52YWx1ZSgpOwogICAgIFJldGFp
blB0cjxDRk51bWJlclJlZj4gZmVhdHVyZVZhbHVlID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmcmF3RmVhdHVyZVZhbHVlKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRm9udENhY2hlSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9G
b250Q2FjaGVJT1MubW0JKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2lvcy9Gb250Q2FjaGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTgyLDEy
ICs4Miw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q1RGb250UmVmPiBnZXRTeXN0ZW1Gb24KIHsKICAg
ICAvLyBGSVhNRTogVW5pZnkgdGhpcyB3aXRoIHBsYXRmb3JtTG9va3VwRmFsbGJhY2tGb250KCkK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvY2FsZVN0cmluZzsKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDkwMDAwCiAgICAgaWYgKCFsb2NhbGUuaXNOdWxsKCkp
CiAgICAgICAgIGxvY2FsZVN0cmluZyA9IGxvY2FsZS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obG9jYWxlKTsKLSNlbmRpZgogCiAgICAgQ0ZJbmRl
eCBjb3ZlcmVkTGVuZ3RoID0gMDsKICAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDcmVhdGVQaHlz
aWNhbEZvbnRGb3JDaGFyYWN0ZXJzV2l0aExhbmd1YWdlKGZvbnQsIChjb25zdCBVVEYxNkNoYXIq
KWNoYXJhY3RlcnMsIChDRkluZGV4KWxlbmd0aCwgbG9jYWxlU3RyaW5nLmdldCgpLCAmY292ZXJl
ZExlbmd0aCkpOwpAQCAtOTksMTcgKzk1LDEyIEBAIFJldGFpblB0cjxDVEZvbnRSZWY+IHBsYXRm
b3JtTG9va3VwRmFsbGIKICAgICBpZiAobGVuZ3RoICYmIENURm9udERlc2NyaXB0b3JJc1N5c3Rl
bVVJRm9udChhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihmb250KSkuZ2V0KCkpKQog
ICAgICAgICByZXR1cm4gZ2V0U3lzdGVtRm9udEZhbGxiYWNrRm9yQ2hhcmFjdGVycyhmb250LCBs
b2NhbGUsIGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSA5MDAwMAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxlU3Ry
aW5nOwogI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMDAwMAogICAg
IGlmICghbG9jYWxlLmlzTnVsbCgpKQogICAgICAgICBsb2NhbGVTdHJpbmcgPSBsb2NhbGUuc3Ry
aW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICNlbmRpZgogICAgIFJldGFpblB0cjxDVEZvbnREZXNj
cmlwdG9yUmVmPiBmYWxsYmFja0ZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRDcmVhdGVQ
aHlzaWNhbEZvbnREZXNjcmlwdG9yRm9yQ2hhcmFjdGVyc1dpdGhMYW5ndWFnZShmb250LCBjaGFy
YWN0ZXJzLCBsZW5ndGgsIGxvY2FsZVN0cmluZy5nZXQoKSwgbnVsbHB0cikpOwotI2Vsc2UKLSAg
ICBSZXRhaW5QdHI8Q1RGb250UmVmPiBmYWxsYmFja0ZvbnQgPSBhZG9wdENGKENURm9udENyZWF0
ZUZvckNoYXJhY3RlcnNXaXRoTGFuZ3VhZ2UoZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBudWxs
cHRyLCBudWxscHRyKSk7Ci0gICAgUmV0YWluUHRyPENURm9udERlc2NyaXB0b3JSZWY+IGZhbGxi
YWNrRm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihmYWxs
YmFja0ZvbnQuZ2V0KCkpKTsKLSNlbmRpZgogICAgIFVDaGFyMzIgYyA9ICpjaGFyYWN0ZXJzOwog
ICAgIGlmIChsZW5ndGggPiAxICYmIFUxNl9JU19MRUFEKGMpICYmIFUxNl9JU19UUkFJTChjaGFy
YWN0ZXJzWzFdKSkKICAgICAgICAgYyA9IFUxNl9HRVRfU1VQUExFTUVOVEFSWShjLCBjaGFyYWN0
ZXJzWzFdKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCShyZXZpc2lvbiAxOTA4MzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDEzICsyNDksOCBAQCB2b2lkIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpCiAgICAgZm9yIChBVlNwZWVjaFN5bnRoZXNpc1ZvaWNl
ICp2b2ljZSBpbiBbQVZTcGVlY2hTeW50aGVzaXNWb2ljZUNsYXNzIHNwZWVjaFZvaWNlc10pIHsK
ICAgICAgICAgTlNTdHJpbmcgKmxhbmd1YWdlID0gW3ZvaWNlIGxhbmd1YWdlXTsKICAgICAgICAg
Ym9vbCBpc0RlZmF1bHQgPSB0cnVlOwotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDkwMDAwCiAgICAgICAgIE5TU3RyaW5nICp2b2ljZVVSSSA9IFt2b2ljZSBpZGVudGlm
aWVyXTsKICAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBbdm9pY2UgbmFtZV07Ci0jZWxzZQotICAg
ICAgICBOU1N0cmluZyAqdm9pY2VVUkkgPSBsYW5ndWFnZTsKLSAgICAgICAgTlNTdHJpbmcgKm5h
bWUgPSBsYW5ndWFnZTsKLSNlbmRpZgogICAgICAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKHZvaWNlVVJJLCBuYW1lLCBsYW5ndWFnZSwg
dHJ1ZSwgaXNEZWZhdWx0KSk7CiAgICAgfQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJDb3JlU3lzdGVtSW50ZXJmYWNl
SU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkNvcmVT
eXN0ZW1JbnRlcmZhY2VJT1MuaAkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2VJT1MuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsOSArMzMsNyBAQCB0eXBlZGVmIGVudW0gewogICAgIHdrSU9TU3lzdGVtVmVyc2lvbl80
XzIgPSBfX0lQSE9ORV80XzIsCiAgICAgd2tJT1NTeXN0ZW1WZXJzaW9uXzVfMCA9IF9fSVBIT05F
XzVfMCwKICAgICB3a0lPU1N5c3RlbVZlcnNpb25fNl8wID0gX19JUEhPTkVfNl8wLAotI2lmIF9f
SVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwCiAgICAgd2tJT1NTeXN0ZW1W
ZXJzaW9uXzlfMCA9IF9fSVBIT05FXzlfMCwKLSNlbmRpZgogfSB3a0lPU1N5c3RlbVZlcnNpb247
CiAKIGJvb2wgaW9zRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24od2tJT1NTeXN0
ZW1WZXJzaW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQkocmV2aXNp
b24gMTkwODMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBT
T0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJVmlldykKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSA4MDIwMCB8fCAhSEFW
RShBVktJVCkKKyNpZiAhSEFWRShBVktJVCkKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXIKIC0gKHZvaWQpc2V0VmlkZW9FbGVtZW50OihXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50Kil2aWRlb0VsZW1lbnQKQEAgLTYzOCw2ICs2MzgsNiBAQCAtICh2b2lkKWRp
ZEZpbmlzaEZ1bGxzY3JlZW46KFdlYlZpZGVvRnVsCiAKIEBlbmQKIAotI2VuZGlmIC8vIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgODAwMDAKKyNlbmRpZiAvLyAhSEFWRShBVktJ
VCkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5oCShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNyBAQAogI2lmbmRlZiBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdF9oCiAj
ZGVmaW5lIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0X2gKIAotI2lmIFBMQVRGT1JN
KElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gODAwMDAKKyNpZiBQ
TEFURk9STShJT1MpCiAKICNpbmNsdWRlIDxXZWJDb3JlL0V2ZW50TGlzdGVuZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaWYgUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDgwMjAwICYmIEhB
VkUoQVZLSVQpCisjaWYgUExBVEZPUk0oSU9TKSAmJiBIQVZFKEFWS0lUKQogCiAjaW1wb3J0ICJX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIgogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dBS1dpbmRvdy5tbQkocmV2aXNpb24gMTkwODMyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XQUtXaW5kb3cubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDExICs0NCw3IEBAIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICogY29uc3QgV0FL
V2luZG8KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAcHJvdG9jb2wgT3JpZW50YXRpb25Q
cm92aWRlcgotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDYwMDAwCiAt
IChCT09MKWhhc0xhbmRzY2FwZU9yaWVudGF0aW9uOwotI2Vsc2UKLS0gKGludClvcmllbnRhdGlv
bjsKLSNlbmRpZgogQGVuZAogCiBzdGF0aWMgV0FLV2luZG93ICpfV0FLS2V5V2luZG93ID0gbmls
OyAgICAgICAgLy8gd2VhawpAQCAtNjIxLDEyICs2MTcsNyBAQCArICh2b2lkKXNldE9yaWVudGF0
aW9uUHJvdmlkZXI6KGlkKXByb3ZpCiArIChCT09MKWhhc0xhbmRzY2FwZU9yaWVudGF0aW9uCiB7
CiAgICAgLy8gdGhpcyBzaG91bGQgYmUgcGVyZmVjdGx5IHRocmVhZCBzYWZlCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNjAwMDAKICAgICByZXR1cm4gW2dPcmllbnRh
dGlvblByb3ZpZGVyIGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXTsKLSNlbHNlCi0gICAgaW50IG9y
aWVudGF0aW9uID0gW2dPcmllbnRhdGlvblByb3ZpZGVyIG9yaWVudGF0aW9uXTsKLSAgICByZXR1
cm4gb3JpZW50YXRpb24gPT0gOTAgfHwgb3JpZW50YXRpb24gPT0gLTkwOwotI2VuZGlmCiB9CiAK
IC0gKENBTGF5ZXIqKWhvc3RMYXllcgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDE5MDgzMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShXSU4pIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA5MCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCA4MDAwMCkKKyNpZiBQTEFURk9STShXSU4p
IHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0g
MTA5MCkKIGVudW0gewogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNp
dmVseUZyb21NYWluRG9jdW1lbnREb21haW4gPSAzCiB9OwpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29weUNvb2tpZXMKIHsKICAgICBib29sIHNlY3Vy
ZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpOwogCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gODAwMDApIHx8IChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwKQorI2lmIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEwMDApCiAgICAgcmV0dXJuIGFkb3B0Q0YoX0NGSFRUUENvb2tpZVN0b3JhZ2VD
b3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIHVybC5jcmVhdGVDRlVSTCgpLmdldCgpLCBmaXJzdFBhcnR5LmNyZWF0ZUNGVVJM
KCkuZ2V0KCksIHNlY3VyZSkpOwogI2Vsc2UKICAgICAvLyBfQ0ZIVFRQQ29va2llU3RvcmFnZUNv
cHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTCBpcyBub3QgYXZhaWxhYmxlIG9uIG90
aGVyIHBsYXRmb3Jtcy4KQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJy
YXlSZWY+IGNvcHlDb29raWVzCiAKIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZE
aWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogewotI2lmIChQTEFURk9S
TShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKQorI2lm
IFBMQVRGT1JNKElPUykKICAgICBDRkFycmF5UmVmIHBhcnNlZENvb2tpZXMgPSBfQ0ZIVFRQUGFy
c2VkQ29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBo
ZWFkZXJGaWVsZHMsIHVybCk7CiAjZWxzZQogICAgIENGQXJyYXlSZWYgcGFyc2VkQ29va2llcyA9
IENGSFRUUENvb2tpZUNyZWF0ZVdpdGhSZXNwb25zZUhlYWRlckZpZWxkcyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBoZWFkZXJGaWVsZHMsIHVybCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9DZXJ0aWZpY2F0ZUluZm9NYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ2VydGlmaWNhdGVJbmZvTWFjLm1tCShyZXZp
c2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9DZXJ0
aWZpY2F0ZUluZm9NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBib29sIENlcnRpZmljYXRlSW5mbzo6Y29udGFpbnNOb25Sb290U0hB
MVNpZ25lZENlcnRpZmljYXRlKCkgY29uc3QKIHsKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkgfHwgKFBMQVRGT1JNKElPUykg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDApCisjaWYgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApIHx8
IFBMQVRGT1JNKElPUykKICAgICBpZiAoIW1fY2VydGlmaWNhdGVDaGFpbikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NG
TmV0d29ya1NQSS5oCShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBA
QCBlbnVtIDogTlNVSW50ZWdlciB7CiBAZW5kCiAjZW5kaWYKIAotI2lmIChUQVJHRVRfT1NfSVBI
T05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkK
KyNpZiBUQVJHRVRfT1NfSVBIT05FIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQogRVhURVJOX0MgQ0ZEYXRhUmVmIF9DRk5ldHdv
cmtDb3B5QVRTQ29udGV4dCh2b2lkKTsKIEVYVEVSTl9DIEJvb2xlYW4gX0NGTmV0d29ya1NldEFU
U0NvbnRleHQoQ0ZEYXRhUmVmKTsKICNlbmRpZgpAQCAtMTIxLDcgKzEyMSw3IEBAIEVYVEVSTl9D
IEJvb2xlYW4gX0NGTmV0d29ya1NldEFUU0NvbnRleHQKIEVYVEVSTl9DIHZvaWQgX0NGTmV0d29y
a1Jlc2V0SFNUU0hvc3RzU2luY2VEYXRlKENGVVJMU3RvcmFnZVNlc3Npb25SZWYsIENGRGF0ZVJl
Zik7CiAjZW5kaWYKIAotI2lmIChUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKyNpZiBUQVJHRVRfT1NfSVBIT05FIHx8
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
MTAwKQogRVhURVJOX0MgQ0ZEYXRhUmVmIENGSFRUUENvb2tpZVN0b3JhZ2VDcmVhdGVJZGVudGlm
eWluZ0RhdGEoQ0ZBbGxvY2F0b3JSZWYgaW5BbGxvY2F0b3IsIENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYgaW5TdG9yYWdlKTsKIEVYVEVSTl9DIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgQ0ZIVFRQQ29v
a2llU3RvcmFnZUNyZWF0ZUZyb21JZGVudGlmeWluZ0RhdGEoQ0ZBbGxvY2F0b3JSZWYgaW5BbGxv
Y2F0b3IsIENGRGF0YVJlZiBpbkRhdGEpOwogRVhURVJOX0MgQ0ZBcnJheVJlZiBfQ0ZIVFRQUGFy
c2VkQ29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkcyhDRkFsbG9jYXRvclJlZiBpbkFsbG9j
YXRvciwgQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgaW5VUkwpOwpAQCAt
MTQ1LDcgKzE0NSw3IEBAIEVYVEVSTl9DIENGQXJyYXlSZWYgX0NGSFRUUFBhcnNlZENvb2tpZXMK
ICNlbmRpZgogCiAvLyBGSVhNRTogTW92ZSArX3NldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlOiBp
bnRvIHRoZSBhYm92ZSBzZWN0aW9uIHVuZGVyICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSB3aGVu
IHBvc3NpYmxlIChzb29uKS4KLSNpZiAoVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApCisjaWYgVEFSR0VUX09TX0lQSE9O
RSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTEwMCkKIEBpbnRlcmZhY2UgTlNIVFRQQ29va2llU3RvcmFnZSAoKQogKyAodm9pZClfc2V0
U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2U6KE5TSFRUUENvb2tpZVN0b3JhZ2UgKilzdG9yYWdlOwog
QGVuZApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL0FWS2l0U1BJ
LmgJKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2Nv
YS9BVktpdFNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMiArNzQsNiBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBBVlBsYXllckNvbnRyCiAtICh2b2lkKXN0b3BSb3V0aW5nVmlkZW9U
b1BpY3R1cmVJblBpY3R1cmVQbGF5ZXJMYXllclZpZXc7CiBAZW5kCiAKLSNpZiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDkwMDAwCi1AcHJvdG9jb2wgQVZQbGF5ZXJWaWV3Q29u
dHJvbGxlckRlbGVnYXRlIDxOU09iamVjdD4KLS0gKHZvaWQpcGxheWVyVmlld0NvbnRyb2xsZXI6
KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlciByZXN0b3JlVXNl
ckludGVyZmFjZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShCT09MIHJlc3RvcmVkKSljb21wbGV0aW9uSGFuZGxlcjsKLUBlbmQKLSNlbmRpZgot
CiBAcHJvdG9jb2wgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlX1dlYktpdE9ubHkgPEFW
UGxheWVyVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4KIEBvcHRpb25hbAogdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgQVZQbGF5ZXJWaWV3Q29udHJvbGxlckV4aXRGdWxsU2NyZWVuUmVhc29uKSB7
CkBAIC0xMDEsMjEgKzk1LDExIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFWUGxheWVy
Vmlld0MKIC0gKHZvaWQpc3RhcnRQaWN0dXJlSW5QaWN0dXJlOwogLSAodm9pZClzdG9wUGljdHVy
ZUluUGljdHVyZTsKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgOTAw
MDAKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5
YmFjazsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8QVZQbGF5ZXJWaWV3Q29udHJv
bGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKLSNlbmRpZgogQHByb3BlcnR5IChub25hdG9taWMsIHN0
cm9uZykgQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250cm9sbGVyOwogQGVuZAogCiAjZW5k
aWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgOTAwMDAKLQotI2ltcG9y
dCA8QVZLaXQvQVZWYWx1ZVRpbWluZy5oPgotCi0jZWxzZQotCiBAaW50ZXJmYWNlIEFWVmFsdWVU
aW1pbmcgOiBOU09iamVjdCA8TlNDb2RpbmcsIE5TQ29weWluZywgTlNNdXRhYmxlQ29weWluZz4K
IEBlbmQKIApAQCAtMTI0LDggKzEwOCw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIEFW
UGxheWVyVmlld0MKIEBwcm9wZXJ0eSAoTlNfTk9OQVRPTUlDX0lPU09OTFksIHJlYWRvbmx5KSBk
b3VibGUgY3VycmVudFZhbHVlOwogQGVuZAogCi0jZW5kaWYKLQogI2VuZGlmIC8vIFBMQVRGT1JN
KElPUykKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9S
TShJT1MpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQ29yZVRleHRT
UEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvQ29y
ZVRleHRTUEkuaAkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NvY29hL0NvcmVUZXh0U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBA
QCBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUVUlGb250VGV4dFN0CiBleHRlcm4gY29uc3Qg
Q0ZTdHJpbmdSZWYga0NURm9udERlc2NyaXB0b3JUZXh0U3R5bGVFbXBoYXNpemVkOwogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDkwMDAwCisjaWYgUExBVEZPUk0oSU9TKQogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtD
VFVJRm9udFRleHRTdHlsZVRpdGxlMTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RVSUZv
bnRUZXh0U3R5bGVUaXRsZTI7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NUVUlGb250VGV4
dFN0eWxlVGl0bGUzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NvY29hL05F
RmlsdGVyU291cmNlU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NvY29hL05FRmlsdGVyU291cmNlU1BJLmgJKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jb2NvYS9ORUZpbHRlclNvdXJjZVNQSS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2RlZmluZSBIQVZFX01PREVSTl9ORV9GSUxURVJfU09VUkNFIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKSB8fCAo
UExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAw
MCkKKyNkZWZpbmUgSEFWRV9NT0RFUk5fTkVfRklMVEVSX1NPVVJDRSAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkgfHwgUExBVEZPUk0o
SU9TKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oCShyZXZpc2lvbiAx
OTA4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvUXVhcnR6Q29yZVNQ
SS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0FD
b2xvck1hdHJpeCBDQUNvbG9yTWF0cgogQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqbmFtZTsK
IEBlbmQKIAotI2lmIChUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKyNpZiBUQVJHRVRfT1NfSVBIT05FIHx8IChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQog
dHlwZWRlZiBlbnVtIHsKICAgICBrQ0FUcmFuc2FjdGlvblBoYXNlUHJlTGF5b3V0LAogICAgIGtD
QVRyYW5zYWN0aW9uUGhhc2VQcmVDb21taXQsCkBAIC0xNjMsNyArMTYzLDcgQEAgRVhURVJOX0Mg
dm9pZCBDQVJlbmRlclNlcnZlclJlbmRlckRpc3BsYQogCiAvLyBGSVhNRTogTW92ZSB0aGlzIGlu
dG8gdGhlIEFQUExFX0lOVEVSTkFMX1NESyBibG9jayBvbmNlIGl0J3MgaW4gYW4gU0RLLgogQGlu
dGVyZmFjZSBDQUNvbnRleHQgKEFkZGl0aW9uYWxEZXRhaWxzKQotI2lmIChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKyNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMTAwKQogLSAodm9pZClpbnZhbGlkYXRlRmVuY2VzOwogI2VuZGlm
CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvU2VjdXJpdHlT
UEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY29jb2EvU2Vj
dXJpdHlTUEkuaAkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL2NvY29hL1NlY3VyaXR5U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAg
RVhURVJOX0MgU2VjVGFza1JlZiBTZWNUYXNrQ3JlYXRlRnJvbVNlbAogRVhURVJOX0MgQ0ZUeXBl
UmVmIFNlY1Rhc2tDb3B5VmFsdWVGb3JFbnRpdGxlbWVudChTZWNUYXNrUmVmLCBDRlN0cmluZ1Jl
ZiBlbnRpdGxlbWVudCwgQ0ZFcnJvclJlZiAqKTsKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApIHx8IChQTEFU
Rk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKQor
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMTAwKSB8fCBQTEFURk9STShJT1MpCiB0eXBlZGVmIHVpbnQzMl90IFNlY1NpZ25hdHVyZUhh
c2hBbGdvcml0aG07CiBlbnVtIHsKICAgICBrU2VjU2lnbmF0dXJlSGFzaEFsZ29yaXRobVVua25v
d24gPSAwLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9MYXVuY2hTZXJ2
aWNlc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9pb3Mv
TGF1bmNoU2VydmljZXNTUEkuaAkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3BpL2lvcy9MYXVuY2hTZXJ2aWNlc1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw5ICszMCw3IEBACiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogCi0jaWYgX19JUEhP
TkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDAKICNpbXBvcnQgPE1vYmlsZUNvcmVT
ZXJ2aWNlcy9MU0FwcExpbmtQcml2Lmg+Ci0jZW5kaWYKIAogI2VuZGlmCiAKQEAgLTQyLDcgKzQw
LDYgQEAgdHlwZWRlZiB2b2lkICheTFNBcHBMaW5rT3BlbkNvbXBsZXRpb25IYQogCiAjaWYgIVVT
RShBUFBMRV9JTlRFUk5BTF9TREspCiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSA5MDAwMAogQGludGVyZmFjZSBMU1Jlc291cmNlUHJveHkgOiBOU09iamVjdCA8TlND
b3B5aW5nLCBOU1NlY3VyZUNvZGluZz4KIEBlbmQKIApAQCAtNjIsNyArNTksNiBAQCB0eXBlZGVm
IHZvaWQgKF5MU0FwcExpbmtPcGVuQ29tcGxldGlvbkhhCiAtICh2b2lkKW9wZW5JbldlYkJyb3dz
ZXI6KEJPT0wpaW5XZWJCcm93c2VyIHNldEFwcHJvcHJpYXRlT3BlblN0cmF0ZWd5QW5kV2ViQnJv
d3NlclN0YXRlOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopc3RhdGUgY29tcGxldGlv
bkhhbmRsZXI6KExTQXBwTGlua09wZW5Db21wbGV0aW9uSGFuZGxlciljb21wbGV0aW9uSGFuZGxl
cjsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgTFNBcHBsaWNhdGlvblByb3h5ICp0YXJn
ZXRBcHBsaWNhdGlvblByb3h5OwogQGVuZAotI2VuZGlmCiAKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgJKHJl
dmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3Vu
ZGF0aW9uU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgQGludGVyZmFjZSBB
VlBsYXllciAoQVZQbGF5ZXJFeHRlcm5hbFBsYQogCiAjZW5kaWYKIAotI2lmICFIQVZFKEFWS0lU
KSB8fCAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykgfHwgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCA5MDAwMAorI2lmICFIQVZFKEFWS0lUKSB8fCAhVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKIAogQGludGVyZmFjZSBBVlBsYXllckxheWVyIChBVlBsYXllckxheWVyUGljdHVyZUlu
UGljdHVyZU1vZGVTdXBwb3J0UHJpdmF0ZSkKIC0gKHZvaWQpc2V0UElQTW9kZUVuYWJsZWQ6KEJP
T0wpZmxhZzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRl
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NyArMzAsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogLy8gRklYTUU6
IFRoaXMgbmVlZHMgYSBiZXR0ZXIgbmFtZQotI2RlZmluZSBBRERJVElPTkFMX0VNT0pJX1NVUFBP
UlQgKChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTEwMCkpCisjZGVmaW5lIEFERElUSU9OQUxfRU1PSklfU1VQUE9SVCAoUExBVEZP
Uk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTEwMCkpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAvLyA8cmRhcjovL3Byb2JsZW0vMTY5ODA3MzY+OiBXZWIgZm9udHMgY3Jh
c2ggb24gY2VydGFpbiBPU2VzIHdoZW4gdXNpbmcgQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNj
cmlwdG9yRnJvbURhdGEoKQogLy8gRklYTUU6IFdoZW4gd2UgaGF2ZSBtb3ZlZCBlbnRpcmVseSB0
byBDT1JFVEVYVF9XRUJfRk9OVFMsIHJlbW92ZSB0aGUgaXNDdXN0b21Gb250IG1lbWJlciB2YXJp
YWJsZSBmcm9tIEZvbnQsIHNpbmNlIGl0IHdpbGwgbm8gbG9uZ2VyIGJlIHVzZWQuCiAvLyBTZWUg
aHR0cHM6Ly9idWctMTQ1ODczLWF0dGFjaG1lbnRzLndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/
aWQ9MjU0NzEwCi0jaWYgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPCA4MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA8IDEwMTAwMCkKKyNpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEwMDAKICNkZWZpbmUgQ09SRVRFWFRfV0VCX0ZPTlRT
IDAKICNlbHNlCiAjZGVmaW5lIENPUkVURVhUX1dFQl9GT05UUyAxCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9Mb2NhbGl6ZWREYXRlQ2FjaGUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9pb3MvTG9jYWxpemVkRGF0ZUNhY2hlLm1t
CShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2lvcy9M
b2NhbGl6ZWREYXRlQ2FjaGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NSwxMSArMTU1LDcgQEAg
ZmxvYXQgTG9jYWxpemVkRGF0ZUNhY2hlOjpjYWxjdWxhdGVNYXhpbQogICAgIC8vIHR5cGljYWxs
eSBhbGwgZXF1YWxseSB3aWRlLiBGb3JjZSBVVEMgdGltZXpvbmUgZm9yIHRoZSB0ZXN0IGRhdGUg
YmVsb3cgc28gdGhlCiAgICAgLy8gZGF0ZSBkb2Vzbid0IGFkanVzdCBmb3IgdGhlIGN1cnJlbnQg
dGltZXpvbmUuIFRoaXMgaXMgYW4gYXJiaXRyYXJ5IGRhdGUKICAgICAvLyAoeC0yNy0yMDA3KSBh
bmQgdGltZSAoMTA6NDUgUE0pLgotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDgwMDAwCiAgICAgUmV0YWluUHRyPE5TQ2FsZW5kYXI+IGdyZWdvcmlhbiA9IGFkb3B0TlMo
W1tOU0NhbGVuZGFyIGFsbG9jXSBpbml0V2l0aENhbGVuZGFySWRlbnRpZmllcjpOU0NhbGVuZGFy
SWRlbnRpZmllckdyZWdvcmlhbl0pOwotI2Vsc2UKLSAgICBSZXRhaW5QdHI8TlNDYWxlbmRhcj4g
Z3JlZ29yaWFuID0gYWRvcHROUyhbW05TQ2FsZW5kYXIgYWxsb2NdIGluaXRXaXRoQ2FsZW5kYXJJ
ZGVudGlmaWVyOk5TR3JlZ29yaWFuQ2FsZW5kYXJdKTsKLSNlbmRpZgogICAgIFtncmVnb3JpYW4u
Z2V0KCkgc2V0VGltZVpvbmU6W05TVGltZVpvbmUgdGltZVpvbmVGb3JTZWNvbmRzRnJvbUdNVDow
XV07CiAgICAgUmV0YWluUHRyPE5TRGF0ZUNvbXBvbmVudHM+IGNvbXBvbmVudHMgPSBhZG9wdE5T
KFtbTlNEYXRlQ29tcG9uZW50cyBhbGxvY10gaW5pdF0pOwogICAgIFtjb21wb25lbnRzLmdldCgp
IHNldERheToyN107CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2Nh
bGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
TG9jYWxlTWFjLm1tCShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9Mb2NhbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTg0LDExICs4NCw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBjcmVhdGUKIAogTG9jYWxlTWFjOjpM
b2NhbGVNYWMoTlNMb2NhbGUqIGxvY2FsZSkKICAgICA6IG1fbG9jYWxlKGxvY2FsZSkKLSNpZiAo
UExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA4MDAw
MCkgfHwgUExBVEZPUk0oTUFDKQogICAgICwgbV9ncmVnb3JpYW5DYWxlbmRhcihhZG9wdE5TKFtb
TlNDYWxlbmRhciBhbGxvY10gaW5pdFdpdGhDYWxlbmRhcklkZW50aWZpZXI6TlNDYWxlbmRhcklk
ZW50aWZpZXJHcmVnb3JpYW5dKSkKLSNlbHNlCi0gICAgLCBtX2dyZWdvcmlhbkNhbGVuZGFyKGFk
b3B0TlMoW1tOU0NhbGVuZGFyIGFsbG9jXSBpbml0V2l0aENhbGVuZGFySWRlbnRpZmllcjpOU0dy
ZWdvcmlhbkNhbGVuZGFyXSkpCi0jZW5kaWYKICAgICAsIG1fZGlkSW5pdGlhbGl6ZU51bWJlckRh
dGEoZmFsc2UpCiB7CiAgICAgTlNBcnJheSogYXZhaWxhYmxlTGFuZ3VhZ2VzID0gW05TTG9jYWxl
IElTT0xhbmd1YWdlQ29kZXNdOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDkzLDExICsxMDkzLDkg
QEAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxGb250Q2FzY2FkZURlc2NyaXB0aW9uPiBzaG9ydEZvb3Rub3RlRm9udDsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Rm9udENhc2NhZGVEZXNjcmlwdGlvbj4gc2hvcnRD
YXB0aW9uMUZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24+IHRhbGxCb2R5Rm9udDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+IDgwMjAwCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24+IHRpdGxlMUZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb24+IHRpdGxlMkZvbnQ7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24+IHRpdGxlM0ZvbnQ7Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiB1c2VyVGV4dFNpemUgPSBjb250ZW50U2l6ZUNhdGVnb3J5KCk7CiAKQEAgLTExMjMsMTQg
KzExMjEsMTIgQEAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYgUmVuZGVyVGhlbWVJT1M6OgogICAg
ICAgICByZXR1cm4gaGVhZGxpbmVGb250OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbUJv
ZHk6CiAgICAgICAgIHJldHVybiBib2R5Rm9udDsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+IDgwMjAwCiAgICAgY2FzZSBDU1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUxOgog
ICAgICAgICByZXR1cm4gdGl0bGUxRm9udDsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1U
aXRsZTI6CiAgICAgICAgIHJldHVybiB0aXRsZTJGb250OwogICAgIGNhc2UgQ1NTVmFsdWVBcHBs
ZVN5c3RlbVRpdGxlMzoKICAgICAgICAgcmV0dXJuIHRpdGxlM0ZvbnQ7Ci0jZW5kaWYKICAgICBj
YXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1TdWJoZWFkbGluZToKICAgICAgICAgcmV0dXJuIHN1Ymhl
YWRsaW5lRm9udDsKICAgICBjYXNlIENTU1ZhbHVlQXBwbGVTeXN0ZW1Gb290bm90ZToKQEAgLTEx
NzEsNyArMTE2Nyw2IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnVwZGF0ZUNhY2hlZFN5c3RlbUYK
ICAgICAgICAgdGV4dFN0eWxlID0ga0NUVUlGb250VGV4dFN0eWxlQm9keTsKICAgICAgICAgZm9u
dERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udERlc2NyaXB0b3JDcmVhdGVXaXRoVGV4dFN0eWxl
KHRleHRTdHlsZSwgY29udGVudFNpemVDYXRlZ29yeSgpLCAwKSk7CiAgICAgICAgIGJyZWFrOwot
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwCiAgICAgY2FzZSBD
U1NWYWx1ZUFwcGxlU3lzdGVtVGl0bGUxOgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRU
ZXh0U3R5bGVUaXRsZTE7CiAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRE
ZXNjcmlwdG9yQ3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdv
cnkoKSwgMCkpOwpAQCAtMTE4NCw3ICsxMTc5LDYgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6dXBk
YXRlQ2FjaGVkU3lzdGVtRgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVU
aXRsZTM7CiAgICAgICAgIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9y
Q3JlYXRlV2l0aFRleHRTdHlsZSh0ZXh0U3R5bGUsIGNvbnRlbnRTaXplQ2F0ZWdvcnkoKSwgMCkp
OwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgQ1NTVmFsdWVBcHBsZVN5c3RlbVN1
YmhlYWRsaW5lOgogICAgICAgICB0ZXh0U3R5bGUgPSBrQ1RVSUZvbnRUZXh0U3R5bGVTdWJoZWFk
OwogICAgICAgICBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNyZWF0
ZVdpdGhUZXh0U3R5bGUodGV4dFN0eWxlLCBjb250ZW50U2l6ZUNhdGVnb3J5KCksIDApKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAJKHJl
dmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJz
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwNiw3ICsxMTA2LDcgQEAgdm9pZCBTVkdUb09U
RkZvbnRDb252ZXJ0ZXI6OmFwcGVuZEtFUk5UYQogICAgIHNpemVfdCBzaXplT2ZWZXJ0aWNhbFN1
YnRhYmxlID0gYXBwZW5kS0VSTlN1YnRhYmxlPFNWR1ZLZXJuRWxlbWVudD4oJlNWR1ZLZXJuRWxl
bWVudDo6YnVpbGRWZXJ0aWNhbEtlcm5pbmdQYWlyLCAwKTsKICAgICBBU1NFUlRfVU5VU0VEKHNp
emVPZlZlcnRpY2FsU3VidGFibGUsIHN1YnRhYmxlc09mZnNldCArIHNpemVPZkhvcml6b250YWxT
dWJ0YWJsZSArIHNpemVPZlZlcnRpY2FsU3VidGFibGUgPT0gbV9yZXN1bHQuc2l6ZSgpKTsKIAot
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0g
MTAxMDAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA8PSA4MDAwMCkKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05f
TUlOX1JFUVVJUkVEIDw9IDEwMTAwMCkKICAgICAvLyBXb3JrIGFyb3VuZCBhIGJ1ZyBpbiBBcHBs
ZSdzIGZvbnQgcGFyc2VyIGJ5IGFkZGluZyBzb21lIHBhZGRpbmcgYnl0ZXMuIDxyZGFyOi8vcHJv
YmxlbS8xODQwMTkwMT4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IDY7ICsraSkKICAgICAgICAg
bV9yZXN1bHQuYXBwZW5kKDApOwpAQCAtMTQwNCw3ICsxNDA0LDcgQEAgU1ZHVG9PVEZGb250Q29u
dmVydGVyOjpTVkdUb09URkZvbnRDb252ZQogICAgICAgICAgICAgcHJvY2Vzc0dseXBoRWxlbWVu
dChnbHlwaEVsZW1lbnQsICZnbHlwaEVsZW1lbnQsIGRlZmF1bHRIb3Jpem9udGFsQWR2YW5jZSwg
ZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgdW5pY29kZUF0dHJpYnV0ZSwgaW5pdGlhbEdseXBoKTsK
ICAgICB9CiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDw9IDEwMTAwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPD0gODAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDEwMDApCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVt
LzIwMDg2MjIzPiBDb2NvYSBoYXMgYSBidWcgd2hlcmUgZ2x5cGggYm91bmRpbmcgYm94ZXMgYXJl
IG5vdCBjb3JyZWN0bHkgcmVzcGVjdGVkIGZvciBmcnVzdHVtIGN1bGxpbmcuIFdvcmsgYXJvdW5k
IHRoaXMgYnkKICAgICAvLyBpbmZsYXRpbmcgdGhlIGZvbnQncyBib3VuZGluZyBib3gKICAgICBt
X2JvdW5kaW5nQm94LmV4dGVuZChGbG9hdFBvaW50KDAsIDApKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDY3IEBACisyMDE1LTEwLTEwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBs
ZS5jb20+CisKKyAgICAgICAgW2lPU10gUmVtb3ZlIHVubmVjZXNzYXJ5IGlPUyB2ZXJzaW9uIGNo
ZWNrcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
MDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tOgorICAgICAg
ICAoSVBDOjpBY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRlZE5vdGlmaWNhdGlvbik6CisgICAg
ICAgICogUGxhdGZvcm0vc3BpL2lvcy9TYWZhcmlTZXJ2aWNlc1NQSS5oOgorICAgICAgICAqIFBs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAq
IFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hQb2ludDo6V2ViS2l0MlBsYXRmb3JtVG91Y2hQ
b2ludCk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50OjpleHRyYWN0V2ViVG91Y2hQb2ludCk6CisgICAgICAg
IChXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQpOgorICAg
ICAgICAqIFNoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGxhdGZvcm1Ub3VjaFBvaW50OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbWF5QXV0b21hdGlj
YWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKHNob3VsZEFsbG93UGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2spOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBz
aG90UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRp
YWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJl
Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKC1bV0tTd2lwZVRyYW5zaXRpb25Db250cm9sbGVy
IGdlc3R1cmVSZWNvZ25pemVyRm9ySW50ZXJhY3RpdmVUcmFuc2l0aW9uOldpdGhUYXJnZXQ6YWN0
aW9uOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfZW5zdXJlRm9ybUFjY2Vzc29yeVZpZXddKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyB3ZWJTZWxlY3Rpb25Bc3Npc3RhbnRdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBzZWxlY3Rpb25JbnRlcmFjdGlvbkFzc2lzdGFudF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbToKKyAgICAgICAgKHBo
b3RvTGlicmFyeUljb24pOgorICAgICAgICAoY2FtZXJhSWNvbik6CisgICAgICAgIChmYWxsYmFj
a0ljb25Gb3JGaWxlKToKKyAgICAgICAgKGljb25Gb3JJbWFnZUZpbGUpOgorICAgICAgICAqIFdl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06Cisg
ICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzaExheWVy
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgor
CiAyMDE1LTEwLTA5ICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBS
dWJiZXItc3RhbXBlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2Eu
bW0JKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTgogI2VuZGlmCiAgICAg
bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKIAot
I2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTEwMCkKKyNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQogICAgIF9DRk5ldHdvcmtT
ZXRBVFNDb250ZXh0KHBhcmFtZXRlcnMubmV0d29ya0FUU0NvbnRleHQuZ2V0KCkpOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rp
b25NYWMubW0JKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQ
Qy9tYWMvQ29ubmVjdGlvbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjEzLDcgKzYxMyw3IEBA
IHN0YXRpYyB2b2lkIEFjY2Vzc2liaWxpdHlQcm9jZXNzU3VzcGVuZGUKIHsKICNpZiBQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAgICAg
X0FYVUlFbGVtZW50Tm90aWZ5UHJvY2Vzc1N1c3BlbmRTdGF0dXMoc3VzcGVuZGVkID8gQVhTdXNw
ZW5kU3RhdHVzU3VzcGVuZGVkIDogQVhTdXNwZW5kU3RhdHVzUnVubmluZyk7Ci0jZWxpZiBQTEFU
Rk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwCisj
ZWxpZiBQTEFURk9STShJT1MpCiAgICAgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbihr
QVhQaWRTdGF0dXNDaGFuZ2VkTm90aWZpY2F0aW9uLCBAeyBAInBpZCIgOiBAKGdldHBpZCgpKSwg
QCJzdXNwZW5kZWQiIDogQChzdXNwZW5kZWQpIH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
c3VzcGVuZGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvU2FmYXJp
U2VydmljZXNTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkv
aW9zL1NhZmFyaVNlcnZpY2VzU1BJLmgJKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL3NwaS9pb3MvU2FmYXJpU2VydmljZXNTUEkuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZiBIQVZFKFNBRkFSSV9TRVJWSUNFU19GUkFNRVdPUkspICYmIF9fSVBIT05FX09TX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwCisjaWYgSEFWRShTQUZBUklfU0VSVklDRVNfRlJB
TUVXT1JLKQogCiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDxTYWZh
cmlTZXJ2aWNlcy9TRlNhZmFyaVZpZXdDb250cm9sbGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5NSw5ICs1OTUsNyBAQCB0eXBlZGVmIGVudW0gewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
YXNzaWduLCBnZXR0ZXI9aXNOZXh0RW5hYmxlZCkgQk9PTCBuZXh0RW5hYmxlZDsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24sIGdldHRlcj1pc1ByZXZpb3VzRW5hYmxlZCkgQk9PTCBwcmV2
aW91c0VuYWJsZWQ7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAw
MDAKIC0gKGlkKWluaXRXaXRoSW5wdXRBc3Npc3RhbnRJdGVtOihVSVRleHRJbnB1dEFzc2lzdGFu
dEl0ZW0gKilpbnB1dEFzc2lzdGFudEl0ZW07Ci0jZW5kaWYKIEBlbmQKIAogQHByb3RvY29sIFVJ
V2ViRm9ybUFjY2Vzc29yeURlbGVnYXRlCkBAIC02NDMsOSArNjQxLDcgQEAgc3RydWN0IF9VSVdl
YlRvdWNoRXZlbnQgewogICAgIHN0cnVjdCBfVUlXZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50czsK
ICAgICB1bnNpZ25lZCB0b3VjaFBvaW50Q291bnQ7CiAKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSA5MDAwMAogICAgIGJvb2wgaXNQb3RlbnRpYWxUYXA7Ci0jZW5kaWYK
IH07CiAKIEBwcm90b2NvbCBVSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXJEZWxlZ2F0
ZQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5jcHAJ
KHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudENvbnZl
cnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcgQEAgY2xhc3MgV2ViS2l0
MlBsYXRmb3JtVG91Y2hQb2ludCA6IHB1YmxpYwogcHVibGljOgogV2ViS2l0MlBsYXRmb3JtVG91
Y2hQb2ludChjb25zdCBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQmIHdlYlRvdWNoUG9pbnQpCiAgICAg
OiBQbGF0Zm9ybVRvdWNoUG9pbnQod2ViVG91Y2hQb2ludC5pZGVudGlmaWVyKCksIHdlYlRvdWNo
UG9pbnQubG9jYXRpb24oKSwgdG91Y2hFdmVudFR5cGUod2ViVG91Y2hQb2ludCkKLSNpZiBFTkFC
TEUoSU9TX1RPVUNIX0VWRU5UUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gOTAwMDAKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICAsIHdlYlRvdWNoUG9p
bnQuZm9yY2UoKQogI2VuZGlmCiAgICAgKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTkw
ODMyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgcGx1Z2luTG9hZENsaWVu
dFBvbGljaWVzOwogI2VuZGlmCiAKLSNpZiAoVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApCisjaWYgVEFSR0VUX09TX0lQ
SE9ORSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTEwMCkKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCBuZXR3b3JrQVRTQ29udGV4dC5n
ZXQoKSk7CiAjZW5kaWYKIH0KQEAgLTMxOCw3ICszMTgsNyBAQCBib29sIFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0j
aWYgKFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gOTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMTAwKQorI2lmIFRBUkdFVF9PU19JUEhPTkUgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApCiAgICAgaWYgKCFJ
UEM6OmRlY29kZShkZWNvZGVyLCBwYXJhbWV0ZXJzLm5ldHdvcmtBVFNDb250ZXh0KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE5MDgzMikK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8U3RyaW5nLCBIYXNo
TWFwPFN0cmluZywgdWludDhfdD4+PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXM7CiAjZW5kaWYK
IAotI2lmIChUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTEwMCkKKyNpZiBUQVJHRVRfT1NfSVBIT05FIHx8IChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQogICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IG5ldHdvcmtBVFNDb250ZXh0OwogI2VuZGlmCiB9OwpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTkwODMyKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IG5zVVJMQ2FjaGVEaXNr
Q2FwYWNpdHk7CiAgICAgZW5jb2RlciA8PCBodHRwUHJveHk7CiAgICAgZW5jb2RlciA8PCBodHRw
c1Byb3h5OwotI2lmIChUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKyNpZiBUQVJHRVRfT1NfSVBIT05FIHx8IChQTEFU
Rk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQog
ICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIG5ldHdvcmtBVFNDb250ZXh0LmdldCgpKTsKICNlbmRp
ZgogI2VuZGlmCkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuaHR0cHNQcm94eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiAoVEFS
R0VUX09TX0lQSE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAw
MCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDExMDApCisjaWYgVEFSR0VUX09TX0lQSE9ORSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKICAgICBpZiAoIUlQQzo6ZGVj
b2RlKGRlY29kZXIsIHJlc3VsdC5uZXR3b3JrQVRTQ29udGV4dCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZp
c2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBA
IHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyAKIAogICAgIFN0cmluZyBo
dHRwUHJveHk7CiAgICAgU3RyaW5nIGh0dHBzUHJveHk7Ci0jaWYgKFRBUkdFVF9PU19JUEhPTkUg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDApIHx8IChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQorI2lm
IFRBUkdFVF9PU19JUEhPTkUgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDExMDApCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbmV0d29y
a0FUU0NvbnRleHQ7CiAjZW5kaWYKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAJKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZW4KICAgICBlbmNvZGVyIDw8IHRlcm1pbmF0aW9uVGltZW91dDsKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBlbmNvZGVyIDw8IGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0OwotI2lmIChUQVJH
RVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAw
KSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTEwMCkKKyNpZiBUQVJHRVRfT1NfSVBIT05FIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQogICAgIElQQzo6ZW5jb2RlKGVu
Y29kZXIsIG5ldHdvcmtBVFNDb250ZXh0LmdldCgpKTsKICNlbmRpZgogI2VuZGlmCkBAIC02Niw3
ICs2Niw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGUKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nUG9ydCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiAoVEFSR0VUX09T
X0lQSE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkgfHwg
KFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEx
MDApCisjaWYgVEFSR0VUX09TX0lQSE9ORSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRl
Y29kZXIsIHJlc3VsdC5uZXR3b3JrQVRTQ29udGV4dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTkw
ODMyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQ7Ci0j
aWYgKFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gOTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMTAwKQorI2lmIFRBUkdFVF9PU19JUEhPTkUgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApCiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gbmV0d29ya0FUU0NvbnRleHQ7CiAjZW5kaWYKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9OYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvTmF0aXZlV2ViVG91Y2hFdmVudElP
Uy5tbQkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9OYXRp
dmVXZWJUb3VjaEV2ZW50SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIFZl
Y3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+IE5hdGl2ZVdlYlQKICAgICAgICAgV2ViQ29yZTo6
SW50UG9pbnQgbG9jYXRpb24gPSBwb3NpdGlvbkZvckNHUG9pbnQodG91Y2hQb2ludC5sb2NhdGlv
bkluRG9jdW1lbnRDb29yZGluYXRlcyk7CiAgICAgICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hQb2ludFN0YXRlIHBoYXNlID0gY29udmVydFRvdWNoUGhhc2UodG91Y2hQb2ludC5waGFz
ZSk7CiAgICAgICAgIFdlYlBsYXRmb3JtVG91Y2hQb2ludCBwbGF0Zm9ybVRvdWNoUG9pbnQgPSBX
ZWJQbGF0Zm9ybVRvdWNoUG9pbnQoaWRlbnRpZmllciwgbG9jYXRpb24sIHBoYXNlKTsKLSNpZiBF
TkFCTEUoSU9TX1RPVUNIX0VWRU5UUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gOTAwMDAKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICAgICAgcGxhdGZv
cm1Ub3VjaFBvaW50LnNldEZvcmNlKHRvdWNoUG9pbnQuZm9yY2UpOwogI2VuZGlmCiAgICAgICAg
IHRvdWNoUG9pbnRMaXN0LnVuY2hlY2tlZEFwcGVuZChwbGF0Zm9ybVRvdWNoUG9pbnQpOwpAQCAt
MTAyLDcgKzEwMiw3IEBAIE5hdGl2ZVdlYlRvdWNoRXZlbnQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQK
ICAgICAgICAgZXZlbnQtPnRpbWVzdGFtcCwKICAgICAgICAgZXh0cmFjdFdlYlRvdWNoUG9pbnQo
ZXZlbnQpLAogICAgICAgICBwb3NpdGlvbkZvckNHUG9pbnQoZXZlbnQtPmxvY2F0aW9uSW5Eb2N1
bWVudENvb3JkaW5hdGVzKSwKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSA5MDAwMCAmJiBkZWZpbmVkIFVJX1dFQl9UT1VDSF9FVkVOVF9IQVNfSVNfUE9URU5USUFMX1RB
UCAmJiBVSV9XRUJfVE9VQ0hfRVZFTlRfSEFTX0lTX1BPVEVOVElBTF9UQVAKKyNpZiBkZWZpbmVk
IFVJX1dFQl9UT1VDSF9FVkVOVF9IQVNfSVNfUE9URU5USUFMX1RBUCAmJiBVSV9XRUJfVE9VQ0hf
RVZFTlRfSEFTX0lTX1BPVEVOVElBTF9UQVAKICAgICAgICAgZXZlbnQtPmlzUG90ZW50aWFsVGFw
LAogI2Vsc2UKICAgICAgICAgdHJ1ZSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3Mv
V2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvaW9zL1dlYlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAJKHJldmlzaW9uIDE5MDgz
MikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9pb3MvV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9T
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCB2b2lkIFdlYlBsYXRmb3JtVG91
Y2hQb2ludDo6ZW5jb2RlKElQQzo6CiAgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CiAgICAg
ZW5jb2RlciA8PCBtX2xvY2F0aW9uOwogICAgIGVuY29kZXIgPDwgbV9waGFzZTsKLSNpZiBFTkFC
TEUoSU9TX1RPVUNIX0VWRU5UUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gOTAwMDAKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBlbmNvZGVyIDw8IG1f
Zm9yY2U7CiAjZW5kaWYKIH0KQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBXZWJQbGF0Zm9ybVRvdWNo
UG9pbnQ6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubV9waGFzZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBF
TkFCTEUoSU9TX1RPVUNIX0VWRU5UUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gOTAwMDAKKyNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5tX2ZvcmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1NSw3ICsyNTUsNyBAQCAtIChC
T09MKV9pc1Nob3dpbmdWaWRlb1BpY3R1cmVJblBpY3R1cmUKIAogLSAoQk9PTClfbWF5QXV0b21h
dGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1cmUKIHsKLSNpZiAoX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPD0gODAyMDApIHx8ICFIQVZFKEFWS0lUKQorI2lmICFIQVZFKEFW
S0lUKQogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgaWYgKCFfcGFnZSB8fCAhX3BhZ2Ut
PnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKSkKQEAgLTI2NywxMiArMjY3LDggQEAgLSAoQk9PTClf
bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cgogCiBzdGF0aWMgYm9vbCBzaG91bGRBbGxv
d1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrKCkKIHsKLSNpZiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMAogICAgIHN0YXRpYyBib29sIHNob3VsZEFsbG93UGlj
dHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2sgPSBpb3NFeGVjdXRhYmxlV2FzTGlua2VkT25PckFm
dGVyVmVyc2lvbih3a0lPU1N5c3RlbVZlcnNpb25fOV8wKTsKICAgICByZXR1cm4gc2hvdWxkQWxs
b3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjazsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCiB9CiAKICNlbmRpZgpAQCAtMjkzNywyMCArMjkzMywxMiBAQCAtICh2b2lkKV9z
bmFwc2hvdFJlY3Q6KENHUmVjdClyZWN0SW5WaWV3CiAKICNpZiBVU0UoSU9TVVJGQUNFKQogICAg
IC8vIElmIHdlIGFyZSBwYXJlbnRlZCBhbmQgdGh1cyB3b24ndCBpbmN1ciBhIHNpZ25pZmljYW50
IHBlbmFsdHkgZnJvbSBwYWdpbmcgaW4gdGlsZXMsIHNuYXBzaG90IHRoZSB2aWV3IGhpZXJhcmNo
eSBkaXJlY3RseS4KLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAw
MAogICAgIGlmIChDQURpc3BsYXkgKmRpc3BsYXkgPSBzZWxmLndpbmRvdy5zY3JlZW4uX2Rpc3Bs
YXkpIHsKLSNlbHNlCi0gICAgaWYgKHNlbGYud2luZG93KSB7Ci0jZW5kaWYKICAgICAgICAgYXV0
byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJ
bnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUpKSwgV2ViQ29yZTo6Q29sb3JTcGFj
ZURldmljZVJHQik7CiAgICAgICAgIENHRmxvYXQgaW1hZ2VTY2FsZUluVmlld0Nvb3JkaW5hdGVz
ID0gaW1hZ2VXaWR0aCAvIHJlY3RJblZpZXdDb29yZGluYXRlcy5zaXplLndpZHRoOwogICAgICAg
ICBDQVRyYW5zZm9ybTNEIHRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlU2NhbGUoaW1hZ2VT
Y2FsZUluVmlld0Nvb3JkaW5hdGVzLCBpbWFnZVNjYWxlSW5WaWV3Q29vcmRpbmF0ZXMsIDEpOwog
ICAgICAgICB0cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNEVHJhbnNsYXRlKHRyYW5zZm9ybSwgLXJl
Y3RJblZpZXdDb29yZGluYXRlcy5vcmlnaW4ueCwgLXJlY3RJblZpZXdDb29yZGluYXRlcy5vcmln
aW4ueSwgMCk7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDAK
ICAgICAgICAgQ0FSZW5kZXJTZXJ2ZXJSZW5kZXJEaXNwbGF5TGF5ZXJXaXRoVHJhbnNmb3JtQW5k
VGltZU9mZnNldChNQUNIX1BPUlRfTlVMTCwgKENGU3RyaW5nUmVmKWRpc3BsYXkubmFtZSwgc2Vs
Zi5sYXllci5jb250ZXh0LmNvbnRleHRJZCwgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oc2Vs
Zi5sYXllciksIHN1cmZhY2UtPnN1cmZhY2UoKSwgMCwgMCwgJnRyYW5zZm9ybSwgMCk7Ci0jZWxz
ZQotICAgICAgICBDQVJlbmRlclNlcnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShNQUNIX1BP
UlRfTlVMTCwgc2VsZi5sYXllci5jb250ZXh0LmNvbnRleHRJZCwgcmVpbnRlcnByZXRfY2FzdDx1
aW50NjRfdD4oc2VsZi5sYXllciksIHN1cmZhY2UtPnN1cmZhY2UoKSwgMCwgMCwgJnRyYW5zZm9y
bSk7IAotI2VuZGlmCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN1cmZhY2UtPmNyZWF0ZUlt
YWdlKCkuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJl
dmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogICAgICAgICAgICAgWyhOU0RhdGEg
KilkYXRhIHJlbGVhc2VdOwogICAgICAgICB9LCBkYXRhLmxlYWtSZWYoKSk7CiAgICAgfQotI2lm
IChUQVJHRVRfT1NfSVBIT05FICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDkwMDAwKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTEwMCkKKyNpZiBUQVJHRVRfT1NfSVBIT05FIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQogICAgIHBhcmFtZXRl
cnMubmV0d29ya0FUU0NvbnRleHQgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5QVRTQ29udGV4dCgp
KTsKICNlbmRpZgogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplTgogCiAgICAgcGFyYW1ldGVycy5odHRwUHJveHkgPSBbZGVmYXVsdHMg
c3RyaW5nRm9yS2V5OldlYktpdDJIVFRQUHJveHlEZWZhdWx0c0tleV07CiAgICAgcGFyYW1ldGVy
cy5odHRwc1Byb3h5ID0gW2RlZmF1bHRzIHN0cmluZ0ZvcktleTpXZWJLaXQySFRUUFNQcm94eURl
ZmF1bHRzS2V5XTsKLSNpZiAoVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSA5MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApCisjaWYgVEFSR0VUX09TX0lQSE9ORSB8fCAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEw
MCkKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtBVFNDb250ZXh0ID0gYWRvcHRDRihfQ0ZOZXR3b3Jr
Q29weUFUU0NvbnRleHQoKSk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFj
Lm1tCShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyAr
MTY5LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbAogI2lmIEhB
VkUoSE9TVEVEX0NPUkVfQU5JTUFUSU9OKQogICAgIHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1BvcnQgPSBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUoW0NBUmVtb3RlTGF5ZXJTZXJ2ZXIg
c2hhcmVkU2VydmVyXS5zZXJ2ZXJQb3J0KTsKICNlbmRpZgotI2lmIChUQVJHRVRfT1NfSVBIT05F
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwKSB8fCAoUExBVEZP
Uk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKKyNp
ZiBUQVJHRVRfT1NfSVBIT05FIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwKQogICAgIHBhcmFtZXRlcnMubmV0d29ya0FUU0NvbnRl
eHQgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5QVRTQ29udGV4dCgpKTsKICNlbmRpZgogfQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJJT1MubW0JKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTYsMTEgKzExNiw3IEBAIC0gKFVJUGFuR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVj
b2cKIHsKICAgICBVSVNjcmVlbkVkZ2VQYW5HZXN0dXJlUmVjb2duaXplciAqcmVjb2duaXplciA9
IFtbVUlTY3JlZW5FZGdlUGFuR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0
OnRhcmdldCBhY3Rpb246YWN0aW9uXTsKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDkwMDAwCiAgICAgYm9vbCBpc0xUUiA9IFtVSVZpZXcgdXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbkZvclNlbWFudGljQ29udGVudEF0dHJpYnV0ZTpbX2dlc3R1cmVSZWNvZ25p
emVyVmlldy5nZXQoKSBzZW1hbnRpY0NvbnRlbnRBdHRyaWJ1dGVdXSA9PSBVSVVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodDsKLSNlbHNlCi0gICAgYm9vbCBpc0xUUiA9IHRy
dWU7Ci0jZW5kaWYKIAogICAgIHN3aXRjaCAoW3NlbGYgZGlyZWN0aW9uRm9yVHJhbnNpdGlvbjp0
cmFuc2l0aW9uXSkgewogICAgIGNhc2UgV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlN3
aXBlRGlyZWN0aW9uOjpCYWNrOgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDE5MDgz
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNyArMjE1LDYgQEAgQGludGVyZmFjZSBVSVZp
ZXcgKFVJVmlld0ludGVybmFsSGFjaykKICsgKEJPT0wpX2FkZENvbXBsZXRpb246KHZvaWQoXiko
Qk9PTCkpY29tcGxldGlvbjsKIEBlbmQKIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDkwMDAwCiBAcHJvdG9jb2wgVUlTZWxlY3Rpb25JbnRlcmFjdGlvbkFzc2lzdGFu
dDsKICNpZiBIQVZFKExJTktfUFJFVklFVykKIEBpbnRlcmZhY2UgVUlQcmV2aWV3SXRlbUNvbnRy
b2xsZXIgKFN0YWdpbmdUb1JlbW92ZSkKQEAgLTIyMyw4ICsyMjIsNiBAQCBAaW50ZXJmYWNlIFVJ
UHJldmlld0l0ZW1Db250cm9sbGVyIChTdGFnCiBAZW5kCiAjZW5kaWYKIAotI2VuZGlmCi0KIEBp
bnRlcmZhY2UgV0tGb3JtSW5wdXRTZXNzaW9uIDogTlNPYmplY3QgPF9XS0Zvcm1JbnB1dFNlc3Np
b24+CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRlbnRWaWV3OihXS0NvbnRlbnRWaWV3
ICopdmlldyB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9iamVj
dDsKQEAgLTM0Miw5ICszMzksNyBAQCAtICh2b2lkKXNldHVwSW50ZXJhY3Rpb24KICAgICBfbG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlMb25nUHJlc3NHZXN0dXJlUmVj
b2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9sb25n
UHJlc3NSZWNvZ25pemVkOildKTsKICAgICBbX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyIHNl
dERlbGF5OnRhcEFuZEhvbGREZWxheV07CiAgICAgW19sb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpzZWxmXTsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSA5MDAwMAogICAgIFtfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgX3NldFJlcXVpcmVz
UXVpZXRJbXB1bHNlOllFU107Ci0jZW5kaWYKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXpl
cjpfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCiAjaWYgSEFWRShMSU5LX1BS
RVZJRVcpCkBAIC0xMjcxLDExICsxMjY2LDcgQEAgLSAodm9pZClfZW5zdXJlRm9ybUFjY2Vzc29y
eVZpZXcKICAgICBpZiAoX2Zvcm1BY2Nlc3NvcnlWaWV3KQogICAgICAgICByZXR1cm47CiAKLSNp
ZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMAogICAgIF9mb3JtQWNj
ZXNzb3J5VmlldyA9IGFkb3B0TlMoW1tVSVdlYkZvcm1BY2Nlc3NvcnkgYWxsb2NdIGluaXRXaXRo
SW5wdXRBc3Npc3RhbnRJdGVtOnNlbGYuaW5wdXRBc3Npc3RhbnRJdGVtXSk7Ci0jZWxzZQotICAg
IF9mb3JtQWNjZXNzb3J5VmlldyA9IGFkb3B0TlMoW1tVSVdlYkZvcm1BY2Nlc3NvcnkgYWxsb2Nd
IGluaXRdKTsKLSNlbmRpZgogICAgIFtfZm9ybUFjY2Vzc29yeVZpZXcgc2V0RGVsZWdhdGU6c2Vs
Zl07CiB9CiAKQEAgLTI1NjMsMTQgKzI1NTQsMTIgQEAgLSAoVUlXZWJTZWxlY3Rpb25Bc3Npc3Rh
bnQgKil3ZWJTZWxlY3RpbwogICAgIHJldHVybiBfd2ViU2VsZWN0aW9uQXNzaXN0YW50LmdldCgp
OwogfQogCi0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDAKIC0g
KGlkPFVJU2VsZWN0aW9uSW50ZXJhY3Rpb25Bc3Npc3RhbnQ+KXNlbGVjdGlvbkludGVyYWN0aW9u
QXNzaXN0YW50CiB7CiAgICAgaWYgKFtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IGNvbmZvcm1zVG9Q
cm90b2NvbDpAcHJvdG9jb2woVUlTZWxlY3Rpb25JbnRlcmFjdGlvbkFzc2lzdGFudCldKQogICAg
ICAgICByZXR1cm4gKGlkPFVJU2VsZWN0aW9uSW50ZXJhY3Rpb25Bc3Npc3RhbnQ+KV93ZWJTZWxl
Y3Rpb25Bc3Npc3RhbnQuZ2V0KCk7CiAgICAgcmV0dXJuIG5pbDsKIH0KLSNlbmRpZgogCiAvLyBO
U1JhbmdlIHN1cHBvcnQuICBXb3VsZCBsaWtlIHRvIGRlcHJlY2F0ZSB0byB0aGUgZXh0ZW50IHBv
c3NpYmxlLCBhbHRob3VnaCBzb21lIHN1cHBvcnQKIC8vIChpLmUuIHNlbGVjdGlvblJhbmdlKSBo
YXMgc2hpcHBlZCBhcyBBUEkuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQkocmV2
aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0jaWYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCA5MDAwMCB8fCAhSEFWRShBVktJVCkKKyNp
ZiAhSEFWRShBVktJVCkKIAogUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4g
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpjcmVhdGUoV2ViUGFnZVByb3h5JikKIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFu
ZWwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0ZpbGVVcGxvYWRQYW5lbC5tbQkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzEsNyArNzEsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoUGhvdG9zLCBQSEltYWdlUmVxdWVz
CiBzdGF0aWMgaW5saW5lIFVJSW1hZ2UgKnBob3RvTGlicmFyeUljb24oKQogewogICAgIC8vIEZJ
WE1FOiBSZW1vdmUgd2hlbiBhIG5ldyBTREsgaXMgYXZhaWxhYmxlLiA8cmRhcjovL3Byb2JsZW0v
MjAxNTAwNzI+Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDAg
JiYgZGVmaW5lZChIQVZFX1dFQktJVF9ET0NfUElDS0VSX0lDT05TKQorI2lmIGRlZmluZWQoSEFW
RV9XRUJLSVRfRE9DX1BJQ0tFUl9JQ09OUykKICAgICByZXR1cm4gX1VJSW1hZ2VHZXRXZWJLaXRQ
aG90b0xpYnJhcnlJY29uKCk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CkBAIC04MSw3ICs4MSw3
IEBAIHN0YXRpYyBpbmxpbmUgVUlJbWFnZSAqcGhvdG9MaWJyYXJ5SWNvbigKIHN0YXRpYyBpbmxp
bmUgVUlJbWFnZSAqY2FtZXJhSWNvbigpCiB7CiAgICAgLy8gRklYTUU6IFJlbW92ZSB3aGVuIGEg
bmV3IFNESyBpcyBhdmFpbGFibGUuIDxyZGFyOi8vcHJvYmxlbS8yMDE1MDA3Mj4KLSNpZiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCAmJiBkZWZpbmVkKEhBVkVfV0VC
S0lUX0RPQ19QSUNLRVJfSUNPTlMpCisjaWYgZGVmaW5lZChIQVZFX1dFQktJVF9ET0NfUElDS0VS
X0lDT05TKQogICAgIHJldHVybiBfVUlJbWFnZUdldFdlYktpdFRha2VQaG90b09yVmlkZW9JY29u
KCk7CiAjZWxzZQogICAgIHJldHVybiBuaWw7CkBAIC0xMzksMTEgKzEzOSw3IEBAIHN0YXRpYyBV
SUltYWdlKiBmYWxsYmFja0ljb25Gb3JGaWxlKE5TVVIKICAgICBBU1NFUlRfQVJHKGZpbGUsIFtm
aWxlIGlzRmlsZVVSTF0pOwogCiAgICAgVUlEb2N1bWVudEludGVyYWN0aW9uQ29udHJvbGxlciAq
aW50ZXJhY3Rpb25Db250cm9sbGVyID0gW1VJRG9jdW1lbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIg
aW50ZXJhY3Rpb25Db250cm9sbGVyV2l0aFVSTDpmaWxlXTsKLSNpZiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDkwMDAwCi0gICAgcmV0dXJuIHRodW1ibmFpbFNpemVkSW1hZ2VG
b3JJbWFnZSgoKFVJSW1hZ2UgKilpbnRlcmFjdGlvbkNvbnRyb2xsZXIuaWNvbnNbMF0pLkNHSW1h
Z2UpOwotI2Vsc2UKICAgICByZXR1cm4gdGh1bWJuYWlsU2l6ZWRJbWFnZUZvckltYWdlKGludGVy
YWN0aW9uQ29udHJvbGxlci5pY29uc1swXS5DR0ltYWdlKTsKLSNlbmRpZgogfQogCiBzdGF0aWMg
VUlJbWFnZSogaWNvbkZvckltYWdlRmlsZShOU1VSTCAqZmlsZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5
MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzE0LDggKzMxNCw4IEBACiAJCTFBODFCMzgwMThCRDY2QUQw
MDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MUIzN0UxOEJENjZBRDAwMDdGREFDIC8qIF9XS1Zp
c2l0ZWRMaW5rU3RvcmUubW0gKi87IH07CiAJCTFBODFCMzgxMThCRDY2QUQwMDA3RkRBQyAvKiBf
V0tWaXNpdGVkTGlua1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTgxQjM3RjE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlzaXRlZExpbmtTdG9y
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFB
ODFCMzg1MThCRDY3M0EwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODFCMzg0MThC
RDY3M0EwMDA3RkRBQyAvKiBfV0tWaXNpdGVkTGlua1N0b3JlSW50ZXJuYWwuaCAqLzsgfTsKLQkJ
MUE4QjY2QjAxQkM0M0M4NjAwODJERjc3IC8qIFBhZ2VMb2FkU3RhdGVPYnNlcnZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4QjY2QUUxQkM0M0M4
NjAwODJERjc3IC8qIFBhZ2VMb2FkU3RhdGVPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBU1NF
VF9UQUdTID0gKCk7IH07IH07Ci0JCTFBOEI2NkIzMUJDNDVCMDEwMDgyREY3NyAvKiBXS0J1bmRs
ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
OEI2NkIxMUJDNDVCMDEwMDgyREY3NyAvKiBXS0J1bmRsZU1hYy5tbSAqLzsgc2V0dGluZ3MgPSB7
QVNTRVRfVEFHUyA9ICgpOyB9OyB9OworCQkxQThCNjZCMDFCQzQzQzg2MDA4MkRGNzcgLyogUGFn
ZUxvYWRTdGF0ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQThCNjZBRTFCQzQzQzg2MDA4MkRGNzcgLyogUGFnZUxvYWRTdGF0ZU9ic2Vy
dmVyLmggKi87IH07CisJCTFBOEI2NkIzMUJDNDVCMDEwMDgyREY3NyAvKiBXS0J1bmRsZU1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEI2NkIx
MUJDNDVCMDEwMDgyREY3NyAvKiBXS0J1bmRsZU1hYy5tbSAqLzsgfTsKIAkJMUE4QjY2QjQxQkM0
NUIwMTAwODJERjc3IC8qIFdLQnVuZGxlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQThCNjZCMjFCQzQ1QjAxMDA4MkRGNzcgLyogV0tCdW5kbGVN
YWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
QThDNzI4QzE3Mzg0NzdDMDAwQTY1NTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOEM3MjhB
MTczODQ3N0MwMDBBNjU1NCAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwICovOyB9
OwogCQkxQThDNzI4RDE3Mzg0NzdDMDAwQTY1NTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThD
NzI4QjE3Mzg0NzdDMDAwQTY1NTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmggKi87
IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHJldmlzaW9u
IDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1Nyw3ICszNTcsNyBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExhCiAgICAgRmxvYXRSZWN0
IHZpc2libGVSZWN0KEZsb2F0UG9pbnQoKSwgbV92aWV3U2l6ZSk7CiAgICAgdmlzaWJsZVJlY3Qu
aW50ZXJzZWN0KG1fc2Nyb2xsZWRFeHBvc2VkUmVjdCk7CiAKLSNpZiAoVEFSR0VUX09TX0lQSE9O
RSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkgfHwgKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApCisj
aWYgVEFSR0VUX09TX0lQSE9ORSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTEwMCkKICAgICBSZWZQdHI8V2ViUGFnZT4gcmV0YWluZWRQ
YWdlID0gJm1fd2ViUGFnZTsKICAgICBbQ0FUcmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVyOlty
ZXRhaW5lZFBhZ2VdIHsKICAgICAgICAgaWYgKFBhZ2UqIGNvcmVQYWdlID0gcmV0YWluZWRQYWdl
LT5jb3JlUGFnZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0JKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQxOSw3ICs0MTksNyBAQCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpmbHVzCiAgICAgICAgIGlmIChtX3ZpZXdPdmVybGF5Um9vdExheWVyKQogICAgICAgICAgICAg
bV92aWV3T3ZlcmxheVJvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKHZpc2libGVSZWN0
LCBtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygpLT52aWV3cG9ydElzU3RhYmxlKCkpOwogCi0jaWYg
KFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
OTAwMDApIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMTAwKQorI2lmIFRBUkdFVF9PU19JUEhPTkUgfHwgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApCiAgICAgICAgIFJlZlB0
cjxXZWJQYWdlPiByZXRhaW5lZFBhZ2UgPSAmbV93ZWJQYWdlOwogICAgICAgICBbQ0FUcmFuc2Fj
dGlvbiBhZGRDb21taXRIYW5kbGVyOltyZXRhaW5lZFBhZ2VdIHsKICAgICAgICAgICAgIGlmIChQ
YWdlKiBjb3JlUGFnZSA9IHJldGFpbmVkUGFnZS0+Y29yZVBhZ2UoKSkgewpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJl
dmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsMTEgKzE2NywxMSBAQCB2b2lkIFdl
YlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAgICAgTWV0aG9kIG1ldGhvZFRvUGF0
Y2ggPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChbTlNBcHBsaWNhdGlvbiBjbGFzc10sIEBzZWxl
Y3RvcihhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCkpOwogICAgIG1ldGhvZF9zZXRJbXBs
ZW1lbnRhdGlvbihtZXRob2RUb1BhdGNoLCAoSU1QKU5TQXBwbGljYXRpb25BY2Nlc3NpYmlsaXR5
Rm9jdXNlZFVJRWxlbWVudCk7CiAjZW5kaWYKLSNpZiAoVEFSR0VUX09TX0lQSE9ORSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkgfHwgKFBMQVRGT1JNKE1BQykg
JiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDExMDApCisjaWYgVEFSR0VU
X09TX0lQSE9ORSB8fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTEwMCkKICAgICBfQ0ZOZXR3b3JrU2V0QVRTQ29udGV4dChwYXJhbWV0ZXJz
Lm5ldHdvcmtBVFNDb250ZXh0LmdldCgpKTsKICNlbmRpZgogCi0jaWYgVEFSR0VUX09TX0lQSE9O
RSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMAorI2lmIFRBUkdF
VF9PU19JUEhPTkUKICAgICAvLyBQcmlvcml0eSBkZWNheSBvbiBpT1MgOSBpcyBpbXBhY3Rpbmcg
cGFnZSBsb2FkIHRpbWUgc28gd2UgZml4IHRoZSBwcmlvcml0eSBvZiB0aGUgV2ViUHJvY2Vzcycg
bWFpbiB0aHJlYWQgKHJkYXI6Ly9wcm9ibGVtLzIyMDAzMTEyKS4KICAgICBwdGhyZWFkX3NldF9m
aXhlZHByaW9yaXR5X3NlbGYoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMTkwODMyKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMTAtMTAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KKworICAgICAgICBbaU9TXSBSZW1vdmUgdW5uZWNlc3NhcnkgaU9TIHZlcnNpb24gY2hl
Y2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAw
MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBs
dWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5oOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2lu
Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViUGx1Z2luQ29udHJvbGxlciBwbHVnSW5WaWV3
V2l0aEFyZ3VtZW50czpmcm9tUGx1Z2luUGFja2FnZTpdKToKKyAgICAgICAgKCtbV2ViUGx1Z2lu
Q29udHJvbGxlciBhZGRQbHVnSW5WaWV3Ol0pOgorICAgICAgICAoK1tXZWJQbHVnaW5Db250cm9s
bGVyIHBsdWdJblZpZXdXaXRoQXJndW1lbnRzOmZyb21QbHVnaW5QYWNrYWdlOl0pOiBEZWxldGVk
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAocGx1Z2luVmlldyk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToK
KyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgaXNETlNQcmVmZXRjaGluZ0VuYWJsZWRdKToKKyAg
ICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0V2ViSW5zcGVjdG9yU2VydmVyRW5hYmxlZDpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldEFsbG93Q29tcG9zaXRpbmdM
YXllclZpc3VhbERlZ3JhZGF0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjayk6CisKIDIwMTUt
MTAtMDYgIERhbmllbCBCYXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJs
ZSBYU0xUIHdoZW4gYnVpbGRpbmcgV2ViS2l0IGZvciBpT1MgdXNpbmcgdGhlIHB1YmxpYyBpT1Mg
U0RLCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRy
b2xsZXIuaAkocmV2aXNpb24gMTkwODMyKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJQbHVnaW5Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDExICs0Nyw3IEBAIEBp
bnRlcmZhY2UgV2ViUGx1Z2luQ29udHJvbGxlciA6IE5TT2JqZWMKICAgICBOU011dGFibGVTZXQg
Kl9jaGVja3NJblByb2dyZXNzOwogfQogCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDgwMDAwCi0rIChpZClwbHVnSW5WaWV3V2l0aEFyZ3Vt
ZW50czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGZyb21QbHVnaW5QYWNrYWdlOihXZWJQbHVn
aW5QYWNrYWdlICopcGx1Z2luOwotI2Vsc2UKIC0gKE5TVmlldyAqKXBsdWdJblZpZXdXaXRoQXJn
dW1lbnRzOihOU0RpY3Rpb25hcnkgKilhcmd1bWVudHMgZnJvbVBsdWdpblBhY2thZ2U6KFdlYlBs
dWdpblBhY2thZ2UgKilwbHVnaW47Ci0jZW5kaWYKICsgKEJPT0wpaXNQbHVnSW5WaWV3OihOU1Zp
ZXcgKil2aWV3OwogCiAtIChpZClpbml0V2l0aERvY3VtZW50VmlldzooTlNWaWV3ICopdmlldzsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xs
ZXIubW0JKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
UGx1Z2luQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDIzICsxMTksNiBAQCBz
dGF0aWMgdm9pZCBpbml0aWFsaXplQXVkaW9TZXNzaW9uKCkKIAogQGltcGxlbWVudGF0aW9uIFdl
YlBsdWdpbkNvbnRyb2xsZXIKIAotI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCA4MDAwMAotKyAoaWQpcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6
KE5TRGljdGlvbmFyeSAqKWFyZ3VtZW50cyBmcm9tUGx1Z2luUGFja2FnZTooV2ViUGx1Z2luUGFj
a2FnZSAqKXBsdWdpblBhY2thZ2UKLXsKLSAgICBpbml0aWFsaXplQXVkaW9TZXNzaW9uKCk7Ci0g
ICAgW3BsdWdpblBhY2thZ2UgbG9hZF07Ci0gICAgQ2xhc3Mgdmlld0ZhY3RvcnkgPSBbcGx1Z2lu
UGFja2FnZSB2aWV3RmFjdG9yeV07Ci0KLSAgICBpZCB2aWV3ID0gbmlsOwotCi0gICAgaWYgKFt2
aWV3RmFjdG9yeSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHBsdWdJblZpZXdXaXRoQXJn
dW1lbnRzOildKSB7Ci0gICAgICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExv
Y2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKSk7Ci0gICAgICAgIHZpZXcgPSBbdmlld0Zh
Y3RvcnkgcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6YXJndW1lbnRzXTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdmlldzsKLX0KLSNlbHNlCiAtIChOU1ZpZXcgKilwbHVnSW5WaWV3V2l0aEFyZ3VtZW50
czooTlNEaWN0aW9uYXJ5ICopYXJndW1lbnRzIGZyb21QbHVnaW5QYWNrYWdlOihXZWJQbHVnaW5Q
YWNrYWdlICopcGx1Z2luUGFja2FnZQogewogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE3NCw3ICsx
NTcsNiBAQCAtIChOU1ZpZXcgKilwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czooTlNECiAKICAgICBy
ZXR1cm4gdmlldzsKIH0KLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQogKyAodm9pZClhZGRQ
bHVnSW5WaWV3OihOU1ZpZXcgKil2aWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24g
MTkwODMyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3NzAsMTMgKzE3NzAsOCBAQCBzdGF0aWMg
TlNWaWV3ICpwbHVnaW5WaWV3KFdlYkZyYW1lICpmcmFtCiAgICAgICAgIExPRyhQbHVnaW5zLCAi
YXJndW1lbnRzOlxuJUAiLCBhcmd1bWVudHMpOwogICAgIH0KIAotI2lmIFBMQVRGT1JNKElPUykg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCA4MDAwMAotICAgIHZpZXcgPSBb
V2ViUGx1Z2luQ29udHJvbGxlciBwbHVnSW5WaWV3V2l0aEFyZ3VtZW50czphcmd1bWVudHMgZnJv
bVBsdWdpblBhY2thZ2U6cGx1Z2luUGFja2FnZV07Ci0gICAgW2F0dHJpYnV0ZXMgcmVsZWFzZV07
Ci0jZWxzZQogICAgIHZpZXcgPSBbcGx1Z2luQ29udHJvbGxlciBwbHVnSW5WaWV3V2l0aEFyZ3Vt
ZW50czphcmd1bWVudHMgZnJvbVBsdWdpblBhY2thZ2U6cGx1Z2luUGFja2FnZV07CiAgICAgW2F0
dHJpYnV0ZXMgcmVsZWFzZV07Ci0jZW5kaWYKIAogICAgIHJldHVybiB2aWV3OwogfQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAx
OTA4MzIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTgzLDE4ICsxMTgzLDYgQEAgLSAodm9pZClzZXRBbGxvd3NBaXJQ
bGF5Rm9yTWVkaWFQbGF5YmFjawogCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdl
YlByaXZhdGUpCiAKLSNpZiBQTEFURk9STShJT1MpICYmICEoX19JUEhPTkVfT1NfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gNjAwMDApCi0tICh2b2lkKSBzZXRXZWJJbnNwZWN0b3JTZXJ2ZXJFbmFi
bGVkOihCT09MKWZsYWcKLXsKLX0KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQ
SE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDgwMDAwCi0tICh2b2lkKV9zZXRBbGxvd0Nv
bXBvc2l0aW5nTGF5ZXJWaXN1YWxEZWdyYWRhdGlvbjooQk9PTClmbGFnCi17Ci19Ci0jZW5kaWYK
LQogLSAoQk9PTClpc0ROU1ByZWZldGNoaW5nRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBf
Ym9vbFZhbHVlRm9yS2V5OldlYktpdEROU1ByZWZldGNoaW5nRW5hYmxlZFByZWZlcmVuY2VLZXld
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5oCShyZXZpc2lvbiAxOTA4MzIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTUsOCArNDU1LDQg
QEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIGphdmFTY3JpcHRNYXJrdXBFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5OwogCi0jaWYgVEFSR0VUX09TX0lQ
SE9ORSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDgwMDAwCi0tICh2b2lk
KV9zZXRBbGxvd0NvbXBvc2l0aW5nTGF5ZXJWaXN1YWxEZWdyYWRhdGlvbjooQk9PTClmbGFnOwot
I2VuZGlmCi0KIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJl
dmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtODUxLDcgKzg1MSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93
RGlzcGxheUFuZFJ1bm5pbmcKIAogc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dQaWN0dXJlSW5QaWN0
dXJlTWVkaWFQbGF5YmFjaygpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMAorI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0
aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrID0gaW9zRXhl
Y3V0YWJsZVdhc0xpbmtlZE9uT3JBZnRlclZlcnNpb24od2tJT1NTeXN0ZW1WZXJzaW9uXzlfMCk7
CiAgICAgcmV0dXJuIHNob3VsZEFsbG93UGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2s7CiAj
ZWxzZQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTkwODM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTUtMTAtMTAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KKworICAgICAgICBbaU9TXSBSZW1vdmUgdW5uZWNlc3NhcnkgaU9TIHZlcnNpb24gY2hlY2tz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTAwMDIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoLVtISURFdmVu
dEdlbmVyYXRvciBfY3JlYXRlSU9ISURFdmVudFR5cGU6XSk6CisgICAgICAgICgtW0hJREV2ZW50
R2VuZXJhdG9yIF9zZW5kSElERXZlbnQ6XSk6CisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9y
IF9zZW5kTWFya2VySElERXZlbnRXaXRoQ29tcGxldGlvbkJsb2NrOl0pOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvaW9zL1VJS2l0U1BJLmg6CisKIDIwMTUtMTAtMDkgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTkwNjg5CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVu
dEdlbmVyYXRvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9I
SURFdmVudEdlbmVyYXRvci5tbQkocmV2aXNpb24gMTkwODMyKQorKysgVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3
ICsyMDUsNiBAQCAtIChJT0hJREV2ZW50UmVmKV9jcmVhdGVJT0hJREV2ZW50VHlwZTooCiAgICAg
ICAgIElPSElERXZlbnRBcHBlbmRFdmVudChldmVudFJlZi5nZXQoKSwgc3ViRXZlbnQuZ2V0KCks
IDApOwogICAgIH0KIAotI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkw
MDAwCiAgICAgaWYgKF9hY3RpdmVQb2ludENvdW50KSB7CiAgICAgICAgIElPSElERmxvYXQgcHJv
Z3Jlc3MgPSBfYWN0aXZlUG9pbnRzWzBdLnBhdGhQcmVzc3VyZTsKICAgICAgICAgUmV0YWluUHRy
PElPSElERXZlbnRSZWY+IGZvcmNlRXZlbnQgPSBhZG9wdENGKElPSElERXZlbnRDcmVhdGVGb3Jj
ZUV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCkBAIC0yMTcsNyArMjE2LDYgQEAgLSAoSU9ISURF
dmVudFJlZilfY3JlYXRlSU9ISURFdmVudFR5cGU6KAogICAgICAgICAgICAga0lPSElERXZlbnRP
cHRpb25Ob25lKSk7CiAgICAgICAgIElPSElERXZlbnRBcHBlbmRFdmVudChldmVudFJlZi5nZXQo
KSwgZm9yY2VFdmVudC5nZXQoKSwgMCk7CiAgICAgfQotI2VuZGlmCiAKICAgICByZXR1cm4gZXZl
bnRSZWYubGVha1JlZigpOwogfQpAQCAtMjMzLDkgKzIzMSw3IEBAIC0gKEJPT0wpX3NlbmRISURF
dmVudDooSU9ISURFdmVudFJlZilldmUKICAgICAgICAgICAgIHVpbnQzMl90IGNvbnRleHRJRCA9
IFtVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXS5rZXlXaW5kb3cuX2NvbnRleHRJZDsK
ICAgICAgICAgICAgIEFTU0VSVChjb250ZXh0SUQpOwogICAgICAgICAgICAgQktTSElERXZlbnRT
ZXREaWdpdGl6ZXJJbmZvKHN0cm9uZ0V2ZW50LmdldCgpLCBjb250ZXh0SUQsIGZhbHNlLCBmYWxz
ZSwgTlVMTCwgMCwgMCk7Ci0jaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
OTAwMDAKICAgICAgICAgICAgIFtbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gX2Vu
cXVldWVISURFdmVudDpzdHJvbmdFdmVudC5nZXQoKV07Ci0jZW5kaWYKICAgICAgICAgfSk7CiAg
ICAgfQogICAgIHJldHVybiBZRVM7CkBAIC0yNjMsOSArMjU5LDcgQEAgLSAoQk9PTClfc2VuZE1h
cmtlckhJREV2ZW50V2l0aENvbXBsZXRpbwogICAgICAgICAgICAgdWludDMyX3QgY29udGV4dElE
ID0gW1VJQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dLmtleVdpbmRvdy5fY29udGV4dElk
OwogICAgICAgICAgICAgQVNTRVJUKGNvbnRleHRJRCk7CiAgICAgICAgICAgICBCS1NISURFdmVu
dFNldERpZ2l0aXplckluZm8obWFya2VyRXZlbnQuZ2V0KCksIGNvbnRleHRJRCwgZmFsc2UsIGZh
bHNlLCBOVUxMLCAwLCAwKTsKLSNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSA5MDAwMAogICAgICAgICAgICAgW1tVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBf
ZW5xdWV1ZUhJREV2ZW50Om1hcmtlckV2ZW50LmdldCgpXTsKLSNlbmRpZgogICAgICAgICB9KTsK
ICAgICB9CiAgICAgcmV0dXJuIFlFUzsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9z
L1VJS2l0U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlL
aXRTUEkuaAkocmV2aXNpb24gMTkwODMyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VUlLaXRTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTAgKzQyLDcgQEAKICNpbXBvcnQgIklP
S2l0U1BJLmgiCiAKIEBpbnRlcmZhY2UgVUlBcHBsaWNhdGlvbiAoKQotI2lmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDkwMDAwCiAtICh2b2lkKV9lbnF1ZXVlSElERXZlbnQ6
KElPSElERXZlbnRSZWYpZXZlbnQ7Ci0jZW5kaWYKLS0gKHZvaWQpX2hhbmRsZUhJREV2ZW50OihJ
T0hJREV2ZW50UmVmKWV2ZW50OwogQGVuZAogCiBAaW50ZXJmYWNlIFVJV2luZG93ICgpCg==
</data>
<flag name="review"
          id="288025"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>