<?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>65392</bug_id>
          
          <creation_ts>2011-07-29 14:23:38 -0700</creation_ts>
          <short_desc>Move Region code from WebKit2 to WebCore</short_desc>
          <delta_ts>2011-07-29 14:54:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>444102</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-07-29 14:23:38 -0700</bug_when>
    <thetext>Move Region code from WebKit2 to WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444103</commentid>
    <comment_count>1</comment_count>
      <attachid>102397</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-07-29 14:25:38 -0700</bug_when>
    <thetext>Created attachment 102397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444105</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 14:29:04 -0700</bug_when>
    <thetext>Attachment 102397 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 16 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>444108</commentid>
    <comment_count>3</comment_count>
      <attachid>102397</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-07-29 14:31:10 -0700</bug_when>
    <thetext>Comment on attachment 102397
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444123</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-07-29 14:54:56 -0700</bug_when>
    <thetext>Committed r92014: &lt;http://trac.webkit.org/changeset/92014&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102397</attachid>
            <date>2011-07-29 14:25:38 -0700</date>
            <delta_ts>2011-07-29 14:31:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65392-20110729142537.patch</filename>
            <type>text/plain</type>
            <size>64328</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyMDA4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDctMjkgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFJlZ2lvbiBjb2RlIGZyb20gV2Vi
S2l0MiB0byBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NTM5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBVcGRhdGUgcHJvamVjdCBmaWxlcy4KKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICBVcGRhdGUgZXhwb3J0cy4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5oLgor
ICAgICAgICBBZGQgZmlsZXMuCisKIDIwMTEtMDctMjkgIEplZmYgTWlsbGVyICA8amVmZm1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlLXNvcnQgb25lIG1vcmUgZmlsZSBpbiB0aGUgV2ViQ29yZSBw
cm9qZWN0IHdpdGggVmlzdWFsIFN0dWRpby4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiA5MTk2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMDcyLDYgKzEwNzIsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2Fs
U3RhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9SZWdpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3Qu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkocmV2aXNpb24gOTE5NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQyLDYgKzI1NDIsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxT
dGF0ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUm91bmRlZFJlY3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Sb3VuZGVkUmVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TZWdt
ZW50ZWRGb250RGF0YS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDkx
OTY2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTM5Nyw4ICszOTcsOCBAQCBfX1pON1dlYkNvcmUxNURhdGFiYXNlVHJhY2tlcjd0cmFja2VyRXYK
IF9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyOHNldFF1b3RhRVBOU18xNFNlY3VyaXR5T3Jp
Z2luRXkKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VUcmFja2VyOXNldENsaWVudEVQTlNfMjFEYXRh
YmFzZVRyYWNrZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjEwc2V0Rm9j
dXNlZEViCi1fX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE1c2V0Rm9jdXNlZEZyYW1lRU4z
V1RGMTBQYXNzUmVmUHRySU5TXzVGcmFtZUVFRQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xs
ZXIxNHNldEZvY3VzZWROb2RlRVBOU180Tm9kZUVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVF
RUUKK19fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTVzZXRGb2N1c2VkRnJhbWVFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxlcjE1
c2V0SW5pdGlhbEZvY3VzRU5TXzE0Rm9jdXNEaXJlY3Rpb25FUE5TXzEzS2V5Ym9hcmRFdmVudEUK
IF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyOXNldEFjdGl2ZUViCiBfX1pON1dlYkNvcmUx
NUdyYXBoaWNzQ29udGV4dDEyc2V0RmlsbENvbG9yRVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFj
ZUUKQEAgLTgwNSw2ICs4MDUsMTIgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjdvdXRkZW50RXYKIF9f
Wk43V2ViQ29yZTZKU05vZGUxM3Zpc2l0Q2hpbGRyZW5FUk4zSlNDMTFTbG90VmlzaXRvckUKIF9f
Wk43V2ViQ29yZTZKU05vZGUzcHV0RVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVy
RU5TMV83SlNWYWx1ZUVSTlMxXzE1UHV0UHJvcGVydHlTbG90RQogX19aTjdXZWJDb3JlNkpTTm9k
ZTZzX2luZm9FCitfX1pON1dlYkNvcmU2UmVnaW9uNXVuaXRlRVJLUzBfCitfX1pON1dlYkNvcmU2
UmVnaW9uOHN1YnRyYWN0RVJLUzBfCitfX1pON1dlYkNvcmU2UmVnaW9uOWludGVyc2VjdEVSS1Mw
XworX19aTjdXZWJDb3JlNlJlZ2lvbjl0cmFuc2xhdGVFUktOU183SW50U2l6ZUUKK19fWk43V2Vi
Q29yZTZSZWdpb25DMUVSS05TXzdJbnRSZWN0RQorX19aTjdXZWJDb3JlNlJlZ2lvbkMxRXYKIF9f
Wk43V2ViQ29yZTZXaWRnZXQxMnNldEZyYW1lUmVjdEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJD
b3JlNldpZGdldDEzc2V0Qm91bmRzU2l6ZUVSS05TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlNldp
ZGdldDE2cmVtb3ZlRnJvbVBhcmVudEV2CkBAIC04MjAsOSArODI2LDkgQEAgX19aTjdXZWJDb3Jl
NldpZGdldEQyRXYKIF9fWk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2Vi
Q29yZTdDb25zb2xlMjFzaG91bGRQcmludEV4Y2VwdGlvbnNFdgogX19aTjdXZWJDb3JlN0NvbnNv
bGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9uc0ViCi1fX1pON1dlYkNvcmU3RWxlbWVudDE5Ym91
bmRzSW5XaW5kb3dTcGFjZUV2CiBfX1pON1dlYkNvcmU3RWxlbWVudDE2ZW5zdXJlU2hhZG93Um9v
dEV2CiBfX1pON1dlYkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2CitfX1pON1dlYkNv
cmU3RWxlbWVudDE5Ym91bmRzSW5XaW5kb3dTcGFjZUV2CiBfX1pON1dlYkNvcmU3RWxlbWVudDlp
bm5lclRleHRFdgogX19aTjdXZWJDb3JlN0ludFJlY3Q1c2NhbGVFZgogX19aTjdXZWJDb3JlN0lu
dFJlY3Q1dW5pdGVFUktTMF8KQEAgLTEyNzUsNiArMTI4MSw3IEBAIF9fWk5LN1dlYkNvcmU2RWRp
dG9yN2NhbkVkaXRFdgogX19aTks3V2ViQ29yZTZFZGl0b3I4Y2FuUGFzdGVFdgogX19aTks3V2Vi
Q29yZTZFZGl0b3I5Y2FuRGVsZXRlRXYKIF9fWk5LN1dlYkNvcmU2SlNOb2RlMjFwdXNoRXZlbnRI
YW5kbGVyU2NvcGVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0U2NvcGVDaGFpbk5vZGVFCitfX1pO
SzdXZWJDb3JlNlJlZ2lvbjVyZWN0c0V2CiBfX1pOSzdXZWJDb3JlNldpZGdldDE0cGxhdGZvcm1X
aWRnZXRFdgogX19aTks3V2ViQ29yZTZXaWRnZXQyM2NvbnZlcnRUb0NvbnRhaW5pbmdWaWV3RVJL
TlNfN0ludFJlY3RFCiBfX1pOSzdXZWJDb3JlNldpZGdldDIzY29udmVydFRvQ29udGFpbmluZ1Zp
ZXdFUktOU184SW50UG9pbnRFCkBAIC0xMzkyLDYgKzEzOTksOSBAQCBfd2tJbml0aWFsaXplTWF4
aW11bUhUVFBDb25uZWN0aW9uQ291bnRQCiBfd2tNZWFzdXJlTWVkaWFVSVBhcnQKIF93a01lZGlh
Q29udHJvbGxlclRoZW1lQXZhaWxhYmxlCiBfd2tQb3B1cE1lbnUKK193a1FUQ2xlYXJNZWRpYURv
d25sb2FkQ2FjaGUKK193a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlCitfd2tRVEdl
dFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUKIF93a1FUSW5jbHVkZU9ubHlNb2Rlcm5NZWRpYUZp
bGVUeXBlcwogX3drUVRNb3ZpZURhdGFSYXRlCiBfd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudApA
QCAtMTQwNCw5ICsxNDE0LDYgQEAgX3drUVRNb3ZpZVJlc29sdmVkVVJMCiBfd2tRVE1vdmllU2Vs
ZWN0UHJlZmVycmVkQWx0ZXJuYXRlcwogX3drUVRNb3ZpZVNldFNob3dDbG9zZWRDYXB0aW9ucwog
X3drUVRNb3ZpZVZpZXdTZXREcmF3U3luY2hyb25vdXNseQotX3drUVRHZXRTaXRlc0luTWVkaWFE
b3dubG9hZENhY2hlCi1fd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZQotX3drUVRD
bGVhck1lZGlhRG93bmxvYWRDYWNoZQogX3drU2V0Q0ZVUkxSZXNwb25zZU1JTUVUeXBlCiBfd2tT
ZXRDR0ZvbnRSZW5kZXJpbmdNb2RlCiBfd2tTZXRDT05ORUNUUHJveHlBdXRob3JpemF0aW9uRm9y
U3RyZWFtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA5MTk2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNzcyLDYgKzc3Miw3IEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuaCcsCkBAIC0zMzU3LDYgKzMzNTgs
NyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL1NlZ21lbnRlZEZvbnREYXRhLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDkx
OTY2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTk5
OSw2ICs5OTksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNw
cCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcCBcCkBAIC0xOTk1LDYgKzE5OTYsNyBAQCBIRUFERVJTICs9
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BhdGhUcmF2ZXJzYWxTdGF0ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgg
XAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9Sb3VuZGVkUmVjdC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlRGVjb2RlclF0Lmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHJldmlzaW9uIDkxOTY2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3ODEzLDYgKzI3ODEzLDE0IEBACiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xSZWdpb24uY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUmVnaW9uLmgiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xSb3VuZGVkUmVjdC5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biA5MTk2NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTEzMSw2ICs1MTMxLDggQEAKIAkJQkNBOENBNUYxMUU0
RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOENBNUQxMUU0RTZEMTAwODEyRkI3IC8q
IEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwICovOyB9OwogCQlCQ0E4Q0E2MDExRTRFNkQxMDA4MTJG
QjcgLyogQmFja0ZvcndhcmRMaXN0SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNBOENBNUUxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJk
TGlzdEltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQ0FBOTBDMzBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE5MEMyMEE3RUJBNjAwMDhC
MTIyOSAvKiBTY3JvbGxiYXIuY3BwICovOyB9OworCQlCQ0FCNDE4MTEzRTM1NkU4MDBEOEFBRjMg
LyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQUI0MTdGMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uY3BwICovOyB9OworCQlCQ0FC
NDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNB
Q0YzQkMxMDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0FDRjNCQTEwNzI5MjFB
MDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCAqLzsgfTsKIAkJQkNBQ0YzQkQx
MDcyOTIxQTAwQzBDOEEzIC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBQ0YzQkIxMDcyOTIxQTAwQzBDOEEz
IC8qIFVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJDQUQxODBBMTMxQzdBMEQwMDk5MDQwNiAvKiBMb2NhbGl6
YWJsZS5zdHJpbmdzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0FEMTgwODEzMUM3QTBEMDA5OTA0MDYgLyogTG9jYWxpemFibGUuc3RyaW5ncyAqLzsg
fTsKQEAgLTExODA2LDYgKzExODA4LDggQEAKIAkJQkNBOENBNUQxMUU0RTZEMTAwODEyRkI3IC8q
IEJhY2tGb3J3YXJkTGlzdEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQmFja0ZvcndhcmRMaXN0SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDQThDQTVFMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3RJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdEltcGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQTkwQzIwQTdFQkE2MDAwOEIxMjI5IC8qIFNj
cm9sbGJhci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xs
YmFyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNBQjQxN0YxM0UzNTZFODAw
RDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZWdpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0FCNDE4MDEzRTM1
NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZ2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FDRjNCQTEwNzI5MjFB
MDBDMEM4QTMgLyogVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJDb250ZW50VVJMUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDQUNGM0JCMTA3MjkyMUEwMEMwQzhBMyAvKiBVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQUQxODA5MTMx
QzdBMEQwMDk5MDQwNiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDEwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nczsg
bmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKQEAgLTE4MTkzLDYgKzE4MTk3LDggQEAKIAkJ
CQlBODhERDQ4NjBCNDYyOUEzMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmggKi8sCiAJ
CQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAogCQkJCUE4RkE2
RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi8sCisJCQkJQkNBQjQxN0YxM0UzNTZF
ODAwRDhBQUYzIC8qIFJlZ2lvbi5jcHAgKi8sCisJCQkJQkNBQjQxODAxM0UzNTZFODAwRDhBQUYz
IC8qIFJlZ2lvbi5oICovLAogCQkJCUE3M0Y5NUZDMTJDOTdCRkUwMDMxQUFGOSAvKiBSb3VuZGVk
UmVjdC5jcHAgKi8sCiAJCQkJQTczRjk1RkQxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0
LmggKi8sCiAJCQkJMzcxRjRGRkIwRDI1RTdGMzAwRUNFMEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRh
LmNwcCAqLywKQEAgLTIzMjY1LDYgKzIzMjcxLDcgQEAKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAw
MDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwOENDQTRGMTNDRjEwNkIw
MDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlENzBBRDY1
ODEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
Q0FCNDE4MjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2
MDUzLDYgKzI2MDYwLDcgQEAKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1Bv
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJl
bmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDcwQUQ2NTcxM0UxMzQyQjAw
NUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQ0FCNDE4MTEz
RTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCShyZXZpc2lvbiA5MTk2NikJ
KGZyb20gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUmVnaW9uLmNwcDo5MTk2NikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUmVnaW9uLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworLy8gQSByZWdpb24gY2xh
c3MgYmFzZWQgb24gdGhlIHBhcGVyICJTY2FubGluZSBDb2hlcmVudCBTaGFwZSBBbGdlYnJhIgor
Ly8gYnkgSm9uYXRoYW4gRS4gU3RlaW5oYXJ0IGZyb20gdGhlIGJvb2sgIkdyYXBoaWNzIEdlbXMg
SUkiLgorLy8KKy8vIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyB0d28gdmVjdG9ycyBpbnN0ZWFk
IG9mIGxpbmtlZCBsaXN0LCBhbmQKKy8vIGFsc28gY29tcHJlc3NlcyByZWdpb25zIHdoZW4gcG9z
c2libGUuCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworUmVnaW9uOjpSZWdpb24oKQoreworfQorCitSZWdpb246OlJlZ2lvbihjb25zdCBJbnRSZWN0
JiByZWN0KQorICAgIDogbV9ib3VuZHMocmVjdCkKKyAgICAsIG1fc2hhcGUocmVjdCkKK3sKK30K
KworVmVjdG9yPEludFJlY3Q+IFJlZ2lvbjo6cmVjdHMoKSBjb25zdAoreworICAgIFZlY3RvcjxJ
bnRSZWN0PiByZWN0czsKKworICAgIGZvciAoU2hhcGU6OlNwYW5JdGVyYXRvciBzcGFuID0gbV9z
aGFwZS5zcGFuc19iZWdpbigpLCBlbmQgPSBtX3NoYXBlLnNwYW5zX2VuZCgpOyBzcGFuICE9IGVu
ZCAmJiBzcGFuICsgMSAhPSBlbmQ7ICsrc3BhbikgeworICAgICAgICBpbnQgeSA9IHNwYW4tPnk7
CisgICAgICAgIGludCBoZWlnaHQgPSAoc3BhbiArIDEpLT55IC0geTsKKworICAgICAgICBmb3Ig
KFNoYXBlOjpTZWdtZW50SXRlcmF0b3Igc2VnbWVudCA9IG1fc2hhcGUuc2VnbWVudHNfYmVnaW4o
c3BhbiksIGVuZCA9IG1fc2hhcGUuc2VnbWVudHNfZW5kKHNwYW4pOyBzZWdtZW50ICE9IGVuZCAm
JiBzZWdtZW50ICsgMSAhPSBlbmQ7IHNlZ21lbnQgKz0gMikgeworICAgICAgICAgICAgaW50IHgg
PSAqc2VnbWVudDsKKyAgICAgICAgICAgIGludCB3aWR0aCA9ICooc2VnbWVudCArIDEpIC0geDsK
KworICAgICAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkp
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlY3RzOworfQorCitSZWdpb246OlNo
YXBlOjpTaGFwZSgpCit7Cit9CisKK1JlZ2lvbjo6U2hhcGU6OlNoYXBlKGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgYXBwZW5kU3BhbihyZWN0LnkoKSk7CisgICAgYXBwZW5kU2VnbWVudChy
ZWN0LngoKSk7CisgICAgYXBwZW5kU2VnbWVudChyZWN0Lm1heFgoKSk7CisgICAgYXBwZW5kU3Bh
bihyZWN0Lm1heFkoKSk7Cit9CisKK3ZvaWQgUmVnaW9uOjpTaGFwZTo6YXBwZW5kU3BhbihpbnQg
eSkKK3sKKyAgICBtX3NwYW5zLmFwcGVuZChTcGFuKHksIG1fc2VnbWVudHMuc2l6ZSgpKSk7Cit9
CisKK2Jvb2wgUmVnaW9uOjpTaGFwZTo6Y2FuQ29hbGVzY2UoU2VnbWVudEl0ZXJhdG9yIGJlZ2lu
LCBTZWdtZW50SXRlcmF0b3IgZW5kKQoreworICAgIGlmIChtX3NwYW5zLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2VnbWVudEl0ZXJhdG9yIGxhc3RTcGFuQmVnaW4g
PSBtX3NlZ21lbnRzLmRhdGEoKSArIG1fc3BhbnMubGFzdCgpLnNlZ21lbnRJbmRleDsKKyAgICBT
ZWdtZW50SXRlcmF0b3IgbGFzdFNwYW5FbmQgPSBtX3NlZ21lbnRzLmRhdGEoKSArIG1fc2VnbWVu
dHMuc2l6ZSgpOworCisgICAgLy8gQ2hlY2sgaWYgYm90aCBzcGFucyBoYXZlIGFuIGVxdWFsIG51
bWJlciBvZiBzZWdtZW50cy4KKyAgICBpZiAobGFzdFNwYW5FbmQgLSBsYXN0U3BhbkJlZ2luICE9
IGVuZCAtIGJlZ2luKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayBpZiBi
b3RoIHNwYW5zIGFyZSBlcXVhbC4KKyAgICBpZiAoIXN0ZDo6ZXF1YWwoYmVnaW4sIGVuZCwgbGFz
dFNwYW5CZWdpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFNpbmNlIHRoZSBz
ZWdtZW50cyBhcmUgZXF1YWwgdGhlIHNlY29uZCBzZWdtZW50IGNhbiBqdXN0IGJlIGlnbm9yZWQu
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUmVnaW9uOjpTaGFwZTo6YXBwZW5kU3Bhbihp
bnQgeSwgU2VnbWVudEl0ZXJhdG9yIGJlZ2luLCBTZWdtZW50SXRlcmF0b3IgZW5kKQoreworICAg
IGlmIChjYW5Db2FsZXNjZShiZWdpbiwgZW5kKSkKKyAgICAgICAgcmV0dXJuOworICAKKyAgICBh
cHBlbmRTcGFuKHkpOworICAgIG1fc2VnbWVudHMuYXBwZW5kUmFuZ2UoYmVnaW4sIGVuZCk7Cit9
CisKK3ZvaWQgUmVnaW9uOjpTaGFwZTo6YXBwZW5kU3BhbnMoY29uc3QgU2hhcGUmIHNoYXBlLCBT
cGFuSXRlcmF0b3IgYmVnaW4sIFNwYW5JdGVyYXRvciBlbmQpCit7CisgICAgZm9yIChTcGFuSXRl
cmF0b3IgaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBhcHBlbmRTcGFuKGl0
LT55LCBzaGFwZS5zZWdtZW50c19iZWdpbihpdCksIHNoYXBlLnNlZ21lbnRzX2VuZChpdCkpOwor
fQorCit2b2lkIFJlZ2lvbjo6U2hhcGU6OmFwcGVuZFNlZ21lbnQoaW50IHgpCit7CisgICAgbV9z
ZWdtZW50cy5hcHBlbmQoeCk7Cit9CisKK1JlZ2lvbjo6U2hhcGU6OlNwYW5JdGVyYXRvciBSZWdp
b246OlNoYXBlOjpzcGFuc19iZWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3BhbnMuZGF0
YSgpOworfQorCitSZWdpb246OlNoYXBlOjpTcGFuSXRlcmF0b3IgUmVnaW9uOjpTaGFwZTo6c3Bh
bnNfZW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zcGFucy5kYXRhKCkgKyBtX3NwYW5zLnNp
emUoKTsKK30KKworUmVnaW9uOjpTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIFJlZ2lvbjo6U2hhcGU6
OnNlZ21lbnRzX2JlZ2luKFNwYW5JdGVyYXRvciBpdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXQg
Pj0gbV9zcGFucy5kYXRhKCkpOworICAgIEFTU0VSVChpdCA8IG1fc3BhbnMuZGF0YSgpICsgbV9z
cGFucy5zaXplKCkpOworCisgICAgLy8gQ2hlY2sgaWYgdGhpcyBzcGFuIGhhcyBhbnkgc2VnbWVu
dHMuCisgICAgaWYgKGl0LT5zZWdtZW50SW5kZXggPT0gbV9zZWdtZW50cy5zaXplKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuICZtX3NlZ21lbnRzW2l0LT5zZWdtZW50SW5kZXhd
OworfQorCitSZWdpb246OlNoYXBlOjpTZWdtZW50SXRlcmF0b3IgUmVnaW9uOjpTaGFwZTo6c2Vn
bWVudHNfZW5kKFNwYW5JdGVyYXRvciBpdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXQgPj0gbV9z
cGFucy5kYXRhKCkpOworICAgIEFTU0VSVChpdCA8IG1fc3BhbnMuZGF0YSgpICsgbV9zcGFucy5z
aXplKCkpOworCisgICAgLy8gQ2hlY2sgaWYgdGhpcyBzcGFuIGhhcyBhbnkgc2VnbWVudHMuCisg
ICAgaWYgKGl0LT5zZWdtZW50SW5kZXggPT0gbV9zZWdtZW50cy5zaXplKCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgQVNTRVJUKGl0ICsgMSA8IG1fc3BhbnMuZGF0YSgpICsgbV9zcGFucy5z
aXplKCkpOworICAgIHNpemVfdCBzZWdtZW50SW5kZXggPSAoaXQgKyAxKS0+c2VnbWVudEluZGV4
OworCisgICAgQVNTRVJUKHNlZ21lbnRJbmRleCA8PSBtX3NlZ21lbnRzLnNpemUoKSk7CisgICAg
cmV0dXJuIG1fc2VnbWVudHMuZGF0YSgpICsgc2VnbWVudEluZGV4OworfQorCisjaWZuZGVmIE5E
RUJVRwordm9pZCBSZWdpb246OlNoYXBlOjpkdW1wKCkgY29uc3QKK3sKKyAgICBmb3IgKFNoYXBl
OjpTcGFuSXRlcmF0b3Igc3BhbiA9IHNwYW5zX2JlZ2luKCksIGVuZCA9IHNwYW5zX2VuZCgpOyBz
cGFuICE9IGVuZDsgKytzcGFuKSB7CisgICAgICAgIHByaW50ZigiJTZkOiAoIiwgc3Bhbi0+eSk7
CisKKyAgICAgICAgZm9yIChTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIHNlZ21lbnQgPSBzZWdtZW50
c19iZWdpbihzcGFuKSwgZW5kID0gc2VnbWVudHNfZW5kKHNwYW4pOyBzZWdtZW50ICE9IGVuZDsg
KytzZWdtZW50KQorICAgICAgICAgICAgcHJpbnRmKCIlZCAiLCAqc2VnbWVudCk7CisgICAgICAg
IHByaW50ZigiKVxuIik7CisgICAgfQorCisgICAgcHJpbnRmKCJcbiIpOworfQorI2VuZGlmCisK
K0ludFJlY3QgUmVnaW9uOjpTaGFwZTo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICBpZiAoaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisgICAgU3Bhbkl0ZXJhdG9yIHNwYW4g
PSBzcGFuc19iZWdpbigpOworICAgIGludCBtaW5ZID0gc3Bhbi0+eTsKKworICAgIFNwYW5JdGVy
YXRvciBsYXN0U3BhbiA9IHNwYW5zX2VuZCgpIC0gMTsKKyAgICBpbnQgbWF4WSA9IGxhc3RTcGFu
LT55OworCisgICAgaW50IG1pblggPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwor
ICAgIGludCBtYXhYID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKTsKKworICAgIHdo
aWxlIChzcGFuICE9IGxhc3RTcGFuKSB7CisgICAgICAgIFNlZ21lbnRJdGVyYXRvciBmaXJzdFNl
Z21lbnQgPSBzZWdtZW50c19iZWdpbihzcGFuKTsKKyAgICAgICAgU2VnbWVudEl0ZXJhdG9yIGxh
c3RTZWdtZW50ID0gc2VnbWVudHNfZW5kKHNwYW4pIC0gMTsKKworICAgICAgICBpZiAoZmlyc3RT
ZWdtZW50ICYmIGxhc3RTZWdtZW50KSB7CisgICAgICAgICAgICBBU1NFUlQoZmlyc3RTZWdtZW50
ICE9IGxhc3RTZWdtZW50KTsKKworICAgICAgICAgICAgaWYgKCpmaXJzdFNlZ21lbnQgPCBtaW5Y
KQorICAgICAgICAgICAgICAgIG1pblggPSAqZmlyc3RTZWdtZW50OworCisgICAgICAgICAgICBp
ZiAoKmxhc3RTZWdtZW50ID4gbWF4WCkKKyAgICAgICAgICAgICAgICBtYXhYID0gKmxhc3RTZWdt
ZW50OworICAgICAgICB9CisKKyAgICAgICAgKytzcGFuOworICAgIH0KKworICAgIEFTU0VSVCht
aW5YIDw9IG1heFgpOworICAgIEFTU0VSVChtaW5ZIDw9IG1heFkpOworCisgICAgcmV0dXJuIElu
dFJlY3QobWluWCwgbWluWSwgbWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKTsKK30KKwordm9pZCBS
ZWdpb246OlNoYXBlOjp0cmFuc2xhdGUoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9z
ZWdtZW50c1tpXSArPSBvZmZzZXQud2lkdGgoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fc3BhbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fc3BhbnNbaV0ueSArPSBvZmZzZXQuaGVp
Z2h0KCk7Cit9CisKK3ZvaWQgUmVnaW9uOjpTaGFwZTo6c3dhcChTaGFwZSYgb3RoZXIpCit7Cisg
ICAgbV9zZWdtZW50cy5zd2FwKG90aGVyLm1fc2VnbWVudHMpOworICAgIG1fc3BhbnMuc3dhcChv
dGhlci5tX3NwYW5zKTsKK30KKworZW51bSB7CisgICAgU2hhcGUxLAorICAgIFNoYXBlMiwKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvbj4KK1JlZ2lvbjo6U2hhcGUgUmVnaW9uOjpT
aGFwZTo6c2hhcGVPcGVyYXRpb24oY29uc3QgU2hhcGUmIHNoYXBlMSwgY29uc3QgU2hhcGUmIHNo
YXBlMikKK3sKKyAgICBDT01QSUxFX0FTU0VSVCghKCFPcGVyYXRpb246OnNob3VsZEFkZFJlbWFp
bmluZ1NlZ21lbnRzRnJvbVNwYW4xICYmIE9wZXJhdGlvbjo6c2hvdWxkQWRkUmVtYWluaW5nU2Vn
bWVudHNGcm9tU3BhbjIpLCBpbnZhbGlkX3NlZ21lbnRfY29tYmluYXRpb24pOworICAgIENPTVBJ
TEVfQVNTRVJUKCEoIU9wZXJhdGlvbjo6c2hvdWxkQWRkUmVtYWluaW5nU3BhbnNGcm9tU2hhcGUx
ICYmIE9wZXJhdGlvbjo6c2hvdWxkQWRkUmVtYWluaW5nU3BhbnNGcm9tU2hhcGUyKSwgaW52YWxp
ZF9zcGFuX2NvbWJpbmF0aW9uKTsKKworICAgIFNoYXBlIHJlc3VsdDsKKyAgICBpZiAoT3BlcmF0
aW9uOjp0cnlTaW1wbGVPcGVyYXRpb24oc2hhcGUxLCBzaGFwZTIsIHJlc3VsdCkpCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisKKyAgICBTcGFuSXRlcmF0b3Igc3BhbnMxID0gc2hhcGUxLnNwYW5z
X2JlZ2luKCk7CisgICAgU3Bhbkl0ZXJhdG9yIHNwYW5zMUVuZCA9IHNoYXBlMS5zcGFuc19lbmQo
KTsKKworICAgIFNwYW5JdGVyYXRvciBzcGFuczIgPSBzaGFwZTIuc3BhbnNfYmVnaW4oKTsKKyAg
ICBTcGFuSXRlcmF0b3Igc3BhbnMyRW5kID0gc2hhcGUyLnNwYW5zX2VuZCgpOworCisgICAgU2Vn
bWVudEl0ZXJhdG9yIHNlZ21lbnRzMSA9IDA7CisgICAgU2VnbWVudEl0ZXJhdG9yIHNlZ21lbnRz
MUVuZCA9IDA7CisKKyAgICBTZWdtZW50SXRlcmF0b3Igc2VnbWVudHMyID0gMDsKKyAgICBTZWdt
ZW50SXRlcmF0b3Igc2VnbWVudHMyRW5kID0gMDsKKworICAgIC8vIEl0ZXJhdGUgb3ZlciBhbGwg
c3BhbnMuCisgICAgd2hpbGUgKHNwYW5zMSAhPSBzcGFuczFFbmQgJiYgc3BhbnMyICE9IHNwYW5z
MkVuZCkgeworICAgICAgICBpbnQgeSA9IDA7CisgICAgICAgIGludCB0ZXN0ID0gc3BhbnMxLT55
IC0gc3BhbnMyLT55OworCisgICAgICAgIGlmICh0ZXN0IDw9IDApIHsKKyAgICAgICAgICAgIHkg
PSBzcGFuczEtPnk7CisKKyAgICAgICAgICAgIHNlZ21lbnRzMSA9IHNoYXBlMS5zZWdtZW50c19i
ZWdpbihzcGFuczEpOworICAgICAgICAgICAgc2VnbWVudHMxRW5kID0gc2hhcGUxLnNlZ21lbnRz
X2VuZChzcGFuczEpOworICAgICAgICAgICAgKytzcGFuczE7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHRlc3QgPj0gMCkgeworICAgICAgICAgICAgeSA9IHNwYW5zMi0+eTsKKworICAgICAgICAg
ICAgc2VnbWVudHMyID0gc2hhcGUyLnNlZ21lbnRzX2JlZ2luKHNwYW5zMik7CisgICAgICAgICAg
ICBzZWdtZW50czJFbmQgPSBzaGFwZTIuc2VnbWVudHNfZW5kKHNwYW5zMik7CisgICAgICAgICAg
ICArK3NwYW5zMjsKKyAgICAgICAgfQorCisgICAgICAgIGludCBmbGFnID0gMDsKKyAgICAgICAg
aW50IG9sZEZsYWcgPSAwOworCisgICAgICAgIFNlZ21lbnRJdGVyYXRvciBzMSA9IHNlZ21lbnRz
MTsKKyAgICAgICAgU2VnbWVudEl0ZXJhdG9yIHMyID0gc2VnbWVudHMyOworCisgICAgICAgIFZl
Y3RvcjxpbnQ+IHNlZ21lbnRzOworCisgICAgICAgIC8vIE5vdyBpdGVyYXRlIG92ZXIgdGhlIHNl
Z21lbnRzIGluIGVhY2ggc3BhbiBhbmQgY29uc3RydWN0IGEgbmV3IHZlY3RvciBvZiBzZWdtZW50
cy4KKyAgICAgICAgd2hpbGUgKHMxICE9IHNlZ21lbnRzMUVuZCAmJiBzMiAhPSBzZWdtZW50czJF
bmQpIHsKKyAgICAgICAgICAgIGludCB0ZXN0ID0gKnMxIC0gKnMyOworICAgICAgICAgICAgaW50
IHg7CisKKyAgICAgICAgICAgIGlmICh0ZXN0IDw9IDApIHsKKyAgICAgICAgICAgICAgICB4ID0g
KnMxOworICAgICAgICAgICAgICAgIGZsYWcgPSBmbGFnIF4gMTsKKyAgICAgICAgICAgICAgICAr
K3MxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRlc3QgPj0gMCkgeworICAgICAg
ICAgICAgICAgIHggPSAqczI7CisgICAgICAgICAgICAgICAgZmxhZyA9IGZsYWcgXiAyOworICAg
ICAgICAgICAgICAgICsrczI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmbGFn
ID09IE9wZXJhdGlvbjo6b3BDb2RlIHx8IG9sZEZsYWcgPT0gT3BlcmF0aW9uOjpvcENvZGUpCisg
ICAgICAgICAgICAgICAgc2VnbWVudHMuYXBwZW5kKHgpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBvbGRGbGFnID0gZmxhZzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEFkZCBhbnkgcmVt
YWluaW5nIHNlZ21lbnRzLgorICAgICAgICBpZiAoT3BlcmF0aW9uOjpzaG91bGRBZGRSZW1haW5p
bmdTZWdtZW50c0Zyb21TcGFuMSAmJiBzMSAhPSBzZWdtZW50czFFbmQpCisgICAgICAgICAgICBz
ZWdtZW50cy5hcHBlbmRSYW5nZShzMSwgc2VnbWVudHMxRW5kKTsKKyAgICAgICAgZWxzZSBpZiAo
T3BlcmF0aW9uOjpzaG91bGRBZGRSZW1haW5pbmdTZWdtZW50c0Zyb21TcGFuMiAmJiBzMiAhPSBz
ZWdtZW50czJFbmQpCisgICAgICAgICAgICBzZWdtZW50cy5hcHBlbmRSYW5nZShzMiwgc2VnbWVu
dHMyRW5kKTsKKworICAgICAgICAvLyBBZGQgdGhlIHNwYW4uCisgICAgICAgIGlmICghc2VnbWVu
dHMuaXNFbXB0eSgpIHx8ICFyZXN1bHQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZFNwYW4oeSwgc2VnbWVudHMuZGF0YSgpLCBzZWdtZW50cy5kYXRhKCkgKyBzZWdtZW50cy5z
aXplKCkpOworICAgIH0KKworICAgIC8vIEFkZCBhbnkgcmVtYWluaW5nIHNwYW5zLgorICAgIGlm
IChPcGVyYXRpb246OnNob3VsZEFkZFJlbWFpbmluZ1NwYW5zRnJvbVNoYXBlMSAmJiBzcGFuczEg
IT0gc3BhbnMxRW5kKQorICAgICAgICByZXN1bHQuYXBwZW5kU3BhbnMoc2hhcGUxLCBzcGFuczEs
IHNwYW5zMUVuZCk7CisgICAgZWxzZSBpZiAoT3BlcmF0aW9uOjpzaG91bGRBZGRSZW1haW5pbmdT
cGFuc0Zyb21TaGFwZTIgJiYgc3BhbnMyICE9IHNwYW5zMkVuZCkKKyAgICAgICAgcmVzdWx0LmFw
cGVuZFNwYW5zKHNoYXBlMiwgc3BhbnMyLCBzcGFuczJFbmQpOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworc3RydWN0IFJlZ2lvbjo6U2hhcGU6OlVuaW9uT3BlcmF0aW9uIHsKKyAgICBzdGF0
aWMgYm9vbCB0cnlTaW1wbGVPcGVyYXRpb24oY29uc3QgU2hhcGUmIHNoYXBlMSwgY29uc3QgU2hh
cGUmIHNoYXBlMiwgU2hhcGUmIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGlmIChzaGFwZTEuaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBzaGFwZTI7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHNoYXBlMi5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNoYXBlMTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN0
YXRpYyBjb25zdCBpbnQgb3BDb2RlID0gMDsKKworICAgIHN0YXRpYyBjb25zdCBib29sIHNob3Vs
ZEFkZFJlbWFpbmluZ1NlZ21lbnRzRnJvbVNwYW4xID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzaG91bGRBZGRSZW1haW5pbmdTZWdtZW50c0Zyb21TcGFuMiA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2hvdWxkQWRkUmVtYWluaW5nU3BhbnNGcm9tU2hhcGUxID0gdHJ1ZTsK
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRBZGRSZW1haW5pbmdTcGFuc0Zyb21TaGFwZTIg
PSB0cnVlOworfTsKKworUmVnaW9uOjpTaGFwZSBSZWdpb246OlNoYXBlOjp1bmlvblNoYXBlcyhj
b25zdCBTaGFwZSYgc2hhcGUxLCBjb25zdCBTaGFwZSYgc2hhcGUyKQoreworICAgIHJldHVybiBz
aGFwZU9wZXJhdGlvbjxVbmlvbk9wZXJhdGlvbj4oc2hhcGUxLCBzaGFwZTIpOworfQorCitzdHJ1
Y3QgUmVnaW9uOjpTaGFwZTo6SW50ZXJzZWN0T3BlcmF0aW9uIHsKKyAgICBzdGF0aWMgYm9vbCB0
cnlTaW1wbGVPcGVyYXRpb24oY29uc3QgU2hhcGUmIHNoYXBlMSwgY29uc3QgU2hhcGUmIHNoYXBl
MiwgU2hhcGUmIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGlmIChzaGFwZTEuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICByZXN1bHQgPSBTaGFwZSgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2hhcGUyLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgcmVzdWx0ID0gc2hhcGUxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IGNvbnN0IGludCBvcENvZGUgPSAzOworICAgIAorICAgIHN0YXRpYyBjb25zdCBib29sIHNob3Vs
ZEFkZFJlbWFpbmluZ1NlZ21lbnRzRnJvbVNwYW4xID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2hvdWxkQWRkUmVtYWluaW5nU2VnbWVudHNGcm9tU3BhbjIgPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBzaG91bGRBZGRSZW1haW5pbmdTcGFuc0Zyb21TaGFwZTEgPSBmYWxz
ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRBZGRSZW1haW5pbmdTcGFuc0Zyb21TaGFw
ZTIgPSBmYWxzZTsKK307CisKK1JlZ2lvbjo6U2hhcGUgUmVnaW9uOjpTaGFwZTo6aW50ZXJzZWN0
U2hhcGVzKGNvbnN0IFNoYXBlJiBzaGFwZTEsIGNvbnN0IFNoYXBlJiBzaGFwZTIpCit7CisgICAg
cmV0dXJuIHNoYXBlT3BlcmF0aW9uPEludGVyc2VjdE9wZXJhdGlvbj4oc2hhcGUxLCBzaGFwZTIp
OworfQorCitzdHJ1Y3QgUmVnaW9uOjpTaGFwZTo6U3VidHJhY3RPcGVyYXRpb24geworICAgIHN0
YXRpYyBib29sIHRyeVNpbXBsZU9wZXJhdGlvbihjb25zdCBTaGFwZSYgc2hhcGUxLCBjb25zdCBT
aGFwZSYgc2hhcGUyLCBSZWdpb246OlNoYXBlJiByZXN1bHQpCisgICAgeworICAgICAgICAKKyAg
ICAgICAgaWYgKHNoYXBlMS5pc0VtcHR5KCkgfHwgc2hhcGUyLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgcmVzdWx0ID0gU2hhcGUoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHN0
YXRpYyBjb25zdCBpbnQgb3BDb2RlID0gMTsKKyAgICAKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBz
aG91bGRBZGRSZW1haW5pbmdTZWdtZW50c0Zyb21TcGFuMSA9IHRydWU7CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2hvdWxkQWRkUmVtYWluaW5nU2VnbWVudHNGcm9tU3BhbjIgPSBmYWxzZTsKKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRBZGRSZW1haW5pbmdTcGFuc0Zyb21TaGFwZTEgPSB0
cnVlOworICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZEFkZFJlbWFpbmluZ1NwYW5zRnJvbVNo
YXBlMiA9IGZhbHNlOworfTsKKworUmVnaW9uOjpTaGFwZSBSZWdpb246OlNoYXBlOjpzdWJ0cmFj
dFNoYXBlcyhjb25zdCBTaGFwZSYgc2hhcGUxLCBjb25zdCBTaGFwZSYgc2hhcGUyKQoreworICAg
IHJldHVybiBzaGFwZU9wZXJhdGlvbjxTdWJ0cmFjdE9wZXJhdGlvbj4oc2hhcGUxLCBzaGFwZTIp
OworfQorCisjaWZuZGVmIE5ERUJVRwordm9pZCBSZWdpb246OmR1bXAoKSBjb25zdAoreworICAg
IHByaW50ZigiQm91bmRzOiAoJWQsICVkLCAlZCwgJWQpXG4iLAorICAgICAgICAgICBtX2JvdW5k
cy54KCksIG1fYm91bmRzLnkoKSwgbV9ib3VuZHMud2lkdGgoKSwgbV9ib3VuZHMuaGVpZ2h0KCkp
OworICAgIG1fc2hhcGUuZHVtcCgpOworfQorI2VuZGlmCisKK3ZvaWQgUmVnaW9uOjppbnRlcnNl
Y3QoY29uc3QgUmVnaW9uJiByZWdpb24pCit7CisgICAgaWYgKCFtX2JvdW5kcy5pbnRlcnNlY3Rz
KHJlZ2lvbi5tX2JvdW5kcykpIHsKKyAgICAgICAgbV9zaGFwZSA9IFNoYXBlKCk7CisgICAgICAg
IG1fYm91bmRzID0gSW50UmVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU2hh
cGUgaW50ZXJzZWN0ZWRTaGFwZSA9IFNoYXBlOjppbnRlcnNlY3RTaGFwZXMobV9zaGFwZSwgcmVn
aW9uLm1fc2hhcGUpOworCisgICAgbV9zaGFwZS5zd2FwKGludGVyc2VjdGVkU2hhcGUpOworICAg
IG1fYm91bmRzID0gbV9zaGFwZS5ib3VuZHMoKTsKK30KKwordm9pZCBSZWdpb246OnVuaXRlKGNv
bnN0IFJlZ2lvbiYgcmVnaW9uKQoreworICAgIFNoYXBlIHVuaXRlZFNoYXBlID0gU2hhcGU6OnVu
aW9uU2hhcGVzKG1fc2hhcGUsIHJlZ2lvbi5tX3NoYXBlKTsKKworICAgIG1fc2hhcGUuc3dhcCh1
bml0ZWRTaGFwZSk7CisgICAgbV9ib3VuZHMudW5pdGUocmVnaW9uLm1fYm91bmRzKTsKK30KKwor
dm9pZCBSZWdpb246OnN1YnRyYWN0KGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQoreworICAgIFNoYXBl
IHN1YnRyYWN0ZWRTaGFwZSA9IFNoYXBlOjpzdWJ0cmFjdFNoYXBlcyhtX3NoYXBlLCByZWdpb24u
bV9zaGFwZSk7CisKKyAgICBtX3NoYXBlLnN3YXAoc3VidHJhY3RlZFNoYXBlKTsKKyAgICBtX2Jv
dW5kcyA9IG1fc2hhcGUuYm91bmRzKCk7Cit9CisKK3ZvaWQgUmVnaW9uOjp0cmFuc2xhdGUoY29u
c3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIG1fYm91bmRzLm1vdmUob2Zmc2V0KTsKKyAgICBt
X3NoYXBlLnRyYW5zbGF0ZShvZmZzZXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCShyZXZp
c2lvbiA5MTk2NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlZ2lvbi5oIgorCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogLy8gQSByZWdp
b24gY2xhc3MgYmFzZWQgb24gdGhlIHBhcGVyICJTY2FubGluZSBDb2hlcmVudCBTaGFwZSBBbGdl
YnJhIgpAQCAtMzMsOSArMzQsNyBAQAogLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiB1c2VzIHR3byB2
ZWN0b3JzIGluc3RlYWQgb2YgbGlua2VkIGxpc3QsIGFuZAogLy8gYWxzbyBjb21wcmVzc2VzIHJl
Z2lvbnMgd2hlbiBwb3NzaWJsZS4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWdpb246OlJlZ2lvbigpCiB7
CkBAIC00NTIsNSArNDUxLDQgQEAgdm9pZCBSZWdpb246OnRyYW5zbGF0ZShjb25zdCBJbnRTaXpl
JiBvZgogICAgIG1fc2hhcGUudHJhbnNsYXRlKG9mZnNldCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAkocmV2aXNpb24gOTE5NjYpCShmcm9tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5oOjkxOTY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVnaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlZ2lvbl9oCisjZGVmaW5lIFJlZ2lvbl9oCisKKyNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNp
bmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBSZWdpb24gewor
cHVibGljOgorICAgIFJlZ2lvbigpOworICAgIFJlZ2lvbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jik7CisKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fYm91
bmRzOyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHMuaXNFbXB0
eSgpOyB9CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gcmVjdHMoKSBjb25zdDsKKwor
ICAgIHZvaWQgdW5pdGUoY29uc3QgUmVnaW9uJik7CisgICAgdm9pZCBpbnRlcnNlY3QoY29uc3Qg
UmVnaW9uJik7CisgICAgdm9pZCBzdWJ0cmFjdChjb25zdCBSZWdpb24mKTsKKworICAgIHZvaWQg
dHJhbnNsYXRlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKworI2lmbmRlZiBOREVCVUcKKyAg
ICB2b2lkIGR1bXAoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIHN0cnVjdCBTcGFu
IHsKKyAgICAgICAgU3BhbihpbnQgeSwgc2l6ZV90IHNlZ21lbnRJbmRleCkKKyAgICAgICAgICAg
IDogeSh5KSwgc2VnbWVudEluZGV4KHNlZ21lbnRJbmRleCkKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgaW50IHk7CisgICAgICAgIHNpemVfdCBzZWdtZW50SW5kZXg7CisgICAgfTsK
KworICAgIGNsYXNzIFNoYXBlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNoYXBlKCk7CisgICAg
ICAgIFNoYXBlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKworICAgICAgICBXZWJDb3JlOjpJ
bnRSZWN0IGJvdW5kcygpIGNvbnN0OworICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX3NwYW5zLmlzRW1wdHkoKTsgfQorCisgICAgICAgIHR5cGVkZWYgY29uc3QgU3Bhbiog
U3Bhbkl0ZXJhdG9yOworICAgICAgICBTcGFuSXRlcmF0b3Igc3BhbnNfYmVnaW4oKSBjb25zdDsK
KyAgICAgICAgU3Bhbkl0ZXJhdG9yIHNwYW5zX2VuZCgpIGNvbnN0OworICAgICAgICAKKyAgICAg
ICAgdHlwZWRlZiBjb25zdCBpbnQqIFNlZ21lbnRJdGVyYXRvcjsKKyAgICAgICAgU2VnbWVudEl0
ZXJhdG9yIHNlZ21lbnRzX2JlZ2luKFNwYW5JdGVyYXRvcikgY29uc3Q7CisgICAgICAgIFNlZ21l
bnRJdGVyYXRvciBzZWdtZW50c19lbmQoU3Bhbkl0ZXJhdG9yKSBjb25zdDsKKworICAgICAgICBz
dGF0aWMgU2hhcGUgdW5pb25TaGFwZXMoY29uc3QgU2hhcGUmIHNoYXBlMSwgY29uc3QgU2hhcGUm
IHNoYXBlMik7CisgICAgICAgIHN0YXRpYyBTaGFwZSBpbnRlcnNlY3RTaGFwZXMoY29uc3QgU2hh
cGUmIHNoYXBlMSwgY29uc3QgU2hhcGUmIHNoYXBlMik7CisgICAgICAgIHN0YXRpYyBTaGFwZSBz
dWJ0cmFjdFNoYXBlcyhjb25zdCBTaGFwZSYgc2hhcGUxLCBjb25zdCBTaGFwZSYgc2hhcGUyKTsK
KworICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAg
ICAgIHZvaWQgc3dhcChTaGFwZSYpOworCisjaWZuZGVmIE5ERUJVRworICAgICAgICB2b2lkIGR1
bXAoKSBjb25zdDsKKyNlbmRpZgorCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3RydWN0IFVuaW9u
T3BlcmF0aW9uOworICAgICAgICBzdHJ1Y3QgSW50ZXJzZWN0T3BlcmF0aW9uOworICAgICAgICBz
dHJ1Y3QgU3VidHJhY3RPcGVyYXRpb247CisgICAgICAgIAorICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcGVyYXRpb24+CisgICAgICAgIHN0YXRpYyBTaGFwZSBzaGFwZU9wZXJhdGlvbihjb25z
dCBTaGFwZSYgc2hhcGUxLCBjb25zdCBTaGFwZSYgc2hhcGUyKTsKKworICAgICAgICB2b2lkIGFw
cGVuZFNlZ21lbnQoaW50IHgpOworICAgICAgICB2b2lkIGFwcGVuZFNwYW4oaW50IHkpOworICAg
ICAgICB2b2lkIGFwcGVuZFNwYW4oaW50IHksIFNlZ21lbnRJdGVyYXRvciBiZWdpbiwgU2VnbWVu
dEl0ZXJhdG9yIGVuZCk7CisgICAgICAgIHZvaWQgYXBwZW5kU3BhbnMoY29uc3QgU2hhcGUmLCBT
cGFuSXRlcmF0b3IgYmVnaW4sIFNwYW5JdGVyYXRvciBlbmQpOworCisgICAgICAgIGJvb2wgY2Fu
Q29hbGVzY2UoU2VnbWVudEl0ZXJhdG9yIGJlZ2luLCBTZWdtZW50SXRlcmF0b3IgZW5kKTsKKwor
ICAgICAgICAvLyBGSVhNRTogVGhlc2UgdmVjdG9ycyBzaG91bGQgaGF2ZSBpbmxpbmUgc2l6ZXMu
IEZpZ3VyZSBvdXQgYSBnb29kIG9wdGltYWwgdmFsdWUuCisgICAgICAgIFZlY3RvcjxpbnQ+IG1f
c2VnbWVudHM7CisgICAgICAgIFZlY3RvcjxTcGFuPiBtX3NwYW5zOyAgICAgICAgCisgICAgfTsK
KworICAgIFdlYkNvcmU6OkludFJlY3QgbV9ib3VuZHM7CisgICAgU2hhcGUgbV9zaGFwZTsKK307
CisKK3N0YXRpYyBpbmxpbmUgUmVnaW9uIGludGVyc2VjdChjb25zdCBSZWdpb24mIGEsIGNvbnN0
IFJlZ2lvbiYgYikKK3sKKyAgICBSZWdpb24gcmVzdWx0KGEpOworICAgIHJlc3VsdC5pbnRlcnNl
Y3QoYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorc3RhdGljIGlubGluZSBSZWdp
b24gc3VidHJhY3QoY29uc3QgUmVnaW9uJiBhLCBjb25zdCBSZWdpb24mIGIpCit7CisgICAgUmVn
aW9uIHJlc3VsdChhKTsKKyAgICByZXN1bHQuc3VidHJhY3QoYik7CisKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitzdGF0aWMgaW5saW5lIFJlZ2lvbiB0cmFuc2xhdGUoY29uc3QgUmVnaW9uJiBy
ZWdpb24sIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkKK3sKKyAgICBSZWdpb24gcmVz
dWx0KHJlZ2lvbik7CisgICAgcmVzdWx0LnRyYW5zbGF0ZShvZmZzZXQpOworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBSZWdpb25f
aApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgJKHJldmlz
aW9uIDkxOTY2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDI4ICsyNiwyNiBAQAogI2lmbmRlZiBSZWdpb25faAogI2Rl
ZmluZSBSZWdpb25faAogCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotI2luY2x1ZGUgPHZlY3Rvcj4K
LQotbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlZ2lv
biB7CiBwdWJsaWM6CiAgICAgUmVnaW9uKCk7Ci0gICAgUmVnaW9uKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKKyAgICBSZWdpb24oY29uc3QgSW50UmVjdCYpOwogCi0gICAgV2ViQ29yZTo6SW50
UmVjdCBib3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kczsgfQorICAgIEludFJlY3QgYm91
bmRzKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kcy5pc0VtcHR5KCk7IH0KIAotICAgIFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiByZWN0cygpIGNvbnN0OworICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cygpIGNvbnN0
OwogCiAgICAgdm9pZCB1bml0ZShjb25zdCBSZWdpb24mKTsKICAgICB2b2lkIGludGVyc2VjdChj
b25zdCBSZWdpb24mKTsKICAgICB2b2lkIHN1YnRyYWN0KGNvbnN0IFJlZ2lvbiYpOwogCi0gICAg
dm9pZCB0cmFuc2xhdGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHZvaWQgdHJhbnNs
YXRlKGNvbnN0IEludFNpemUmKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAoKSBj
b25zdDsKQEAgLTY3LDkgKzY1LDkgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBTaGFwZSB7CiAgICAg
cHVibGljOgogICAgICAgICBTaGFwZSgpOwotICAgICAgICBTaGFwZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7CisgICAgICAgIFNoYXBlKGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICBXZWJD
b3JlOjpJbnRSZWN0IGJvdW5kcygpIGNvbnN0OworICAgICAgICBJbnRSZWN0IGJvdW5kcygpIGNv
bnN0OwogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3NwYW5zLmlzRW1w
dHkoKTsgfQogCiAgICAgICAgIHR5cGVkZWYgY29uc3QgU3BhbiogU3Bhbkl0ZXJhdG9yOwpAQCAt
ODQsNyArODIsNyBAQCBwcml2YXRlOgogICAgICAgICBzdGF0aWMgU2hhcGUgaW50ZXJzZWN0U2hh
cGVzKGNvbnN0IFNoYXBlJiBzaGFwZTEsIGNvbnN0IFNoYXBlJiBzaGFwZTIpOwogICAgICAgICBz
dGF0aWMgU2hhcGUgc3VidHJhY3RTaGFwZXMoY29uc3QgU2hhcGUmIHNoYXBlMSwgY29uc3QgU2hh
cGUmIHNoYXBlMik7CiAKLSAgICAgICAgdm9pZCB0cmFuc2xhdGUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOworICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBJbnRTaXplJik7CiAgICAgICAg
IHZvaWQgc3dhcChTaGFwZSYpOwogCiAjaWZuZGVmIE5ERUJVRwpAQCAtMTExLDcgKzEwOSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxTcGFuPiBtX3NwYW5zOyAgICAgICAgCiAgICAgfTsK
IAotICAgIFdlYkNvcmU6OkludFJlY3QgbV9ib3VuZHM7CisgICAgSW50UmVjdCBtX2JvdW5kczsK
ICAgICBTaGFwZSBtX3NoYXBlOwogfTsKIApAQCAtMTMxLDcgKzEyOSw3IEBAIHN0YXRpYyBpbmxp
bmUgUmVnaW9uIHN1YnRyYWN0KGNvbnN0IFJlZ2kKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1z
dGF0aWMgaW5saW5lIFJlZ2lvbiB0cmFuc2xhdGUoY29uc3QgUmVnaW9uJiByZWdpb24sIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkKK3N0YXRpYyBpbmxpbmUgUmVnaW9uIHRyYW5zbGF0
ZShjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQogewogICAgIFJl
Z2lvbiByZXN1bHQocmVnaW9uKTsKICAgICByZXN1bHQudHJhbnNsYXRlKG9mZnNldCk7CkBAIC0x
MzksNiArMTM3LDYgQEAgc3RhdGljIGlubGluZSBSZWdpb24gdHJhbnNsYXRlKGNvbnN0IFJlZwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUmVnaW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDkyMDA4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTEtMDctMjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBNb3ZlIFJlZ2lvbiBjb2RlIGZyb20gV2ViS2l0MiB0byBXZWJDb3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTM5MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViS2l0Mi5wcm86Cisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdp
bi9XZWJLaXQyLnZjcHJvajoKKyAgICAgICAgVXBkYXRlIHByb2plY3QgZmlsZXMuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9SZWdpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFBsYXRmb3JtL1Jl
Z2lvbi5oOiBSZW1vdmVkLgorICAgICAgICBSZW1vdmUgUmVnaW9uIGZpbGVzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Vi
a2l0V2ViVmlld0Jhc2VEcmF3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4v
V2ViVmlldy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5oOgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBuYW1lc3BhY2UgYW5kIGluY2x1ZGUgdHlwZS4K
KwogMjAxMS0wNy0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIFBhc3MgdGhlIEhUVFAgcmVmZXJyZXIgaGVhZGVyIGZvciBVUkxzIGxvYWRlZCBieSBw
bHVnLWlucwpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDkxOTY2KQorKysgU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEs
NiBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAKICAgICBQbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAg
IFBsYXRmb3JtL01vZHVsZS5jcHAKLSAgICBQbGF0Zm9ybS9SZWdpb24uY3BwCiAgICAgUGxhdGZv
cm0vUnVuTG9vcC5jcHAKICAgICBQbGF0Zm9ybS9Xb3JrUXVldWUuY3BwCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiA5MTk2NikKKysrIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsOCArMTc3LDYgQEAgbGlid2Via2l0Mmd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSQogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL01vZHVs
ZS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL01vZHVsZS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9QbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmggXAotCVNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL1JlZ2lvbi5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lv
bi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SdW5Mb29wLmNwcCBcCiAJU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vUnVuTG9vcC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9TaGFy
ZWRNZW1vcnkuaCBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybwkocmV2aXNpb24gOTE5NjYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw2IEBA
IEhFQURFUlMgKz0gXAogICAgIFBsYXRmb3JtL0xvZ2dpbmcuaCBcCiAgICAgUGxhdGZvcm0vTW9k
dWxlLmggXAogICAgIFBsYXRmb3JtL1BsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCBcCi0gICAg
UGxhdGZvcm0vUmVnaW9uLmggXAogICAgIFBsYXRmb3JtL1J1bkxvb3AuaCBcCiAgICAgUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmggXAogICAgIFBsYXRmb3JtL1dvcmtJdGVtLmggXApAQCAtMzMyLDcg
KzMzMSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIFBsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAgXAogICAgIFBsYXRmb3JtL0xvZ2dpbmcuY3BwIFwKICAgICBQbGF0Zm9ybS9N
b2R1bGUuY3BwIFwKLSAgICBQbGF0Zm9ybS9SZWdpb24uY3BwIFwKICAgICBQbGF0Zm9ybS9SdW5M
b29wLmNwcCBcCiAgICAgUGxhdGZvcm0vV29ya1F1ZXVlLmNwcCBcCiAgICAgUGxhdGZvcm0vcXQv
TW9kdWxlUXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vUmVnaW9uLmNwcAkocmV2aXNp
b24gOTE5NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9SZWdpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQ1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLS8vIEEg
cmVnaW9uIGNsYXNzIGJhc2VkIG9uIHRoZSBwYXBlciAiU2NhbmxpbmUgQ29oZXJlbnQgU2hhcGUg
QWxnZWJyYSIKLS8vIGJ5IEpvbmF0aGFuIEUuIFN0ZWluaGFydCBmcm9tIHRoZSBib29rICJHcmFw
aGljcyBHZW1zIElJIi4KLS8vCi0vLyBUaGlzIGltcGxlbWVudGF0aW9uIHVzZXMgdHdvIHZlY3Rv
cnMgaW5zdGVhZCBvZiBsaW5rZWQgbGlzdCwgYW5kCi0vLyBhbHNvIGNvbXByZXNzZXMgcmVnaW9u
cyB3aGVuIHBvc3NpYmxlLgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLVJlZ2lvbjo6UmVnaW9uKCkKLXsKLX0KLQotUmVnaW9uOjpSZWdpb24oY29u
c3QgSW50UmVjdCYgcmVjdCkKLSAgICA6IG1fYm91bmRzKHJlY3QpCi0gICAgLCBtX3NoYXBlKHJl
Y3QpCi17Ci19Ci0KLVZlY3RvcjxJbnRSZWN0PiBSZWdpb246OnJlY3RzKCkgY29uc3QKLXsKLSAg
ICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7Ci0KLSAgICBmb3IgKFNoYXBlOjpTcGFuSXRlcmF0b3Ig
c3BhbiA9IG1fc2hhcGUuc3BhbnNfYmVnaW4oKSwgZW5kID0gbV9zaGFwZS5zcGFuc19lbmQoKTsg
c3BhbiAhPSBlbmQgJiYgc3BhbiArIDEgIT0gZW5kOyArK3NwYW4pIHsKLSAgICAgICAgaW50IHkg
PSBzcGFuLT55OwotICAgICAgICBpbnQgaGVpZ2h0ID0gKHNwYW4gKyAxKS0+eSAtIHk7Ci0KLSAg
ICAgICAgZm9yIChTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIHNlZ21lbnQgPSBtX3NoYXBlLnNlZ21l
bnRzX2JlZ2luKHNwYW4pLCBlbmQgPSBtX3NoYXBlLnNlZ21lbnRzX2VuZChzcGFuKTsgc2VnbWVu
dCAhPSBlbmQgJiYgc2VnbWVudCArIDEgIT0gZW5kOyBzZWdtZW50ICs9IDIpIHsKLSAgICAgICAg
ICAgIGludCB4ID0gKnNlZ21lbnQ7Ci0gICAgICAgICAgICBpbnQgd2lkdGggPSAqKHNlZ21lbnQg
KyAxKSAtIHg7Ci0KLSAgICAgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KHgsIHksIHdpZHRo
LCBoZWlnaHQpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZWN0czsKLX0KLQot
UmVnaW9uOjpTaGFwZTo6U2hhcGUoKQotewotfQotCi1SZWdpb246OlNoYXBlOjpTaGFwZShjb25z
dCBJbnRSZWN0JiByZWN0KQotewotICAgIGFwcGVuZFNwYW4ocmVjdC55KCkpOwotICAgIGFwcGVu
ZFNlZ21lbnQocmVjdC54KCkpOwotICAgIGFwcGVuZFNlZ21lbnQocmVjdC5tYXhYKCkpOwotICAg
IGFwcGVuZFNwYW4ocmVjdC5tYXhZKCkpOwotfQotCi12b2lkIFJlZ2lvbjo6U2hhcGU6OmFwcGVu
ZFNwYW4oaW50IHkpCi17Ci0gICAgbV9zcGFucy5hcHBlbmQoU3Bhbih5LCBtX3NlZ21lbnRzLnNp
emUoKSkpOwotfQotCi1ib29sIFJlZ2lvbjo6U2hhcGU6OmNhbkNvYWxlc2NlKFNlZ21lbnRJdGVy
YXRvciBiZWdpbiwgU2VnbWVudEl0ZXJhdG9yIGVuZCkKLXsKLSAgICBpZiAobV9zcGFucy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFNlZ21lbnRJdGVyYXRvciBsYXN0
U3BhbkJlZ2luID0gbV9zZWdtZW50cy5kYXRhKCkgKyBtX3NwYW5zLmxhc3QoKS5zZWdtZW50SW5k
ZXg7Ci0gICAgU2VnbWVudEl0ZXJhdG9yIGxhc3RTcGFuRW5kID0gbV9zZWdtZW50cy5kYXRhKCkg
KyBtX3NlZ21lbnRzLnNpemUoKTsKLQotICAgIC8vIENoZWNrIGlmIGJvdGggc3BhbnMgaGF2ZSBh
biBlcXVhbCBudW1iZXIgb2Ygc2VnbWVudHMuCi0gICAgaWYgKGxhc3RTcGFuRW5kIC0gbGFzdFNw
YW5CZWdpbiAhPSBlbmQgLSBiZWdpbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
Q2hlY2sgaWYgYm90aCBzcGFucyBhcmUgZXF1YWwuCi0gICAgaWYgKCFzdGQ6OmVxdWFsKGJlZ2lu
LCBlbmQsIGxhc3RTcGFuQmVnaW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBT
aW5jZSB0aGUgc2VnbWVudHMgYXJlIGVxdWFsIHRoZSBzZWNvbmQgc2VnbWVudCBjYW4ganVzdCBi
ZSBpZ25vcmVkLgotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFJlZ2lvbjo6U2hhcGU6OmFw
cGVuZFNwYW4oaW50IHksIFNlZ21lbnRJdGVyYXRvciBiZWdpbiwgU2VnbWVudEl0ZXJhdG9yIGVu
ZCkKLXsKLSAgICBpZiAoY2FuQ29hbGVzY2UoYmVnaW4sIGVuZCkpCi0gICAgICAgIHJldHVybjsK
LSAgCi0gICAgYXBwZW5kU3Bhbih5KTsKLSAgICBtX3NlZ21lbnRzLmFwcGVuZFJhbmdlKGJlZ2lu
LCBlbmQpOwotfQotCi12b2lkIFJlZ2lvbjo6U2hhcGU6OmFwcGVuZFNwYW5zKGNvbnN0IFNoYXBl
JiBzaGFwZSwgU3Bhbkl0ZXJhdG9yIGJlZ2luLCBTcGFuSXRlcmF0b3IgZW5kKQotewotICAgIGZv
ciAoU3Bhbkl0ZXJhdG9yIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgYXBw
ZW5kU3BhbihpdC0+eSwgc2hhcGUuc2VnbWVudHNfYmVnaW4oaXQpLCBzaGFwZS5zZWdtZW50c19l
bmQoaXQpKTsKLX0KLQotdm9pZCBSZWdpb246OlNoYXBlOjphcHBlbmRTZWdtZW50KGludCB4KQot
ewotICAgIG1fc2VnbWVudHMuYXBwZW5kKHgpOwotfQotCi1SZWdpb246OlNoYXBlOjpTcGFuSXRl
cmF0b3IgUmVnaW9uOjpTaGFwZTo6c3BhbnNfYmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBt
X3NwYW5zLmRhdGEoKTsKLX0KLQotUmVnaW9uOjpTaGFwZTo6U3Bhbkl0ZXJhdG9yIFJlZ2lvbjo6
U2hhcGU6OnNwYW5zX2VuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3BhbnMuZGF0YSgpICsg
bV9zcGFucy5zaXplKCk7Ci19Ci0KLVJlZ2lvbjo6U2hhcGU6OlNlZ21lbnRJdGVyYXRvciBSZWdp
b246OlNoYXBlOjpzZWdtZW50c19iZWdpbihTcGFuSXRlcmF0b3IgaXQpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKGl0ID49IG1fc3BhbnMuZGF0YSgpKTsKLSAgICBBU1NFUlQoaXQgPCBtX3NwYW5zLmRh
dGEoKSArIG1fc3BhbnMuc2l6ZSgpKTsKLQotICAgIC8vIENoZWNrIGlmIHRoaXMgc3BhbiBoYXMg
YW55IHNlZ21lbnRzLgotICAgIGlmIChpdC0+c2VnbWVudEluZGV4ID09IG1fc2VnbWVudHMuc2l6
ZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiAmbV9zZWdtZW50c1tpdC0+c2Vn
bWVudEluZGV4XTsKLX0KLQotUmVnaW9uOjpTaGFwZTo6U2VnbWVudEl0ZXJhdG9yIFJlZ2lvbjo6
U2hhcGU6OnNlZ21lbnRzX2VuZChTcGFuSXRlcmF0b3IgaXQpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KGl0ID49IG1fc3BhbnMuZGF0YSgpKTsKLSAgICBBU1NFUlQoaXQgPCBtX3NwYW5zLmRhdGEoKSAr
IG1fc3BhbnMuc2l6ZSgpKTsKLQotICAgIC8vIENoZWNrIGlmIHRoaXMgc3BhbiBoYXMgYW55IHNl
Z21lbnRzLgotICAgIGlmIChpdC0+c2VnbWVudEluZGV4ID09IG1fc2VnbWVudHMuc2l6ZSgpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChpdCArIDEgPCBtX3NwYW5zLmRhdGEoKSAr
IG1fc3BhbnMuc2l6ZSgpKTsKLSAgICBzaXplX3Qgc2VnbWVudEluZGV4ID0gKGl0ICsgMSktPnNl
Z21lbnRJbmRleDsKLQotICAgIEFTU0VSVChzZWdtZW50SW5kZXggPD0gbV9zZWdtZW50cy5zaXpl
KCkpOwotICAgIHJldHVybiBtX3NlZ21lbnRzLmRhdGEoKSArIHNlZ21lbnRJbmRleDsKLX0KLQot
I2lmbmRlZiBOREVCVUcKLXZvaWQgUmVnaW9uOjpTaGFwZTo6ZHVtcCgpIGNvbnN0Ci17Ci0gICAg
Zm9yIChTaGFwZTo6U3Bhbkl0ZXJhdG9yIHNwYW4gPSBzcGFuc19iZWdpbigpLCBlbmQgPSBzcGFu
c19lbmQoKTsgc3BhbiAhPSBlbmQ7ICsrc3BhbikgewotICAgICAgICBwcmludGYoIiU2ZDogKCIs
IHNwYW4tPnkpOwotCi0gICAgICAgIGZvciAoU2hhcGU6OlNlZ21lbnRJdGVyYXRvciBzZWdtZW50
ID0gc2VnbWVudHNfYmVnaW4oc3BhbiksIGVuZCA9IHNlZ21lbnRzX2VuZChzcGFuKTsgc2VnbWVu
dCAhPSBlbmQ7ICsrc2VnbWVudCkKLSAgICAgICAgICAgIHByaW50ZigiJWQgIiwgKnNlZ21lbnQp
OwotICAgICAgICBwcmludGYoIilcbiIpOwotICAgIH0KLQotICAgIHByaW50ZigiXG4iKTsKLX0K
LSNlbmRpZgotCi1JbnRSZWN0IFJlZ2lvbjo6U2hhcGU6OmJvdW5kcygpIGNvbnN0Ci17Ci0gICAg
aWYgKGlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLQotICAgIFNwYW5JdGVy
YXRvciBzcGFuID0gc3BhbnNfYmVnaW4oKTsKLSAgICBpbnQgbWluWSA9IHNwYW4tPnk7Ci0KLSAg
ICBTcGFuSXRlcmF0b3IgbGFzdFNwYW4gPSBzcGFuc19lbmQoKSAtIDE7Ci0gICAgaW50IG1heFkg
PSBsYXN0U3Bhbi0+eTsKLQotICAgIGludCBtaW5YID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+
OjptYXgoKTsKLSAgICBpbnQgbWF4WCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7
Ci0KLSAgICB3aGlsZSAoc3BhbiAhPSBsYXN0U3BhbikgewotICAgICAgICBTZWdtZW50SXRlcmF0
b3IgZmlyc3RTZWdtZW50ID0gc2VnbWVudHNfYmVnaW4oc3Bhbik7Ci0gICAgICAgIFNlZ21lbnRJ
dGVyYXRvciBsYXN0U2VnbWVudCA9IHNlZ21lbnRzX2VuZChzcGFuKSAtIDE7Ci0KLSAgICAgICAg
aWYgKGZpcnN0U2VnbWVudCAmJiBsYXN0U2VnbWVudCkgewotICAgICAgICAgICAgQVNTRVJUKGZp
cnN0U2VnbWVudCAhPSBsYXN0U2VnbWVudCk7Ci0KLSAgICAgICAgICAgIGlmICgqZmlyc3RTZWdt
ZW50IDwgbWluWCkKLSAgICAgICAgICAgICAgICBtaW5YID0gKmZpcnN0U2VnbWVudDsKLQotICAg
ICAgICAgICAgaWYgKCpsYXN0U2VnbWVudCA+IG1heFgpCi0gICAgICAgICAgICAgICAgbWF4WCA9
ICpsYXN0U2VnbWVudDsKLSAgICAgICAgfQotCi0gICAgICAgICsrc3BhbjsKLSAgICB9Ci0KLSAg
ICBBU1NFUlQobWluWCA8PSBtYXhYKTsKLSAgICBBU1NFUlQobWluWSA8PSBtYXhZKTsKLQotICAg
IHJldHVybiBJbnRSZWN0KG1pblgsIG1pblksIG1heFggLSBtaW5YLCBtYXhZIC0gbWluWSk7Ci19
Ci0KLXZvaWQgUmVnaW9uOjpTaGFwZTo6dHJhbnNsYXRlKGNvbnN0IEludFNpemUmIG9mZnNldCkK
LXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIG1fc2VnbWVudHNbaV0gKz0gb2Zmc2V0LndpZHRoKCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3NwYW5zLnNpemUoKTsgKytpKQotICAgICAgICBtX3NwYW5zW2ldLnkgKz0g
b2Zmc2V0LmhlaWdodCgpOwotfQotCi12b2lkIFJlZ2lvbjo6U2hhcGU6OnN3YXAoU2hhcGUmIG90
aGVyKQotewotICAgIG1fc2VnbWVudHMuc3dhcChvdGhlci5tX3NlZ21lbnRzKTsKLSAgICBtX3Nw
YW5zLnN3YXAob3RoZXIubV9zcGFucyk7Ci19Ci0KLWVudW0gewotICAgIFNoYXBlMSwKLSAgICBT
aGFwZTIsCi19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb24+Ci1SZWdpb246OlNoYXBl
IFJlZ2lvbjo6U2hhcGU6OnNoYXBlT3BlcmF0aW9uKGNvbnN0IFNoYXBlJiBzaGFwZTEsIGNvbnN0
IFNoYXBlJiBzaGFwZTIpCi17Ci0gICAgQ09NUElMRV9BU1NFUlQoISghT3BlcmF0aW9uOjpzaG91
bGRBZGRSZW1haW5pbmdTZWdtZW50c0Zyb21TcGFuMSAmJiBPcGVyYXRpb246OnNob3VsZEFkZFJl
bWFpbmluZ1NlZ21lbnRzRnJvbVNwYW4yKSwgaW52YWxpZF9zZWdtZW50X2NvbWJpbmF0aW9uKTsK
LSAgICBDT01QSUxFX0FTU0VSVCghKCFPcGVyYXRpb246OnNob3VsZEFkZFJlbWFpbmluZ1NwYW5z
RnJvbVNoYXBlMSAmJiBPcGVyYXRpb246OnNob3VsZEFkZFJlbWFpbmluZ1NwYW5zRnJvbVNoYXBl
MiksIGludmFsaWRfc3Bhbl9jb21iaW5hdGlvbik7Ci0KLSAgICBTaGFwZSByZXN1bHQ7Ci0gICAg
aWYgKE9wZXJhdGlvbjo6dHJ5U2ltcGxlT3BlcmF0aW9uKHNoYXBlMSwgc2hhcGUyLCByZXN1bHQp
KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgU3Bhbkl0ZXJhdG9yIHNwYW5zMSA9IHNo
YXBlMS5zcGFuc19iZWdpbigpOwotICAgIFNwYW5JdGVyYXRvciBzcGFuczFFbmQgPSBzaGFwZTEu
c3BhbnNfZW5kKCk7Ci0KLSAgICBTcGFuSXRlcmF0b3Igc3BhbnMyID0gc2hhcGUyLnNwYW5zX2Jl
Z2luKCk7Ci0gICAgU3Bhbkl0ZXJhdG9yIHNwYW5zMkVuZCA9IHNoYXBlMi5zcGFuc19lbmQoKTsK
LQotICAgIFNlZ21lbnRJdGVyYXRvciBzZWdtZW50czEgPSAwOwotICAgIFNlZ21lbnRJdGVyYXRv
ciBzZWdtZW50czFFbmQgPSAwOwotCi0gICAgU2VnbWVudEl0ZXJhdG9yIHNlZ21lbnRzMiA9IDA7
Ci0gICAgU2VnbWVudEl0ZXJhdG9yIHNlZ21lbnRzMkVuZCA9IDA7Ci0KLSAgICAvLyBJdGVyYXRl
IG92ZXIgYWxsIHNwYW5zLgotICAgIHdoaWxlIChzcGFuczEgIT0gc3BhbnMxRW5kICYmIHNwYW5z
MiAhPSBzcGFuczJFbmQpIHsKLSAgICAgICAgaW50IHkgPSAwOwotICAgICAgICBpbnQgdGVzdCA9
IHNwYW5zMS0+eSAtIHNwYW5zMi0+eTsKLQotICAgICAgICBpZiAodGVzdCA8PSAwKSB7Ci0gICAg
ICAgICAgICB5ID0gc3BhbnMxLT55OwotCi0gICAgICAgICAgICBzZWdtZW50czEgPSBzaGFwZTEu
c2VnbWVudHNfYmVnaW4oc3BhbnMxKTsKLSAgICAgICAgICAgIHNlZ21lbnRzMUVuZCA9IHNoYXBl
MS5zZWdtZW50c19lbmQoc3BhbnMxKTsKLSAgICAgICAgICAgICsrc3BhbnMxOwotICAgICAgICB9
Ci0gICAgICAgIGlmICh0ZXN0ID49IDApIHsKLSAgICAgICAgICAgIHkgPSBzcGFuczItPnk7Ci0K
LSAgICAgICAgICAgIHNlZ21lbnRzMiA9IHNoYXBlMi5zZWdtZW50c19iZWdpbihzcGFuczIpOwot
ICAgICAgICAgICAgc2VnbWVudHMyRW5kID0gc2hhcGUyLnNlZ21lbnRzX2VuZChzcGFuczIpOwot
ICAgICAgICAgICAgKytzcGFuczI7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgZmxhZyA9IDA7
Ci0gICAgICAgIGludCBvbGRGbGFnID0gMDsKLQotICAgICAgICBTZWdtZW50SXRlcmF0b3IgczEg
PSBzZWdtZW50czE7Ci0gICAgICAgIFNlZ21lbnRJdGVyYXRvciBzMiA9IHNlZ21lbnRzMjsKLQot
ICAgICAgICBWZWN0b3I8aW50PiBzZWdtZW50czsKLQotICAgICAgICAvLyBOb3cgaXRlcmF0ZSBv
dmVyIHRoZSBzZWdtZW50cyBpbiBlYWNoIHNwYW4gYW5kIGNvbnN0cnVjdCBhIG5ldyB2ZWN0b3Ig
b2Ygc2VnbWVudHMuCi0gICAgICAgIHdoaWxlIChzMSAhPSBzZWdtZW50czFFbmQgJiYgczIgIT0g
c2VnbWVudHMyRW5kKSB7Ci0gICAgICAgICAgICBpbnQgdGVzdCA9ICpzMSAtICpzMjsKLSAgICAg
ICAgICAgIGludCB4OwotCi0gICAgICAgICAgICBpZiAodGVzdCA8PSAwKSB7Ci0gICAgICAgICAg
ICAgICAgeCA9ICpzMTsKLSAgICAgICAgICAgICAgICBmbGFnID0gZmxhZyBeIDE7Ci0gICAgICAg
ICAgICAgICAgKytzMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0ZXN0ID49IDAp
IHsKLSAgICAgICAgICAgICAgICB4ID0gKnMyOwotICAgICAgICAgICAgICAgIGZsYWcgPSBmbGFn
IF4gMjsKLSAgICAgICAgICAgICAgICArK3MyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoZmxhZyA9PSBPcGVyYXRpb246Om9wQ29kZSB8fCBvbGRGbGFnID09IE9wZXJhdGlvbjo6
b3BDb2RlKQotICAgICAgICAgICAgICAgIHNlZ21lbnRzLmFwcGVuZCh4KTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgb2xkRmxhZyA9IGZsYWc7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBB
ZGQgYW55IHJlbWFpbmluZyBzZWdtZW50cy4KLSAgICAgICAgaWYgKE9wZXJhdGlvbjo6c2hvdWxk
QWRkUmVtYWluaW5nU2VnbWVudHNGcm9tU3BhbjEgJiYgczEgIT0gc2VnbWVudHMxRW5kKQotICAg
ICAgICAgICAgc2VnbWVudHMuYXBwZW5kUmFuZ2UoczEsIHNlZ21lbnRzMUVuZCk7Ci0gICAgICAg
IGVsc2UgaWYgKE9wZXJhdGlvbjo6c2hvdWxkQWRkUmVtYWluaW5nU2VnbWVudHNGcm9tU3BhbjIg
JiYgczIgIT0gc2VnbWVudHMyRW5kKQotICAgICAgICAgICAgc2VnbWVudHMuYXBwZW5kUmFuZ2Uo
czIsIHNlZ21lbnRzMkVuZCk7Ci0KLSAgICAgICAgLy8gQWRkIHRoZSBzcGFuLgotICAgICAgICBp
ZiAoIXNlZ21lbnRzLmlzRW1wdHkoKSB8fCAhcmVzdWx0LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmRTcGFuKHksIHNlZ21lbnRzLmRhdGEoKSwgc2VnbWVudHMuZGF0YSgpICsg
c2VnbWVudHMuc2l6ZSgpKTsKLSAgICB9Ci0KLSAgICAvLyBBZGQgYW55IHJlbWFpbmluZyBzcGFu
cy4KLSAgICBpZiAoT3BlcmF0aW9uOjpzaG91bGRBZGRSZW1haW5pbmdTcGFuc0Zyb21TaGFwZTEg
JiYgc3BhbnMxICE9IHNwYW5zMUVuZCkKLSAgICAgICAgcmVzdWx0LmFwcGVuZFNwYW5zKHNoYXBl
MSwgc3BhbnMxLCBzcGFuczFFbmQpOwotICAgIGVsc2UgaWYgKE9wZXJhdGlvbjo6c2hvdWxkQWRk
UmVtYWluaW5nU3BhbnNGcm9tU2hhcGUyICYmIHNwYW5zMiAhPSBzcGFuczJFbmQpCi0gICAgICAg
IHJlc3VsdC5hcHBlbmRTcGFucyhzaGFwZTIsIHNwYW5zMiwgc3BhbnMyRW5kKTsKLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLXN0cnVjdCBSZWdpb246OlNoYXBlOjpVbmlvbk9wZXJhdGlvbiB7
Ci0gICAgc3RhdGljIGJvb2wgdHJ5U2ltcGxlT3BlcmF0aW9uKGNvbnN0IFNoYXBlJiBzaGFwZTEs
IGNvbnN0IFNoYXBlJiBzaGFwZTIsIFNoYXBlJiByZXN1bHQpCi0gICAgewotICAgICAgICBpZiAo
c2hhcGUxLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gc2hhcGUyOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChzaGFw
ZTIuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBzaGFwZTE7Ci0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IG9wQ29kZSA9IDA7Ci0KLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzaG91bGRBZGRSZW1haW5pbmdTZWdtZW50c0Zyb21TcGFuMSA9IHRydWU7Ci0gICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2hvdWxkQWRkUmVtYWluaW5nU2VnbWVudHNGcm9tU3BhbjIgPSB0cnVl
OwotICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZEFkZFJlbWFpbmluZ1NwYW5zRnJvbVNoYXBl
MSA9IHRydWU7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkQWRkUmVtYWluaW5nU3BhbnNG
cm9tU2hhcGUyID0gdHJ1ZTsKLX07Ci0KLVJlZ2lvbjo6U2hhcGUgUmVnaW9uOjpTaGFwZTo6dW5p
b25TaGFwZXMoY29uc3QgU2hhcGUmIHNoYXBlMSwgY29uc3QgU2hhcGUmIHNoYXBlMikKLXsKLSAg
ICByZXR1cm4gc2hhcGVPcGVyYXRpb248VW5pb25PcGVyYXRpb24+KHNoYXBlMSwgc2hhcGUyKTsK
LX0KLQotc3RydWN0IFJlZ2lvbjo6U2hhcGU6OkludGVyc2VjdE9wZXJhdGlvbiB7Ci0gICAgc3Rh
dGljIGJvb2wgdHJ5U2ltcGxlT3BlcmF0aW9uKGNvbnN0IFNoYXBlJiBzaGFwZTEsIGNvbnN0IFNo
YXBlJiBzaGFwZTIsIFNoYXBlJiByZXN1bHQpCi0gICAgewotICAgICAgICBpZiAoc2hhcGUxLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gU2hhcGUoKTsKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNoYXBlMi5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIHJlc3VsdCA9IHNoYXBlMTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAot
ICAgIHN0YXRpYyBjb25zdCBpbnQgb3BDb2RlID0gMzsKLSAgICAKLSAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzaG91bGRBZGRSZW1haW5pbmdTZWdtZW50c0Zyb21TcGFuMSA9IGZhbHNlOwotICAgIHN0
YXRpYyBjb25zdCBib29sIHNob3VsZEFkZFJlbWFpbmluZ1NlZ21lbnRzRnJvbVNwYW4yID0gZmFs
c2U7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkQWRkUmVtYWluaW5nU3BhbnNGcm9tU2hh
cGUxID0gZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkQWRkUmVtYWluaW5nU3Bh
bnNGcm9tU2hhcGUyID0gZmFsc2U7Ci19OwotCi1SZWdpb246OlNoYXBlIFJlZ2lvbjo6U2hhcGU6
OmludGVyc2VjdFNoYXBlcyhjb25zdCBTaGFwZSYgc2hhcGUxLCBjb25zdCBTaGFwZSYgc2hhcGUy
KQotewotICAgIHJldHVybiBzaGFwZU9wZXJhdGlvbjxJbnRlcnNlY3RPcGVyYXRpb24+KHNoYXBl
MSwgc2hhcGUyKTsKLX0KLQotc3RydWN0IFJlZ2lvbjo6U2hhcGU6OlN1YnRyYWN0T3BlcmF0aW9u
IHsKLSAgICBzdGF0aWMgYm9vbCB0cnlTaW1wbGVPcGVyYXRpb24oY29uc3QgU2hhcGUmIHNoYXBl
MSwgY29uc3QgU2hhcGUmIHNoYXBlMiwgUmVnaW9uOjpTaGFwZSYgcmVzdWx0KQotICAgIHsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChzaGFwZTEuaXNFbXB0eSgpIHx8IHNoYXBlMi5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFNoYXBlKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAg
ICAKLSAgICBzdGF0aWMgY29uc3QgaW50IG9wQ29kZSA9IDE7Ci0gICAgCi0gICAgc3RhdGljIGNv
bnN0IGJvb2wgc2hvdWxkQWRkUmVtYWluaW5nU2VnbWVudHNGcm9tU3BhbjEgPSB0cnVlOwotICAg
IHN0YXRpYyBjb25zdCBib29sIHNob3VsZEFkZFJlbWFpbmluZ1NlZ21lbnRzRnJvbVNwYW4yID0g
ZmFsc2U7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkQWRkUmVtYWluaW5nU3BhbnNGcm9t
U2hhcGUxID0gdHJ1ZTsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRBZGRSZW1haW5pbmdT
cGFuc0Zyb21TaGFwZTIgPSBmYWxzZTsKLX07Ci0KLVJlZ2lvbjo6U2hhcGUgUmVnaW9uOjpTaGFw
ZTo6c3VidHJhY3RTaGFwZXMoY29uc3QgU2hhcGUmIHNoYXBlMSwgY29uc3QgU2hhcGUmIHNoYXBl
MikKLXsKLSAgICByZXR1cm4gc2hhcGVPcGVyYXRpb248U3VidHJhY3RPcGVyYXRpb24+KHNoYXBl
MSwgc2hhcGUyKTsKLX0KLQotI2lmbmRlZiBOREVCVUcKLXZvaWQgUmVnaW9uOjpkdW1wKCkgY29u
c3QKLXsKLSAgICBwcmludGYoIkJvdW5kczogKCVkLCAlZCwgJWQsICVkKVxuIiwKLSAgICAgICAg
ICAgbV9ib3VuZHMueCgpLCBtX2JvdW5kcy55KCksIG1fYm91bmRzLndpZHRoKCksIG1fYm91bmRz
LmhlaWdodCgpKTsKLSAgICBtX3NoYXBlLmR1bXAoKTsKLX0KLSNlbmRpZgotCi12b2lkIFJlZ2lv
bjo6aW50ZXJzZWN0KGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQotewotICAgIGlmICghbV9ib3VuZHMu
aW50ZXJzZWN0cyhyZWdpb24ubV9ib3VuZHMpKSB7Ci0gICAgICAgIG1fc2hhcGUgPSBTaGFwZSgp
OwotICAgICAgICBtX2JvdW5kcyA9IEludFJlY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIFNoYXBlIGludGVyc2VjdGVkU2hhcGUgPSBTaGFwZTo6aW50ZXJzZWN0U2hhcGVzKG1f
c2hhcGUsIHJlZ2lvbi5tX3NoYXBlKTsKLQotICAgIG1fc2hhcGUuc3dhcChpbnRlcnNlY3RlZFNo
YXBlKTsKLSAgICBtX2JvdW5kcyA9IG1fc2hhcGUuYm91bmRzKCk7Ci19Ci0KLXZvaWQgUmVnaW9u
Ojp1bml0ZShjb25zdCBSZWdpb24mIHJlZ2lvbikKLXsKLSAgICBTaGFwZSB1bml0ZWRTaGFwZSA9
IFNoYXBlOjp1bmlvblNoYXBlcyhtX3NoYXBlLCByZWdpb24ubV9zaGFwZSk7Ci0KLSAgICBtX3No
YXBlLnN3YXAodW5pdGVkU2hhcGUpOwotICAgIG1fYm91bmRzLnVuaXRlKHJlZ2lvbi5tX2JvdW5k
cyk7Ci19Ci0KLXZvaWQgUmVnaW9uOjpzdWJ0cmFjdChjb25zdCBSZWdpb24mIHJlZ2lvbikKLXsK
LSAgICBTaGFwZSBzdWJ0cmFjdGVkU2hhcGUgPSBTaGFwZTo6c3VidHJhY3RTaGFwZXMobV9zaGFw
ZSwgcmVnaW9uLm1fc2hhcGUpOwotCi0gICAgbV9zaGFwZS5zd2FwKHN1YnRyYWN0ZWRTaGFwZSk7
Ci0gICAgbV9ib3VuZHMgPSBtX3NoYXBlLmJvdW5kcygpOwotfQotCi12b2lkIFJlZ2lvbjo6dHJh
bnNsYXRlKGNvbnN0IEludFNpemUmIG9mZnNldCkKLXsKLSAgICBtX2JvdW5kcy5tb3ZlKG9mZnNl
dCk7Ci0gICAgbV9zaGFwZS50cmFuc2xhdGUob2Zmc2V0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5oCShyZXZpc2lvbiA5MTk2NikK
KysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1JlZ2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWdpb25faAotI2RlZmlu
ZSBSZWdpb25faAotCi0jaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotCi0jaW5jbHVkZSA8dmVjdG9yPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgUmVnaW9uIHsKLXB1YmxpYzoKLSAgICBSZWdpb24oKTsKLSAgICBSZWdpb24oY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpOwotCi0gICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kczsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYm91bmRzLmlzRW1wdHkoKTsgfQotCi0gICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IHJl
Y3RzKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHVuaXRlKGNvbnN0IFJlZ2lvbiYpOwotICAgIHZvaWQg
aW50ZXJzZWN0KGNvbnN0IFJlZ2lvbiYpOwotICAgIHZvaWQgc3VidHJhY3QoY29uc3QgUmVnaW9u
Jik7Ci0KLSAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Ci0KLSNp
Zm5kZWYgTkRFQlVHCi0gICAgdm9pZCBkdW1wKCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToK
LSAgICBzdHJ1Y3QgU3BhbiB7Ci0gICAgICAgIFNwYW4oaW50IHksIHNpemVfdCBzZWdtZW50SW5k
ZXgpCi0gICAgICAgICAgICA6IHkoeSksIHNlZ21lbnRJbmRleChzZWdtZW50SW5kZXgpCi0gICAg
ICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGludCB5OwotICAgICAgICBzaXplX3Qgc2VnbWVu
dEluZGV4OwotICAgIH07Ci0KLSAgICBjbGFzcyBTaGFwZSB7Ci0gICAgcHVibGljOgotICAgICAg
ICBTaGFwZSgpOwotICAgICAgICBTaGFwZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0KLSAg
ICAgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgeyByZXR1cm4gbV9zcGFucy5pc0VtcHR5KCk7IH0KLQotICAgICAgICB0eXBl
ZGVmIGNvbnN0IFNwYW4qIFNwYW5JdGVyYXRvcjsKLSAgICAgICAgU3Bhbkl0ZXJhdG9yIHNwYW5z
X2JlZ2luKCkgY29uc3Q7Ci0gICAgICAgIFNwYW5JdGVyYXRvciBzcGFuc19lbmQoKSBjb25zdDsK
LSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgY29uc3QgaW50KiBTZWdtZW50SXRlcmF0b3I7Ci0g
ICAgICAgIFNlZ21lbnRJdGVyYXRvciBzZWdtZW50c19iZWdpbihTcGFuSXRlcmF0b3IpIGNvbnN0
OwotICAgICAgICBTZWdtZW50SXRlcmF0b3Igc2VnbWVudHNfZW5kKFNwYW5JdGVyYXRvcikgY29u
c3Q7Ci0KLSAgICAgICAgc3RhdGljIFNoYXBlIHVuaW9uU2hhcGVzKGNvbnN0IFNoYXBlJiBzaGFw
ZTEsIGNvbnN0IFNoYXBlJiBzaGFwZTIpOwotICAgICAgICBzdGF0aWMgU2hhcGUgaW50ZXJzZWN0
U2hhcGVzKGNvbnN0IFNoYXBlJiBzaGFwZTEsIGNvbnN0IFNoYXBlJiBzaGFwZTIpOwotICAgICAg
ICBzdGF0aWMgU2hhcGUgc3VidHJhY3RTaGFwZXMoY29uc3QgU2hhcGUmIHNoYXBlMSwgY29uc3Qg
U2hhcGUmIHNoYXBlMik7Ci0KLSAgICAgICAgdm9pZCB0cmFuc2xhdGUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpOwotICAgICAgICB2b2lkIHN3YXAoU2hhcGUmKTsKLQotI2lmbmRlZiBOREVCVUcK
LSAgICAgICAgdm9pZCBkdW1wKCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIHN0cnVjdCBVbmlvbk9wZXJhdGlvbjsKLSAgICAgICAgc3RydWN0IEludGVyc2VjdE9wZXJh
dGlvbjsKLSAgICAgICAgc3RydWN0IFN1YnRyYWN0T3BlcmF0aW9uOwotICAgICAgICAKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uPgotICAgICAgICBzdGF0aWMgU2hhcGUgc2hh
cGVPcGVyYXRpb24oY29uc3QgU2hhcGUmIHNoYXBlMSwgY29uc3QgU2hhcGUmIHNoYXBlMik7Ci0K
LSAgICAgICAgdm9pZCBhcHBlbmRTZWdtZW50KGludCB4KTsKLSAgICAgICAgdm9pZCBhcHBlbmRT
cGFuKGludCB5KTsKLSAgICAgICAgdm9pZCBhcHBlbmRTcGFuKGludCB5LCBTZWdtZW50SXRlcmF0
b3IgYmVnaW4sIFNlZ21lbnRJdGVyYXRvciBlbmQpOwotICAgICAgICB2b2lkIGFwcGVuZFNwYW5z
KGNvbnN0IFNoYXBlJiwgU3Bhbkl0ZXJhdG9yIGJlZ2luLCBTcGFuSXRlcmF0b3IgZW5kKTsKLQot
ICAgICAgICBib29sIGNhbkNvYWxlc2NlKFNlZ21lbnRJdGVyYXRvciBiZWdpbiwgU2VnbWVudEl0
ZXJhdG9yIGVuZCk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoZXNlIHZlY3RvcnMgc2hvdWxkIGhh
dmUgaW5saW5lIHNpemVzLiBGaWd1cmUgb3V0IGEgZ29vZCBvcHRpbWFsIHZhbHVlLgotICAgICAg
ICBWZWN0b3I8aW50PiBtX3NlZ21lbnRzOwotICAgICAgICBWZWN0b3I8U3Bhbj4gbV9zcGFuczsg
ICAgICAgIAotICAgIH07Ci0KLSAgICBXZWJDb3JlOjpJbnRSZWN0IG1fYm91bmRzOwotICAgIFNo
YXBlIG1fc2hhcGU7Ci19OwotCi1zdGF0aWMgaW5saW5lIFJlZ2lvbiBpbnRlcnNlY3QoY29uc3Qg
UmVnaW9uJiBhLCBjb25zdCBSZWdpb24mIGIpCi17Ci0gICAgUmVnaW9uIHJlc3VsdChhKTsKLSAg
ICByZXN1bHQuaW50ZXJzZWN0KGIpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSAgICAKLXN0
YXRpYyBpbmxpbmUgUmVnaW9uIHN1YnRyYWN0KGNvbnN0IFJlZ2lvbiYgYSwgY29uc3QgUmVnaW9u
JiBiKQotewotICAgIFJlZ2lvbiByZXN1bHQoYSk7Ci0gICAgcmVzdWx0LnN1YnRyYWN0KGIpOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGlubGluZSBSZWdpb24gdHJhbnNsYXRl
KGNvbnN0IFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpCi17
Ci0gICAgUmVnaW9uIHJlc3VsdChyZWdpb24pOwotICAgIHJlc3VsdC50cmFuc2xhdGUob2Zmc2V0
KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gUmVnaW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAkocmV2aXNpb24gOTE5NjYpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSwxMCArMjksMTAgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlVwZGF0ZUluZm8uaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBs
LmgJKHJldmlzaW9uIDkxOTY2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHlJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE2ICszMywxOCBAQAogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBSZWdpb247Cit9CiAK
LWNsYXNzIFJlZ2lvbjsKK25hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEcmF3aW5nQXJlYVBy
b3h5SW1wbCA6IHB1YmxpYyBEcmF3aW5nQXJlYVByb3h5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5SW1wbD4gY3JlYXRlKFdlYlBhZ2VQcm94eSopOwog
ICAgIHZpcnR1YWwgfkRyYXdpbmdBcmVhUHJveHlJbXBsKCk7CiAKLSAgICB2b2lkIHBhaW50KEJh
Y2tpbmdTdG9yZTo6UGxhdGZvcm1HcmFwaGljc0NvbnRleHQsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBSZWdpb24mIHVucGFpbnRlZFJlZ2lvbik7CisgICAgdm9pZCBwYWludChCYWNraW5nU3Rv
cmU6OlBsYXRmb3JtR3JhcGhpY3NDb250ZXh0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2Vi
Q29yZTo6UmVnaW9uJiB1bnBhaW50ZWRSZWdpb24pOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IERyYXdpbmdBcmVhUHJveHlJbXBsKFdlYlBhZ2VQcm94eSopOwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAko
cmV2aXNpb24gOTE5NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDExICszOCwxMSBAQAogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNp
bmNsdWRlICJSZWZQdHJDYWlyby5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIldl
YkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJFdmVudEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGlj
IGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlRHJhdyhHdAogICAgIGlmICghZ2RrX2NhaXJvX2dl
dF9jbGlwX3JlY3RhbmdsZShjciwgJmNsaXBSZWN0KSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwog
Ci0gICAgV2ViS2l0OjpSZWdpb24gdW5wYWludGVkUmVnaW9uOyAvLyBUaGlzIGlzIHNpbXBseSB1
bnVzZWQuCisgICAgV2ViQ29yZTo6UmVnaW9uIHVucGFpbnRlZFJlZ2lvbjsgLy8gVGhpcyBpcyBz
aW1wbHkgdW51c2VkLgogICAgIHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlJbXBsKj4oZHJh
d2luZ0FyZWEpLT5wYWludChjciwgY2xpcFJlY3QsIHVucGFpbnRlZFJlZ2lvbik7CiAKICAgICBy
ZXR1cm4gRkFMU0U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCShyZXZpc2lvbiA5MTk2NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2ltcG9ydCAi
UERGVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW1wb3J0
ICJQYXN0ZWJvYXJkVHlwZXMuaCIKLSNpbXBvcnQgIlJlZ2lvbi5oIgogI2ltcG9ydCAiUnVuTG9v
cC5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXIuaCIKICNpbXBvcnQgIlRleHRDaGVja2VyU3RhdGUu
aCIKQEAgLTY4LDYgKzY3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1TY3JlZW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW1wb3J0IDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9xZGVz
a3RvcHdlYnBhZ2Vwcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L3FkZXNrdG9wd2VicGFnZXByb3h5LmNwcAkocmV2aXNpb24gOTE5NjYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvcWRlc2t0b3B3ZWJwYWdlcHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMywxMiArMjMsMTIgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1w
bC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVX
ZWJXaGVlbEV2ZW50LmgiCi0jaW5jbHVkZSA8UmVnaW9uLmg+CiAjaW5jbHVkZSA8UUFwcGxpY2F0
aW9uPgogI2luY2x1ZGUgPFFFdmVudD4KICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZURyYWdEcm9w
RXZlbnQ+CiAjaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgogI2luY2x1ZGUgPFdlYkNvcmUvRHJh
Z0RhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDkxOTY2KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOYXRp
dmVXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgotI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKICNpZiBVU0UoQ0cpCkBAIC01NCw2ICs1Myw3IEBACiAjZW5kaWYKICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvZnRMaW5raW5n
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSW5zdGFuY2VIYW5kbGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5oPgpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTE5
NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNCw4ICsxMzQsNiBAQAogCQkxQTY0MjI5QTEyREQwMjkyMDBD
QUFFMkMgLyogRHJhd2luZ0FyZWFNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2NDIyOTgxMkREMDI5MjAwQ0FBRTJDIC8qIERyYXdpbmdB
cmVhTWVzc2FnZXMuaCAqLzsgfTsKIAkJMUE2NDIzMDgxMkREMDlFQjAwQ0FBRTJDIC8qIERyYXdp
bmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2NDIzMDYxMkREMDlFQjAwQ0FBRTJDIC8qIERyYXdpbmdB
cmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQTY0MjMwOTEyREQwOUVCMDBD
QUFFMkMgLyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTY0MjMwNzEyREQwOUVCMDBDQUFFMkMgLyogRHJh
d2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFBNjQyMzUyMTJERDE4N0MwMENBQUUy
QyAvKiBSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE2NDIzNTAxMkREMTg3QzAwQ0FBRTJDIC8qIFJlZ2lvbi5jcHAgKi87IH07Ci0JCTFB
NjQyMzUzMTJERDE4N0MwMENBQUUyQyAvKiBSZWdpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjQyMzUxMTJERDE4N0MwMENBQUUyQyAvKiBSZWdp
b24uaCAqLzsgfTsKIAkJMUE2NDI0NUUxMkRFMjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjQyNDVDMTJE
RTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmggKi87IH07CiAJCTFBNjQyNDVGMTJERTI5QTEw
MENBQUUyQyAvKiBVcGRhdGVJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBNjQyNDVEMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmNw
cCAqLzsgfTsKIAkJMUE2NDI1NjgxMkRFNDJFQzAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2NDI1NjYxMkRF
NDJFQzAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9yZS5oICovOyB9OwpAQCAtMTA1MCw4ICsxMDQ4LDYg
QEAKIAkJMUE2NDIyRkMxMkREMDhGRTAwQ0FBRTJDIC8qIERyYXdpbmdBcmVhUHJveHkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE2NDIzMDYxMkREMDlFQjAwQ0FBRTJD
IC8qIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNjQyMzA3MTJERDA5RUIwMENBQUUyQyAv
KiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFBNjQyMzUwMTJERDE4N0MwMENBQUUyQyAvKiBSZWdpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMUE2NDIzNTExMkREMTg3QzAwQ0FBRTJDIC8qIFJlZ2lvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUE2NDI0NUMxMkRFMjlBMTAwQ0FBRTJDIC8qIFVwZGF0ZUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXBkYXRlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTY0MjQ1RDEyREUyOUExMDBDQUFFMkMgLyogVXBkYXRlSW5mby5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVcGRhdGVJbmZvLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE2NDI1NjYxMkRFNDJFQzAwQ0FBRTJDIC8qIEJh
Y2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYWNraW5nU3Rv
cmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNTcsOCArMzA1Myw2IEBACiAJ
CQkJQzBFM0FBNDUxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5jcHAgKi8sCiAJCQkJQzBFM0FB
NDQxMjA5RTJCQTAwQTQ5RDAxIC8qIE1vZHVsZS5oICovLAogCQkJCUJDODc4MEZCMTE2MUMyQjgw
MENDMjc2OCAvKiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmggKi8sCi0JCQkJMUE2NDIzNTAx
MkREMTg3QzAwQ0FBRTJDIC8qIFJlZ2lvbi5jcHAgKi8sCi0JCQkJMUE2NDIzNTExMkREMTg3QzAw
Q0FBRTJDIC8qIFJlZ2lvbi5oICovLAogCQkJCUJDMkU2RTc3MTE0MTk3MEMwMEE2M0IxRSAvKiBS
dW5Mb29wLmNwcCAqLywKIAkJCQlCQzJFNkU3ODExNDE5NzBDMDBBNjNCMUUgLyogUnVuTG9vcC5o
ICovLAogCQkJCTFBMjRCRUQzMTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCAqLywK
QEAgLTM3NTAsNyArMzc0NCw2IEBACiAJCQkJMUE2NDIxRjYxMkRDRkJBQjAwQ0FBRTJDIC8qIERy
YXdpbmdBcmVhSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2NDIyOUExMkREMDI5MjAwQ0FB
RTJDIC8qIERyYXdpbmdBcmVhTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjQyMzA5
MTJERDA5RUIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTFBNjQyMzUzMTJERDE4N0MwMENBQUUyQyAvKiBSZWdpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNjQyNDVFMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTY0MjU2ODEyREU0MkVDMDBDQUFFMkMgLyogQmFja2luZ1N0b3JlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDNTE3Mzg4MTEyREY4RjRGMDBFRTNGNDcgLyogRHJhZ0NvbnRy
b2xsZXJBY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNDQwMyw3ICs0Mzk2LDYgQEAKIAkJCQkx
QTY0MjFGNzEyRENGQkFCMDBDQUFFMkMgLyogRHJhd2luZ0FyZWFJbXBsLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNjQyMjk5MTJERDAyOTIwMENBQUUyQyAvKiBEcmF3aW5nQXJlYU1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTY0MjMwODEyREQwOUVCMDBDQUFFMkMg
LyogRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkxQTY0MjM1MjEyREQxODdDMDBDQUFFMkMgLyogUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNjQyNDVGMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNjQyNTY5MTJERTQyRUMwMENBQUUyQyAvKiBCYWNraW5nU3RvcmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE2NDI5MkQxMkRFNUY5ODAwQ0FBRTJDIC8qIEJhY2tpbmdTdG9y
ZU1hYy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaAkocmV2aXNpb24gOTE5NjYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKIAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAj
aW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUg
IlJ1bkxvb3AuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtOTIsNyArOTIsNyBAQCBwcml2
YXRlOgogCiAgICAgdWludDY0X3QgbV9iYWNraW5nU3RvcmVTdGF0ZUlEOwogCi0gICAgUmVnaW9u
IG1fZGlydHlSZWdpb247CisgICAgV2ViQ29yZTo6UmVnaW9uIG1fZGlydHlSZWdpb247CiAgICAg
V2ViQ29yZTo6SW50UmVjdCBtX3Njcm9sbFJlY3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3Nj
cm9sbE9mZnNldDsKIApJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2aXNpb24g
OTE5NjYpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTM2ODcsMTQgKzM2ODcsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0J
CQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxSZWdpb24uY3BwIgotCQkJCT4KLQkJCTwvRmls
ZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQbGF0Zm9ybVxSZWdpb24uaCIKLQkJ
CQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1c
UnVuTG9vcC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgo=
</data>
<flag name="review"
          id="97642"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>