<?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>126730</bug_id>
          
          <creation_ts>2014-01-09 16:59:46 -0800</creation_ts>
          <short_desc>Enable async scrolling for iOS</short_desc>
          <delta_ts>2014-01-09 17:35:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>966140</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-09 16:59:46 -0800</bug_when>
    <thetext>Enable async scrolling for iOS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966142</commentid>
    <comment_count>1</comment_count>
      <attachid>220790</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-09 17:04:13 -0800</bug_when>
    <thetext>Created attachment 220790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966151</commentid>
    <comment_count>2</comment_count>
      <attachid>220792</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-09 17:24:48 -0800</bug_when>
    <thetext>Created attachment 220792
Patch with project file changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966153</commentid>
    <comment_count>3</comment_count>
      <attachid>220792</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-09 17:27:44 -0800</bug_when>
    <thetext>Comment on attachment 220792
Patch with project file changes

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

&gt; Source/WebCore/page/scrolling/ios/ScrollingCoordinatorIOS.mm:105
&gt; +    // FIXME: figure out how to commit.
&gt; +//    ScrollingThread::dispatch(bind(&amp;ThreadedScrollingTree::commitNewTreeState, toThreadedScrollingTree(scrollingTree()), treeState.release()));

?!?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>966155</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-01-09 17:35:15 -0800</bug_when>
    <thetext>https://trac.webkit.org/r161610</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220790</attachid>
            <date>2014-01-09 17:04:13 -0800</date>
            <delta_ts>2014-01-09 17:24:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126730-20140109170412.patch</filename>
            <type>text/plain</type>
            <size>44894</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJmNDIyNmY0YmNmYzRhNGJmM2U5OWM5
ZWI0NmU1ZjRhZmZhN2E3OGEuLmVhNzQ3NjYzMjg2MTllYmY4OGI1ZGU5ODdmZTE5MWYyOTRiOGY1
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDEtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIGFzeW5jIHNjcm9sbGluZyBmb3Ig
aU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY3
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFR1cm4gb24gRU5BQkxFX0FTWU5DX1NDUk9MTElORyBmb3IgaU9TLgorCisgICAgICAgICog
d3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTQtMDEtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFVwc3RyZWFtIFdlYkNvcmUvcGxhdGZvcm0g
Y2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJkMTlmMjgyOTVkMDJiOTgxMWJiZmY3NDVjMDc2M2UwYmE3
NjMyNTEuLjRjN2YxM2IzOTExNDgwOTJlMzI5YTQ3ZDhhMTA5ZWMyYzU5NjYxY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2OCBAQAorMjAxNC0wMS0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgYXN5bmMgc2Nyb2xsaW5nIGZvciBpT1MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjczMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFR1cm4gb24g
RU5BQkxFX0FTWU5DX1NDUk9MTElORyBmb3IgaU9TLgorICAgICAgICAKKyAgICAgICAgRGlzYWJs
ZSBydWJiZXItYmFuZGluZyBhbmQgc2Nyb2xsYmFyLXJlbGF0ZWQgTWFjIGNvZGUgZm9yIFBMQVRG
T1JNKElPUyksCisgICAgICAgIHByb3ZpZGUgc3R1YnMgZm9yIHNjcm9sbGluZyBub2RlcyBhbmQg
c2Nyb2xsaW5nIHN0YXRlIG5vZGVzLCBhbmQgYW4KKyAgICAgICAgaU9TIHNjcm9sbGluZyB0cmVl
LCBhbmQgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yLgorICAgICAgICAKKyAgICAgICAgTW92ZSBjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGUoKSBpbnRvIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlv
biBmaWxlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZTo6aXNTY3JvbGxpbmdUcmVlSU9TKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmguCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0u
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TOjpTY3JvbGxpbmdDb29yZGluYXRv
cklPUyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcklPUzo6flNjcm9s
bGluZ0Nvb3JkaW5hdG9ySU9TKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9ySU9TOjpwYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9ySU9TOjpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcklPUzo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1M6OnNjcm9sbGluZ1N0YXRlVHJlZUNv
bW1pdHRlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3JJT1M6OmNvbW1pdFRyZWVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvcklPUzo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlSU9TOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUlPUzo6U2Nyb2xsaW5nVHJlZUlPUyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlSU9TOjp+U2Nyb2xsaW5nVHJlZUlPUyk6CisgICAgICAgIChXZWJDb3JlOjpkZXJlZlNjcm9s
bGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6Omlu
dmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUlPUzo6Y29tbWl0TmV3
VHJlZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6OnVwZGF0ZU1h
aW5GcmFtZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJ
T1M6OmNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlSU9TLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVh
ZGVkU2Nyb2xsaW5nVHJlZS5oLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW06IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVJT1MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVJT1M6On5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0
ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVJT1M6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0
Q29udGVudEVkZ2VDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjptYXhp
bXVtU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVJT1M6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW06CisKIDIw
MTQtMDEtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEF0
dGVtcHQgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkIGZvbGxvd2luZyA8aHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTYxNTg5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUwMWYwYWQzYTM3ZmFmMDhh
ZmQ4NTYyNWExMjFiNDkzMmUxZDJlNzIuLjU4ODVhNTliYzBiYjNjYzUwODMxMmVhY2JkOTA4MTY1
YjBhNTcyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wMS0wOSAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgYXN5bmMg
c2Nyb2xsaW5nIGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjczMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgVHVybiBvbiBFTkFCTEVfQVNZTkNfU0NST0xMSU5HIGZvciBpT1Mu
CisgICAgICAgIAorICAgICAgICBPbiBpT1MsIGNyZWF0ZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZUlPUyBub2Rlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Ny
b2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWU6OmNy
ZWF0ZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5n
VHJlZS5oOgorCiAyMDE0LTAxLTA5ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIxNjAxNTIpOiBTZWxlY3Rpb24gZHJhZyBzbmFwc2hvdCBkb2Vz
bid0IGFwcGVhciBvciBoYXMgdGhlIHdyb25nIGNvbnRlbnQgb24gUmV0aW5hCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93dGYvRmVhdHVy
ZURlZmluZXMuaAppbmRleCBmODUzMmFhMjEyMmYwNzFmYTQ0YmM5N2MzYTVkMTdkYzAwZjlmOGQ2
Li40ZjRkYzViYWNhYTRmYzE1OGIzM2JjMGM0MDFmYjBjOTYxYWJhYjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgKQEAgLTU2LDYgKzU2LDEwIEBACiAvKiBQTEFURk9STShNQUMpIGlzIGFsd2F5
cyBlbmFibGVkIHdoZW4gUExBVEZPUk0oSU9TKSBpcyBlbmFibGVkLiAqLwogI2lmIFBMQVRGT1JN
KElPUykKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcpCisjZGVmaW5lIEVO
QUJMRV9BU1lOQ19TQ1JPTExJTkcgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfOEJJ
VF9URVhUUlVOKQogI2RlZmluZSBFTkFCTEVfOEJJVF9URVhUUlVOIDEKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyBiL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKaW5kZXggMTAwOTU3
MDg0Njg0MzJlNGFmOTNmZGFjMTdiYWJhMDA0MjNhYTRhZC4uODEzYmVhZjU2NDhmZDk0ZjJlYjkz
MzMzOThjMmJhYWE2MzM1NjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnCkBAIC0xMDYsNiArMTA2LDYgQEAgSkFWQVNDUklQVENPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUl9Qcm9kdWN0aW9uID0gJChTREtST09UKSQoUFJPRFVDVElPTl9GUkFN
RVdPUksKIEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19lbmdpbmVlcmluZyA9ICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7
CiAKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTID0gJChFWENMVURFRF9TT1VSQ0VfRklMRV9O
QU1FU18kKFBMQVRGT1JNX05BTUUpKTsKLUVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9u
ZW9zID0gKi50aWZmICpDdXJzb3IucG5nIEN1cnNvci5jcHAgQ3Vyc29yTWFjLm1tIEV2ZW50SGFu
ZGxlck1hYy5tbSBIVE1MQ29udmVydGVyLm1tIEtpbGxSaW5nTWFjLm1tIFBsYXRmb3JtRXZlbnRG
YWN0b3J5TWFjLm1tIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgU2VhcmNoUG9wdXBNZW51TWFjLm1t
IFNoYXJlZFRpbWVyTWFjLm1tIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBXZWJXaW5kb3dBbmltYXRpb24ubW07
CitFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19pcGhvbmVvcyA9ICoudGlmZiAqQ3Vyc29yLnBu
ZyBDdXJzb3IuY3BwIEN1cnNvck1hYy5tbSBFdmVudEhhbmRsZXJNYWMubW0gSFRNTENvbnZlcnRl
ci5tbSBLaWxsUmluZ01hYy5tbSBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBTU0xLZXlHZW5l
cmF0b3JNYWMuY3BwIFNlYXJjaFBvcHVwTWVudU1hYy5tbSBTY3JvbGxpbmdDb29yZGluYXRvck1h
Yy5tbSBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0gU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVNYWMubW0gU2hhcmVkVGltZXJNYWMubW0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIFdlYldpbmRv
d0FuaW1hdGlvbi5tbTsKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZXNpbXVsYXRv
ciA9ICQoRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfaXBob25lb3MpOwogRVhDTFVERURfU09V
UkNFX0ZJTEVfTkFNRVNfbWFjb3N4ID0gKklPUy5oICpJT1MuY3BwICpJT1MubW0gS2lsbFJpbmdO
b25lLmNwcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcAppbmRleCA1OTY3YWU0YjA2Njc2ZTljNjU2NDEzYWM2YWFmNTRk
NGUxNjYyODNlLi5hNWZlYTRlM2IzZDVlNjJhYzQ2NmYzYjA1YTlmMmU5YWE3MGRiOGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwCkBAIC00NSwxMCArNDUsNiBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9z
aXRvci5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotI2luY2x1ZGUg
IlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgiCi0jZW5kaWYKLQogI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuaCIKICNlbmRpZgpAQCAtNTksMTIgKzU1LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCisjaWYgIVBMQVRGT1JNKE1BQykKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGUoUGFnZSogcGFnZSkKIHsKLSNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29yZGluYXRvck1hYyhwYWdlKSk7Ci0jZW5kaWYK
LQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyhwYWdlKSk7CiAjZW5kaWYK
QEAgLTc1LDYgKzY4LDcgQEAgUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQogCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTY3JvbGxpbmdDb29yZGluYXRvcihwYWdlKSk7CiB9CisjZW5kaWYKIAogU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yKFBhZ2UqIHBhZ2UpCiAgICAgOiBtX3Bh
Z2UocGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCmluZGV4IGJjNzY4ZDZjOWE1YTY4ZTlk
NTkxMTk3OWUxNzNkZDJhZmU4ODBhM2UuLjhlZjhmZjZhNTdhMDBjYzRmNTE0ZGU1MGQ0NmZlODI1
YjM3N2FlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcApAQCAtNDEsNyArNDEsNyBAQCBQ
YXNzT3duUHRyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4gU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpjcmVhdGUoU2NybwogCiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdTdGF0ZVRyZWUmIHN0YXRlVHJlZSwg
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9sbGluZ1N0YXRlTm9kZShTY3JvbGxp
bmdOb2RlLCBzdGF0ZVRyZWUsIG5vZGVJRCkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAgICwgbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50
ZXIoMCkKICAgICAsIG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIoMCkKICNlbmRpZgpAQCAt
NTcsNyArNTcsNyBAQCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdTdGF0ZVRyZWUmIHN0YQogCiBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZShjb25zdCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUmIHN0YXRlTm9kZSwgU2Nyb2xsaW5nU3RhdGVUcmVlJiBhZG9wdGl2
ZVRyZWUpCiAgICAgOiBTY3JvbGxpbmdTdGF0ZU5vZGUoc3RhdGVOb2RlLCBhZG9wdGl2ZVRyZWUp
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykK
ICAgICAsIG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyKHN0YXRlTm9kZS52ZXJ0aWNhbFNjcm9s
bGJhclBhaW50ZXIoKSkKICAgICAsIG1faG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIoc3RhdGVO
b2RlLmhvcml6b250YWxTY3JvbGxiYXJQYWludGVyKCkpCiAjZW5kaWYKQEAgLTIzMiw2ICsyMzIs
MTIgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldEZvb3RlckxheWVyKGNv
bnN0IExheWVyUmVwcmVzZW50YXRpb24mIGxheWUKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoRm9v
dGVyTGF5ZXIpOwogfQogCisjaWYgIShQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpKQor
dm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcm9sbGJhclBhaW50ZXJzRnJv
bVNjcm9sbGJhcnMoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyKikKK3sKK30KKyNlbmRpZgorCiB2b2lk
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYg
dHMsIGludCBpbmRlbnQpIGNvbnN0CiB7CiAgICAgdHMgPDwgIigiIDw8ICJTY3JvbGxpbmcgbm9k
ZSIgPDwgIlxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKaW5kZXggNzM0OTQxNjJmNWZiYTgyYjE2
ZWZkZWQxMWM3YmNlZTU2YmIwOGExNi4uMmVmNTMzMTJkZGZjYTg5M2YxOGZlNTM5Y2E0YzYyMjZi
ZjNjMzUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgZm9vdGVyTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX2Zvb3RlckxheWVyOyB9CiAgICAgdm9pZCBzZXRGb290ZXJMYXllcihjb25zdCBM
YXllclJlcHJlc2VudGF0aW9uJik7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
TUFDKSAmJiAhUExBVEZPUk0oSU9TKQogICAgIFNjcm9sbGJhclBhaW50ZXIgdmVydGljYWxTY3Jv
bGxiYXJQYWludGVyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXI7
IH0KICAgICBTY3JvbGxiYXJQYWludGVyIGhvcml6b250YWxTY3JvbGxiYXJQYWludGVyKCkgY29u
c3QgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcjsgfQogI2VuZGlmCkBAIC0x
MzQsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICBMYXllclJlcHJlc2VudGF0aW9uIG1faGVhZGVy
TGF5ZXI7CiAgICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX2Zvb3RlckxheWVyOwogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKICAgICBTY3Jv
bGxiYXJQYWludGVyIG1fdmVydGljYWxTY3JvbGxiYXJQYWludGVyOwogICAgIFNjcm9sbGJhclBh
aW50ZXIgbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDUwZmJhY2M0MWI4ZTY0
OTkwZTEyN2M2ZmVlMmNhY2QxNzEzYzZlOTguLjQ5OGFmZjNiODE4MGEyZDQzNDUwNjUzMGVlNGJm
MmZiYzE2NDQzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBpc1RocmVhZGVkU2Nyb2xsaW5nVHJlZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzUmVtb3RlU2Nyb2xsaW5nVHJlZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsaW5nVHJlZUlPUygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIEV2ZW50UmVzdWx0IHRyeVRvSGFuZGxlV2hlZWxFdmVu
dChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSA9IDA7CiAgICAgYm9vbCBzaG91bGRIYW5kbGVX
aGVlbEV2ZW50U3luY2hyb25vdXNseShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJl
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVl
LmgKaW5kZXggZjg4MTNiZTE4MzE4YWQ0NGJiMGE0YWZjM2U2NTk3MjdiZGNlNWZhYy4uOTQ0ZTJj
YmMxNjkyZTQ4NzI4MTc2ZDZiOTI5NTk0OGMxMmE2NmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKQEAgLTQ3LDgg
KzQ3LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGhyZWFkZWRTY3JvbGxpbmdUcmVlKCk7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNUaHJlYWRlZFNjcm9sbGluZ1RyZWUoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0TmV3VHJlZVN0YXRlKFBhc3NP
d25QdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBPVkVSUklERTsKQEAg
LTYyLDYgKzYwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFRocmVhZGVk
U2Nyb2xsaW5nVHJlZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKik7CisgICAgdmlydHVhbCBi
b29sIGlzVGhyZWFkZWRTY3JvbGxpbmdUcmVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBjcmVhdGVO
b2RlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpIE9WRVJSSURFOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdD
b29yZGluYXRvcklPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0M2FlYTAyYTJmYzY3NWJkMzFiYTQ4NGZkYmIy
NTA4MmM0NTI1YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MuaApAQCAtMCwwICsxLDY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTY3JvbGxpbmdDb29yZGluYXRvcklPU19oCisjZGVmaW5lIFNjcm9s
bGluZ0Nvb3JkaW5hdG9ySU9TX2gKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNp
bmNsdWRlICJBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2Nyb2xsYmFyOworY2xhc3MgU2Nyb2xsaW5nU3RhdGVOb2RlOworY2xhc3Mg
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOworY2xhc3MgU2Nyb2xsaW5nU3RhdGVUcmVlOwor
Y2xhc3MgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOworCitjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRv
cklPUyA6IHB1YmxpYyBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yIHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvcklPUyhQYWdlKik7CisgICAgdmlydHVhbCB+U2Ny
b2xsaW5nQ29vcmRpbmF0b3JJT1MoKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVk
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBPVkVSUklE
RTsKKworICAgIC8vIEhhbmRsZSB0aGUgd2hlZWwgZXZlbnQgb24gdGhlIHNjcm9sbGluZyB0aHJl
YWQuIFJldHVybnMgd2hldGhlciB0aGUgZXZlbnQgd2FzIGhhbmRsZWQgb3Igbm90LgorICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyosIGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisKK3ByaXZhdGU6CisgICAgdmly
dHVhbCBQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBjcmVhdGVTY3JvbGxpbmdUcmVlTm9k
ZShTY3JvbGxpbmdOb2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKSBPVkVSUklERTsKKworICAgIHZvaWQg
c2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXJGaXJlZChUaW1lcjxTY3JvbGxpbmdDb29y
ZGluYXRvcklPUz4qKTsKKyAgICB2b2lkIGNvbW1pdFRyZWVTdGF0ZSgpOworCisgICAgVGltZXI8
U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1M+IG1fc2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGlt
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQorCisjZW5kaWYgLy8gU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1NfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9ySU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkYzY2MDNlM2U3M2Y0OWVkODY0M2U2YjRm
NDg2ZDU0OGZhMGYzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0KQEAgLTAsMCArMSwxMjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQorCisjaW1wb3J0ICJTY3JvbGxpbmdDb29yZGluYXRvcklPUy5oIgorCisjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCisjaW5jbHVkZSAiUGFnZS5o
IgorI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVGaXhl
ZE5vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZUlPUy5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpjcmVhdGUoUGFnZSogcGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9s
bGluZ0Nvb3JkaW5hdG9ySU9TKHBhZ2UpKTsKK30KKworU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1M6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TKFBhZ2UqIHBhZ2UpCisgICAgOiBBc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yKHBhZ2UpCisgICAgLCBtX3Njcm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRp
bWVyKHRoaXMsICZTY3JvbGxpbmdDb29yZGluYXRvcklPUzo6c2Nyb2xsaW5nU3RhdGVUcmVlQ29t
bWl0dGVyVGltZXJGaXJlZCkKK3sKKyAgICBzZXRTY3JvbGxpbmdUcmVlKFNjcm9sbGluZ1RyZWVJ
T1M6OmNyZWF0ZSh0aGlzKSk7Cit9CisKK1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TOjp+U2Nyb2xs
aW5nQ29vcmRpbmF0b3JJT1MoKQoreworICAgIEFTU0VSVCghc2Nyb2xsaW5nVHJlZSgpKTsKK30K
Kwordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcklPUzo6cGFnZURlc3Ryb3llZCgpCit7CisgICAg
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cGFnZURlc3Ryb3llZCgpOworCisgICAgbV9zY3Jv
bGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1lci5zdG9wKCk7CisKKyAgICAvLyBJbnZhbGlkYXRp
bmcgdGhlIHNjcm9sbGluZyB0cmVlIHdpbGwgYnJlYWsgdGhlIHJlZmVyZW5jZSBjeWNsZSBiZXR3
ZWVuIHRoZSBTY3JvbGxpbmdDb29yZGluYXRvciBhbmQgU2Nyb2xsaW5nVHJlZSBvYmplY3RzLgor
ICAgIHJlbGVhc2VTY3JvbGxpbmdUcmVlKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0
b3JJT1M6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkKK3sKKyAgICBpZiAoIXNjcm9sbGluZ1N0
YXRlVHJlZSgpLT5oYXNDaGFuZ2VkUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjb21taXRUcmVlU3RhdGUoKTsKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRp
bWVyLnN0b3AoKTsKK30KKwordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcklPUzo6c2NoZWR1bGVU
cmVlU3RhdGVDb21taXQoKQoreworICAgIEFTU0VSVChzY3JvbGxpbmdTdGF0ZVRyZWUoKS0+aGFz
Q2hhbmdlZFByb3BlcnRpZXMoKSk7CisKKyAgICBpZiAobV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21t
aXR0ZXJUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Njcm9sbGlu
Z1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBTY3Jv
bGxpbmdDb29yZGluYXRvcklPUzo6c2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXJGaXJl
ZChUaW1lcjxTY3JvbGxpbmdDb29yZGluYXRvcklPUz4qKQoreworICAgIGNvbW1pdFRyZWVTdGF0
ZSgpOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TOjpjb21taXRUcmVlU3RhdGUo
KQoreworICAgIEFTU0VSVChzY3JvbGxpbmdTdGF0ZVRyZWUoKS0+aGFzQ2hhbmdlZFByb3BlcnRp
ZXMoKSk7CisKKyAgICBPd25QdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiB0cmVlU3RhdGUgPSBzY3Jv
bGxpbmdTdGF0ZVRyZWUoKS0+Y29tbWl0KExheWVyUmVwcmVzZW50YXRpb246OlBsYXRmb3JtTGF5
ZXJSZXByZXNlbnRhdGlvbik7CisgICAgLy8gRklYTUU6IGZpZ3VyZSBvdXQgaG93IHRvIGNvbW1p
dC4KKy8vICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgmVGhyZWFkZWRTY3JvbGxp
bmdUcmVlOjpjb21taXROZXdUcmVlU3RhdGUsIHRvVGhyZWFkZWRTY3JvbGxpbmdUcmVlKHNjcm9s
bGluZ1RyZWUoKSksIHRyZWVTdGF0ZS5yZWxlYXNlKCkpKTsKK30KKworUGFzc093blB0cjxTY3Jv
bGxpbmdUcmVlTm9kZT4gU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1M6OmNyZWF0ZVNjcm9sbGluZ1Ry
ZWVOb2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
KQoreworICAgIEFTU0VSVChzY3JvbGxpbmdUcmVlKCkpOworCisgICAgc3dpdGNoIChub2RlVHlw
ZSkgeworICAgIGNhc2UgU2Nyb2xsaW5nTm9kZToKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlSU9TOjpjcmVhdGUoKnNjcm9sbGluZ1RyZWUoKSwgbm9kZUlEKTsKKyAg
ICBjYXNlIEZpeGVkTm9kZToKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6
OmNyZWF0ZSgqc2Nyb2xsaW5nVHJlZSgpLCBub2RlSUQpOworICAgIGNhc2UgU3RpY2t5Tm9kZToK
KyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoKnNjcm9sbGlu
Z1RyZWUoKSwgbm9kZUlEKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlSU9TLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTBhOTRkNDkyMmFjNWQ2ZjJkNmQ4YTZlOTY4OGZhM2Rk
NTE2MjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
aW9zL1Njcm9sbGluZ1RyZWVJT1MuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVJT1MuaCIKKworI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVGhyZWFkLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5nZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxTY3JvbGxpbmdUcmVlSU9TPiBTY3JvbGxp
bmdUcmVlSU9TOjpjcmVhdGUoQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdUcmVlSU9TKHNj
cm9sbGluZ0Nvb3JkaW5hdG9yKSk7Cit9CisKK1Njcm9sbGluZ1RyZWVJT1M6OlNjcm9sbGluZ1Ry
ZWVJT1MoQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCisg
ICAgOiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKHNjcm9sbGluZ0Nvb3JkaW5hdG9yKQoreworfQor
CitTY3JvbGxpbmdUcmVlSU9TOjp+U2Nyb2xsaW5nVHJlZUlPUygpCit7CisgICAgLy8gaW52YWxp
ZGF0ZSgpIHNob3VsZCBoYXZlIGNsZWFyZWQgbV9zY3JvbGxpbmdDb29yZGluYXRvci4KKyAgICBB
U1NFUlQoIW1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IpOworfQorCitzdGF0aWMgdm9pZCBkZXJlZlNj
cm9sbGluZ0Nvb3JkaW5hdG9yKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGlu
YXRvcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPmRlcmVmKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6aW52YWxpZGF0
ZSgpCit7CisgICAgLy8gSW52YWxpZGF0ZSBpcyBkaXNwYXRjaGVkIGJ5IHRoZSBTY3JvbGxpbmdD
b29yZGluYXRvciBjbGFzcyBvbiB0aGUgU2Nyb2xsaW5nVGhyZWFkCisgICAgLy8gdG8gYnJlYWsg
dGhlIHJlZmVyZW5jZSBjeWNsZSBiZXR3ZWVuIFNjcm9sbGluZ1RyZWUgYW5kIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yIHdoZW4gdGhlCisgICAgLy8gU2Nyb2xsaW5nQ29vcmRpbmF0b3IncyBwYWdlIGlz
IGRlc3Ryb3llZC4KKyAgICBBU1NFUlQoU2Nyb2xsaW5nVGhyZWFkOjppc0N1cnJlbnRUaHJlYWQo
KSk7CisKKyAgICAvLyBTaW5jZSB0aGlzIGNhbiBwb3RlbnRpYWxseSBiZSB0aGUgbGFzdCByZWZl
cmVuY2UgdG8gdGhlIHNjcm9sbGluZyBjb29yZGluYXRvciwKKyAgICAvLyB3ZSBuZWVkIHRvIHJl
bGVhc2UgaXQgb24gdGhlIG1haW4gdGhyZWFkIHNpbmNlIGl0IGhhcyBtZW1iZXIgdmFyaWFibGVz
IChzdWNoIGFzIHRpbWVycykKKyAgICAvLyB0aGF0IGV4cGVjdCB0byBiZSBkZXN0cm95ZWQgZnJv
bSB0aGUgbWFpbiB0aHJlYWQuCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKGRlcmVmU2Nyb2xs
aW5nQ29vcmRpbmF0b3IsIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IucmVsZWFzZSgpLmxlYWtSZWYo
KSkpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVJT1M6OmNvbW1pdE5ld1RyZWVTdGF0ZShQYXNz
T3duUHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gc2Nyb2xsaW5nU3RhdGVUcmVlKQoreworICAgIFNj
cm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZShzY3JvbGxpbmdTdGF0ZVRyZWUpOworfQor
Cit2b2lkIFNjcm9sbGluZ1RyZWVJT1M6OnVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uKGNv
bnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKQoreworICAgIGlmICghbV9zY3JvbGxp
bmdDb29yZGluYXRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0TWFpbkZyYW1lU2Nyb2xs
UG9zaXRpb24oc2Nyb2xsUG9zaXRpb24pOworCisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVVcGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlv
biwgbV9zY3JvbGxpbmdDb29yZGluYXRvci5nZXQoKSwgc2Nyb2xsUG9zaXRpb24sIGlzSGFuZGxp
bmdQcm9ncmFtbWF0aWNTY3JvbGwoKSwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikpOwor
fQorCitQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBTY3JvbGxpbmdUcmVlSU9TOjpjcmVh
dGVOb2RlKFNjcm9sbGluZ05vZGVUeXBlIG5vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
KQoreworICAgIHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLT5jcmVhdGVTY3JvbGxpbmdU
cmVlTm9kZShub2RlVHlwZSwgbm9kZUlEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRm
Mjk0MzllYzUyMWIyNzkyNmU0MmJlZDkxMzM4MjU2ZjdmOGMwZTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5oCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGluZ1RyZWVJT1NfaAor
I2RlZmluZSBTY3JvbGxpbmdUcmVlSU9TX2gKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CisKKyNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdU
cmVlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZUlPUyA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFNjcm9sbGluZ1RyZWVJT1M+IGNyZWF0ZShBc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yKik7CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZUlPUygp
OworCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdE5ld1RyZWVTdGF0ZShQYXNzT3duUHRyPFNjcm9s
bGluZ1N0YXRlVHJlZT4pIE9WRVJSSURFOworCisgICAgLy8gTm8gd2hlZWwgZXZlbnRzIG9uIGlP
UworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgRXZlbnRSZXN1bHQgdHJ5VG9IYW5kbGVX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIE9WRVJSSURFIHsgcmV0dXJuIERp
ZE5vdEhhbmRsZUV2ZW50OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIE9WRVJS
SURFOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVJT1MoQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvciopOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGluZ1RyZWVJT1Mo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8U2Nyb2xsaW5nVHJlZU5vZGU+IGNyZWF0ZU5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9s
bGluZ05vZGVJRCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTWFpbkZyYW1l
U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBTZXRPclN5bmNT
Y3JvbGxpbmdMYXllclBvc2l0aW9uID0gU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24pIE9WRVJS
SURFOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVu
dFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlKSBPVkVSUklERSB7IH0KKyNlbmRpZgorCisg
ICAgUmVmUHRyPEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I+IG1fc2Nyb2xsaW5nQ29vcmRpbmF0
b3I7Cit9OworCitTQ1JPTExJTkdfVFJFRV9UWVBFX0NBU1RTKFNjcm9sbGluZ1RyZWVJT1MsIGlz
U2Nyb2xsaW5nVHJlZUlPUygpKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2VuZGlmIC8vIFNjcm9sbGluZ1RyZWVJT1Nf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZmFkYTBmYWJl
NDliMWNiYTA4OGYwMWRlNTBiYTJkMWUwYjFlOGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9T
LmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVJT1NfaAorI2RlZmluZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPU19o
CisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xB
U1MgQ0FMYXllcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZUlPUyA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU+
IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKyAgICB2aXJ0dWFsIH5T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUygpOworCitwcml2YXRlOgorICAgIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlSU9TKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwor
CisgICAgLy8gU2Nyb2xsaW5nVHJlZU5vZGUgbWVtYmVyIGZ1bmN0aW9ucy4KKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xs
aW5nU3RhdGVOb2RlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgT1ZFUlJJREUgeyB9CisKKyAgICBJbnRQb2lu
dCBzY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29u
c3QgSW50UG9pbnQmKTsKKyAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRF
ZGdlQ29uc3RyYWludHMoY29uc3QgSW50UG9pbnQmKTsKKworICAgIHZvaWQgc2V0U2Nyb2xsTGF5
ZXJQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpOworCisgICAgSW50UG9pbnQgbWluaW11bVNjcm9s
bFBvc2l0aW9uKCkgY29uc3Q7CisgICAgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkg
Y29uc3Q7CisKKyAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNj
cm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgSW50U2l6ZSYpOworCisg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xsTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5
ZXI+IG1fY291bnRlclNjcm9sbGluZ0xheWVyOworICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2hl
YWRlckxheWVyOworICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2Zvb3RlckxheWVyOworICAgIElu
dFBvaW50IG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb247Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisj
ZW5kaWYgLy8gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1NfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlSU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMzI5NjNlZjhkNWQxYWY3OWI0MjU2OTMx
MmIxNTY4YTAwYzJhN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW0KQEAgLTAsMCArMSwx
OTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlSU9TLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQor
CisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgi
CisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdTdGF0ZVRyZWUu
aCIKKyNpbXBvcnQgIlNldHRpbmdzLmgiCisjaW1wb3J0ICJUaWxlQ29udHJvbGxlci5oIgorI2lt
cG9ydCAiV2ViTGF5ZXIuaCIKKworI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OmNyZWF0ZShTY3JvbGxpbmdUcmVl
JiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1Moc2Nyb2xsaW5nVHJlZSwg
bm9kZUlEKSk7Cit9CisKK1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZUlPUyhTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxp
bmdOb2RlSUQgbm9kZUlEKQorICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUoc2Nyb2xs
aW5nVHJlZSwgbm9kZUlEKQoreworfQorCitTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6
flNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TKCkKK3sKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5n
U3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6
OnVwZGF0ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CisgICAgY29uc3QgYXV0byYgc2Nyb2xs
aW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUoc3RhdGVOb2RlKTsK
KworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQorICAgICAgICBtX3Njcm9sbExheWVyID0gc2Nyb2xs
aW5nU3RhdGVOb2RlLmxheWVyKCk7CisKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OkNvdW50ZXJTY3JvbGxp
bmdMYXllcikpCisgICAgICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVyID0gc2Nyb2xsaW5nU3Rh
dGVOb2RlLmNvdW50ZXJTY3JvbGxpbmdMYXllcigpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpIZWFk
ZXJMYXllcikpCisgICAgICAgIG1faGVhZGVyTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuaGVh
ZGVyTGF5ZXIoKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5ZXIpKQorICAgICAgICBt
X2Zvb3RlckxheWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLmZvb3RlckxheWVyKCk7CisKKyAgICBp
ZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlJlYXNvbnNGb3JTeW5jaHJvbm91c1Njcm9sbGluZykpIHsKKyAgICAgICAg
aWYgKHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpIHsKKyAg
ICAgICAgICAgIC8vIFdlJ3JlIHRyYW5zaXRpb25pbmcgdG8gdGhlIHNsb3cgInVwZGF0ZSBzY3Jv
bGwgbGF5ZXIgcG9zaXRpb24gb24gdGhlIG1haW4gdGhyZWFkIiBtb2RlLgorICAgICAgICAgICAg
Ly8gSW5pdGlhbGl6ZSB0aGUgcHJvYmFibGUgbWFpbiB0aHJlYWQgc2Nyb2xsIHBvc2l0aW9uIHdp
dGggdGhlIGN1cnJlbnQgc2Nyb2xsIGxheWVyIHBvc2l0aW9uLgorICAgICAgICAgICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCisgICAgICAgICAgICAgICAgbV9wcm9i
YWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0
ZWRTY3JvbGxQb3NpdGlvbigpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
Q0dQb2ludCBzY3JvbGxMYXllclBvc2l0aW9uID0gbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlv
bjsKKyAgICAgICAgICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0g
SW50UG9pbnQoLXNjcm9sbExheWVyUG9zaXRpb24ueCwgLXNjcm9sbExheWVyUG9zaXRpb24ueSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OnVw
ZGF0ZUFmdGVyQ2hpbGRyZW4oc3RhdGVOb2RlKTsKKworICAgIGNvbnN0IGF1dG8mIHNjcm9sbGlu
Z1N0YXRlTm9kZSA9IHRvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKHN0YXRlTm9kZSk7CisK
KyAgICAvLyBVcGRhdGUgdGhlIHNjcm9sbCBwb3NpdGlvbiBhZnRlciBjaGlsZCBub2RlcyBoYXZl
IGJlZW4gdXBkYXRlZCwgYmVjYXVzZSB0aGV5IG5lZWQgdG8gaGF2ZSB1cGRhdGVkIHRoZWlyIGNv
bnN0cmFpbnRzIGJlZm9yZSBhbnkgc2Nyb2xsaW5nIGhhcHBlbnMuCisgICAgaWYgKHNjcm9sbGlu
Z1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
OjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpCisgICAgICAgIHNldFNjcm9sbFBvc2l0aW9uKHNj
cm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpKTsKK30KKworSW50UG9p
bnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QK
K3sKKyAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHko
KSkKKyAgICAgICAgcmV0dXJuIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb247CisK
KyAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVyLmdldCgpLnBv
c2l0aW9uOworICAgIHJldHVybiBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54ICsgc2Ny
b2xsT3JpZ2luKCkueCgpLCAtc2Nyb2xsTGF5ZXJQb3NpdGlvbi55ICsgc2Nyb2xsT3JpZ2luKCku
eSgpKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIEludFBvaW50
IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247CisgICAgbmV3U2Nyb2xsUG9zaXRp
b24gPSBuZXdTY3JvbGxQb3NpdGlvbi5zaHJ1bmtUbyhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7
CisgICAgbmV3U2Nyb2xsUG9zaXRpb24gPSBuZXdTY3JvbGxQb3NpdGlvbi5leHBhbmRlZFRvKG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpKTsKKworICAgIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENv
bnRlbnRFZGdlQ29uc3RyYWludHMobmV3U2Nyb2xsUG9zaXRpb24pOworfQorCit2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50
RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3sKKyAgICBp
ZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSkgeworICAg
ICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247
CisgICAgICAgIHNjcm9sbGluZ1RyZWUoKS51cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihz
Y3JvbGxQb3NpdGlvbiwgU2V0U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzZXRTY3JvbGxMYXllclBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKTsK
KyAgICBzY3JvbGxpbmdUcmVlKCkudXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb24oc2Nyb2xs
UG9zaXRpb24pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjpzZXRT
Y3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBBU1NF
UlQoIXNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkpOworICAg
IG1fc2Nyb2xsTGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBDR1BvaW50TWFrZSgtcG9zaXRpb24ueCgp
ICsgc2Nyb2xsT3JpZ2luKCkueCgpLCAtcG9zaXRpb24ueSgpICsgc2Nyb2xsT3JpZ2luKCkueSgp
KTsKKworICAgIFNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyBiZWhhdmlvckZvckZpeGVk
ID0gc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzKCk7CisgICAgSW50UG9pbnQgc2Nyb2xs
T2Zmc2V0ID0gcG9zaXRpb24gLSB0b0ludFNpemUoc2Nyb2xsT3JpZ2luKCkpOworICAgIEludFNp
emUgc2Nyb2xsT2Zmc2V0Rm9yRml4ZWRDaGlsZHJlbiA9IEZyYW1lVmlldzo6c2Nyb2xsT2Zmc2V0
Rm9yRml4ZWRQb3NpdGlvbih2aWV3cG9ydFJlY3QoKSwgdG90YWxDb250ZW50c1NpemUoKSwgc2Ny
b2xsT2Zmc2V0LCBzY3JvbGxPcmlnaW4oKSwgZnJhbWVTY2FsZUZhY3RvcigpLCBmYWxzZSwgYmVo
YXZpb3JGb3JGaXhlZCwgaGVhZGVySGVpZ2h0KCksIGZvb3RlckhlaWdodCgpKTsKKyAgICBpZiAo
bV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIpCisgICAgICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVy
LmdldCgpLnBvc2l0aW9uID0gRmxvYXRQb2ludChzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVu
KTsKKworICAgIC8vIEdlbmVyYWxseSB0aGUgYmFubmVycyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBo
b3Jpem9udGFsLXBvc2l0aW9uIGNvbXB1dGF0aW9uIGFzIGEgZml4ZWQgZWxlbWVudC4gSG93ZXZl
ciwKKyAgICAvLyB0aGUgYmFubmVycyBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoZSBmcmFtZVNjYWxl
RmFjdG9yKCksIHNvIGlmIHRoZXJlIGlzIGN1cnJlbnRseSBhIG5vbi0xIGZyYW1lU2NhbGVGYWN0
b3IoKQorICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHJlY29tcHV0ZSBzY3JvbGxPZmZzZXRGb3JGaXhl
ZENoaWxkcmVuIGZvciB0aGUgYmFubmVyIHdpdGggYSBzY2FsZSBmYWN0b3Igb2YgMS4KKyAgICBm
bG9hdCBob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyID0gc2Nyb2xsT2Zmc2V0Rm9yRml4
ZWRDaGlsZHJlbi53aWR0aCgpOworICAgIGlmIChmcmFtZVNjYWxlRmFjdG9yKCkgIT0gMSkKKyAg
ICAgICAgaG9yaXpvbnRhbFNjcm9sbE9mZnNldEZvckJhbm5lciA9IEZyYW1lVmlldzo6c2Nyb2xs
T2Zmc2V0Rm9yRml4ZWRQb3NpdGlvbih2aWV3cG9ydFJlY3QoKSwgdG90YWxDb250ZW50c1NpemUo
KSwgc2Nyb2xsT2Zmc2V0LCBzY3JvbGxPcmlnaW4oKSwgMSwgZmFsc2UsIGJlaGF2aW9yRm9yRml4
ZWQsIGhlYWRlckhlaWdodCgpLCBmb290ZXJIZWlnaHQoKSkud2lkdGgoKTsKKworICAgIGlmICht
X2hlYWRlckxheWVyKQorICAgICAgICBtX2hlYWRlckxheWVyLmdldCgpLnBvc2l0aW9uID0gRmxv
YXRQb2ludChob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyLCAwKTsKKworICAgIGlmICht
X2Zvb3RlckxheWVyKQorICAgICAgICBtX2Zvb3RlckxheWVyLmdldCgpLnBvc2l0aW9uID0gRmxv
YXRQb2ludChob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyLCB0b3RhbENvbnRlbnRzU2l6
ZSgpLmhlaWdodCgpIC0gZm9vdGVySGVpZ2h0KCkpOworCisgICAgaWYgKCFtX2NoaWxkcmVuKQor
ICAgICAgICByZXR1cm47CisKKyAgICBJbnRSZWN0IHZpZXdwb3J0UmVjdCA9IHRoaXMtPnZpZXdw
b3J0UmVjdCgpOworICAgIHZpZXdwb3J0UmVjdC5zZXRMb2NhdGlvbihJbnRQb2ludChzY3JvbGxP
ZmZzZXRGb3JGaXhlZENoaWxkcmVuKSk7CisKKyAgICBzaXplX3Qgc2l6ZSA9IG1fY2hpbGRyZW4t
PnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
bV9jaGlsZHJlbi0+YXQoaSktPnBhcmVudFNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdlKHZpZXdwb3J0
UmVjdCwgRmxvYXRTaXplKCkpOworfQorCitJbnRQb2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBJbnRQb2ludCBw
b3NpdGlvbjsKKyAgICAKKyAgICBpZiAoc2Nyb2xsaW5nVHJlZSgpLnJvb3ROb2RlKCkgPT0gdGhp
cyAmJiBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgPT0gUGluVG9Cb3R0
b20pCisgICAgICAgIHBvc2l0aW9uLnNldFkobWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsK
KworICAgIHJldHVybiBwb3NpdGlvbjsKK30KKworSW50UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVJT1M6Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgSW50UG9p
bnQgcG9zaXRpb24odG90YWxDb250ZW50c1NpemVGb3JSdWJiZXJCYW5kKCkud2lkdGgoKSAtIHZp
ZXdwb3J0UmVjdCgpLndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgdG90YWxDb250ZW50
c1NpemVGb3JSdWJiZXJCYW5kKCkuaGVpZ2h0KCkgLSB2aWV3cG9ydFJlY3QoKS5oZWlnaHQoKSk7
CisKKyAgICBwb3NpdGlvbi5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisKKyAgICBpZiAoc2Nyb2xs
aW5nVHJlZSgpLnJvb3ROb2RlKCkgPT0gdGhpcyAmJiBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsUGlu
bmluZ0JlaGF2aW9yKCkgPT0gUGluVG9Ub3ApCisgICAgICAgIHBvc2l0aW9uLnNldFkobWluaW11
bVNjcm9sbFBvc2l0aW9uKCkueSgpKTsKKworICAgIHJldHVybiBwb3NpdGlvbjsKK30KKwordm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYg
b2Zmc2V0KQoreworICAgIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKCkgKyBvZmZz
ZXQpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxCeVdp
dGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAg
ICBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKHNjcm9sbFBv
c2l0aW9uKCkgKyBvZmZzZXQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCmluZGV4
IDhmNWY0YTljNjEwOWIzM2YyMzFmNzY5NzA5MTc2NTQ1OGNmOTQzYWIuLmYwZTJlNDZmYjk5YzFl
MTA4OTVjMDk4ZmUzMTBmNzU2ZGU1ZDRiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KQEAg
LTQ3LDYgKzQ3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxTY3Jv
bGxpbmdDb29yZGluYXRvcj4gU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdl
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMocGFn
ZSkpOworfQorCiBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWMoUGFnZSogcGFnZSkKICAgICA6IEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkKICAg
ICAsIG1fc2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXIodGhpcywgJlNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjOjpzY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1lckZpcmVkKQpAQCAt
MTUyLDcgKzE1Nyw2IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjOjpjcmVhdGVTY3JvbGxpbmdUcmVlTm9kZShTCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFT
WU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KaW5kZXggMmM4MTA0OWRiYmUzMzg1
MzkyYTAzMTA1MzJmYWRhY2ZhYTg1NWM1My4uNTZkZDAzNTJmOTU5M2Q1ODM1NjZkMzNmOTFiNTIz
M2Q0NjE1ZmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
VHJlZS5oIgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQppbmRleCBiYmEwNTQwMzVmZmQ1M2EyNDY0
MGI3NGE4NjliOWVkYjI0ZGZiYmM3Li44ZWIyYzhmM2MwMTBlOTIyOTA1NGI5N2I5ZmMzYTZhOTBh
MDg2OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdU
cmVlLmgiCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9S
ZW1vdGVTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxp
bmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggZDBlZGI4YzhmMDJmMjk4MmE1OTM4YWNl
MWFkZmE0YTg2YWI3NGMyZi4uNGUzNTY3ZDVmZWFjZDZjMTRhNTVmNDFiODc0NjA2MDBlNzg4ZjAx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVT
Y3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5n
L1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCkBAIC0zMSw5ICszMSwxNCBAQAogI2luY2x1ZGUgIlJl
bW90ZUxheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaD4KIAorI2lmIFBMQVRGT1JNKElP
UykKKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLmg+Cisj
ZWxzZQorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMuaD4K
KyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC04MSw3ICs4NiwxMSBAQCBQYXNzT3duUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBSZW1vdGVT
Y3JvbGxpbmdUcmVlOjpjcmVhdGVOb2RlKFNjcm9sbGluZ05vZGVUeXBlCiB7CiAgICAgc3dpdGNo
IChub2RlVHlwZSkgewogICAgIGNhc2UgU2Nyb2xsaW5nTm9kZToKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6Y3JlYXRlKCp0
aGlzLCBub2RlSUQpOworI2Vsc2UKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlTWFjOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CisjZW5kaWYKICAgICBjYXNlIEZpeGVk
Tm9kZToKICAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNyZWF0ZSgqdGhp
cywgbm9kZUlEKTsKICAgICBjYXNlIFN0aWNreU5vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDBm
NTEzNzdkNzc0MDAxOTQ3YjJkY2FjOTI5YzI0YzFmYjE5ZWM1ZmEuLmRmMDNlYzcxMjZlMTA3NjY3
YmE2ODMyMjdhYWRhNzZhYmIxMDFjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKIAogI2luY2x1ZGUgIlJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxFbGFzdGljaXR5Q29u
dHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nQ29uc3RyYWludHMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWUuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220792</attachid>
            <date>2014-01-09 17:24:48 -0800</date>
            <delta_ts>2014-01-09 17:27:43 -0800</delta_ts>
            <desc>Patch with project file changes</desc>
            <filename>bug-126730-20140109172447.patch</filename>
            <type>text/plain</type>
            <size>53971</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJmNDIyNmY0YmNmYzRhNGJmM2U5OWM5
ZWI0NmU1ZjRhZmZhN2E3OGEuLmVhNzQ3NjYzMjg2MTllYmY4OGI1ZGU5ODdmZTE5MWYyOTRiOGY1
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDEtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgRW5hYmxlIGFzeW5jIHNjcm9sbGluZyBmb3Ig
aU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY3
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIFR1cm4gb24gRU5BQkxFX0FTWU5DX1NDUk9MTElORyBmb3IgaU9TLgorCisgICAgICAgICog
d3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTQtMDEtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFVwc3RyZWFtIFdlYkNvcmUvcGxhdGZvcm0g
Y2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJkMTlmMjgyOTVkMDJiOTgxMWJiZmY3NDVjMDc2M2UwYmE3
NjMyNTEuLjRjN2YxM2IzOTExNDgwOTJlMzI5YTQ3ZDhhMTA5ZWMyYzU5NjYxY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2OCBAQAorMjAxNC0wMS0wOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgYXN5bmMgc2Nyb2xsaW5nIGZvciBpT1MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjczMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFR1cm4gb24g
RU5BQkxFX0FTWU5DX1NDUk9MTElORyBmb3IgaU9TLgorICAgICAgICAKKyAgICAgICAgRGlzYWJs
ZSBydWJiZXItYmFuZGluZyBhbmQgc2Nyb2xsYmFyLXJlbGF0ZWQgTWFjIGNvZGUgZm9yIFBMQVRG
T1JNKElPUyksCisgICAgICAgIHByb3ZpZGUgc3R1YnMgZm9yIHNjcm9sbGluZyBub2RlcyBhbmQg
c2Nyb2xsaW5nIHN0YXRlIG5vZGVzLCBhbmQgYW4KKyAgICAgICAgaU9TIHNjcm9sbGluZyB0cmVl
LCBhbmQgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yLgorICAgICAgICAKKyAgICAgICAgTW92ZSBjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGUoKSBpbnRvIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlv
biBmaWxlLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6c2V0U2Nyb2xsYmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyk6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAg
ICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZTo6aXNTY3JvbGxpbmdUcmVlSU9TKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmguCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0u
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TOjpTY3JvbGxpbmdDb29yZGluYXRv
cklPUyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcklPUzo6flNjcm9s
bGluZ0Nvb3JkaW5hdG9ySU9TKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9ySU9TOjpwYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9ySU9TOjpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcklPUzo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1M6OnNjcm9sbGluZ1N0YXRlVHJlZUNv
bW1pdHRlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3JJT1M6OmNvbW1pdFRyZWVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvcklPUzo6Y3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlSU9TOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZUlPUzo6U2Nyb2xsaW5nVHJlZUlPUyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlSU9TOjp+U2Nyb2xsaW5nVHJlZUlPUyk6CisgICAgICAgIChXZWJDb3JlOjpkZXJlZlNjcm9s
bGluZ0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6Omlu
dmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUlPUzo6Y29tbWl0TmV3
VHJlZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJT1M6OnVwZGF0ZU1h
aW5GcmFtZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVJ
T1M6OmNyZWF0ZU5vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlSU9TLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVh
ZGVkU2Nyb2xsaW5nVHJlZS5oLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW06IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVJT1MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVJT1M6On5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0
ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVJT1M6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsUG9zaXRpb25XaXRob3V0
Q29udGVudEVkZ2VDb25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjptYXhp
bXVtU2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVJT1M6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbToKKyAgICAg
ICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW06CisKIDIw
MTQtMDEtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEF0
dGVtcHQgdG8gZml4IHRoZSBXaW5kb3dzIGJ1aWxkIGZvbGxvd2luZyA8aHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTYxNTg5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUwMWYwYWQzYTM3ZmFmMDhh
ZmQ4NTYyNWExMjFiNDkzMmUxZDJlNzIuLjU4ODVhNTliYzBiYjNjYzUwODMxMmVhY2JkOTA4MTY1
YjBhNTcyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wMS0wOSAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBFbmFibGUgYXN5bmMg
c2Nyb2xsaW5nIGZvciBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNjczMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgVHVybiBvbiBFTkFCTEVfQVNZTkNfU0NST0xMSU5HIGZvciBpT1Mu
CisgICAgICAgIAorICAgICAgICBPbiBpT1MsIGNyZWF0ZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZUlPUyBub2Rlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Ny
b2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWU6OmNy
ZWF0ZU5vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5n
VHJlZS5oOgorCiAyMDE0LTAxLTA5ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIxNjAxNTIpOiBTZWxlY3Rpb24gZHJhZyBzbmFwc2hvdCBkb2Vz
bid0IGFwcGVhciBvciBoYXMgdGhlIHdyb25nIGNvbnRlbnQgb24gUmV0aW5hCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oIGIvU291cmNlL1dURi93dGYvRmVhdHVy
ZURlZmluZXMuaAppbmRleCBmODUzMmFhMjEyMmYwNzFmYTQ0YmM5N2MzYTVkMTdkYzAwZjlmOGQ2
Li40ZjRkYzViYWNhYTRmYzE1OGIzM2JjMGM0MDFmYjBjOTYxYWJhYjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1
cmVEZWZpbmVzLmgKQEAgLTU2LDYgKzU2LDEwIEBACiAvKiBQTEFURk9STShNQUMpIGlzIGFsd2F5
cyBlbmFibGVkIHdoZW4gUExBVEZPUk0oSU9TKSBpcyBlbmFibGVkLiAqLwogI2lmIFBMQVRGT1JN
KElPUykKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcpCisjZGVmaW5lIEVO
QUJMRV9BU1lOQ19TQ1JPTExJTkcgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfOEJJ
VF9URVhUUlVOKQogI2RlZmluZSBFTkFCTEVfOEJJVF9URVhUUlVOIDEKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyBiL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKaW5kZXggMTAwOTU3
MDg0Njg0MzJlNGFmOTNmZGFjMTdiYWJhMDA0MjNhYTRhZC4uODEzYmVhZjU2NDhmZDk0ZjJlYjkz
MzMzOThjMmJhYWE2MzM1NjEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnCkBAIC0xMDYsNiArMTA2LDYgQEAgSkFWQVNDUklQVENPUkVfUFJJ
VkFURV9IRUFERVJTX0RJUl9Qcm9kdWN0aW9uID0gJChTREtST09UKSQoUFJPRFVDVElPTl9GUkFN
RVdPUksKIEpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVfSEVBREVSU19lbmdpbmVlcmluZyA9ICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9KYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7
CiAKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTID0gJChFWENMVURFRF9TT1VSQ0VfRklMRV9O
QU1FU18kKFBMQVRGT1JNX05BTUUpKTsKLUVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9u
ZW9zID0gKi50aWZmICpDdXJzb3IucG5nIEN1cnNvci5jcHAgQ3Vyc29yTWFjLm1tIEV2ZW50SGFu
ZGxlck1hYy5tbSBIVE1MQ29udmVydGVyLm1tIEtpbGxSaW5nTWFjLm1tIFBsYXRmb3JtRXZlbnRG
YWN0b3J5TWFjLm1tIFNTTEtleUdlbmVyYXRvck1hYy5jcHAgU2VhcmNoUG9wdXBNZW51TWFjLm1t
IFNoYXJlZFRpbWVyTWFjLm1tIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXIubW0gV2ViVmlk
ZW9GdWxsc2NyZWVuSFVEV2luZG93Q29udHJvbGxlci5tbSBXZWJXaW5kb3dBbmltYXRpb24ubW07
CitFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU19pcGhvbmVvcyA9ICoudGlmZiAqQ3Vyc29yLnBu
ZyBDdXJzb3IuY3BwIEN1cnNvck1hYy5tbSBFdmVudEhhbmRsZXJNYWMubW0gSFRNTENvbnZlcnRl
ci5tbSBLaWxsUmluZ01hYy5tbSBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBTU0xLZXlHZW5l
cmF0b3JNYWMuY3BwIFNlYXJjaFBvcHVwTWVudU1hYy5tbSBTY3JvbGxpbmdDb29yZGluYXRvck1h
Yy5tbSBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0gU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVNYWMubW0gU2hhcmVkVGltZXJNYWMubW0gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbSBXZWJWaWRlb0Z1bGxzY3JlZW5IVURXaW5kb3dDb250cm9sbGVyLm1tIFdlYldpbmRv
d0FuaW1hdGlvbi5tbTsKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTX2lwaG9uZXNpbXVsYXRv
ciA9ICQoRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNfaXBob25lb3MpOwogRVhDTFVERURfU09V
UkNFX0ZJTEVfTkFNRVNfbWFjb3N4ID0gKklPUy5oICpJT1MuY3BwICpJT1MubW0gS2lsbFJpbmdO
b25lLmNwcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAzNjlkY2Y3MWUyNzY3Zjc5NDI5ZjUxZjY0ZmEzN2M1MTZkMTllNzhlLi41
NTU0NzRlMDI1YzA5ODkzNjU0NTJlNzU0MmJkNWQ2ZDcxN2U2ZWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00ODksNiArNDg5
LDEyIEBACiAJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
Qjg4OTA5MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLzsg
fTsKIAkJMEZCODg5MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9k
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI4
ODkwQzE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmNwcCAqLzsg
fTsKIAkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCODg5
MEQxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGQzRFNDBEMTg3Rjgy
RTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNEU0MDcxODdGODJFMTAwNDU4ODJDIC8q
IFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmggKi87IH07CisJCTBGQzRFNDBFMTg3RjgyRTEwMDQ1
ODgyQyAvKiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzRFNDA4MTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3Jv
bGxpbmdDb29yZGluYXRvcklPUy5tbSAqLzsgfTsKKwkJMEZDNEU0MEYxODdGODJFMTAwNDU4ODJD
IC8qIFNjcm9sbGluZ1RyZWVJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDNEU0MDkxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJ
T1MuY3BwICovOyB9OworCQkwRkM0RTQxMDE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJl
ZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
NEU0MEExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCAqLzsgfTsKKwkJMEZD
NEU0MTExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RTQwQjE4
N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaCAqLzsgfTsK
KwkJMEZDNEU0MTIxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
NEU0MEMxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLm1t
ICovOyB9OwogCQkwRkNGMzMyNDBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyMzBGMkI5NzE1
MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgKi87IH07CiAJCTBGQ0YzMzJFMEYyQjlBMjUwMDRCNjc5
NSAvKiBXZWJMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQ0YzMzJBMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJMYXllci5tbSAqLzsgfTsKIAkJ
MEZDRjMzMkYwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYkxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyQjBGMkI5QTI1MDA0QjY3OTUgLyog
V2ViTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNzE4NSw2ICs3MTkxLDEyIEBACiAJCTBGQjg4OTA5MTY3RDJGQTEwMDEwQ0RBNSAvKiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkI4ODkwQzE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGlu
Z1N0YXRlU3RpY2t5Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjg4
OTBEMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzRFNDA3MTg3RjgyRTEwMDQ1ODgyQyAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvcklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5oOyBwYXRoID0gaW9zL1Njcm9sbGluZ0Nvb3JkaW5h
dG9ySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzRFNDA4MTg3RjgyRTEw
MDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tOyBwYXRoID0g
aW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkM0RTQwOTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUlPUy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTY3JvbGxpbmdUcmVlSU9TLmNwcDsg
cGF0aCA9IGlvcy9TY3JvbGxpbmdUcmVlSU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEZDNEU0MEExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2Nyb2xsaW5nVHJlZUlPUy5oOyBwYXRoID0g
aW9zL1Njcm9sbGluZ1RyZWVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZD
NEU0MEIxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlSU9TLmg7IHBhdGggPSBpb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDNEU0MEMxODdGODJFMTAwNDU4ODJDIC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW07IHBhdGggPSBp
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQ0YzMzIzMEYyQjk3MTUwMDRCNjc5NSAvKiBDb2xvckNHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yQ0cuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkNGMzMyQTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViTGF5ZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJMYXllci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDRjMzMkIwRjJCOUEyNTAwNEI2Nzk1IC8qIFdl
YkxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkxheWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDM3Niw2ICsxNDM4OCwxOSBAQAogCQkJdGFi
V2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRkM0RTQwNjE4N0Y4MkQzMDA0
NTg4MkMgLyogaW9zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkwRkM0RTQwNzE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1Mu
aCAqLywKKwkJCQkwRkM0RTQwODE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0
b3JJT1MubW0gKi8sCisJCQkJMEZDNEU0MDkxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1Ry
ZWVJT1MuY3BwICovLAorCQkJCTBGQzRFNDBBMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdU
cmVlSU9TLmggKi8sCisJCQkJMEZDNEU0MEIxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlSU9TLmggKi8sCisJCQkJMEZDNEU0MEMxODdGODJFMTAwNDU4ODJDIC8q
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLm1tICovLAorCQkJKTsKKwkJCW5hbWUgPSBp
b3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNERGQjMzRjBBN0RGNzYz
MDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTE0NjAwLDYgKzE0NjI1LDcgQEAKIAkJMUFGNjJFRTExNERBMjJB
NzAwNDE1NTZDIC8qIHNjcm9sbGluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMEZDNEU0MDYxODdGODJEMzAwNDU4ODJDIC8qIGlvcyAqLywKIAkJCQkw
RkZENEQ1RTE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAg
Ki8sCiAJCQkJMEZGRDRENUYxODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuaCAqLywKIAkJCQkxQUY2MkVFMjE0REEyMkE3MDA0MTU1NkMgLyogbWFjICovLApAQCAt
MjM2MTQsNiArMjM2NDAsNyBAQAogCQkJCUE4RUE3RDJEMEExOTM4NTUwMEE4RUY1RiAvKiBIVE1M
SW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0QyQjBBMTkzODU1MDBBOEVG
NUYgLyogSFRNTEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODEzNjlDQzA5NzM3
NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZD
NEU0MTAxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3QkM4NDlCMTIzNzBBNEIwMDBDNjE2MSAvKiBIVE1MSW5wdXRTdHJlYW0uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5REU2MDk5RTY0OTIwMDU2RTU4MSAvKiBIVE1MSW50ZXJjaGFu
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTM2OUU0MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1M
S2V5Z2VuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzYyNiw2ICsyMzY1Myw3IEBACiAJ
CQkJRTQ0NjEzQTUwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxNZWRpYUVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4RUE3OUY0MEExOTE2REYwMEE4RUY1RiAvKiBIVE1MTWVudUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJCRThFMkM3MTJBNTg5RUMwMEZBRDU1MCAvKiBIVE1MTWV0
YUNoYXJzZXRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzRFNDBEMTg3RjgyRTEwMDQ1
ODgyQyAvKiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3
MURDMjQwQTE1MjA1NzAwQjEyQTY4IC8qIEhUTUxNZXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTQ1NDQyNEIxMTlCMzY2MTAwOUJFOTEyIC8qIEhUTUxNZXRlckVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4Q0ZGN0E3MEExNTY5NzgwMDBBNDIzNCAvKiBIVE1MTW9kRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU0Nyw2ICsyNTU3NSw3IEBACiAJCQkJRTRDOTFBMEUx
ODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
RUYyOUVFQzE3MTVERDA5MDBDNEI0QzkgLyogVmlkZW9UcmFja1ByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3MDU4NTFCMTdGQjQ0QjQwMDVGMkJDQiAvKiBKU0FsbEF1ZGlvQ2FwYWJpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkM0RTQxMTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFRjQxOENG
MTE3OTY3OEMwMDlEMTEyQyAvKiBWaWV3cG9ydEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJM0ZGRkY5QUUxNTlEOUIwNjAwMjBCQkQ1IC8qIFZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMjAwOTlFNjQ5MjAwNTZFNTgxIC8qIFZpc2libGVQb3Np
dGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzA3Myw2ICsyNzEwMiw3IEBACiAJCQkJNDFGMDYy
MTUwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjMzRjA1M0QxMjBCMERBNTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EyNDU4N0IxMDIxRUFGNDAwMEEwMEFB
IC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzRFNDBGMTg3
RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlSU9TLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUYzRDRDNDc4MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdBNzRFQ0JBMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEY0RjVGRkIxMUNCRDJF
MTAwQTE4NkJGIC8qIEluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yODA4OSw2ICsyODExOSw3IEBACiAJCQkJMEY1ODBDRkUwRjEyREU5QjAwNTFE
Njg5IC8qIFJlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MEQx
MEQ5OTE1NDVGNTc2MDA5NkQyODggLyogUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTNDMjQ0RkVCQTM3NUFDNjMzRjg4QkU2RiAvKiBSZW5kZXJMYXllck1vZGVs
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzRFNDBFMTg3RjgyRTEwMDQ1ODgyQyAv
KiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMzNGQjFC
MEYzMEVFODUwMDJDREQ3QyAvKiBSZW5kZXJMaW5lQm94TGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBQkI1NDE5RTBBQ0RERkU0MDAyODIwRUIgLyogUmVuZGVyTGlzdEJveC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEVBN0E0RTBBMTkxQTUyMDBBOEVGNUYgLyogUmVuZGVyTGlzdEl0ZW0u
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODc3MCw2ICsyODgwMSw3IEBACiAJCQkJRTFGRTEzNzAx
ODNGRUNGMDAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNyAvKiBXZWJHTERlcHRoVGV4dHVy
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2RUJGMEU1NDEyQTg5Mjk4MDBEQjE3MDkgLyogV2Vi
R0xFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZDNEU0MTIxODdGODJFMTAwNDU4
ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDlDN0I5Q0UxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNkU0N0U2NjAxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUZGQkY0MDExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xM
YXllci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDU5NjdhZTRiMDY2NzZlOWM2
NTY0MTNhYzZhYWY1NGQ0ZTE2NjI4M2UuLmE1ZmVhNGUzYjNkNWU2MmFjNDY2ZjNiMDVhOWYyZTlh
YTcwZGI4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTQ1LDEwICs0NSw2IEBACiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjZW5kaWYKIAotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCi0jaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCIKLSNlbmRpZgotCiAjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9y
Q29vcmRpbmF0ZWRHcmFwaGljcy5oIgogI2VuZGlmCkBAIC01OSwxMiArNTUsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKKyNpZiAhUExBVEZPUk0oTUFDKQogUGFzc1JlZlB0cjxTY3JvbGxp
bmdDb29yZGluYXRvcj4gU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQog
ewotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjKHBh
Z2UpKTsKLSNlbmRpZgotCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKHBh
Z2UpKTsKICNlbmRpZgpAQCAtNzUsNiArNjgsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3JlYXRlKFBhZ2UqIHBhZ2UpCiAKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpKTsKIH0KKyNlbmRp
ZgogCiBTY3JvbGxpbmdDb29yZGluYXRvcjo6U2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSogcGFn
ZSkKICAgICA6IG1fcGFnZShwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKaW5kZXggYmM3
NjhkNmM5YTVhNjhlOWQ1OTExOTc5ZTE3M2RkMmFmZTg4MGEzZS4uOGVmOGZmNmE1N2EwMGNjNGY1
MTRkZTUwZDQ2ZmU4MjViMzc3YWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPiBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmNyZWF0ZShTY3JvCiAKIFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1N0YXRlVHJl
ZSYgc3RhdGVUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nU3Rh
dGVOb2RlKFNjcm9sbGluZ05vZGUsIHN0YXRlVHJlZSwgbm9kZUlEKQotI2lmIFBMQVRGT1JNKE1B
QykKKyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAgLCBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyUGFpbnRlcigwKQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsYmFyUGFpbnRlcigw
KQogI2VuZGlmCkBAIC01Nyw3ICs1Nyw3IEBAIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhCiAKIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKGNv
bnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgc3RhdGVOb2RlLCBTY3JvbGxpbmdTdGF0
ZVRyZWUmIGFkb3B0aXZlVHJlZSkKICAgICA6IFNjcm9sbGluZ1N0YXRlTm9kZShzdGF0ZU5vZGUs
IGFkb3B0aXZlVHJlZSkKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAh
UExBVEZPUk0oSU9TKQogICAgICwgbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIoc3RhdGVOb2Rl
LnZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRlcigpKQogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xsYmFy
UGFpbnRlcihzdGF0ZU5vZGUuaG9yaXpvbnRhbFNjcm9sbGJhclBhaW50ZXIoKSkKICNlbmRpZgpA
QCAtMjMyLDYgKzIzMiwxMiBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0
Rm9vdGVyTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYgbGF5ZQogICAgIHNldFByb3Bl
cnR5Q2hhbmdlZChGb290ZXJMYXllcik7CiB9CiAKKyNpZiAhKFBMQVRGT1JNKE1BQykgJiYgIVBM
QVRGT1JNKElPUykpCit2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2Nyb2xs
YmFyUGFpbnRlcnNGcm9tU2Nyb2xsYmFycyhTY3JvbGxiYXIqLCBTY3JvbGxiYXIqKQoreworfQor
I2VuZGlmCisKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpkdW1wUHJvcGVydGll
cyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKIHsKICAgICB0cyA8PCAiKCIgPDwg
IlNjcm9sbGluZyBub2RlIiA8PCAiXG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaAppbmRleCA3MzQ5
NDE2MmY1ZmJhODJiMTZlZmRlZDExYzdiY2VlNTZiYjA4YTE2Li4yZWY1MzMxMmRkZmNhODkzZjE4
ZmU1MzljYTRjNjIyNmJmM2MzNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaApAQCAtMTE2LDcg
KzExNiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBMYXllclJlcHJlc2VudGF0aW9uJiBmb290ZXJM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9vdGVyTGF5ZXI7IH0KICAgICB2b2lkIHNldEZvb3Rl
ckxheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKIAotI2lmIFBMQVRGT1JNKE1BQykK
KyNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAgU2Nyb2xsYmFyUGFpbnRl
ciB2ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsU2Ny
b2xsYmFyUGFpbnRlcjsgfQogICAgIFNjcm9sbGJhclBhaW50ZXIgaG9yaXpvbnRhbFNjcm9sbGJh
clBhaW50ZXIoKSBjb25zdCB7IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyOyB9
CiAjZW5kaWYKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIExheWVyUmVwcmVzZW50
YXRpb24gbV9oZWFkZXJMYXllcjsKICAgICBMYXllclJlcHJlc2VudGF0aW9uIG1fZm9vdGVyTGF5
ZXI7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0o
SU9TKQogICAgIFNjcm9sbGJhclBhaW50ZXIgbV92ZXJ0aWNhbFNjcm9sbGJhclBhaW50ZXI7CiAg
ICAgU2Nyb2xsYmFyUGFpbnRlciBtX2hvcml6b250YWxTY3JvbGxiYXJQYWludGVyOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKaW5kZXgg
NTBmYmFjYzQxYjhlNjQ5OTBlMTI3YzZmZWUyY2FjZDE3MTNjNmU5OC4uNDk4YWZmM2I4MTgwYTJk
NDM0NTA2NTMwZWU0YmYyZmJjMTY0NDMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWUuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdmlydHVhbCBib29sIGlzVGhyZWFkZWRTY3JvbGxpbmdUcmVlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdGVTY3JvbGxpbmdUcmVlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxpbmdUcmVlSU9TKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgRXZlbnRSZXN1bHQgdHJ5VG9I
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAgICBib29s
IHNob3VsZEhhbmRsZVdoZWVsRXZlbnRTeW5jaHJvbm91c2x5KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRl
ZFNjcm9sbGluZ1RyZWUuaAppbmRleCBmODgxM2JlMTgzMThhZDQ0YmIwYTRhZmMzZTY1OTcyN2Jk
Y2U1ZmFjLi45NDRlMmNiYzE2OTJlNDg3MjgxNzZkNmI5Mjk1OTQ4YzEyYTY2ZTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuaApAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UaHJlYWRlZFNj
cm9sbGluZ1RyZWUoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1RocmVhZGVkU2Nyb2xsaW5nVHJl
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBjb21taXROZXdU
cmVlU3RhdGUoUGFzc093blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+KSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
IE9WRVJSSURFOwpAQCAtNjIsNiArNjAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IqKTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNUaHJlYWRlZFNjcm9sbGluZ1RyZWUoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJl
ZU5vZGU+IGNyZWF0ZU5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCkgT1ZF
UlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9T
Y3JvbGxpbmdDb29yZGluYXRvcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
aW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQzYWVhMDJhMmZjNjc1
YmQzMWJhNDg0ZmRiYjI1MDgyYzQ1MjVhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdDb29yZGluYXRvcklPUy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TX2gK
KyNkZWZpbmUgU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1NfaAorCisjaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKKworI2luY2x1ZGUgIkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxiYXI7CitjbGFzcyBTY3JvbGxpbmdTdGF0
ZU5vZGU7CitjbGFzcyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU7CitjbGFzcyBTY3JvbGxp
bmdTdGF0ZVRyZWU7CitjbGFzcyBUaHJlYWRlZFNjcm9sbGluZ1RyZWU7CisKK2NsYXNzIFNjcm9s
bGluZ0Nvb3JkaW5hdG9ySU9TIDogcHVibGljIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Igewor
cHVibGljOgorICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TKFBhZ2UqKTsKKyAg
ICB2aXJ0dWFsIH5TY3JvbGxpbmdDb29yZGluYXRvcklPUygpOworCisgICAgdmlydHVhbCB2b2lk
IHBhZ2VEZXN0cm95ZWQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmVlU3RhdGVJZk5l
ZWRlZCgpIE9WRVJSSURFOworCisgICAgLy8gSGFuZGxlIHRoZSB3aGVlbCBldmVudCBvbiB0aGUg
c2Nyb2xsaW5nIHRocmVhZC4gUmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCB3YXMgaGFuZGxlZCBv
ciBub3QuCisgICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3KiwgY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IGNyZWF0ZVNj
cm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIE9WRVJSSURF
OworCisgICAgdm9pZCBzY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1lckZpcmVkKFRpbWVy
PFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TPiopOworICAgIHZvaWQgY29tbWl0VHJlZVN0YXRlKCk7
CisKKyAgICBUaW1lcjxTY3JvbGxpbmdDb29yZGluYXRvcklPUz4gbV9zY3JvbGxpbmdTdGF0ZVRy
ZWVDb21taXR0ZXJUaW1lcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNlbmRpZiAvLyBTY3JvbGxpbmdDb29yZGlu
YXRvcklPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RjNjYwM2UzZTcz
ZjQ5ZWQ4NjQzZTZiNGY0ODZkNTQ4ZmEwZjMxOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbQpAQCAt
MCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbXBvcnQgIlNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9T
LmgiCisKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKKyNp
bmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5n
U3RhdGVUcmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVGhyZWFkLmgiCisjaW5jbHVkZSAiU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlSU9TLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIKKyNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlSU9TLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MocGFnZSkpOworfQorCitTY3JvbGxpbmdD
b29yZGluYXRvcklPUzo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MoUGFnZSogcGFnZSkKKyAgICA6
IEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IocGFnZSkKKyAgICAsIG1fc2Nyb2xsaW5nU3RhdGVU
cmVlQ29tbWl0dGVyVGltZXIodGhpcywgJlNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TOjpzY3JvbGxp
bmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1lckZpcmVkKQoreworICAgIHNldFNjcm9sbGluZ1RyZWUo
U2Nyb2xsaW5nVHJlZUlPUzo6Y3JlYXRlKHRoaXMpKTsKK30KKworU2Nyb2xsaW5nQ29vcmRpbmF0
b3JJT1M6On5TY3JvbGxpbmdDb29yZGluYXRvcklPUygpCit7CisgICAgQVNTRVJUKCFzY3JvbGxp
bmdUcmVlKCkpOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TOjpwYWdlRGVzdHJv
eWVkKCkKK3sKKyAgICBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpwYWdlRGVzdHJveWVkKCk7
CisKKyAgICBtX3Njcm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLnN0b3AoKTsKKworICAg
IC8vIEludmFsaWRhdGluZyB0aGUgc2Nyb2xsaW5nIHRyZWUgd2lsbCBicmVhayB0aGUgcmVmZXJl
bmNlIGN5Y2xlIGJldHdlZW4gdGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGFuZCBTY3JvbGxpbmdU
cmVlIG9iamVjdHMuCisgICAgcmVsZWFzZVNjcm9sbGluZ1RyZWUoKTsKK30KKwordm9pZCBTY3Jv
bGxpbmdDb29yZGluYXRvcklPUzo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKQoreworICAgIGlm
ICghc2Nyb2xsaW5nU3RhdGVUcmVlKCktPmhhc0NoYW5nZWRQcm9wZXJ0aWVzKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGNvbW1pdFRyZWVTdGF0ZSgpOworICAgIG1fc2Nyb2xsaW5nU3RhdGVU
cmVlQ29tbWl0dGVyVGltZXIuc3RvcCgpOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
SU9TOjpzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpCit7CisgICAgQVNTRVJUKHNjcm9sbGluZ1N0
YXRlVHJlZSgpLT5oYXNDaGFuZ2VkUHJvcGVydGllcygpKTsKKworICAgIGlmIChtX3Njcm9sbGlu
Z1N0YXRlVHJlZUNvbW1pdHRlclRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlQ29tbWl0dGVyVGltZXIuc3RhcnRPbmVTaG90KDApOwor
fQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TOjpzY3JvbGxpbmdTdGF0ZVRyZWVDb21t
aXR0ZXJUaW1lckZpcmVkKFRpbWVyPFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TPiopCit7CisgICAg
Y29tbWl0VHJlZVN0YXRlKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1M6OmNv
bW1pdFRyZWVTdGF0ZSgpCit7CisgICAgQVNTRVJUKHNjcm9sbGluZ1N0YXRlVHJlZSgpLT5oYXND
aGFuZ2VkUHJvcGVydGllcygpKTsKKworICAgIE93blB0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+IHRy
ZWVTdGF0ZSA9IHNjcm9sbGluZ1N0YXRlVHJlZSgpLT5jb21taXQoTGF5ZXJSZXByZXNlbnRhdGlv
bjo6UGxhdGZvcm1MYXllclJlcHJlc2VudGF0aW9uKTsKKyAgICAvLyBGSVhNRTogZmlndXJlIG91
dCBob3cgdG8gY29tbWl0LgorLy8gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZU
aHJlYWRlZFNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZSwgdG9UaHJlYWRlZFNjcm9s
bGluZ1RyZWUoc2Nyb2xsaW5nVHJlZSgpKSwgdHJlZVN0YXRlLnJlbGVhc2UoKSkpOworfQorCitQ
YXNzT3duUHRyPFNjcm9sbGluZ1RyZWVOb2RlPiBTY3JvbGxpbmdDb29yZGluYXRvcklPUzo6Y3Jl
YXRlU2Nyb2xsaW5nVHJlZU5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGlu
Z05vZGVJRCBub2RlSUQpCit7CisgICAgQVNTRVJUKHNjcm9sbGluZ1RyZWUoKSk7CisKKyAgICBz
d2l0Y2ggKG5vZGVUeXBlKSB7CisgICAgY2FzZSBTY3JvbGxpbmdOb2RlOgorICAgICAgICByZXR1
cm4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OmNyZWF0ZSgqc2Nyb2xsaW5nVHJlZSgp
LCBub2RlSUQpOworICAgIGNhc2UgRml4ZWROb2RlOgorICAgICAgICByZXR1cm4gU2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZTo6Y3JlYXRlKCpzY3JvbGxpbmdUcmVlKCksIG5vZGVJRCk7CisgICAgY2Fz
ZSBTdGlja3lOb2RlOgorICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNy
ZWF0ZSgqc2Nyb2xsaW5nVHJlZSgpLCBub2RlSUQpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
aW9zL1Njcm9sbGluZ1RyZWVJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
aW9zL1Njcm9sbGluZ1RyZWVJT1MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1MGE5NGQ0OTIyYWM1ZDZmMmQ2
ZDhhNmU5Njg4ZmEzZGQ1MTYyNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHAKQEAgLTAsMCArMSwxMDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJl
ZUlPUy5oIgorCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgIkFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIK
KyNpbmNsdWRlICJTY3JvbGxpbmdUaHJlYWQuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlRml4
ZWROb2RlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKKyNpbmNsdWRlICJTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvVGVtcG9y
YXJ5Q2hhbmdlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPFNjcm9sbGluZ1Ry
ZWVJT1M+IFNjcm9sbGluZ1RyZWVJT1M6OmNyZWF0ZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
KiBzY3JvbGxpbmdDb29yZGluYXRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9s
bGluZ1RyZWVJT1Moc2Nyb2xsaW5nQ29vcmRpbmF0b3IpKTsKK30KKworU2Nyb2xsaW5nVHJlZUlP
Uzo6U2Nyb2xsaW5nVHJlZUlPUyhBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdD
b29yZGluYXRvcikKKyAgICA6IG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3Ioc2Nyb2xsaW5nQ29vcmRp
bmF0b3IpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVJT1M6On5TY3JvbGxpbmdUcmVlSU9TKCkKK3sK
KyAgICAvLyBpbnZhbGlkYXRlKCkgc2hvdWxkIGhhdmUgY2xlYXJlZCBtX3Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLgorICAgIEFTU0VSVCghbV9zY3JvbGxpbmdDb29yZGluYXRvcik7Cit9CisKK3N0YXRp
YyB2b2lkIGRlcmVmU2Nyb2xsaW5nQ29vcmRpbmF0b3IoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZGVyZWYoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVl
SU9TOjppbnZhbGlkYXRlKCkKK3sKKyAgICAvLyBJbnZhbGlkYXRlIGlzIGRpc3BhdGNoZWQgYnkg
dGhlIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGNsYXNzIG9uIHRoZSBTY3JvbGxpbmdUaHJlYWQKKyAg
ICAvLyB0byBicmVhayB0aGUgcmVmZXJlbmNlIGN5Y2xlIGJldHdlZW4gU2Nyb2xsaW5nVHJlZSBh
bmQgU2Nyb2xsaW5nQ29vcmRpbmF0b3Igd2hlbiB0aGUKKyAgICAvLyBTY3JvbGxpbmdDb29yZGlu
YXRvcidzIHBhZ2UgaXMgZGVzdHJveWVkLgorICAgIEFTU0VSVChTY3JvbGxpbmdUaHJlYWQ6Omlz
Q3VycmVudFRocmVhZCgpKTsKKworICAgIC8vIFNpbmNlIHRoaXMgY2FuIHBvdGVudGlhbGx5IGJl
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yLAorICAgIC8v
IHdlIG5lZWQgdG8gcmVsZWFzZSBpdCBvbiB0aGUgbWFpbiB0aHJlYWQgc2luY2UgaXQgaGFzIG1l
bWJlciB2YXJpYWJsZXMgKHN1Y2ggYXMgdGltZXJzKQorICAgIC8vIHRoYXQgZXhwZWN0IHRvIGJl
IGRlc3Ryb3llZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICBjYWxsT25NYWluVGhyZWFkKGJp
bmQoZGVyZWZTY3JvbGxpbmdDb29yZGluYXRvciwgbV9zY3JvbGxpbmdDb29yZGluYXRvci5yZWxl
YXNlKCkubGVha1JlZigpKSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6Y29tbWl0TmV3
VHJlZVN0YXRlKFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBzY3JvbGxpbmdTdGF0ZVRy
ZWUpCit7CisgICAgU2Nyb2xsaW5nVHJlZTo6Y29tbWl0TmV3VHJlZVN0YXRlKHNjcm9sbGluZ1N0
YXRlVHJlZSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUlPUzo6dXBkYXRlTWFpbkZyYW1lU2Ny
b2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBTZXRPclN5bmNTY3Jv
bGxpbmdMYXllclBvc2l0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit7CisgICAg
aWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXRN
YWluRnJhbWVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbik7CisKKyAgICBjYWxsT25NYWlu
VGhyZWFkKGJpbmQoJlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZU1haW5GcmFt
ZVNjcm9sbFBvc2l0aW9uLCBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLmdldCgpLCBzY3JvbGxQb3Np
dGlvbiwgaXNIYW5kbGluZ1Byb2dyYW1tYXRpY1Njcm9sbCgpLCBzY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uKSk7Cit9CisKK1Bhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IFNjcm9sbGlu
Z1RyZWVJT1M6OmNyZWF0ZU5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUsIFNjcm9sbGlu
Z05vZGVJRCBub2RlSUQpCit7CisgICAgcmV0dXJuIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNy
ZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKG5vZGVUeXBlLCBub2RlSUQpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGYyOTQzOWVjNTIxYjI3OTI2ZTQyYmVkOTEzMzgyNTZmN2Y4YzBlNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlSU9TLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Nyb2xs
aW5nVHJlZUlPU19oCisjZGVmaW5lIFNjcm9sbGluZ1RyZWVJT1NfaAorCisjaWYgRU5BQkxFKEFT
WU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5oIgorI2luY2x1
ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOworCitjbGFzcyBTY3JvbGxpbmdUcmVlSU9TIDogcHVibGljIFNj
cm9sbGluZ1RyZWUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8U2Nyb2xsaW5nVHJlZUlP
Uz4gY3JlYXRlKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IqKTsKKyAgICB2aXJ0dWFsIH5TY3Jv
bGxpbmdUcmVlSU9TKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0TmV3VHJlZVN0YXRlKFBh
c3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPikgT1ZFUlJJREU7CisKKyAgICAvLyBObyB3aGVl
bCBldmVudHMgb24gaU9TCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCBFdmVudFJlc3Vs
dCB0cnlUb0hhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgT1ZFUlJJ
REUgeyByZXR1cm4gRGlkTm90SGFuZGxlRXZlbnQ7IH0KKworICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlKCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJl
ZUlPUyhBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKik7CisgICAgdmlydHVhbCBib29sIGlzU2Ny
b2xsaW5nVHJlZUlPUygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZp
cnR1YWwgUGFzc093blB0cjxTY3JvbGxpbmdUcmVlTm9kZT4gY3JlYXRlTm9kZShTY3JvbGxpbmdO
b2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRp
b24sIFNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24gPSBTeW5jU2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbikgT1ZFUlJJREU7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UpIE9WRVJSSURFIHsg
fQorI2VuZGlmCisKKyAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gbV9zY3Jv
bGxpbmdDb29yZGluYXRvcjsKK307CisKK1NDUk9MTElOR19UUkVFX1RZUEVfQ0FTVFMoU2Nyb2xs
aW5nVHJlZUlPUywgaXNTY3JvbGxpbmdUcmVlSU9TKCkpOworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjZW5kaWYgLy8gU2Ny
b2xsaW5nVHJlZUlPU19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFmYWRhMGZhYmU0OWIxY2JhMDg4ZjAxZGU1MGJhMmQxZTBiMWU4ZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVJT1MuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPU19oCisjZGVmaW5lIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlSU9TX2gKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworT0JKQ19DTEFTUyBDQUxheWVyOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwor
ICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TKCk7CisKK3ByaXZhdGU6
CisgICAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MoU2Nyb2xsaW5nVHJlZSYsIFNjcm9s
bGluZ05vZGVJRCk7CisKKyAgICAvLyBTY3JvbGxpbmdUcmVlTm9kZSBtZW1iZXIgZnVuY3Rpb25z
LgorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWZ0ZXJDaGlsZHJl
bihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBPVkVSUklERSB7IH0K
KworICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTY3Jv
bGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpOworICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb25X
aXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBJbnRQb2ludCYpOworCisgICAgdm9p
ZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CisKKyAgICBJbnRQb2lu
dCBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKyAgICBJbnRQb2ludCBtYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKSBjb25zdDsKKworICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYp
OworICAgIHZvaWQgc2Nyb2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBJ
bnRTaXplJik7CisKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxMYXllcjsKKyAgICBS
ZXRhaW5QdHI8Q0FMYXllcj4gbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXI7CisgICAgUmV0YWluUHRy
PENBTGF5ZXI+IG1faGVhZGVyTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZm9vdGVy
TGF5ZXI7CisgICAgSW50UG9pbnQgbV9wcm9iYWJsZU1haW5UaHJlYWRTY3JvbGxQb3NpdGlvbjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCisKKyNlbmRpZiAvLyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPU19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIzMjk2M2VmOGQ1
ZDFhZjc5YjQyNTY5MzEyYjE1NjhhMDBjMmE3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUy5t
bQpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MuaCIKKworI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpCisKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbXBvcnQgIlNjcm9s
bGluZ1N0YXRlVHJlZS5oIgorI2ltcG9ydCAiU2V0dGluZ3MuaCIKKyNpbXBvcnQgIlRpbGVDb250
cm9sbGVyLmgiCisjaW1wb3J0ICJXZWJMYXllci5oIgorCisjaW1wb3J0IDxRdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6Y3JlYXRl
KFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUyhz
Y3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJ
T1M6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGlu
Z1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlSU9TOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1MoKQoreworfQorCit2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVCZWZvcmVDaGlsZHJlbihj
b25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTo6dXBkYXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKKyAgICBjb25z
dCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSB0b1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZShzdGF0ZU5vZGUpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCisgICAgICAgIG1fc2Nyb2xs
TGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUubGF5ZXIoKTsKKworICAgIGlmIChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
Q291bnRlclNjcm9sbGluZ0xheWVyKSkKKyAgICAgICAgbV9jb3VudGVyU2Nyb2xsaW5nTGF5ZXIg
PSBzY3JvbGxpbmdTdGF0ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCk7CisKKyAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OkhlYWRlckxheWVyKSkKKyAgICAgICAgbV9oZWFkZXJMYXllciA9IHNjcm9sbGlu
Z1N0YXRlTm9kZS5oZWFkZXJMYXllcigpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpGb290ZXJMYXll
cikpCisgICAgICAgIG1fZm9vdGVyTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuZm9vdGVyTGF5
ZXIoKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhc29uc0ZvclN5bmNocm9ub3VzU2Nyb2xsaW5n
KSkgeworICAgICAgICBpZiAoc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9u
b3VzbHkoKSkgeworICAgICAgICAgICAgLy8gV2UncmUgdHJhbnNpdGlvbmluZyB0byB0aGUgc2xv
dyAidXBkYXRlIHNjcm9sbCBsYXllciBwb3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQiIG1vZGUu
CisgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBwcm9iYWJsZSBtYWluIHRocmVhZCBzY3Jv
bGwgcG9zaXRpb24gd2l0aCB0aGUgY3VycmVudCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24uCisgICAg
ICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkKKyAgICAgICAg
ICAgICAgICBtX3Byb2JhYmxlTWFpblRocmVhZFNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsaW5nU3Rh
dGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBDR1BvaW50IHNjcm9sbExheWVyUG9zaXRpb24gPSBtX3Njcm9sbExheWVy
LmdldCgpLnBvc2l0aW9uOworICAgICAgICAgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Ny
b2xsUG9zaXRpb24gPSBJbnRQb2ludCgtc2Nyb2xsTGF5ZXJQb3NpdGlvbi54LCAtc2Nyb2xsTGF5
ZXJQb3NpdGlvbi55KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihjb25z
dCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZTo6dXBkYXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5vZGUpOworCisgICAgY29uc3Qg
YXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUo
c3RhdGVOb2RlKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFmdGVyIGNo
aWxkIG5vZGVzIGhhdmUgYmVlbiB1cGRhdGVkLCBiZWNhdXNlIHRoZXkgbmVlZCB0byBoYXZlIHVw
ZGF0ZWQgdGhlaXIgY29uc3RyYWludHMgYmVmb3JlIGFueSBzY3JvbGxpbmcgaGFwcGVucy4KKyAg
ICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkKKyAgICAgICAgc2V0U2Ny
b2xsUG9zaXRpb24oc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKCkp
OworfQorCitJbnRQb2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsUG9z
aXRpb24oKSBjb25zdAoreworICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
U3luY2hyb25vdXNseSgpKQorICAgICAgICByZXR1cm4gbV9wcm9iYWJsZU1haW5UaHJlYWRTY3Jv
bGxQb3NpdGlvbjsKKworICAgIENHUG9pbnQgc2Nyb2xsTGF5ZXJQb3NpdGlvbiA9IG1fc2Nyb2xs
TGF5ZXIuZ2V0KCkucG9zaXRpb247CisgICAgcmV0dXJuIEludFBvaW50KC1zY3JvbGxMYXllclBv
c2l0aW9uLnggKyBzY3JvbGxPcmlnaW4oKS54KCksIC1zY3JvbGxMYXllclBvc2l0aW9uLnkgKyBz
Y3JvbGxPcmlnaW4oKS55KCkpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
SU9TOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCit7
CisgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKKyAgICBu
ZXdTY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uLnNocnVua1RvKG1heGltdW1TY3Jv
bGxQb3NpdGlvbigpKTsKKyAgICBuZXdTY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9u
LmV4cGFuZGVkVG8obWluaW11bVNjcm9sbFBvc2l0aW9uKCkpOworCisgICAgc2V0U2Nyb2xsUG9z
aXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhuZXdTY3JvbGxQb3NpdGlvbik7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbFBvc2l0aW9u
V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0
aW9uKQoreworICAgIGlmIChzaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25v
dXNseSgpKSB7CisgICAgICAgIG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb24gPSBz
Y3JvbGxQb3NpdGlvbjsKKyAgICAgICAgc2Nyb2xsaW5nVHJlZSgpLnVwZGF0ZU1haW5GcmFtZVNj
cm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCBTZXRTY3JvbGxpbmdMYXllclBvc2l0aW9uKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldFNjcm9sbExheWVyUG9zaXRpb24oc2Ny
b2xsUG9zaXRpb24pOworICAgIHNjcm9sbGluZ1RyZWUoKS51cGRhdGVNYWluRnJhbWVTY3JvbGxQ
b3NpdGlvbihzY3JvbGxQb3NpdGlvbik7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0aW9u
KQoreworICAgIEFTU0VSVCghc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9u
b3VzbHkoKSk7CisgICAgbV9zY3JvbGxMYXllci5nZXQoKS5wb3NpdGlvbiA9IENHUG9pbnRNYWtl
KC1wb3NpdGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCksIC1wb3NpdGlvbi55KCkgKyBzY3Jv
bGxPcmlnaW4oKS55KCkpOworCisgICAgU2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVsZW1lbnRzIGJl
aGF2aW9yRm9yRml4ZWQgPSBzY3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMoKTsKKyAgICBJ
bnRQb2ludCBzY3JvbGxPZmZzZXQgPSBwb3NpdGlvbiAtIHRvSW50U2l6ZShzY3JvbGxPcmlnaW4o
KSk7CisgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuID0gRnJhbWVWaWV3
OjpzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKHZpZXdwb3J0UmVjdCgpLCB0b3RhbENvbnRl
bnRzU2l6ZSgpLCBzY3JvbGxPZmZzZXQsIHNjcm9sbE9yaWdpbigpLCBmcmFtZVNjYWxlRmFjdG9y
KCksIGZhbHNlLCBiZWhhdmlvckZvckZpeGVkLCBoZWFkZXJIZWlnaHQoKSwgZm9vdGVySGVpZ2h0
KCkpOworICAgIGlmIChtX2NvdW50ZXJTY3JvbGxpbmdMYXllcikKKyAgICAgICAgbV9jb3VudGVy
U2Nyb2xsaW5nTGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBGbG9hdFBvaW50KHNjcm9sbE9mZnNldEZv
ckZpeGVkQ2hpbGRyZW4pOworCisgICAgLy8gR2VuZXJhbGx5IHRoZSBiYW5uZXJzIHNob3VsZCBo
YXZlIHRoZSBzYW1lIGhvcml6b250YWwtcG9zaXRpb24gY29tcHV0YXRpb24gYXMgYSBmaXhlZCBl
bGVtZW50LiBIb3dldmVyLAorICAgIC8vIHRoZSBiYW5uZXJzIGFyZSBub3QgYWZmZWN0ZWQgYnkg
dGhlIGZyYW1lU2NhbGVGYWN0b3IoKSwgc28gaWYgdGhlcmUgaXMgY3VycmVudGx5IGEgbm9uLTEg
ZnJhbWVTY2FsZUZhY3RvcigpCisgICAgLy8gdGhlbiB3ZSBzaG91bGQgcmVjb21wdXRlIHNjcm9s
bE9mZnNldEZvckZpeGVkQ2hpbGRyZW4gZm9yIHRoZSBiYW5uZXIgd2l0aCBhIHNjYWxlIGZhY3Rv
ciBvZiAxLgorICAgIGZsb2F0IGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5uZXIgPSBzY3Jv
bGxPZmZzZXRGb3JGaXhlZENoaWxkcmVuLndpZHRoKCk7CisgICAgaWYgKGZyYW1lU2NhbGVGYWN0
b3IoKSAhPSAxKQorICAgICAgICBob3Jpem9udGFsU2Nyb2xsT2Zmc2V0Rm9yQmFubmVyID0gRnJh
bWVWaWV3OjpzY3JvbGxPZmZzZXRGb3JGaXhlZFBvc2l0aW9uKHZpZXdwb3J0UmVjdCgpLCB0b3Rh
bENvbnRlbnRzU2l6ZSgpLCBzY3JvbGxPZmZzZXQsIHNjcm9sbE9yaWdpbigpLCAxLCBmYWxzZSwg
YmVoYXZpb3JGb3JGaXhlZCwgaGVhZGVySGVpZ2h0KCksIGZvb3RlckhlaWdodCgpKS53aWR0aCgp
OworCisgICAgaWYgKG1faGVhZGVyTGF5ZXIpCisgICAgICAgIG1faGVhZGVyTGF5ZXIuZ2V0KCku
cG9zaXRpb24gPSBGbG9hdFBvaW50KGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5uZXIsIDAp
OworCisgICAgaWYgKG1fZm9vdGVyTGF5ZXIpCisgICAgICAgIG1fZm9vdGVyTGF5ZXIuZ2V0KCku
cG9zaXRpb24gPSBGbG9hdFBvaW50KGhvcml6b250YWxTY3JvbGxPZmZzZXRGb3JCYW5uZXIsIHRv
dGFsQ29udGVudHNTaXplKCkuaGVpZ2h0KCkgLSBmb290ZXJIZWlnaHQoKSk7CisKKyAgICBpZiAo
IW1fY2hpbGRyZW4pCisgICAgICAgIHJldHVybjsKKworICAgIEludFJlY3Qgdmlld3BvcnRSZWN0
ID0gdGhpcy0+dmlld3BvcnRSZWN0KCk7CisgICAgdmlld3BvcnRSZWN0LnNldExvY2F0aW9uKElu
dFBvaW50KHNjcm9sbE9mZnNldEZvckZpeGVkQ2hpbGRyZW4pKTsKKworICAgIHNpemVfdCBzaXpl
ID0gbV9jaGlsZHJlbi0+c2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQorICAgICAgICBtX2NoaWxkcmVuLT5hdChpKS0+cGFyZW50U2Nyb2xsUG9zaXRpb25EaWRD
aGFuZ2Uodmlld3BvcnRSZWN0LCBGbG9hdFNpemUoKSk7Cit9CisKK0ludFBvaW50IFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlSU9TOjptaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAorewor
ICAgIEludFBvaW50IHBvc2l0aW9uOworICAgIAorICAgIGlmIChzY3JvbGxpbmdUcmVlKCkucm9v
dE5vZGUoKSA9PSB0aGlzICYmIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZpb3Io
KSA9PSBQaW5Ub0JvdHRvbSkKKyAgICAgICAgcG9zaXRpb24uc2V0WShtYXhpbXVtU2Nyb2xsUG9z
aXRpb24oKS55KCkpOworCisgICAgcmV0dXJuIHBvc2l0aW9uOworfQorCitJbnRQb2ludCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZUlPUzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QK
K3sKKyAgICBJbnRQb2ludCBwb3NpdGlvbih0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQo
KS53aWR0aCgpIC0gdmlld3BvcnRSZWN0KCkud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICB0b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQoKS5oZWlnaHQoKSAtIHZpZXdwb3J0UmVj
dCgpLmhlaWdodCgpKTsKKworICAgIHBvc2l0aW9uLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKwor
ICAgIGlmIChzY3JvbGxpbmdUcmVlKCkucm9vdE5vZGUoKSA9PSB0aGlzICYmIHNjcm9sbGluZ1Ry
ZWUoKS5zY3JvbGxQaW5uaW5nQmVoYXZpb3IoKSA9PSBQaW5Ub1RvcCkKKyAgICAgICAgcG9zaXRp
b24uc2V0WShtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpOworCisgICAgcmV0dXJuIHBvc2l0
aW9uOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxCeShj
b25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9z
aXRpb24oKSArIG9mZnNldCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVJ
T1M6OnNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgSW50U2l6ZSYg
b2Zmc2V0KQoreworICAgIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3Ry
YWludHMoc2Nyb2xsUG9zaXRpb24oKSArIG9mZnNldCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMubW0KaW5kZXggOGY1ZjRhOWM2MTA5YjMzZjIzMWY3Njk3MDkxNzY1NDU4Y2Y5NDNhYi4u
ZjBlMmU0NmZiOTljMWUxMDg5NWMwOThmZTMxMGY3NTZkZTVkNGIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGlu
YXRvck1hYy5tbQpAQCAtNDcsNiArNDcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQ
YXNzUmVmUHRyPFNjcm9sbGluZ0Nvb3JkaW5hdG9yPiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3Jl
YXRlKFBhZ2UqIHBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxpbmdDb29y
ZGluYXRvck1hYyhwYWdlKSk7Cit9CisKIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpTY3JvbGxp
bmdDb29yZGluYXRvck1hYyhQYWdlKiBwYWdlKQogICAgIDogQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcihwYWdlKQogICAgICwgbV9zY3JvbGxpbmdTdGF0ZVRyZWVDb21taXR0ZXJUaW1lcih0aGlz
LCAmU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnNjcm9sbGluZ1N0YXRlVHJlZUNvbW1pdHRlclRp
bWVyRmlyZWQpCkBAIC0xNTIsNyArMTU3LDYgQEAgUGFzc093blB0cjxTY3JvbGxpbmdUcmVlTm9k
ZT4gU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFMKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQppbmRleCAy
YzgxMDQ5ZGJiZTMzODUzOTJhMDMxMDUzMmZhZGFjZmFhODU1YzUzLi41NmRkMDM1MmY5NTkzZDU4
MzU2NmQzM2Y5MWI1MjMzZDQ2MTVmZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQpAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaCIKICNpbmNs
dWRlICJTY3JvbGxpbmdUcmVlLmgiCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCmluZGV4IGJiYTA1
NDAzNWZmZDUzYTI0NjQwYjc0YTg2OWI5ZWRiMjRkZmJiYzcuLjhlYjJjOGYzYzAxMGU5MjI5MDU0
Yjk3YjlmYzNhNmE5MGEwODY5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0KQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIgogI2luY2x1
ZGUgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NBTGF5ZXIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmNwcAppbmRleCBkMGVkYjhjOGYw
MmYyOTgyYTU5MzhhY2UxYWRmYTRhODZhYjc0YzJmLi40ZTM1NjdkNWZlYWNkNmMxNGE1NWY0MWI4
NzQ2MDYwMGU3ODhmMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Ny
b2xsaW5nL1JlbW90ZVNjcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTMxLDkgKzMxLDE0IEBA
CiAjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIlJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
TWFjLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oPgogCisj
aWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVJT1MuaD4KKyNlbHNlCisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZU1hYy5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTgxLDcgKzg2LDExIEBAIFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJl
ZU5vZGU+IFJlbW90ZVNjcm9sbGluZ1RyZWU6OmNyZWF0ZU5vZGUoU2Nyb2xsaW5nTm9kZVR5cGUK
IHsKICAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CiAgICAgY2FzZSBTY3JvbGxpbmdOb2RlOgorI2lm
IFBMQVRGT1JNKElPUykKKyAgICAgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
SU9TOjpjcmVhdGUoKnRoaXMsIG5vZGVJRCk7CisjZWxzZQogICAgICAgICByZXR1cm4gU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVNYWM6OmNyZWF0ZSgqdGhpcywgbm9kZUlEKTsKKyNlbmRpZgog
ICAgIGNhc2UgRml4ZWROb2RlOgogICAgICAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZTo6Y3JlYXRlKCp0aGlzLCBub2RlSUQpOwogICAgIGNhc2UgU3RpY2t5Tm9kZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJl
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdU
cmVlLmgKaW5kZXggMGY1MTM3N2Q3NzQwMDE5NDdiMmRjYWM5MjljMjRjMWZiMTllYzVmYS4uZGYw
M2VjNzEyNmUxMDc2NjdiYTY4MzIyN2FhZGE3NmFiYjEwMWM3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgK
QEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogCiAjaW5jbHVk
ZSAiUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bEVsYXN0aWNpdHlDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb25z
dHJhaW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZS5oPgogCg==
</data>
<flag name="review"
          id="244567"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>