<?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>134482</bug_id>
          
          <creation_ts>2014-06-30 20:42:57 -0700</creation_ts>
          <short_desc>[Cocoa] Navigation parameter in navigation delegate messages is nil for navigations started by the Web Content process</short_desc>
          <delta_ts>2014-07-01 13:23:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>andersca</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1019547</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-06-30 20:42:57 -0700</bug_when>
    <thetext>When a navigation is initiated by the Web Content process, the navigation parameter passed to the navigation delegate is nil.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019549</commentid>
    <comment_count>1</comment_count>
      <attachid>234142</attachid>
    <who name="">mitz</who>
    <bug_when>2014-06-30 21:08:16 -0700</bug_when>
    <thetext>Created attachment 234142
Attach navigationID and create WKNavigation at action policy decision time if needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019566</commentid>
    <comment_count>2</comment_count>
      <attachid>234147</attachid>
    <who name="">mitz</who>
    <bug_when>2014-06-30 23:20:34 -0700</bug_when>
    <thetext>Created attachment 234147
Attach navigationID and create WKNavigation at action policy decision time if needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019649</commentid>
    <comment_count>3</comment_count>
      <attachid>234170</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-01 10:14:58 -0700</bug_when>
    <thetext>Created attachment 234170
Attach navigationID and create WKNavigation at action policy decision time if needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019704</commentid>
    <comment_count>4</comment_count>
      <attachid>234183</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-01 12:02:40 -0700</bug_when>
    <thetext>Created attachment 234183
Attach navigationID and create WKNavigation at action policy decision time if needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019741</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-07-01 13:23:32 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/r170660&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234142</attachid>
            <date>2014-06-30 21:08:16 -0700</date>
            <delta_ts>2014-06-30 23:20:31 -0700</delta_ts>
            <desc>Attach navigationID and create WKNavigation at action policy decision time if needed</desc>
            <filename>bug-134482-20140630210756.patch</filename>
            <type>text/plain</type>
            <size>42203</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDE0LTA2LTMwICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBOYXZpZ2F0aW9uIHBh
cmFtZXRlciBpbiBuYXZpZ2F0aW9uIGRlbGVnYXRlIG1lc3NhZ2VzIGlzIG5pbCBmb3IgbmF2aWdh
dGlvbnMgc3RhcnRlZCBieSB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NDgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0
aW9uKTogTmV3IGNsaWVudCBmdW5jdGlvbiwgY2FsbGVkIHdoZW4gYSBuYXZpZ2F0aW9uIElECisg
ICAgICAgIGlzIG5vdCBnb2luZyB0byBiZSB1c2VkIGFueW1vcmUuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZTpdKTogSWYgcmVzdG9yaW5nIHRyaWdnZXJlZCBhIG5hdmlnYXRp
b24sIGNyZWF0ZSBhCisgICAgICAgIFdLTmF2aWdhdGlvbiBmb3IgaXRzIElELgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25T
dGF0ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKTogUmVtb3ZlZCBGSVhNRSwgYmVjYXVz
ZSB3ZSBub3cgcmVtb3ZlCisgICAgICAgIG5hdmlnYXRpb25zIGZyb20gdGhlIG1hcCBpbiBMb2Fk
ZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6OmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpjcmVhdGVMb2FkRGF0YU5hdmlnYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGll
bnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBJZiB3ZSBhcmUgb25seQorICAg
ICAgICBnZXR0aW5nIGEgbmF2aWdhdGlvbiBJRCBub3csIGNyZWF0ZSBhIFdLTmF2aWdhdGlvbiBm
b3IgaXQuIEFsc28gY2hhbmdlZCB0byBjcmVhdGUgdGhlCisgICAgICAgIE5TVVJMUmVxdWVzdCBs
YXppbHkuCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogQXNzZXJ0IHRoYXQKKyAgICAgICAgbmF2
aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGFuZCB0aGF0IGl0IG1hcHMgdG8gYW4gZXhpc3RpbmcgV0tO
YXZpZ2F0aW9uLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgor
ICAgICAgICBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJD
bGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkQ29tbWl0
TG9hZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9h
ZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdh
dGlvbik6IE92ZXJyaWRlIHRoZSBuZXcgY2xpZW50CisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92
ZSB0aGUgbmF2aWdhdGlvbiBmcm9tIHRoZSBtYXAuCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRp
b25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOiBDbGVhciB0aGUgbmF2aWdh
dGlvbnMgbWFwLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQcm94eTo6V2ViRnJhbWVMaXN0
ZW5lclByb3h5KTogSW5pdGlhbGl6ZSBuZXcgbV9uYXZpZ2F0aW9uSUQKKyAgICAgICAgbWVtYmVy
IHZhcmlhYmxlLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24pOiBQYXNzIHRoZSBuYXZpZ2F0aW9uIElEIHRvCisgICAgICAgIFdl
YkZyYW1lOjpyZWNlaXZlZFBvbGljeURlY2lzaW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
cmFtZUxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMaXN0ZW5lclBy
b3h5OjpuYXZpZ2F0aW9uSUQpOiBBZGRlZCB0aGlzIGFjY2Vzc29yLgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnNldE5hdmlnYXRpb25JRCk6IERpdHRvLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKTogQWRkZWQgbmF2aWdhdGlvbklEIHBh
cmFtZXRlciwgd2hpY2ggaXMKKyAgICAgICAgcGFzc2VkIGFsb25nIHRvIHRoZSBXZWJQYWdlUHJv
eHkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOiBBZGRlZCBuYXZpZ2F0aW9uSUQgcGFyYW1ldGVyLCB3
aGljaCBpcworICAgICAgICBwYXNzZWQgYWxvbmcgaW4gdGhlIG1lc3NhZ2UgdG8gdGhlIFdlYiBD
b250ZW50IHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZy
b21TZXNzaW9uU3RhdGVEYXRhKTogQ2hhbmdlZCB0byByZXR1cm4gYSBuYXZpZ2F0aW9uIElEIG9m
IDAuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TdGF0ZSk6IENo
YW5nZWQgdG8gcmV0dXJuIGEgbmF2aWdhdGlvbiBJRCBpZiBvbmUgd2FzCisgICAgICAgIHN0YXJ0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5hdmlnYXRpb24p
OiBBZGRlZC4gQ2FsbHMgdGhlIG5ldyBjbGllbnQgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IEFkZGVkIG5h
dmlnYXRpb25JRCBhbmQKKyAgICAgICAgbmV3TmF2aWdhdGlvbklEIHBhcmFtZXRlcnMuIElmIGEg
bWFpbi1mcmFtZSBuYXZpZ2F0aW9uIGRvZXNu4oCZdCBhbHJlYWR5IGhhdmUgYW4gSUQsIGFzc2ln
biBpdAorICAgICAgICBhIG5ldyBJRCBhbmQgcmV0dXJuIGl0IGluIHRoZSBuZXdOYXZpZ2F0aW9u
SUQgcGFybWV0ZXIgYXMgd2VsbCBhcyBzZXR0aW5nIGl0IG9uIHRoZSBsaXN0ZW5lcgorICAgICAg
ICBmb3IgdGhlIGFzeW5jaHJvbm91cyBjYXNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
IEFkZGVkIG5hdmlnYXRpb25JRCBhbmQgbmV3TmF2aWdhdGlvbklEIHBhcmFtZXRlcnMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YSk6IENoYW5nZWQgdG8g
cmV0dXJuIGEgbmF2aWdhdGlvbiBJRCBpZgorICAgICAgICBvbmUgd2FzIHN0YXJ0ZWQuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOiBVcGRhdGVkIGZvciBhZGRpdGlvbmFsCisgICAgICAgIHBhcmFt
ZXRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IFNlbmQgdGhlIG5hdmlnYXRpb24KKyAgICAg
ICAgSUQgdG8gdGhlIFVJIHByb2Nlc3MsIGdldCB0aGUgbmV3IG5hdmlnYXRpb24gSUQgZnJvbSB0
aGUgcmVwbHksIGFuZCBzZXQgaXQgb24gdGhlIGRvY3VtZW50CisgICAgICAgIGxvYWRlci4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUpOiBPdmVycmlk
ZSB0byBsZXQgdGhlIFVJIHByb2Nlc3Mga25vdyB0aGF0IHRoZQorICAgICAgICBuYXZpZ2F0aW9u
IElEIHdpbGwgbm90IGJlIHVzZWQgYW55bW9yZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRG9jdW1lbnRMb2FkZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24pOiBBZGRlZCBuYXZpZ2F0aW9uSUQgcGFyYW1ldGVyLCBzZXQgaXQgb24gdGhlCisg
ICAgICAgIGRvY3VtZW50IGxvYWRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRvY3Vt
ZW50TG9hZGVyRGV0YWNoZWQpOiBQYXNzIHRoZSBtZXNzYWdlIGFsb25nIHRvIHRoZSBVSSBwcm9j
ZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOiBQYXNzIG5ldyBuYXZpZ2F0aW9uSUQgcGFy
YW1ldGVyIGFsb25nLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkZWQg
bmF2aWdhdGlvbklEIHBhcmFtZXRlci4KKwogMjAxNC0wNi0zMCAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2lPU11bV0syXSBUaGUgbG9uZyBwcmVz
cyBnZXN0dXJlIHJlY29nbml6ZXJzIHNob3VsZCBub3QgYmxvY2sgdGhlIHBpbmNoIGdlc3R1cmUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVy
UHJveHkuY3BwCShyZXZpc2lvbiAxNzA2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkZyYW1lTGlzdGVuZXJQcm94eTo6V2ViRnJhbWVMaXN0
ZW5lclByb3h5KFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogICAg
IDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fbGlzdGVuZXJJRChsaXN0ZW5lcklEKQorICAgICwg
bV9uYXZpZ2F0aW9uSUQoMCkKIHsKIH0KIApAQCAtNTAsNyArNTEsNyBAQCB2b2lkIFdlYkZyYW1l
TGlzdGVuZXJQcm94eTo6cmVjZWl2ZWRQb2xpCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5yZWNlaXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwgbV9s
aXN0ZW5lcklEKTsKKyAgICBtX2ZyYW1lLT5yZWNlaXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwg
bV9saXN0ZW5lcklELCBtX25hdmlnYXRpb25JRCk7CiAgICAgbV9mcmFtZSA9IDA7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5
LmgJKHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFt
ZUxpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGlzdGVuZXJJRDsgfQogCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uSUQ7IH0KKyAgICB2b2lkIHNldE5hdmlnYXRpb25J
RCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQpIHsgbV9uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7
IH0KKwogcHJvdGVjdGVkOgogICAgIFdlYkZyYW1lTGlzdGVuZXJQcm94eShXZWJGcmFtZVByb3h5
KiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAKQEAgLTUwLDYgKzUzLDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9mcmFtZTsKICAgICB1aW50NjRf
dCBtX2xpc3RlbmVySUQ7CisgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5jcHAJKHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDE0ICsxNjksMTQgQEAg
dm9pZCBXZWJGcmFtZVByb3h5OjpkaWRDaGFuZ2VUaXRsZShjb25zdAogICAgIG1fdGl0bGUgPSB0
aXRsZTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFdl
YkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFdl
YkZyYW1lUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9u
IGFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbmF2aWdhdGlvbklEKQogewog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9hY3RpdmVM
aXN0ZW5lcik7CiAgICAgQVNTRVJUKG1fYWN0aXZlTGlzdGVuZXItPmxpc3RlbmVySUQoKSA9PSBs
aXN0ZW5lcklEKTsKLSAgICBtX3BhZ2UtPnJlY2VpdmVkUG9saWN5RGVjaXNpb24oYWN0aW9uLCB0
aGlzLCBsaXN0ZW5lcklEKTsKKyAgICBtX3BhZ2UtPnJlY2VpdmVkUG9saWN5RGVjaXNpb24oYWN0
aW9uLCB0aGlzLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uSUQpOwogfQogCiBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkqIFdlYkZyYW1lUHJveHk6OnNldFVwUG9saWN5TGlzdGVuZXJQcm94eSh1
aW50NjRfdCBsaXN0ZW5lcklEKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5oCShyZXZpc2lvbiAxNzA2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBQb2xp
Y3kgb3BlcmF0aW9ucy4KLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6
UG9saWN5QWN0aW9uLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBsaXN0ZW5lcklELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSAwKTsKICAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHkqIHNldFVwUG9saWN5TGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICBX
ZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkqIHNldFVwRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5KHVpbnQ2NF90IGxpc3RlbmVySUQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDgsNyAr
MTcwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2kKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlzaWJs
ZUFyZWEoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBs
aXN0ZW5lcklELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE3NDQsNyArMTc0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihmcmFtZS0+ZnJhbWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIGRvd25sb2FkSUQpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oZnJhbWUtPmZyYW1lSUQoKSwgbGlzdGVuZXJJRCwgYWN0aW9uLCBu
YXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCkBAIC0xODQwLDEzICsx
ODQwLDE0IEBAIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiBXZWJQYWdlUHJveHk6OnNlc3MKICAgICBy
ZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRl
RGF0YShBUEk6OkRhdGEqKQordWludDY0X3QgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZURhdGEoQVBJOjpEYXRhKikKIHsKICAgICAvLyBGSVhNRTogUmVzdG9yZSB0aGUgUGFn
ZSBmcm9tIHRoZSBwYXNzZWQgaW4gc2Vzc2lvbiBzdGF0ZSBkYXRhLgorICAgIHJldHVybiAwOwog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVN0YXRlKFNlc3Npb25T
dGF0ZSBzZXNzaW9uU3RhdGUpCit1aW50NjRfdCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU3Rh
dGUoU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSkKIHsKICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+
cmVzdG9yZUZyb21TdGF0ZShzdGQ6Om1vdmUoc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0
YXRlKSk7CiAKQEAgLTE4NTUsMTMgKzE4NTYsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3Rv
cmVGcm9tU3RhdGUoU2VzcwogCiAgICAgLy8gRklYTUU6IE5hdmlnYXRpbmcgc2hvdWxkIGJlIHNl
cGFyYXRlIGZyb20gc3RhdGUgcmVzdG9yYXRpb24uCiAKLSAgICBpZiAoc2Vzc2lvblN0YXRlLnBy
b3Zpc2lvbmFsVVJMKSB7Ci0gICAgICAgIGxvYWRSZXF1ZXN0KHNlc3Npb25TdGF0ZS5wcm92aXNp
b25hbFVSTCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHNlc3Npb25TdGF0ZS5w
cm92aXNpb25hbFVSTCkKKyAgICAgICAgcmV0dXJuIGxvYWRSZXF1ZXN0KHNlc3Npb25TdGF0ZS5w
cm92aXNpb25hbFVSTCk7CiAKICAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9
IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKQotICAgICAgICBnb1RvQmFja0Zvcndh
cmRJdGVtKGl0ZW0pOworICAgICAgICByZXR1cm4gZ29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtKTsK
KworICAgIHJldHVybiAwOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0Wm9v
bSgpIGNvbnN0CkBAIC0yNDI4LDYgKzI0MjksMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
bmlzaFByb2dyZXNzKCkKICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoUHJvZ3Jlc3ModGhp
cyk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRf
dCBuYXZpZ2F0aW9uSUQpCit7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZERlc3Ryb3lOYXZpZ2F0
aW9uKHRoaXMsIG5hdmlnYXRpb25JRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkws
IElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwpAQCAtMjc3Miw3ICsyNzc4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZQogICAgICAgICBtX2ZyYW1lU2V0
TGFyZ2VzdEZyYW1lID0gdmFsdWUgPyBtX21haW5GcmFtZSA6IDA7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBs
aXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBib29sJiByZWNlaXZlZFBv
bGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiBkZWNvZGVyLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3Qm
IG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25s
b2FkSUQpCiB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250
ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkp
OwpAQCAtMjc5Miw2ICsyNzk4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2EKICAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gbV9wcm9jZXNz
LT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSUQpOwogICAgIAogICAgIFJlZlB0cjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVu
ZXJQcm94eShsaXN0ZW5lcklEKTsKKyAgICBpZiAoIW5hdmlnYXRpb25JRCAmJiBmcmFtZS0+aXNN
YWluRnJhbWUoKSkgeworICAgICAgICBuZXdOYXZpZ2F0aW9uSUQgPSBnZW5lcmF0ZU5hdmlnYXRp
b25JRCgpOworICAgICAgICBsaXN0ZW5lci0+c2V0TmF2aWdhdGlvbklEKG5ld05hdmlnYXRpb25J
RCk7CisgICAgfQogCiAgICAgQVNTRVJUKCFtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNTUyLDggKzU1Miw4IEBAIHB1YmxpYzoKIAogICAgIHR5cGVk
ZWYgYm9vbCAoKldlYlBhZ2VQcm94eVNlc3Npb25TdGF0ZUZpbHRlckNhbGxiYWNrKShXS1BhZ2VS
ZWYsIFdLU3RyaW5nUmVmIHR5cGUsIFdLVHlwZVJlZiBvYmplY3QsIHZvaWQqIGNvbnRleHQpOwog
ICAgIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiBzZXNzaW9uU3RhdGVEYXRhKFdlYlBhZ2VQcm94eVNl
c3Npb25TdGF0ZUZpbHRlckNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KSBjb25zdDsKLSAgICB2b2lk
IHJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YShBUEk6OkRhdGEqKTsKLSAgICB2b2lkIHJlc3Rv
cmVGcm9tU3RhdGUoU2Vzc2lvblN0YXRlKTsKKyAgICB1aW50NjRfdCByZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZURhdGEoQVBJOjpEYXRhKik7CisgICAgdWludDY0X3QgcmVzdG9yZUZyb21TdGF0ZShT
ZXNzaW9uU3RhdGUpOwogCiAgICAgYm9vbCBzdXBwb3J0c1RleHRab29tKCkgY29uc3Q7CiAgICAg
ZG91YmxlIHRleHRab29tRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Wm9vbUZhY3Rvcjsg
fQpAQCAtNjc5LDcgKzY3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAjZW5kaWYKIAot
ICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIFdl
YkZyYW1lUHJveHkqLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBXZWJGcmFtZVByb3h5KiwgdWludDY0
X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAogICAgIHZvaWQgYmFja0Zv
cndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQpOwogCkBAIC05NTgsOCArOTU4LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoKTsKICAgICB2b2lkIGRpZENoYW5n
ZVByb2dyZXNzKGRvdWJsZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcygpOworICAgIHZv
aWQgZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAotICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIElQQzo6TWVzc2FnZURl
Y29kZXImLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlv
biwgdWludDY0X3QmIGRvd25sb2FkSUQpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgbGlzdGVuZXJJRCwgSVBDOjpNZXNzYWdlRGVj
b2RlciYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlv
bklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCk7CiAgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgYm9vbCYgcmVjZWl2
ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBkb3dubG9h
ZElEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzEx
MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBtZXNzYWdl
cwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIC0+IChib29sIHJl
Y2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25s
b2FkSUQpIFZhcmlhZGljCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1
aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgcG9s
aWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKSBWYXJpYWRpYworICAgIERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBs
aXN0ZW5lcklELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJE
YXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlv
bklELCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpIFZhcmlhZGlj
CiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRh
KSBWYXJpYWRpYwogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIgdXNlckRhdGEpICBWYXJpYWRpYwogCkBAIC0xNDAsNiArMTQwLDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNl
ckRhdGEpIFZhcmlhZGljCiAgICAgRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IHR5cGUsIFN0cmluZyB1cmwsIFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCisgICAgRGlkRGVz
dHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKQogCiAgICAgRnJhbWVEaWRCZWNv
bWVGcmFtZVNldCh1aW50NjRfdCBmcmFtZUlELCBib29sIHZhbHVlKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE3
MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OlNhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlLCBBUEk6Ok9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0
OjpXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
Rmlyc3RMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lO
YXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgdWludDY0X3QgbmF2aWdhdGlvbklEKSB7
IH0KIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgc2luY2UgaXQgaXMgcmVwbGFjZWQgYnkgZGlk
TGF5b3V0LgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIEFQ
STo6T2JqZWN0KikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NzEs
NyArMTU3MSw5IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOU0RhdGEodW5zaWduZWQgY2hhcioKIC0g
KHZvaWQpX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOihOU0RhdGEgKilzZXNzaW9uU3RhdGUKIHsK
ICAgICBbc2Vzc2lvblN0YXRlIHJldGFpbl07Ci0gICAgX3BhZ2UtPnJlc3RvcmVGcm9tU2Vzc2lv
blN0YXRlRGF0YShBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25l
ZCBjaGFyKilzZXNzaW9uU3RhdGUuYnl0ZXMsIHNlc3Npb25TdGF0ZS5sZW5ndGgsIHJlbGVhc2VO
U0RhdGEsIHNlc3Npb25TdGF0ZSkuZ2V0KCkpOworICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCA9
IF9wYWdlLT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhOjpjcmVhdGVXaXRo
b3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2Vzc2lvblN0YXRlLmJ5dGVzLCBzZXNz
aW9uU3RhdGUubGVuZ3RoLCByZWxlYXNlTlNEYXRhLCBzZXNzaW9uU3RhdGUpLmdldCgpKTsKKyAg
ICBpZiAobmF2aWdhdGlvbklEKQorICAgICAgICBfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVSZWxv
YWROYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiB9CiAKIC0gKHZvaWQpX2Nsb3NlCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShy
ZXZpc2lvbiAxNzA2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0
cm95TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRMYXlvdXQoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzLCBBUEk6Ok9iamVjdCopIG92ZXJy
aWRlOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSopIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAxNzA2Mjkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldL
TlNVUkxQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbXBvcnQgIldLTlNVUkxSZXF1ZXN0LmgiCiAjaW1w
b3J0ICJXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9u
RGF0YUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCIK
QEAgLTE2Myw3ICsxNjQsNiBAQCBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiBOYXZpZ2F0aW9uU3Rh
dGU6CiAgICAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IGFkb3B0TlMoW1tX
S05hdmlnYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbbmF2aWdhdGlvbiBzZXRSZXF1ZXN0OnJl
cXVlc3RdOwogCi0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBuYXZpZ2F0aW9u
IHdoZW4gd2UncmUgZG9uZSB3aXRoIGl0IQogICAgIG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRp
b25JRCwgbmF2aWdhdGlvbik7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE3NSw3ICsx
NzUsNiBAQCBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiBOYXZpZ2F0aW9uU3RhdGU6CiAKICAgICBh
dXRvIG5hdmlnYXRpb24gPSBhZG9wdE5TKFtbV0tOYXZpZ2F0aW9uIGFsbG9jXSBpbml0XSk7CiAK
LSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byByZW1vdmUgdGhlIG5hdmlnYXRpb24gd2hlbiB3ZSdy
ZSBkb25lIHdpdGggaXQhCiAgICAgbV9uYXZpZ2F0aW9ucy5zZXQobmF2aWdhdGlvbklELCBuYXZp
Z2F0aW9uKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtMTg3LDcgKzE4Niw2IEBAIFJl
dGFpblB0cjxXS05hdmlnYXRpb24+IE5hdmlnYXRpb25TdGF0ZToKIAogICAgIGF1dG8gbmF2aWdh
dGlvbiA9IGFkb3B0TlMoW1tXS05hdmlnYXRpb24gYWxsb2NdIGluaXRdKTsKIAotICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgbmF2aWdhdGlvbiB3aGVuIHdlJ3JlIGRvbmUgd2l0
aCBpdCEKICAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uSUQsIG5hdmlnYXRpb24pOwog
CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xOTksNyArMTk3LDYgQEAgUmV0YWluUHRyPFdL
TmF2aWdhdGlvbj4gTmF2aWdhdGlvblN0YXRlOgogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gYWRv
cHROUyhbW1dLTmF2aWdhdGlvbiBhbGxvY10gaW5pdF0pOwogCi0gICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gcmVtb3ZlIHRoZSBuYXZpZ2F0aW9uIHdoZW4gd2UncmUgZG9uZSB3aXRoIGl0IQogICAg
IG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRpb25JRCwgbmF2aWdhdGlvbik7CiAKICAgICByZXR1
cm4gbmF2aWdhdGlvbjsKQEAgLTI2NCwxNCArMjYxLDE4IEBAIE5hdmlnYXRpb25TdGF0ZTo6UG9s
aWN5Q2xpZW50Ojp+UG9saWN5Q2wKIAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiBkZXN0aW5hdGlvbkZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIHNvdXJjZUZyYW1lLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogeworICAgIFJldGFpblB0cjxOU1VS
TFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IGFkb3B0TlMod3JhcHBlcigqQVBJOjpVUkxSZXF1ZXN0
OjpjcmVhdGUocmVxdWVzdCkubGVha1JlZigpKSk7CisKKyAgICBpZiAobGlzdGVuZXItPm5hdmln
YXRpb25JRCgpKQorICAgICAgICBtX25hdmlnYXRpb25TdGF0ZS5jcmVhdGVMb2FkUmVxdWVzdE5h
dmlnYXRpb24obGlzdGVuZXItPm5hdmlnYXRpb25JRCgpLCBuc1VSTFJlcXVlc3QuZ2V0KCkpOwor
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXIpIHsK
ICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkZyYW1lKSB7CiAgICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBOU1VSTFJl
cXVlc3QgKm5zVVJMUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOwotICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVS
ZXF1ZXN0Om5zVVJMUmVxdWVzdF0pIHsKKyAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2Fu
SGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3QuZ2V0KCldKSB7CiAgICAgICAgICAgICBsaXN0ZW5l
ci0+dXNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3OSw3ICsyODAs
NyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICAvLyBBIGZpbGUgVVJMIHNob3VsZG4ndCBmYWxsIHRocm91Z2ggdG8g
aGVyZSwgYnV0IGlmIGl0IGRpZCwKICAgICAgICAgLy8gaXQgd291bGQgYmUgYSBzZWN1cml0eSBy
aXNrIHRvIG9wZW4gaXQuCi0gICAgICAgIGlmICghW25zVVJMUmVxdWVzdC5VUkwgaXNGaWxlVVJM
XSkKKyAgICAgICAgaWYgKCFbW25zVVJMUmVxdWVzdCBVUkxdIGlzRmlsZVVSTF0pCiAgICAgICAg
ICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlblVSTDpuc1VSTFJlcXVlc3Qu
VVJMXTsKICNlbmRpZgogICAgICAgICBsaXN0ZW5lci0+aWdub3JlKCk7CkBAIC0zMDIsNyArMzAz
LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6ZGVjaQogICAgICAgICAg
ICAgW25hdmlnYXRpb25BY3Rpb24gc2V0U291cmNlRnJhbWU6YWRvcHROUyhbW1dLRnJhbWVJbmZv
IGFsbG9jXSBpbml0V2l0aFdlYkZyYW1lUHJveHk6KnNvdXJjZUZyYW1lXSkuZ2V0KCldOwogICAg
IH0KIAotICAgIFtuYXZpZ2F0aW9uQWN0aW9uIHNldFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVl
c3QoV2ViQ29yZTo6RG9Ob3RVcGRhdGVIVFRQQm9keSldOworICAgIFtuYXZpZ2F0aW9uQWN0aW9u
IHNldFJlcXVlc3Q6bnNVUkxSZXF1ZXN0LmdldCgpXTsKICAgICBbbmF2aWdhdGlvbkFjdGlvbiBf
c2V0T3JpZ2luYWxVUkw6b3JpZ2luYWxSZXF1ZXN0LnVybCgpXTsKIAogICAgIFJlZlB0cjxDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KSk7CkBA
IC00MTIsMTAgKzQxMyw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRp
ZFMKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8g
aGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIG5hdmlnYXRpb25zIG9yaWdpbmF0aW5n
IGZyb20gdGhlIHdlYiBwcm9jZXNzLgotICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5p
bDsKLSAgICBpZiAobmF2aWdhdGlvbklEKQotICAgICAgICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0
aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NF
UlQobmF2aWdhdGlvbklEKTsKKyAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBtX25hdmln
YXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLmdldChuYXZpZ2F0aW9uSUQpLmdldCgpOworICAgIEFT
U0VSVChuYXZpZ2F0aW9uKTsKIAogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246bmF2
aWdhdGlvbl07CiB9CkBAIC00MzIsMTAgKzQzMiw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpM
b2FkZXJDbGllbnQ6OmRpZFIKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9u
SUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIG5hdmlnYXRp
b25zIG9yaWdpbmF0aW5nIGZyb20gdGhlIHdlYiBwcm9jZXNzLgotICAgIFdLTmF2aWdhdGlvbiAq
bmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdhdGlvbklEKQotICAgICAgICBuYXZpZ2F0
aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKS5n
ZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbklEKTsKKyAgICBXS05hdmlnYXRpb24gKm5hdmln
YXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLmdldChuYXZpZ2F0aW9uSUQp
LmdldCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uKTsKIAogICAgIFtuYXZpZ2F0aW9uRGVsZWdh
dGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOm5hdmlnYXRpb25dOwogfQpAQCAtNDY4LDEw
ICs0NjcsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0
IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgemVybyBm
b3IgbmF2aWdhdGlvbnMgb3JpZ2luYXRpbmcgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgUmV0
YWluUHRyPFdLTmF2aWdhdGlvbj4gbmF2aWdhdGlvbjsKLSAgICBpZiAobmF2aWdhdGlvbklEKQot
ICAgICAgICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy50YWtl
KG5hdmlnYXRpb25JRCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAgUmV0YWluUHRy
PFdLTmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlv
bnMudGFrZShuYXZpZ2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uKTsKIAog
ICAgIC8vIEZJWE1FOiBTZXQgdGhlIGVycm9yIG9uIHRoZSBuYXZpZ2F0aW9uIG9iamVjdC4KIApA
QCAtNDk4LDEwICs0OTYsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpk
aWRDCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJv
IGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBuYXZpZ2F0aW9ucyBvcmlnaW5hdGlu
ZyBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBu
aWw7Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuZ2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNT
RVJUKG5hdmlnYXRpb25JRCk7CisgICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZp
Z2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBB
U1NFUlQobmF2aWdhdGlvbik7CiAKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9u
YXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZENvbW1pdE5hdmlnYXRpb246bmF2aWdhdGlvbl07
CiB9CkBAIC01MTgsOSArNTE1LDkgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVu
dDo6ZGlkRgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25J
RCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMu
Z2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAg
V0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9u
cy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAg
ICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5h
dmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExvYWQ6bmF2aWdhdGlvbl07CiB9CkBAIC01MzcsMTAg
KzUzNCw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEYKICAgICBp
ZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0
IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIG5hdmlnYXRpb25zIG9yaWdpbmF0aW5nIGZyb20gdGhl
IHdlYiBwcm9jZXNzLgotICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5pbDsKLSAgICBp
ZiAobmF2aWdhdGlvbklEKQotICAgICAgICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUu
bV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdh
dGlvbklEKTsKKyAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0
ZS5tX25hdmlnYXRpb25zLmdldChuYXZpZ2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVChuYXZp
Z2F0aW9uKTsKIAogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25T
dGF0ZS5tX3dlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjpuYXZpZ2F0aW9uXTsKIH0KQEAgLTU1
NywxNSArNTUzLDE5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEYK
ICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8g
RklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVy
ZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIG5hdmlnYXRpb25zIG9yaWdpbmF0aW5nIGZy
b20gdGhlIHdlYiBwcm9jZXNzLgotICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5pbDsK
LSAgICBpZiAobmF2aWdhdGlvbklEKQotICAgICAgICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQo
bmF2aWdhdGlvbklEKTsKKyAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBtX25hdmlnYXRp
b25TdGF0ZS5tX25hdmlnYXRpb25zLmdldChuYXZpZ2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VS
VChuYXZpZ2F0aW9uKTsKIAogICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBj
cmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcsICp3ZWJGcmFtZVByb3h5LCBlcnJvcik7CiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjpuYXZpZ2F0
aW9uIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9CiAKK3Zv
aWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKFdl
YlBhZ2VQcm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKK3sKKyAgICBtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25zLnJlbW92ZShuYXZpZ2F0aW9uSUQpOworfQorCiBzdGF0aWMgX1dL
UmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMgcmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMoV2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogewogICAgIF9XS1JlbmRlcmluZ1Byb2dyZXNz
RXZlbnRzIGV2ZW50cyA9IDA7CkBAIC02NjYsNiArNjY2LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OkxvYWRlckNsaWVudDo6ZGlkUgogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xp
ZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpXZWJQYWdlUHJveHkqKQogeworICAgIG1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuY2xlYXIoKTsKKwogICAgIGlmICghbV9uYXZpZ2F0
aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJQcm9jZXNzRGlk
Q3Jhc2gpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYlBhZ2VQcm94eUNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCShyZXZpc2lvbiAxNzA2MjkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDQsMTcgKzEwNCwxNyBAQCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gV2ViUGFnZVByb3h5Ojpz
ZXNzCiAgICAgcmV0dXJuIEFQSTo6RGF0YTo6Y3JlYXRlKHN0YXRlVmVjdG9yKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YShBUEk6OkRhdGEqIGFw
aURhdGEpCit1aW50NjRfdCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0
YShBUEk6OkRhdGEqIGFwaURhdGEpCiB7CiAgICAgaWYgKCFhcGlEYXRhIHx8IGFwaURhdGEtPnNp
emUoKSA8IHNpemVvZihVSW50MzIpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAw
OwogCiAgICAgY29uc3QgdW5zaWduZWQgY2hhciogYnVmZmVyID0gYXBpRGF0YS0+Ynl0ZXMoKTsK
ICAgICBVSW50MzIgdmVyc2lvbkhlYWRlciA9IChidWZmZXJbMF0gPDwgMjQpICsgKGJ1ZmZlclsx
XSA8PCAxNikgKyAoYnVmZmVyWzJdIDw8IDgpICsgYnVmZmVyWzNdOwogICAgIAogICAgIGlmICh2
ZXJzaW9uSGVhZGVyICE9IEN1cnJlbnRTZXNzaW9uU3RhdGVEYXRhVmVyc2lvbikgewogICAgICAg
ICBMT0coU2Vzc2lvblN0YXRlLCAiVW5yZWNvZ25pemVkIHZlcnNpb24gaGVhZGVyIGZvciBzZXNz
aW9uIHN0YXRlIGRhdGEgLSBjYW5ub3QgcmVzdG9yZSIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoMCwgYXBpRGF0YS0+Ynl0ZXMoKSArIHNpemVvZihVSW50
MzIpLCBhcGlEYXRhLT5zaXplKCkgLSBzaXplb2YoVUludDMyKSkpOwpAQCAtMTI0LDE1ICsxMjQs
MTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YQogICAgIGlmIChw
cm9wZXJ0eUxpc3RFcnJvcikgewogICAgICAgICBDRlJlbGVhc2UocHJvcGVydHlMaXN0RXJyb3Ip
OwogICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiQ291bGQgbm90IHJlYWQgc2Vzc2lvbiBzdGF0
ZSBwcm9wZXJ0eSBsaXN0Iik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0eUxpc3QpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIAogICAgIGlmIChDRkdldFR5cGVJRChwcm9wZXJ0eUxpc3QuZ2V0
KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7CiAgICAgICAgIExPRyhTZXNzaW9uU3Rh
dGUsICJTZXNzaW9uU3RhdGUgcHJvcGVydHkgbGlzdCBpcyBub3QgYSBDRkRpY3Rpb25hcnlSZWYg
KCVpKSAtIGl0cyBDRlR5cGVJRCBpcyAlaSIsIChpbnQpQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCks
IChpbnQpQ0ZHZXRUeXBlSUQocHJvcGVydHlMaXN0LmdldCgpKSk7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGJhY2tGb3J3
YXJkTGlzdERpY3Rpb25hcnkgPSAwOwpAQCAtMTY5LDE0ICsxNjksMTggQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YQogICAgICAgICAgICAgICAgICAgICBpZiAoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdB
UElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9uLCBpdGVtLT51cmwoKSk7CiAKLSAgICAgICAgICAgICAg
ICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uQW5k
TmF2aWdhdGVUb0N1cnJlbnRJdGVtKGdlbmVyYXRlTmF2aWdhdGlvbklEKCksIHN0YXRlKSwgbV9w
YWdlSUQpOworICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBnZW5l
cmF0ZU5hdmlnYXRpb25JRCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlc3Npb25BbmROYXZpZ2F0ZVRvQ3VycmVudEl0ZW0o
bmF2aWdhdGlvbklELCBzdGF0ZSksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG5hdmlnYXRpb25JRDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAocHJvdmlzaW9uYWxVUkwpCi0gICAgICAgIGxvYWRSZXF1
ZXN0KFVSTChVUkwoKSwgcHJvdmlzaW9uYWxVUkwpKTsKKyAgICAgICAgcmV0dXJuIGxvYWRSZXF1
ZXN0KFVSTChVUkwoKSwgcHJvdmlzaW9uYWxVUkwpKTsKKworICAgIHJldHVybiAwOwogfQogCiBz
dGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5h
bWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTcw
NjI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAKICAgICAvLyBXZSBjYWxsIHRo
aXMgc3luY2hyb25vdXNseSBiZWNhdXNlIENGTmV0d29yayBjYW4gb25seSBjb252ZXJ0IGEgbG9h
ZGluZyBjb25uZWN0aW9uIHRvIGEgZG93bmxvYWQgZnJvbSBpdHMgZGlkUmVjZWl2ZVJlc3BvbnNl
IGNhbGxiYWNrLgogICAgIGlmIChyZWNlaXZlZFBvbGljeUFjdGlvbikKLSAgICAgICAgbV9mcmFt
ZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGlj
eUFjdGlvbj4ocG9saWN5QWN0aW9uKSwgZG93bmxvYWRJRCk7CisgICAgICAgIG1fZnJhbWUtPmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rp
b24+KHBvbGljeUFjdGlvbiksIDAsIGRvd25sb2FkSUQpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uKQpAQCAtNzI5LDYgKzcyOSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAKICAgICB1
aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1v
dmUoZnVuY3Rpb24pKTsKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOworICAgIHVpbnQ2
NF90IG5ld05hdmlnYXRpb25JRDsKICAgICB1aW50NjRfdCBwb2xpY3lBY3Rpb247CiAgICAgdWlu
dDY0X3QgZG93bmxvYWRJRDsKIApAQCAtNzYwLDEzICs3NjEsMTYgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlID0gbmF2aWdhdGlvbkFjdGlvbi5wcm9jZXNzaW5nVXNlckdlc3R1
cmUoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0ID0gd2ViUGFn
ZS0+Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKIAorICAgIFdlYkNvcmU6OkZyYW1lKiBjb3Jl
RnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICBXZWJEb2N1bWVudExvYWRlciYgZG9j
dW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpjb3JlRnJhbWUt
PmxvYWRlcigpLnBvbGljeURvY3VtZW50TG9hZGVyKCkpOworCiAgICAgLy8gTm90aWZ5IHRoZSBV
SVByb2Nlc3MuCi0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWUgPyBvcmlnaW5hdGluZ0ZyYW1l
LT5mcmFtZUlEKCkgOiAwLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1
ZXN0LCBsaXN0ZW5lcklELCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0
YS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uOjpSZXBseShyZWNlaXZlZFBvbGljeUFjdGlvbiwgcG9saWN5QWN0aW9uLCBkb3du
bG9hZElEKSkpCisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwg
ZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmln
aW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFtZS0+ZnJhbWVJRCgpIDogMCwgbmF2aWdhdGlv
bkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgbGlzdGVuZXJJRCwgSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjo6UmVwbHkocmVjZWl2ZWRQ
b2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25JRCwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElEKSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGNhbGwgdGhpcyBzeW5jaHJvbm91c2x5IGJl
Y2F1c2UgV2ViQ29yZSBjYW5ub3QgZ3JhY2VmdWxseSBoYW5kbGUgYSBmcmFtZSBsb2FkIHdpdGhv
dXQgYSBzeW5jaHJvbm91cyBuYXZpZ2F0aW9uIHBvbGljeSByZXBseS4KICAgICBpZiAocmVjZWl2
ZWRQb2xpY3lBY3Rpb24pCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIGRv
d25sb2FkSUQpOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlz
dGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBuZXdOYXZp
Z2F0aW9uSUQsIGRvd25sb2FkSUQpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
YW5jZWxQb2xpY3lDaGVjaygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDE3MDYyOSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJEb2N1bWVudExvYWRlci5oIgogCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIK
KwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzYs
NiArMzgsMTQgQEAgV2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNvbgogewog
fQogCit2b2lkIFdlYkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUoKQoreworICAgIGlm
IChtX25hdmlnYXRpb25JRCkKKyAgICAgICAgV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1l
KCkpLT5kb2N1bWVudExvYWRlckRldGFjaGVkKG1fbmF2aWdhdGlvbklEKTsKKworICAgIG1fbmF2
aWdhdGlvbklEID0gMDsKK30KKwogdm9pZCBXZWJEb2N1bWVudExvYWRlcjo6c2V0TmF2aWdhdGlv
bklEKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIHsKICAgICBBU1NFUlQobmF2aWdhdGlvbklEKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJE
b2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAxNzA2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkRvY3VtZW50TG9hZGVyKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRh
Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbUZyYW1lKCkgb3ZlcnJpZGU7CisKICAg
ICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTcwNjI5KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldLQnVuZGxlQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkNocm9tZUNsaWVudC5oIgorI2luY2x1
ZGUgIldlYkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtMjE1
LDcgKzIxNiw3IEBAIHZvaWQgV2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigKICAg
ICBtX3BvbGljeUZ1bmN0aW9uID0gMDsKIH0KIAotdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVp
bnQ2NF90IGRvd25sb2FkSUQpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24odWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9hZElEKQogewogICAgIGlmICghbV9jb3JlRnJhbWUp
CiAgICAgICAgIHJldHVybjsKQEAgLTIzMyw2ICsyMzQsMTEgQEAgdm9pZCBXZWJGcmFtZTo6ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKAogICAgIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpOwog
CiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0gZG93bmxvYWRJRDsKKyAgICBpZiAobmF2aWdhdGlv
bklEKSB7CisgICAgICAgIFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciA9IHN0YXRp
Y19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKm1fY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lE
b2N1bWVudExvYWRlcigpKTsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIuc2V0TmF2aWdhdGlvbklE
KG5hdmlnYXRpb25JRCk7CisgICAgfQorCiAgICAgZnVuY3Rpb24oYWN0aW9uKTsKIH0KIApAQCAt
NzUxLDYgKzc1NywxMSBAQCB2b2lkIFdlYkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKGNvbnN0IFN0
CiAgICAgICAgIG1fY29yZUZyYW1lLT5lZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihS
aWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogfQogCit2b2lkIFdlYkZyYW1lOjpkb2N1bWVu
dExvYWRlckRldGFjaGVkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKK3sKKyAgICBwYWdlKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlv
bklEKSk7Cit9CisKICNpZiBQTEFURk9STShDT0NPQSkKIFJldGFpblB0cjxDRkRhdGFSZWY+IFdl
YkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShGcmFtZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lk
KiBjb250ZXh0KQogewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmgJKHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1
YmxpYzoKIAogICAgIHVpbnQ2NF90IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQ
b2xpY3lGdW5jdGlvbik7CiAgICAgdm9pZCBpbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJD
b3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFj
dGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9hZElEKTsKIAogICAg
IHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAg
ICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTEzMSw2ICsxMzEsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFRleHREaXJlY3Rpb24oY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGRvY3VtZW50
TG9hZGVyRGV0YWNoZWQodWludDY0X3QgbmF2aWdhdGlvbklEKTsKKwogICAgIC8vIFNpbXBsZSBs
aXN0ZW5lciBjbGFzcyB1c2VkIGJ5IHBsdWctaW5zIHRvIGtub3cgd2hlbiBmcmFtZXMgZmluaXNo
IG9yIGZhaWwgbG9hZGluZy4KICAgICBjbGFzcyBMb2FkTGlzdGVuZXIgewogICAgIHB1YmxpYzoK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1NSwxMiArMjI1NSwxMiBAQCB2b2lkIFdl
YlBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2VzCiAgICAgbV9wYWdlLT5zZXRTZXNzaW9u
SUQoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5
QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMy
X3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25sb2Fk
SUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1l
LT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9saWN5
QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBkb3dubG9hZElEKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlvbj4ocG9s
aWN5QWN0aW9uKSwgbmF2aWdhdGlvbklELCBkb3dubG9hZElEKTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTY2LDcg
Kzk2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2Vz
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90
IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWlu
dDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25s
b2FkSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN1c3Bl
bmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQpCiAKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9s
aWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKQorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCkKIAog
ICAgIENsZWFyU2VsZWN0aW9uKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234147</attachid>
            <date>2014-06-30 23:20:34 -0700</date>
            <delta_ts>2014-07-01 10:14:53 -0700</delta_ts>
            <desc>Attach navigationID and create WKNavigation at action policy decision time if needed</desc>
            <filename>bug-134482-20140630232015.patch</filename>
            <type>text/plain</type>
            <size>42293</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDE0LTA2LTMwICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBOYXZpZ2F0aW9uIHBh
cmFtZXRlciBpbiBuYXZpZ2F0aW9uIGRlbGVnYXRlIG1lc3NhZ2VzIGlzIG5pbCBmb3IgbmF2aWdh
dGlvbnMgc3RhcnRlZCBieSB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NDgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0
aW9uKTogTmV3IGNsaWVudCBmdW5jdGlvbiwgY2FsbGVkIHdoZW4gYSBuYXZpZ2F0aW9uIElECisg
ICAgICAgIGlzIG5vdCBnb2luZyB0byBiZSB1c2VkIGFueW1vcmUuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZTpdKTogSWYgcmVzdG9yaW5nIHRyaWdnZXJlZCBhIG5hdmlnYXRp
b24sIGNyZWF0ZSBhCisgICAgICAgIFdLTmF2aWdhdGlvbiBmb3IgaXRzIElELgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25T
dGF0ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKTogUmVtb3ZlZCBGSVhNRSwgYmVjYXVz
ZSB3ZSBub3cgcmVtb3ZlCisgICAgICAgIG5hdmlnYXRpb25zIGZyb20gdGhlIG1hcCBpbiBMb2Fk
ZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6OmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpjcmVhdGVMb2FkRGF0YU5hdmlnYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGll
bnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBJZiB3ZSBhcmUgb25seQorICAg
ICAgICBnZXR0aW5nIGEgbmF2aWdhdGlvbiBJRCBub3csIGNyZWF0ZSBhIFdLTmF2aWdhdGlvbiBm
b3IgaXQuIEFsc28gY2hhbmdlZCB0byBjcmVhdGUgdGhlCisgICAgICAgIE5TVVJMUmVxdWVzdCBs
YXppbHkuCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogQXNzZXJ0IHRoYXQKKyAgICAgICAgbmF2
aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGFuZCB0aGF0IGl0IG1hcHMgdG8gYW4gZXhpc3RpbmcgV0tO
YXZpZ2F0aW9uLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgor
ICAgICAgICBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJD
bGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkQ29tbWl0
TG9hZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9h
ZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdh
dGlvbik6IE92ZXJyaWRlIHRoZSBuZXcgY2xpZW50CisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92
ZSB0aGUgbmF2aWdhdGlvbiBmcm9tIHRoZSBtYXAuCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRp
b25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOiBDbGVhciB0aGUgbmF2aWdh
dGlvbnMgbWFwLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQcm94eTo6V2ViRnJhbWVMaXN0
ZW5lclByb3h5KTogSW5pdGlhbGl6ZSBuZXcgbV9uYXZpZ2F0aW9uSUQKKyAgICAgICAgbWVtYmVy
IHZhcmlhYmxlLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24pOiBQYXNzIHRoZSBuYXZpZ2F0aW9uIElEIHRvCisgICAgICAgIFdl
YkZyYW1lOjpyZWNlaXZlZFBvbGljeURlY2lzaW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
cmFtZUxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMaXN0ZW5lclBy
b3h5OjpuYXZpZ2F0aW9uSUQpOiBBZGRlZCB0aGlzIGFjY2Vzc29yLgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnNldE5hdmlnYXRpb25JRCk6IERpdHRvLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKTogQWRkZWQgbmF2aWdhdGlvbklEIHBh
cmFtZXRlciwgd2hpY2ggaXMKKyAgICAgICAgcGFzc2VkIGFsb25nIHRvIHRoZSBXZWJQYWdlUHJv
eHkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOiBBZGRlZCBuYXZpZ2F0aW9uSUQgcGFyYW1ldGVyLCB3
aGljaCBpcworICAgICAgICBwYXNzZWQgYWxvbmcgaW4gdGhlIG1lc3NhZ2UgdG8gdGhlIFdlYiBD
b250ZW50IHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZy
b21TZXNzaW9uU3RhdGVEYXRhKTogQ2hhbmdlZCB0byByZXR1cm4gYSBuYXZpZ2F0aW9uIElEIG9m
IDAuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TdGF0ZSk6IENo
YW5nZWQgdG8gcmV0dXJuIGEgbmF2aWdhdGlvbiBJRCBpZiBvbmUgd2FzCisgICAgICAgIHN0YXJ0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5hdmlnYXRpb24p
OiBBZGRlZC4gQ2FsbHMgdGhlIG5ldyBjbGllbnQgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IEFkZGVkIG5h
dmlnYXRpb25JRCBhbmQKKyAgICAgICAgbmV3TmF2aWdhdGlvbklEIHBhcmFtZXRlcnMuIElmIGEg
bWFpbi1mcmFtZSBuYXZpZ2F0aW9uIGRvZXNu4oCZdCBhbHJlYWR5IGhhdmUgYW4gSUQsIGFzc2ln
biBpdAorICAgICAgICBhIG5ldyBJRCBhbmQgcmV0dXJuIGl0IGluIHRoZSBuZXdOYXZpZ2F0aW9u
SUQgcGFybWV0ZXIgYXMgd2VsbCBhcyBzZXR0aW5nIGl0IG9uIHRoZSBsaXN0ZW5lcgorICAgICAg
ICBmb3IgdGhlIGFzeW5jaHJvbm91cyBjYXNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
IEFkZGVkIG5hdmlnYXRpb25JRCBhbmQgbmV3TmF2aWdhdGlvbklEIHBhcmFtZXRlcnMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YSk6IENoYW5nZWQgdG8g
cmV0dXJuIGEgbmF2aWdhdGlvbiBJRCBpZgorICAgICAgICBvbmUgd2FzIHN0YXJ0ZWQuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOiBVcGRhdGVkIGZvciBhZGRpdGlvbmFsCisgICAgICAgIHBhcmFt
ZXRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IFNlbmQgdGhlIG5hdmlnYXRpb24KKyAgICAg
ICAgSUQgdG8gdGhlIFVJIHByb2Nlc3MsIGdldCB0aGUgbmV3IG5hdmlnYXRpb24gSUQgZnJvbSB0
aGUgcmVwbHksIGFuZCBzZXQgaXQgb24gdGhlIGRvY3VtZW50CisgICAgICAgIGxvYWRlci4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUpOiBPdmVycmlk
ZSB0byBsZXQgdGhlIFVJIHByb2Nlc3Mga25vdyB0aGF0IHRoZQorICAgICAgICBuYXZpZ2F0aW9u
IElEIHdpbGwgbm90IGJlIHVzZWQgYW55bW9yZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRG9jdW1lbnRMb2FkZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24pOiBBZGRlZCBuYXZpZ2F0aW9uSUQgcGFyYW1ldGVyLCBzZXQgaXQgb24gdGhlCisg
ICAgICAgIGRvY3VtZW50IGxvYWRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRvY3Vt
ZW50TG9hZGVyRGV0YWNoZWQpOiBQYXNzIHRoZSBtZXNzYWdlIGFsb25nIHRvIHRoZSBVSSBwcm9j
ZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOiBQYXNzIG5ldyBuYXZpZ2F0aW9uSUQgcGFy
YW1ldGVyIGFsb25nLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkZWQg
bmF2aWdhdGlvbklEIHBhcmFtZXRlci4KKwogMjAxNC0wNi0zMCAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2lPU11bV0syXSBUaGUgbG9uZyBwcmVz
cyBnZXN0dXJlIHJlY29nbml6ZXJzIHNob3VsZCBub3QgYmxvY2sgdGhlIHBpbmNoIGdlc3R1cmUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVy
UHJveHkuY3BwCShyZXZpc2lvbiAxNzA2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkZyYW1lTGlzdGVuZXJQcm94eTo6V2ViRnJhbWVMaXN0
ZW5lclByb3h5KFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogICAg
IDogbV9mcmFtZShmcmFtZSkKICAgICAsIG1fbGlzdGVuZXJJRChsaXN0ZW5lcklEKQorICAgICwg
bV9uYXZpZ2F0aW9uSUQoMCkKIHsKIH0KIApAQCAtNTAsNyArNTEsNyBAQCB2b2lkIFdlYkZyYW1l
TGlzdGVuZXJQcm94eTo6cmVjZWl2ZWRQb2xpCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5yZWNlaXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwgbV9s
aXN0ZW5lcklEKTsKKyAgICBtX2ZyYW1lLT5yZWNlaXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwg
bV9saXN0ZW5lcklELCBtX25hdmlnYXRpb25JRCk7CiAgICAgbV9mcmFtZSA9IDA7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5
LmgJKHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFt
ZUxpc3RlbmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGlzdGVuZXJJRDsgfQogCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uSUQ7IH0KKyAgICB2b2lkIHNldE5hdmlnYXRpb25J
RCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQpIHsgbV9uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7
IH0KKwogcHJvdGVjdGVkOgogICAgIFdlYkZyYW1lTGlzdGVuZXJQcm94eShXZWJGcmFtZVByb3h5
KiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAKQEAgLTUwLDYgKzUzLDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9mcmFtZTsKICAgICB1aW50NjRf
dCBtX2xpc3RlbmVySUQ7CisgICAgdWludDY0X3QgbV9uYXZpZ2F0aW9uSUQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5jcHAJKHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDE0ICsxNjksMTQgQEAg
dm9pZCBXZWJGcmFtZVByb3h5OjpkaWRDaGFuZ2VUaXRsZShjb25zdAogICAgIG1fdGl0bGUgPSB0
aXRsZTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFdl
YkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFdl
YkZyYW1lUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9u
IGFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbmF2aWdhdGlvbklEKQogewog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9hY3RpdmVM
aXN0ZW5lcik7CiAgICAgQVNTRVJUKG1fYWN0aXZlTGlzdGVuZXItPmxpc3RlbmVySUQoKSA9PSBs
aXN0ZW5lcklEKTsKLSAgICBtX3BhZ2UtPnJlY2VpdmVkUG9saWN5RGVjaXNpb24oYWN0aW9uLCB0
aGlzLCBsaXN0ZW5lcklEKTsKKyAgICBtX3BhZ2UtPnJlY2VpdmVkUG9saWN5RGVjaXNpb24oYWN0
aW9uLCB0aGlzLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uSUQpOwogfQogCiBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHkqIFdlYkZyYW1lUHJveHk6OnNldFVwUG9saWN5TGlzdGVuZXJQcm94eSh1
aW50NjRfdCBsaXN0ZW5lcklEKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5oCShyZXZpc2lvbiAxNzA2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBQb2xp
Y3kgb3BlcmF0aW9ucy4KLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6
UG9saWN5QWN0aW9uLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBsaXN0ZW5lcklELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSAwKTsKICAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHkqIHNldFVwUG9saWN5TGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICBX
ZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkqIHNldFVwRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5KHVpbnQ2NF90IGxpc3RlbmVySUQpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDgsNyAr
MTcwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2kKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlzaWJs
ZUFyZWEoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBs
aXN0ZW5lcklELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE3NDQsNyArMTc0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihmcmFtZS0+ZnJhbWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIGRvd25sb2FkSUQpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oZnJhbWUtPmZyYW1lSUQoKSwgbGlzdGVuZXJJRCwgYWN0aW9uLCBu
YXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCkBAIC0xODQwLDEzICsx
ODQwLDE0IEBAIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiBXZWJQYWdlUHJveHk6OnNlc3MKICAgICBy
ZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRl
RGF0YShBUEk6OkRhdGEqKQordWludDY0X3QgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZURhdGEoQVBJOjpEYXRhKikKIHsKICAgICAvLyBGSVhNRTogUmVzdG9yZSB0aGUgUGFn
ZSBmcm9tIHRoZSBwYXNzZWQgaW4gc2Vzc2lvbiBzdGF0ZSBkYXRhLgorICAgIHJldHVybiAwOwog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVN0YXRlKFNlc3Npb25T
dGF0ZSBzZXNzaW9uU3RhdGUpCit1aW50NjRfdCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU3Rh
dGUoU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSkKIHsKICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+
cmVzdG9yZUZyb21TdGF0ZShzdGQ6Om1vdmUoc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0
YXRlKSk7CiAKQEAgLTE4NTUsMTMgKzE4NTYsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3Rv
cmVGcm9tU3RhdGUoU2VzcwogCiAgICAgLy8gRklYTUU6IE5hdmlnYXRpbmcgc2hvdWxkIGJlIHNl
cGFyYXRlIGZyb20gc3RhdGUgcmVzdG9yYXRpb24uCiAKLSAgICBpZiAoc2Vzc2lvblN0YXRlLnBy
b3Zpc2lvbmFsVVJMKSB7Ci0gICAgICAgIGxvYWRSZXF1ZXN0KHNlc3Npb25TdGF0ZS5wcm92aXNp
b25hbFVSTCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHNlc3Npb25TdGF0ZS5w
cm92aXNpb25hbFVSTCkKKyAgICAgICAgcmV0dXJuIGxvYWRSZXF1ZXN0KHNlc3Npb25TdGF0ZS5w
cm92aXNpb25hbFVSTCk7CiAKICAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9
IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKQotICAgICAgICBnb1RvQmFja0Zvcndh
cmRJdGVtKGl0ZW0pOworICAgICAgICByZXR1cm4gZ29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtKTsK
KworICAgIHJldHVybiAwOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0Wm9v
bSgpIGNvbnN0CkBAIC0yNDI4LDYgKzI0MjksMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
bmlzaFByb2dyZXNzKCkKICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoUHJvZ3Jlc3ModGhp
cyk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRf
dCBuYXZpZ2F0aW9uSUQpCit7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZERlc3Ryb3lOYXZpZ2F0
aW9uKHRoaXMsIG5hdmlnYXRpb25JRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkws
IElQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwpAQCAtMjc3Miw3ICsyNzc4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZQogICAgICAgICBtX2ZyYW1lU2V0
TGFyZ2VzdEZyYW1lID0gdmFsdWUgPyBtX21haW5GcmFtZSA6IDA7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBs
aXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBib29sJiByZWNlaXZlZFBv
bGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiBkZWNvZGVyLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3Qm
IG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25s
b2FkSUQpCiB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250
ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkp
OwpAQCAtMjc5Miw2ICsyNzk4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2EKICAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gbV9wcm9jZXNz
LT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSUQpOwogICAgIAogICAgIFJlZlB0cjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVu
ZXJQcm94eShsaXN0ZW5lcklEKTsKKyAgICBpZiAoIW5hdmlnYXRpb25JRCAmJiBmcmFtZS0+aXNN
YWluRnJhbWUoKSkgeworICAgICAgICBuZXdOYXZpZ2F0aW9uSUQgPSBnZW5lcmF0ZU5hdmlnYXRp
b25JRCgpOworICAgICAgICBsaXN0ZW5lci0+c2V0TmF2aWdhdGlvbklEKG5ld05hdmlnYXRpb25J
RCk7CisgICAgfQogCiAgICAgQVNTRVJUKCFtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNTUyLDggKzU1Miw4IEBAIHB1YmxpYzoKIAogICAgIHR5cGVk
ZWYgYm9vbCAoKldlYlBhZ2VQcm94eVNlc3Npb25TdGF0ZUZpbHRlckNhbGxiYWNrKShXS1BhZ2VS
ZWYsIFdLU3RyaW5nUmVmIHR5cGUsIFdLVHlwZVJlZiBvYmplY3QsIHZvaWQqIGNvbnRleHQpOwog
ICAgIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiBzZXNzaW9uU3RhdGVEYXRhKFdlYlBhZ2VQcm94eVNl
c3Npb25TdGF0ZUZpbHRlckNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KSBjb25zdDsKLSAgICB2b2lk
IHJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YShBUEk6OkRhdGEqKTsKLSAgICB2b2lkIHJlc3Rv
cmVGcm9tU3RhdGUoU2Vzc2lvblN0YXRlKTsKKyAgICB1aW50NjRfdCByZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZURhdGEoQVBJOjpEYXRhKik7CisgICAgdWludDY0X3QgcmVzdG9yZUZyb21TdGF0ZShT
ZXNzaW9uU3RhdGUpOwogCiAgICAgYm9vbCBzdXBwb3J0c1RleHRab29tKCkgY29uc3Q7CiAgICAg
ZG91YmxlIHRleHRab29tRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Wm9vbUZhY3Rvcjsg
fQpAQCAtNjc5LDcgKzY3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAjZW5kaWYKIAot
ICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIFdl
YkZyYW1lUHJveHkqLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBXZWJGcmFtZVByb3h5KiwgdWludDY0
X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAogICAgIHZvaWQgYmFja0Zv
cndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQpOwogCkBAIC05NTgsOCArOTU4LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoKTsKICAgICB2b2lkIGRpZENoYW5n
ZVByb2dyZXNzKGRvdWJsZSk7CiAgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcygpOworICAgIHZv
aWQgZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAotICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIElQQzo6TWVzc2FnZURl
Y29kZXImLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGljeUFjdGlv
biwgdWludDY0X3QmIGRvd25sb2FkSUQpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgbGlzdGVuZXJJRCwgSVBDOjpNZXNzYWdlRGVj
b2RlciYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlv
bklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJRCk7CiAgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgYm9vbCYgcmVjZWl2
ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBkb3dubG9h
ZElEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzEx
MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBtZXNzYWdl
cwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIC0+IChib29sIHJl
Y2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25s
b2FkSUQpIFZhcmlhZGljCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1
aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgcG9s
aWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKSBWYXJpYWRpYworICAgIERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBs
aXN0ZW5lcklELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJE
YXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlv
bklELCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpIFZhcmlhZGlj
CiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRh
KSBWYXJpYWRpYwogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIgdXNlckRhdGEpICBWYXJpYWRpYwogCkBAIC0xNDAsNiArMTQwLDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNl
ckRhdGEpIFZhcmlhZGljCiAgICAgRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IHR5cGUsIFN0cmluZyB1cmwsIFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpIFZhcmlhZGljCisgICAgRGlkRGVz
dHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKQogCiAgICAgRnJhbWVEaWRCZWNv
bWVGcmFtZVNldCh1aW50NjRfdCBmcmFtZUlELCBib29sIHZhbHVlKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDE3
MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OlNhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlLCBBUEk6Ok9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVGl0bGVG
b3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0
OjpXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
Rmlyc3RMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lO
YXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgdWludDY0X3QgbmF2aWdhdGlvbklEKSB7
IH0KIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUgc2luY2UgaXQgaXMgcmVwbGFjZWQgYnkgZGlk
TGF5b3V0LgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIEFQ
STo6T2JqZWN0KikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NzEs
NyArMTU3MSw5IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOU0RhdGEodW5zaWduZWQgY2hhcioKIC0g
KHZvaWQpX3Jlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOihOU0RhdGEgKilzZXNzaW9uU3RhdGUKIHsK
ICAgICBbc2Vzc2lvblN0YXRlIHJldGFpbl07Ci0gICAgX3BhZ2UtPnJlc3RvcmVGcm9tU2Vzc2lv
blN0YXRlRGF0YShBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKChjb25zdCB1bnNpZ25l
ZCBjaGFyKilzZXNzaW9uU3RhdGUuYnl0ZXMsIHNlc3Npb25TdGF0ZS5sZW5ndGgsIHJlbGVhc2VO
U0RhdGEsIHNlc3Npb25TdGF0ZSkuZ2V0KCkpOworICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCA9
IF9wYWdlLT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhOjpjcmVhdGVXaXRo
b3V0Q29weWluZygoY29uc3QgdW5zaWduZWQgY2hhciopc2Vzc2lvblN0YXRlLmJ5dGVzLCBzZXNz
aW9uU3RhdGUubGVuZ3RoLCByZWxlYXNlTlNEYXRhLCBzZXNzaW9uU3RhdGUpLmdldCgpKTsKKyAg
ICBpZiAobmF2aWdhdGlvbklEKQorICAgICAgICBfbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVSZWxv
YWROYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiB9CiAKIC0gKHZvaWQpX2Nsb3NlCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShy
ZXZpc2lvbiAxNzA2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0
cm95TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRMYXlvdXQoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzLCBBUEk6Ok9iamVjdCopIG92ZXJy
aWRlOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSopIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAxNzA2Mjkp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldL
TlNVUkxQcm90ZWN0aW9uU3BhY2UuaCIKKyNpbXBvcnQgIldLTlNVUkxSZXF1ZXN0LmgiCiAjaW1w
b3J0ICJXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9u
RGF0YUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCIK
QEAgLTE2Myw3ICsxNjQsNiBAQCBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiBOYXZpZ2F0aW9uU3Rh
dGU6CiAgICAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IGFkb3B0TlMoW1tX
S05hdmlnYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbbmF2aWdhdGlvbiBzZXRSZXF1ZXN0OnJl
cXVlc3RdOwogCi0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBuYXZpZ2F0aW9u
IHdoZW4gd2UncmUgZG9uZSB3aXRoIGl0IQogICAgIG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRp
b25JRCwgbmF2aWdhdGlvbik7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE3NSw3ICsx
NzUsNiBAQCBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiBOYXZpZ2F0aW9uU3RhdGU6CiAKICAgICBh
dXRvIG5hdmlnYXRpb24gPSBhZG9wdE5TKFtbV0tOYXZpZ2F0aW9uIGFsbG9jXSBpbml0XSk7CiAK
LSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byByZW1vdmUgdGhlIG5hdmlnYXRpb24gd2hlbiB3ZSdy
ZSBkb25lIHdpdGggaXQhCiAgICAgbV9uYXZpZ2F0aW9ucy5zZXQobmF2aWdhdGlvbklELCBuYXZp
Z2F0aW9uKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtMTg3LDcgKzE4Niw2IEBAIFJl
dGFpblB0cjxXS05hdmlnYXRpb24+IE5hdmlnYXRpb25TdGF0ZToKIAogICAgIGF1dG8gbmF2aWdh
dGlvbiA9IGFkb3B0TlMoW1tXS05hdmlnYXRpb24gYWxsb2NdIGluaXRdKTsKIAotICAgIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgbmF2aWdhdGlvbiB3aGVuIHdlJ3JlIGRvbmUgd2l0
aCBpdCEKICAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uSUQsIG5hdmlnYXRpb24pOwog
CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xOTksNyArMTk3LDYgQEAgUmV0YWluUHRyPFdL
TmF2aWdhdGlvbj4gTmF2aWdhdGlvblN0YXRlOgogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gYWRv
cHROUyhbW1dLTmF2aWdhdGlvbiBhbGxvY10gaW5pdF0pOwogCi0gICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gcmVtb3ZlIHRoZSBuYXZpZ2F0aW9uIHdoZW4gd2UncmUgZG9uZSB3aXRoIGl0IQogICAg
IG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRpb25JRCwgbmF2aWdhdGlvbik7CiAKICAgICByZXR1
cm4gbmF2aWdhdGlvbjsKQEAgLTI2NCwxNCArMjYxLDE4IEBAIE5hdmlnYXRpb25TdGF0ZTo6UG9s
aWN5Q2xpZW50Ojp+UG9saWN5Q2wKIAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiBkZXN0aW5hdGlvbkZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIHNvdXJjZUZyYW1lLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogeworICAgIFJldGFpblB0cjxOU1VS
TFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IGFkb3B0TlMod3JhcHBlcigqQVBJOjpVUkxSZXF1ZXN0
OjpjcmVhdGUocmVxdWVzdCkubGVha1JlZigpKSk7CisKKyAgICBpZiAobGlzdGVuZXItPm5hdmln
YXRpb25JRCgpKQorICAgICAgICBtX25hdmlnYXRpb25TdGF0ZS5jcmVhdGVMb2FkUmVxdWVzdE5h
dmlnYXRpb24obGlzdGVuZXItPm5hdmlnYXRpb25JRCgpLCBuc1VSTFJlcXVlc3QuZ2V0KCkpOwor
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXIpIHsK
ICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbkZyYW1lKSB7CiAgICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBOU1VSTFJl
cXVlc3QgKm5zVVJMUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOwotICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVS
ZXF1ZXN0Om5zVVJMUmVxdWVzdF0pIHsKKyAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2Fu
SGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3QuZ2V0KCldKSB7CiAgICAgICAgICAgICBsaXN0ZW5l
ci0+dXNlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3OSw4ICsyODAs
OCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgICAgICAvLyBBIGZpbGUgVVJMIHNob3VsZG4ndCBmYWxsIHRocm91Z2ggdG8g
aGVyZSwgYnV0IGlmIGl0IGRpZCwKICAgICAgICAgLy8gaXQgd291bGQgYmUgYSBzZWN1cml0eSBy
aXNrIHRvIG9wZW4gaXQuCi0gICAgICAgIGlmICghW25zVVJMUmVxdWVzdC5VUkwgaXNGaWxlVVJM
XSkKLSAgICAgICAgICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBvcGVuVVJMOm5z
VVJMUmVxdWVzdC5VUkxdOworICAgICAgICBpZiAoIVtbbnNVUkxSZXF1ZXN0IFVSTF0gaXNGaWxl
VVJMXSkKKyAgICAgICAgICAgIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNlXSBvcGVuVVJM
Oltuc1VSTFJlcXVlc3QgVVJMXV07CiAjZW5kaWYKICAgICAgICAgbGlzdGVuZXItPmlnbm9yZSgp
OwogICAgICAgICByZXR1cm47CkBAIC0zMDIsNyArMzAzLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OlBvbGljeUNsaWVudDo6ZGVjaQogICAgICAgICAgICAgW25hdmlnYXRpb25BY3Rpb24gc2V0
U291cmNlRnJhbWU6YWRvcHROUyhbW1dLRnJhbWVJbmZvIGFsbG9jXSBpbml0V2l0aFdlYkZyYW1l
UHJveHk6KnNvdXJjZUZyYW1lXSkuZ2V0KCldOwogICAgIH0KIAotICAgIFtuYXZpZ2F0aW9uQWN0
aW9uIHNldFJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6RG9Ob3RVcGRhdGVI
VFRQQm9keSldOworICAgIFtuYXZpZ2F0aW9uQWN0aW9uIHNldFJlcXVlc3Q6bnNVUkxSZXF1ZXN0
LmdldCgpXTsKICAgICBbbmF2aWdhdGlvbkFjdGlvbiBfc2V0T3JpZ2luYWxVUkw6b3JpZ2luYWxS
ZXF1ZXN0LnVybCgpXTsKIAogICAgIFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
PiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG5hdmlnYXRp
b25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KSk7CkBAIC00MTIsMTAgKzQxMyw5IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFMKICAgICBpZiAoIW5hdmlnYXRpb25E
ZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3Nl
cnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5
IHplcm8gZm9yIG5hdmlnYXRpb25zIG9yaWdpbmF0aW5nIGZyb20gdGhlIHdlYiBwcm9jZXNzLgot
ICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdhdGlvbklE
KQotICAgICAgICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5n
ZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbklEKTsKKyAgICBX
S05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25z
LmdldChuYXZpZ2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uKTsKIAogICAg
IFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcg
ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246bmF2aWdhdGlvbl07CiB9CkBAIC00MzIsMTAg
KzQzMiw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFIKICAgICBp
ZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0
IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIG5hdmlnYXRpb25zIG9yaWdpbmF0aW5nIGZyb20gdGhl
IHdlYiBwcm9jZXNzLgotICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5pbDsKLSAgICBp
ZiAobmF2aWdhdGlvbklEKQotICAgICAgICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUu
bV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdh
dGlvbklEKTsKKyAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0
ZS5tX25hdmlnYXRpb25zLmdldChuYXZpZ2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVChuYXZp
Z2F0aW9uKTsKIAogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25T
dGF0ZS5tX3dlYlZpZXcgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uOm5hdmlnYXRpb25dOwogfQpAQCAtNDY4LDEwICs0NjcsOSBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVy
byBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgemVybyBmb3IgbmF2aWdhdGlvbnMgb3JpZ2luYXRp
bmcgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCi0gICAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gbmF2
aWdhdGlvbjsKLSAgICBpZiAobmF2aWdhdGlvbklEKQotICAgICAgICBuYXZpZ2F0aW9uID0gbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy50YWtlKG5hdmlnYXRpb25JRCk7CisgICAgQVNT
RVJUKG5hdmlnYXRpb25JRCk7CisgICAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gbmF2aWdhdGlv
biA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMudGFrZShuYXZpZ2F0aW9uSUQpLmdl
dCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uKTsKIAogICAgIC8vIEZJWE1FOiBTZXQgdGhlIGVy
cm9yIG9uIHRoZSBuYXZpZ2F0aW9uIG9iamVjdC4KIApAQCAtNDk4LDEwICs0OTYsOSBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRDCiAgICAgaWYgKCFuYXZpZ2F0aW9u
RGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNz
ZXJ0IHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRs
eSB6ZXJvIGZvciBuYXZpZ2F0aW9ucyBvcmlnaW5hdGluZyBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4K
LSAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25J
RCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMu
Z2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAg
V0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9u
cy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAg
ICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IGRpZENvbW1pdE5hdmlnYXRpb246bmF2aWdhdGlvbl07CiB9CkBAIC01MTgsOSArNTE1LDkgQEAg
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRgogICAgIGlmICghbmF2aWdh
dGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS05hdmlnYXRpb24gKm5hdmln
YXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAgICAgbmF2aWdhdGlvbiA9
IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuZ2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7
CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9u
ID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKS5nZXQo
KTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVu
dExvYWQ6bmF2aWdhdGlvbl07CiB9CkBAIC01MzcsMTAgKzUzNCw5IEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBu
YXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9y
IG5hdmlnYXRpb25zIG9yaWdpbmF0aW5nIGZyb20gdGhlIHdlYiBwcm9jZXNzLgotICAgIFdLTmF2
aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdhdGlvbklEKQotICAgICAg
ICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdh
dGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbklEKTsKKyAgICBXS05hdmlnYXRp
b24gKm5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLmdldChuYXZp
Z2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uKTsKIAogICAgIFtuYXZpZ2F0
aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmluaXNo
TmF2aWdhdGlvbjpuYXZpZ2F0aW9uXTsKIH0KQEAgLTU1NywxNSArNTUzLDE5IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxl
Z2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQg
dGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHpl
cm8gZm9yIG5hdmlnYXRpb25zIG9yaWdpbmF0aW5nIGZyb20gdGhlIHdlYiBwcm9jZXNzLgotICAg
IFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdhdGlvbklEKQot
ICAgICAgICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQo
bmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbklEKTsKKyAgICBXS05h
dmlnYXRpb24gKm5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLmdl
dChuYXZpZ2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uKTsKIAogICAgIGF1
dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0
dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsICp3ZWJGcmFtZVByb3h5LCBlcnJv
cik7CiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1f
d2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjpuYXZpZ2F0aW9uIHdpdGhFcnJvcjplcnJvcldpdGhS
ZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9CiAKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2Fk
ZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCkKK3sKKyAgICBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLnJlbW92
ZShuYXZpZ2F0aW9uSUQpOworfQorCiBzdGF0aWMgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMg
cmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3Rv
bmVzKQogewogICAgIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzIGV2ZW50cyA9IDA7CkBAIC02
NjYsNiArNjY2LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUgog
CiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKQogeworICAgIG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlv
bnMuY2xlYXIoKTsKKwogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2gpCiAgICAgICAgIHJldHVybjsK
IApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0Yu
Y3BwCShyZXZpc2lvbiAxNzA2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2Vi
UGFnZVByb3h5Q0YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsMTcgKzEwNCwxNyBAQCBQYXNz
UmVmUHRyPEFQSTo6RGF0YT4gV2ViUGFnZVByb3h5OjpzZXNzCiAgICAgcmV0dXJuIEFQSTo6RGF0
YTo6Y3JlYXRlKHN0YXRlVmVjdG9yKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVG
cm9tU2Vzc2lvblN0YXRlRGF0YShBUEk6OkRhdGEqIGFwaURhdGEpCit1aW50NjRfdCBXZWJQYWdl
UHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YShBUEk6OkRhdGEqIGFwaURhdGEpCiB7
CiAgICAgaWYgKCFhcGlEYXRhIHx8IGFwaURhdGEtPnNpemUoKSA8IHNpemVvZihVSW50MzIpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgY29uc3QgdW5zaWduZWQg
Y2hhciogYnVmZmVyID0gYXBpRGF0YS0+Ynl0ZXMoKTsKICAgICBVSW50MzIgdmVyc2lvbkhlYWRl
ciA9IChidWZmZXJbMF0gPDwgMjQpICsgKGJ1ZmZlclsxXSA8PCAxNikgKyAoYnVmZmVyWzJdIDw8
IDgpICsgYnVmZmVyWzNdOwogICAgIAogICAgIGlmICh2ZXJzaW9uSGVhZGVyICE9IEN1cnJlbnRT
ZXNzaW9uU3RhdGVEYXRhVmVyc2lvbikgewogICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiVW5y
ZWNvZ25pemVkIHZlcnNpb24gaGVhZGVyIGZvciBzZXNzaW9uIHN0YXRlIGRhdGEgLSBjYW5ub3Qg
cmVzdG9yZSIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAg
ICAKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUo
MCwgYXBpRGF0YS0+Ynl0ZXMoKSArIHNpemVvZihVSW50MzIpLCBhcGlEYXRhLT5zaXplKCkgLSBz
aXplb2YoVUludDMyKSkpOwpAQCAtMTI0LDE1ICsxMjQsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlc3RvcmVGcm9tU2Vzc2lvblN0YQogICAgIGlmIChwcm9wZXJ0eUxpc3RFcnJvcikgewogICAg
ICAgICBDRlJlbGVhc2UocHJvcGVydHlMaXN0RXJyb3IpOwogICAgICAgICBMT0coU2Vzc2lvblN0
YXRlLCAiQ291bGQgbm90IHJlYWQgc2Vzc2lvbiBzdGF0ZSBwcm9wZXJ0eSBsaXN0Iik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgaWYgKCFwcm9wZXJ0
eUxpc3QpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAogICAg
IGlmIChDRkdldFR5cGVJRChwcm9wZXJ0eUxpc3QuZ2V0KCkpICE9IENGRGljdGlvbmFyeUdldFR5
cGVJRCgpKSB7CiAgICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJTZXNzaW9uU3RhdGUgcHJvcGVy
dHkgbGlzdCBpcyBub3QgYSBDRkRpY3Rpb25hcnlSZWYgKCVpKSAtIGl0cyBDRlR5cGVJRCBpcyAl
aSIsIChpbnQpQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCksIChpbnQpQ0ZHZXRUeXBlSUQocHJvcGVy
dHlMaXN0LmdldCgpKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnkgPSAwOwpA
QCAtMTY5LDE0ICsxNjksMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lv
blN0YQogICAgICAgICAgICAgICAgICAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRl
bSA9IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHRyYW5zYWN0aW9u
LCBpdGVtLT51cmwoKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uQW5kTmF2aWdhdGVUb0N1cnJlbnRJdGVtKGdl
bmVyYXRlTmF2aWdhdGlvbklEKCksIHN0YXRlKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgICAg
ICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBnZW5lcmF0ZU5hdmlnYXRpb25JRCgpOworICAg
ICAgICAgICAgICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9y
ZVNlc3Npb25BbmROYXZpZ2F0ZVRvQ3VycmVudEl0ZW0obmF2aWdhdGlvbklELCBzdGF0ZSksIG1f
cGFnZUlEKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRpb25JRDsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
cHJvdmlzaW9uYWxVUkwpCi0gICAgICAgIGxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgcHJvdmlzaW9u
YWxVUkwpKTsKKyAgICAgICAgcmV0dXJuIGxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgcHJvdmlzaW9u
YWxVUkwpKTsKKworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkCiAKICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNl
IENGTmV0d29yayBjYW4gb25seSBjb252ZXJ0IGEgbG9hZGluZyBjb25uZWN0aW9uIHRvIGEgZG93
bmxvYWQgZnJvbSBpdHMgZGlkUmVjZWl2ZVJlc3BvbnNlIGNhbGxiYWNrLgogICAgIGlmIChyZWNl
aXZlZFBvbGljeUFjdGlvbikKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKGxpc3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9uKSwg
ZG93bmxvYWRJRCk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihs
aXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIDAsIGRv
d25sb2FkSUQpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0
aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9y
bVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1
bmN0aW9uIGZ1bmN0aW9uKQpAQCAtNzI5LDYgKzcyOSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9m
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihzdGQ6Om1vdmUoZnVuY3Rpb24pKTsKICAgICBib29s
IHJlY2VpdmVkUG9saWN5QWN0aW9uOworICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRDsKICAg
ICB1aW50NjRfdCBwb2xpY3lBY3Rpb247CiAgICAgdWludDY0X3QgZG93bmxvYWRJRDsKIApAQCAt
NzYwLDEzICs3NjEsMTYgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZAogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlID0gbmF2
aWdhdGlvbkFjdGlvbi5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKICAgICBuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0ID0gd2ViUGFnZS0+Y2FuSGFuZGxlUmVxdWVzdChyZXF1
ZXN0KTsKIAorICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJh
bWUoKTsKKyAgICBXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2Fz
dDxXZWJEb2N1bWVudExvYWRlciY+KCpjb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeURvY3VtZW50
TG9hZGVyKCkpOworCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgaWYgKCF3ZWJQ
YWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9y
aWdpbmF0aW5nRnJhbWUgPyBvcmlnaW5hdGluZ0ZyYW1lLT5mcmFtZUlEKCkgOiAwLCBuYXZpZ2F0
aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBsaXN0ZW5lcklELCBJbmplY3Rl
ZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShyZWNlaXZl
ZFBvbGljeUFjdGlvbiwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElEKSkpCisgICAgaWYgKCF3ZWJQ
YWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlv
bklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRp
bmdGcmFtZS0+ZnJhbWVJRCgpIDogMCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3Qo
KSwgcmVxdWVzdCwgbGlzdGVuZXJJRCwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIo
dXNlckRhdGEuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjo6UmVwbHkocmVjZWl2ZWRQb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRp
b25JRCwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElEKSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIFdlIGNhbGwgdGhpcyBzeW5jaHJvbm91c2x5IGJlY2F1c2UgV2ViQ29yZSBjYW5ub3QgZ3Jh
Y2VmdWxseSBoYW5kbGUgYSBmcmFtZSBsb2FkIHdpdGhvdXQgYSBzeW5jaHJvbm91cyBuYXZpZ2F0
aW9uIHBvbGljeSByZXBseS4KICAgICBpZiAocmVjZWl2ZWRQb2xpY3lBY3Rpb24pCi0gICAgICAg
IG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2Fz
dDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIGRvd25sb2FkSUQpOworICAgICAgICBtX2Zy
YW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9s
aWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQpOwog
fQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1
bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudExv
YWRlci5oIgogCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzYsNiArMzgsMTQgQEAgV2ViRG9jdW1lbnRM
b2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNvbgogewogfQogCit2b2lkIFdlYkRvY3VtZW50TG9h
ZGVyOjpkZXRhY2hGcm9tRnJhbWUoKQoreworICAgIGlmIChtX25hdmlnYXRpb25JRCkKKyAgICAg
ICAgV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKCkpLT5kb2N1bWVudExvYWRlckRldGFj
aGVkKG1fbmF2aWdhdGlvbklEKTsKKworICAgIG1fbmF2aWdhdGlvbklEID0gMDsKK30KKwogdm9p
ZCBXZWJEb2N1bWVudExvYWRlcjo6c2V0TmF2aWdhdGlvbklEKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCkKIHsKICAgICBBU1NFUlQobmF2aWdhdGlvbklEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5oCShyZXZpc2lv
biAxNzA2MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1l
bnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFdlYkRvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoRnJvbUZyYW1lKCkgb3ZlcnJpZGU7CisKICAgICB1aW50NjRfdCBtX25hdmlnYXRpb25J
RDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAkocmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldlYkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYkRvY3VtZW50TG9hZGVyLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgpAQCAtMjE1LDcgKzIxNiw3IEBAIHZvaWQgV2ViRnJh
bWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigKICAgICBtX3BvbGljeUZ1bmN0aW9uID0gMDsK
IH0KIAotdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxp
c3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpCit2b2lk
IFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwg
UG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3du
bG9hZElEKQogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTIz
Myw2ICsyMzQsMTEgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKAog
ICAgIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigpOwogCiAgICAgbV9wb2xpY3lEb3dubG9hZElE
ID0gZG93bmxvYWRJRDsKKyAgICBpZiAobmF2aWdhdGlvbklEKSB7CisgICAgICAgIFdlYkRvY3Vt
ZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVy
Jj4oKm1fY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lEb2N1bWVudExvYWRlcigpKTsKKyAgICAg
ICAgZG9jdW1lbnRMb2FkZXIuc2V0TmF2aWdhdGlvbklEKG5hdmlnYXRpb25JRCk7CisgICAgfQor
CiAgICAgZnVuY3Rpb24oYWN0aW9uKTsKIH0KIApAQCAtNzUxLDYgKzc1NywxMSBAQCB2b2lkIFdl
YkZyYW1lOjpzZXRUZXh0RGlyZWN0aW9uKGNvbnN0IFN0CiAgICAgICAgIG1fY29yZUZyYW1lLT5l
ZGl0b3IoKS5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rp
b24pOwogfQogCit2b2lkIFdlYkZyYW1lOjpkb2N1bWVudExvYWRlckRldGFjaGVkKHVpbnQ2NF90
IG5hdmlnYXRpb25JRCkKK3sKKyAgICBwYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlvbklEKSk7Cit9CisKICNpZiBQTEFURk9S
TShDT0NPQSkKIFJldGFpblB0cjxDRkRhdGFSZWY+IFdlYkZyYW1lOjp3ZWJBcmNoaXZlRGF0YShG
cmFtZUZpbHRlckZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KQogewpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHJldmlzaW9uIDE3
MDYyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IHNl
dFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbik7CiAgICAgdm9p
ZCBpbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IGRvd25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2
NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCB1aW50NjRfdCBkb3dubG9hZElEKTsKIAogICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3Vy
Y2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKQEAg
LTEzMSw2ICsxMzEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFRleHREaXJlY3Rpb24oY29u
c3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIGRvY3VtZW50TG9hZGVyRGV0YWNoZWQodWludDY0X3Qg
bmF2aWdhdGlvbklEKTsKKwogICAgIC8vIFNpbXBsZSBsaXN0ZW5lciBjbGFzcyB1c2VkIGJ5IHBs
dWctaW5zIHRvIGtub3cgd2hlbiBmcmFtZXMgZmluaXNoIG9yIGZhaWwgbG9hZGluZy4KICAgICBj
bGFzcyBMb2FkTGlzdGVuZXIgewogICAgIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE3MDYyOSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI1NSwxMiArMjI1NSwxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldFNlc3Npb25JRChTZXNz
aW9uSUQgc2VzCiAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9h
ZElEKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZy
YW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBk
b3dubG9hZElEKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVy
SUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9uKSwgbmF2aWdhdGlvbklE
LCBkb3dubG9hZElEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkaWRTdGFydFBhZ2VUcmFuc2l0aW9u
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
cmV2aXNpb24gMTcwNjI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTY2LDcgKzk2Niw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3Qg
ZG93bmxvYWRJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQpOwogICAgIHZvaWQgc2V0VXNl
ckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFt
ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE3MDYyOSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzQsNyArMTM0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgYmFja0ZvcndhcmRJ
dGVtSUQpCiAKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3du
bG9hZElEKQorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCkKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234170</attachid>
            <date>2014-07-01 10:14:58 -0700</date>
            <delta_ts>2014-07-01 11:49:49 -0700</delta_ts>
            <desc>Attach navigationID and create WKNavigation at action policy decision time if needed</desc>
            <filename>bug-134482-20140701101438.patch</filename>
            <type>text/plain</type>
            <size>42183</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDE0LTA2LTMwICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBOYXZpZ2F0aW9uIHBh
cmFtZXRlciBpbiBuYXZpZ2F0aW9uIGRlbGVnYXRlIG1lc3NhZ2VzIGlzIG5pbCBmb3IgbmF2aWdh
dGlvbnMgc3RhcnRlZCBieSB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NDgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0
aW9uKTogTmV3IGNsaWVudCBmdW5jdGlvbiwgY2FsbGVkIHdoZW4gYSBuYXZpZ2F0aW9uIElECisg
ICAgICAgIGlzIG5vdCBnb2luZyB0byBiZSB1c2VkIGFueW1vcmUuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZTpdKTogSWYgcmVzdG9yaW5nIHRyaWdnZXJlZCBhIG5hdmlnYXRp
b24sIGNyZWF0ZSBhCisgICAgICAgIFdLTmF2aWdhdGlvbiBmb3IgaXRzIElELgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25T
dGF0ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKTogUmVtb3ZlZCBGSVhNRSwgYmVjYXVz
ZSB3ZSBub3cgcmVtb3ZlCisgICAgICAgIG5hdmlnYXRpb25zIGZyb20gdGhlIG1hcCBpbiBMb2Fk
ZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6OmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpjcmVhdGVMb2FkRGF0YU5hdmlnYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGll
bnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBJZiB3ZSBhcmUgb25seQorICAg
ICAgICBnZXR0aW5nIGEgbmF2aWdhdGlvbiBJRCBub3csIGNyZWF0ZSBhIFdLTmF2aWdhdGlvbiBm
b3IgaXQuIEFsc28gY2hhbmdlZCB0byBjcmVhdGUgdGhlCisgICAgICAgIE5TVVJMUmVxdWVzdCBs
YXppbHkuCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogQXNzZXJ0IHRoYXQKKyAgICAgICAgbmF2
aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGFuZCB0aGF0IGl0IG1hcHMgdG8gYW4gZXhpc3RpbmcgV0tO
YXZpZ2F0aW9uLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgor
ICAgICAgICBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJD
bGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkQ29tbWl0
TG9hZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9h
ZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdh
dGlvbik6IE92ZXJyaWRlIHRoZSBuZXcgY2xpZW50CisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92
ZSB0aGUgbmF2aWdhdGlvbiBmcm9tIHRoZSBtYXAuCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRp
b25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOiBDbGVhciB0aGUgbmF2aWdh
dGlvbnMgbWFwLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQcm94eTo6V2ViRnJhbWVMaXN0
ZW5lclByb3h5KTogSW5pdGlhbGl6ZSBuZXcgbV9uYXZpZ2F0aW9uSUQKKyAgICAgICAgbWVtYmVy
IHZhcmlhYmxlLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24pOiBQYXNzIHRoZSBuYXZpZ2F0aW9uIElEIHRvCisgICAgICAgIFdl
YkZyYW1lOjpyZWNlaXZlZFBvbGljeURlY2lzaW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
cmFtZUxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMaXN0ZW5lclBy
b3h5OjpuYXZpZ2F0aW9uSUQpOiBBZGRlZCB0aGlzIGFjY2Vzc29yLgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnNldE5hdmlnYXRpb25JRCk6IERpdHRvLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKTogQWRkZWQgbmF2aWdhdGlvbklEIHBh
cmFtZXRlciwgd2hpY2ggaXMKKyAgICAgICAgcGFzc2VkIGFsb25nIHRvIHRoZSBXZWJQYWdlUHJv
eHkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOiBBZGRlZCBuYXZpZ2F0aW9uSUQgcGFyYW1ldGVyLCB3
aGljaCBpcworICAgICAgICBwYXNzZWQgYWxvbmcgaW4gdGhlIG1lc3NhZ2UgdG8gdGhlIFdlYiBD
b250ZW50IHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZy
b21TZXNzaW9uU3RhdGVEYXRhKTogQ2hhbmdlZCB0byByZXR1cm4gYSBuYXZpZ2F0aW9uIElEIG9m
IDAuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TdGF0ZSk6IENo
YW5nZWQgdG8gcmV0dXJuIGEgbmF2aWdhdGlvbiBJRCBpZiBvbmUgd2FzCisgICAgICAgIHN0YXJ0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5hdmlnYXRpb24p
OiBBZGRlZC4gQ2FsbHMgdGhlIG5ldyBjbGllbnQgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IEFkZGVkIG5h
dmlnYXRpb25JRCBhbmQKKyAgICAgICAgbmV3TmF2aWdhdGlvbklEIHBhcmFtZXRlcnMuIElmIGEg
bWFpbi1mcmFtZSBuYXZpZ2F0aW9uIGRvZXNu4oCZdCBhbHJlYWR5IGhhdmUgYW4gSUQsIGFzc2ln
biBpdAorICAgICAgICBhIG5ldyBJRCBhbmQgcmV0dXJuIGl0IGluIHRoZSBuZXdOYXZpZ2F0aW9u
SUQgcGFybWV0ZXIgYXMgd2VsbCBhcyBzZXR0aW5nIGl0IG9uIHRoZSBsaXN0ZW5lcgorICAgICAg
ICBmb3IgdGhlIGFzeW5jaHJvbm91cyBjYXNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
IEFkZGVkIG5hdmlnYXRpb25JRCBhbmQgbmV3TmF2aWdhdGlvbklEIHBhcmFtZXRlcnMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YSk6IENoYW5nZWQgdG8g
cmV0dXJuIGEgbmF2aWdhdGlvbiBJRCBpZgorICAgICAgICBvbmUgd2FzIHN0YXJ0ZWQuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOiBVcGRhdGVkIGZvciBhZGRpdGlvbmFsCisgICAgICAgIHBhcmFt
ZXRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IFNlbmQgdGhlIG5hdmlnYXRpb24KKyAgICAg
ICAgSUQgdG8gdGhlIFVJIHByb2Nlc3MsIGdldCB0aGUgbmV3IG5hdmlnYXRpb24gSUQgZnJvbSB0
aGUgcmVwbHksIGFuZCBzZXQgaXQgb24gdGhlIGRvY3VtZW50CisgICAgICAgIGxvYWRlci4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUpOiBPdmVycmlk
ZSB0byBsZXQgdGhlIFVJIHByb2Nlc3Mga25vdyB0aGF0IHRoZQorICAgICAgICBuYXZpZ2F0aW9u
IElEIHdpbGwgbm90IGJlIHVzZWQgYW55bW9yZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRG9jdW1lbnRMb2FkZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24pOiBBZGRlZCBuYXZpZ2F0aW9uSUQgcGFyYW1ldGVyLCBzZXQgaXQgb24gdGhlCisg
ICAgICAgIGRvY3VtZW50IGxvYWRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRvY3Vt
ZW50TG9hZGVyRGV0YWNoZWQpOiBQYXNzIHRoZSBtZXNzYWdlIGFsb25nIHRvIHRoZSBVSSBwcm9j
ZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOiBQYXNzIG5ldyBuYXZpZ2F0aW9uSUQgcGFy
YW1ldGVyIGFsb25nLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkZWQg
bmF2aWdhdGlvbklEIHBhcmFtZXRlci4KKwogMjAxNC0wNi0zMCAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBhbiBzdGQ6OmZ1bmN0aW9uIGZvciBm
aWx0ZXJpbmcgc2Vzc2lvbiBzdGF0ZSBkYXRhCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAkocmV2aXNpb24gMTcwNjQ0KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJGcmFt
ZUxpc3RlbmVyUHJveHk6OldlYkZyYW1lTGlzdGVuZXJQcm94eShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgdWludDY0X3QgbGlzdGVuZXJJRCkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2xp
c3RlbmVySUQobGlzdGVuZXJJRCkKKyAgICAsIG1fbmF2aWdhdGlvbklEKDApCiB7CiB9CiAKQEAg
LTUwLDcgKzUxLDcgQEAgdm9pZCBXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnJlY2VpdmVkUG9saQog
ICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcmFtZS0+cmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sIG1fbGlzdGVuZXJJRCk7CisgICAgbV9mcmFtZS0+cmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sIG1fbGlzdGVuZXJJRCwgbV9uYXZpZ2F0aW9uSUQp
OwogICAgIG1fZnJhbWUgPSAwOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAxNzA2NDQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDkgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAg
IHVpbnQ2NF90IGxpc3RlbmVySUQoKSBjb25zdCB7IHJldHVybiBtX2xpc3RlbmVySUQ7IH0KIAor
ICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbklE
OyB9CisgICAgdm9pZCBzZXROYXZpZ2F0aW9uSUQodWludDY0X3QgbmF2aWdhdGlvbklEKSB7IG1f
bmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklEOyB9CisKIHByb3RlY3RlZDoKICAgICBXZWJGcmFt
ZUxpc3RlbmVyUHJveHkoV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogCkBA
IC01MCw2ICs1Myw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkZyYW1l
UHJveHk+IG1fZnJhbWU7CiAgICAgdWludDY0X3QgbV9saXN0ZW5lcklEOworICAgIHVpbnQ2NF90
IG1fbmF2aWdhdGlvbklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZpc2lvbiAxNzA2NDQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2OSwxNCArMTY5LDE0IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hhbmdl
VGl0bGUoY29uc3QKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9uLCB1
aW50NjRfdCBsaXN0ZW5lcklEKQordm9pZCBXZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURl
Y2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IGxpc3RlbmVySUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQVNTRVJUKG1fYWN0aXZlTGlzdGVuZXIpOwogICAgIEFTU0VSVChtX2FjdGl2
ZUxpc3RlbmVyLT5saXN0ZW5lcklEKCkgPT0gbGlzdGVuZXJJRCk7Ci0gICAgbV9wYWdlLT5yZWNl
aXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwgdGhpcywgbGlzdGVuZXJJRCk7CisgICAgbV9wYWdl
LT5yZWNlaXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwgdGhpcywgbGlzdGVuZXJJRCwgbmF2aWdh
dGlvbklEKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiBXZWJGcmFtZVByb3h5
OjpzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkodWludDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkocmV2aXNpb24gMTcwNjQ0KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgLy8gUG9saWN5IG9wZXJhdGlvbnMuCi0gICAgdm9pZCByZWNl
aXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbGlzdGVu
ZXJJRCk7CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFj
dGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbmF2aWdhdGlvbklEID0gMCk7CiAg
ICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHko
dWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5
KiBzZXRVcEZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsK
IApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDE3MDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2VudGVyU2VsZWN0aW9uSW5WaXNpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1fcGFnZUlEKTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlv
biwgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJG
cmFtZVByb3h5KiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklEKQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNzQ0LDcg
KzE3NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWUtPmZyYW1lSUQoKSwgbGlzdGVu
ZXJJRCwgYWN0aW9uLCBkb3dubG9hZElEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lLT5mcmFt
ZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbklELCBkb3dubG9hZElEKSwgbV9w
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KQpAQCAtMTg0MCwxMyArMTg0MCwxNCBAQCBQYXNzUmVmUHRyPEFQSTo6RGF0
YT4gV2ViUGFnZVByb3h5OjpzZXNzCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhKikKK3VpbnQ2NF90IFdl
YlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhKEFQSTo6RGF0YSopCiB7CiAg
ICAgLy8gRklYTUU6IFJlc3RvcmUgdGhlIFBhZ2UgZnJvbSB0aGUgcGFzc2VkIGluIHNlc3Npb24g
c3RhdGUgZGF0YS4KKyAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVzdG9yZUZyb21TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKQordWludDY0X3Qg
V2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUp
CiB7CiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPnJlc3RvcmVGcm9tU3RhdGUoc3RkOjptb3ZlKHNl
c3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSkpOwogCkBAIC0xODU1LDEzICsxODU2LDEz
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVN0YXRlKFNlc3MKIAogICAgIC8vIEZJ
WE1FOiBOYXZpZ2F0aW5nIHNob3VsZCBiZSBzZXBhcmF0ZSBmcm9tIHN0YXRlIHJlc3RvcmF0aW9u
LgogCi0gICAgaWYgKCFzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNOdWxsKCkpIHsKLSAg
ICAgICAgbG9hZFJlcXVlc3Qoc2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBpZiAoIXNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTC5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGxvYWRSZXF1ZXN0KHNlc3Npb25TdGF0ZS5wcm92aXNpb25h
bFVSTCk7CiAKICAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFja0Zv
cndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKQotICAgICAgICBnb1RvQmFja0ZvcndhcmRJdGVtKGl0
ZW0pOworICAgICAgICByZXR1cm4gZ29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtKTsKKworICAgIHJl
dHVybiAwOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0Wm9vbSgpIGNvbnN0
CkBAIC0yNDI4LDYgKzI0MjksMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFByb2dy
ZXNzKCkKICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoUHJvZ3Jlc3ModGhpcyk7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0
aW9uSUQpCit7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHRoaXMs
IG5hdmlnYXRpb25JRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIElQQzo6TWVz
c2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxv
YWRTdGF0ZS50cmFuc2FjdGlvbigpOwpAQCAtMjc3Miw3ICsyNzc4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZQogICAgICAgICBtX2ZyYW1lU2V0TGFyZ2VzdEZy
YW1lID0gdmFsdWUgPyBtX21haW5GcmFtZSA6IDA7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdGcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlv
biwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpCit2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
JiBkZWNvZGVyLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmln
YXRpb25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpCiB7
CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250ZXh0VXNlck1l
c3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkpOwpAQCAtMjc5
Miw2ICsyNzk4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EK
ICAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFt
ZShvcmlnaW5hdGluZ0ZyYW1lSUQpOwogICAgIAogICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShs
aXN0ZW5lcklEKTsKKyAgICBpZiAoIW5hdmlnYXRpb25JRCAmJiBmcmFtZS0+aXNNYWluRnJhbWUo
KSkgeworICAgICAgICBuZXdOYXZpZ2F0aW9uSUQgPSBnZW5lcmF0ZU5hdmlnYXRpb25JRCgpOwor
ICAgICAgICBsaXN0ZW5lci0+c2V0TmF2aWdhdGlvbklEKG5ld05hdmlnYXRpb25JRCk7CisgICAg
fQogCiAgICAgQVNTRVJUKCFtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE3
MDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUxLDggKzU1MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0ZVBy
b2Nlc3MoKTsKIAogICAgIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiBzZXNzaW9uU3RhdGVEYXRhKHN0
ZDo6ZnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPikgY29uc3Q7Ci0gICAg
dm9pZCByZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhKik7Ci0gICAgdm9pZCBy
ZXN0b3JlRnJvbVN0YXRlKFNlc3Npb25TdGF0ZSk7CisgICAgdWludDY0X3QgcmVzdG9yZUZyb21T
ZXNzaW9uU3RhdGVEYXRhKEFQSTo6RGF0YSopOworICAgIHVpbnQ2NF90IHJlc3RvcmVGcm9tU3Rh
dGUoU2Vzc2lvblN0YXRlKTsKIAogICAgIGJvb2wgc3VwcG9ydHNUZXh0Wm9vbSgpIGNvbnN0Owog
ICAgIGRvdWJsZSB0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dFpvb21GYWN0
b3I7IH0KQEAgLTY3OCw3ICs2NzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtRGljdGlv
bmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogI2VuZGlm
CiAKLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9u
LCBXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgV2ViRnJhbWVQcm94eSosIHVp
bnQ2NF90IGxpc3RlbmVySUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKICAgICB2b2lkIGJh
Y2tGb3J3YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlEKTsKIApAQCAtOTU3LDggKzk1Nyw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTdGFydFByb2dyZXNzKCk7CiAgICAgdm9pZCBkaWRD
aGFuZ2VQcm9ncmVzcyhkb3VibGUpOwogICAgIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoKTsKKyAg
ICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKLSAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lB
Y3Rpb24sIHVpbnQ2NF90JiBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIElQQzo6TWVzc2Fn
ZURlY29kZXImLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmln
YXRpb25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIElQQzo6
TWVzc2FnZURlY29kZXImKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1F
VHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIGJvb2wmIHJl
Y2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93
bmxvYWRJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE3MDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMCw3
ICsxMTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBQb2xpY3kgbWVz
c2FnZXMKICAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSAtPiAoYm9v
bCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBk
b3dubG9hZElEKSBWYXJpYWRpYwotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2RlciB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90
IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkgVmFyaWFkaWMKKyAgICBEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1
c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmln
YXRpb25JRCwgdWludDY0X3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKSBWYXJp
YWRpYwogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlE
LCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2Vy
RGF0YSkgVmFyaWFkaWMKICAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSAgVmFyaWFkaWMKIApAQCAtMTQwLDYgKzE0MCw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkUnVuSW5zZWN1cmVDb250ZW50
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNz
YWdlRW5jb2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKICAgICBEaWREZXRlY3RYU1NGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVy
IHVzZXJEYXRhKSBWYXJpYWRpYwogICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCB0eXBlLCBTdHJpbmcgdXJsLCBXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYworICAgIERp
ZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIAogICAgIEZyYW1lRGlk
QmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biAxNzA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVBy
b3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZSwgQVBJOjpPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdl
YktpdDo6V2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0
cm95TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCkgeyB9CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIGRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lIHNpbmNlIGl0IGlzIHJlcGxhY2VkIGJ5
IGRpZExheW91dC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
LCBBUEk6Ok9iamVjdCopIHsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE3MDY0NCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcxLDcgKzE1NzEsOSBAQCBzdGF0aWMgdm9pZCByZWxlYXNlTlNEYXRhKHVuc2lnbmVkIGNoYXIq
CiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTooTlNEYXRhICopc2Vzc2lvblN0YXRl
CiB7CiAgICAgW3Nlc3Npb25TdGF0ZSByZXRhaW5dOwotICAgIF9wYWdlLT5yZXN0b3JlRnJvbVNl
c3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5z
aWduZWQgY2hhciopc2Vzc2lvblN0YXRlLmJ5dGVzLCBzZXNzaW9uU3RhdGUubGVuZ3RoLCByZWxl
YXNlTlNEYXRhLCBzZXNzaW9uU3RhdGUpLmdldCgpKTsKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQgPSBfcGFnZS0+cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhKEFQSTo6RGF0YTo6Y3JlYXRl
V2l0aG91dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNlc3Npb25TdGF0ZS5ieXRlcywg
c2Vzc2lvblN0YXRlLmxlbmd0aCwgcmVsZWFzZU5TRGF0YSwgc2Vzc2lvblN0YXRlKS5nZXQoKSk7
CisgICAgaWYgKG5hdmlnYXRpb25JRCkKKyAgICAgICAgX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRl
UmVsb2FkTmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogfQogCiAtICh2b2lkKV9jbG9zZQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
aAkocmV2aXNpb24gMTcwNjQ0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdl
YktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZy
YW1lUHJveHkqLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RGVzdHJveU5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTGF5b3V0KFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKSBv
dmVycmlkZTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VJbkZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5KiwgV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2UqKSBvdmVycmlkZTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMTcw
NjQ0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCAiV0tOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0
ICJXS05TVVJMUHJvdGVjdGlvblNwYWNlLmgiCisjaW1wb3J0ICJXS05TVVJMUmVxdWVzdC5oIgog
I2ltcG9ydCAiV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTmF2aWdh
dGlvbkRhdGFJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
LmgiCkBAIC0xNjMsNyArMTY0LDYgQEAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gTmF2aWdhdGlv
blN0YXRlOgogICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBhZG9wdE5T
KFtbV0tOYXZpZ2F0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW25hdmlnYXRpb24gc2V0UmVxdWVz
dDpyZXF1ZXN0XTsKIAotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgbmF2aWdh
dGlvbiB3aGVuIHdlJ3JlIGRvbmUgd2l0aCBpdCEKICAgICBtX25hdmlnYXRpb25zLnNldChuYXZp
Z2F0aW9uSUQsIG5hdmlnYXRpb24pOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xNzUs
NyArMTc1LDYgQEAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gTmF2aWdhdGlvblN0YXRlOgogCiAg
ICAgYXV0byBuYXZpZ2F0aW9uID0gYWRvcHROUyhbW1dLTmF2aWdhdGlvbiBhbGxvY10gaW5pdF0p
OwogCi0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBuYXZpZ2F0aW9uIHdoZW4g
d2UncmUgZG9uZSB3aXRoIGl0IQogICAgIG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRpb25JRCwg
bmF2aWdhdGlvbik7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE4Nyw3ICsxODYsNiBA
QCBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiBOYXZpZ2F0aW9uU3RhdGU6CiAKICAgICBhdXRvIG5h
dmlnYXRpb24gPSBhZG9wdE5TKFtbV0tOYXZpZ2F0aW9uIGFsbG9jXSBpbml0XSk7CiAKLSAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byByZW1vdmUgdGhlIG5hdmlnYXRpb24gd2hlbiB3ZSdyZSBkb25l
IHdpdGggaXQhCiAgICAgbV9uYXZpZ2F0aW9ucy5zZXQobmF2aWdhdGlvbklELCBuYXZpZ2F0aW9u
KTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtMTk5LDcgKzE5Nyw2IEBAIFJldGFpblB0
cjxXS05hdmlnYXRpb24+IE5hdmlnYXRpb25TdGF0ZToKIAogICAgIGF1dG8gbmF2aWdhdGlvbiA9
IGFkb3B0TlMoW1tXS05hdmlnYXRpb24gYWxsb2NdIGluaXRdKTsKIAotICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIHJlbW92ZSB0aGUgbmF2aWdhdGlvbiB3aGVuIHdlJ3JlIGRvbmUgd2l0aCBpdCEK
ICAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uSUQsIG5hdmlnYXRpb24pOwogCiAgICAg
cmV0dXJuIG5hdmlnYXRpb247CkBAIC0yNjQsMTQgKzI2MSwxOCBAQCBOYXZpZ2F0aW9uU3RhdGU6
OlBvbGljeUNsaWVudDo6flBvbGljeUNsCiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpQb2xpY3lD
bGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5KiwgV2Vi
RnJhbWVQcm94eSogZGVzdGluYXRpb25GcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJGcmFtZVByb3h5KiBzb3VyY2VGcmFtZSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVmUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eT4gbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKKyAgICBSZXRhaW5QdHI8
TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBhZG9wdE5TKHdyYXBwZXIoKkFQSTo6VVJMUmVx
dWVzdDo6Y3JlYXRlKHJlcXVlc3QpLmxlYWtSZWYoKSkpOworCisgICAgaWYgKGxpc3RlbmVyLT5u
YXZpZ2F0aW9uSUQoKSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGUuY3JlYXRlTG9hZFJlcXVl
c3ROYXZpZ2F0aW9uKGxpc3RlbmVyLT5uYXZpZ2F0aW9uSUQoKSwgbnNVUkxSZXF1ZXN0LmdldCgp
KTsKKwogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVy
KSB7CiAgICAgICAgIGlmICghZGVzdGluYXRpb25GcmFtZSkgewogICAgICAgICAgICAgbGlzdGVu
ZXItPnVzZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTlNV
UkxSZXF1ZXN0ICpuc1VSTFJlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpE
b05vdFVwZGF0ZUhUVFBCb2R5KTsKLSAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFu
ZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3RdKSB7CisgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9u
IGNhbkhhbmRsZVJlcXVlc3Q6bnNVUkxSZXF1ZXN0LmdldCgpXSkgewogICAgICAgICAgICAgbGlz
dGVuZXItPnVzZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNzksOCAr
MjgwLDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6ZGVjaQogI2lmIFBM
QVRGT1JNKE1BQykKICAgICAgICAgLy8gQSBmaWxlIFVSTCBzaG91bGRuJ3QgZmFsbCB0aHJvdWdo
IHRvIGhlcmUsIGJ1dCBpZiBpdCBkaWQsCiAgICAgICAgIC8vIGl0IHdvdWxkIGJlIGEgc2VjdXJp
dHkgcmlzayB0byBvcGVuIGl0LgotICAgICAgICBpZiAoIVtuc1VSTFJlcXVlc3QuVVJMIGlzRmls
ZVVSTF0pCi0gICAgICAgICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlblVS
TDpuc1VSTFJlcXVlc3QuVVJMXTsKKyAgICAgICAgaWYgKCFbW25zVVJMUmVxdWVzdCBVUkxdIGlz
RmlsZVVSTF0pCisgICAgICAgICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3Bl
blVSTDpbbnNVUkxSZXF1ZXN0IFVSTF1dOwogI2VuZGlmCiAgICAgICAgIGxpc3RlbmVyLT5pZ25v
cmUoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzAyLDcgKzMwMyw3IEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpQb2xpY3lDbGllbnQ6OmRlY2kKICAgICAgICAgICAgIFtuYXZpZ2F0aW9uQWN0aW9u
IHNldFNvdXJjZUZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10gaW5pdFdpdGhXZWJG
cmFtZVByb3h5Oipzb3VyY2VGcmFtZV0pLmdldCgpXTsKICAgICB9CiAKLSAgICBbbmF2aWdhdGlv
bkFjdGlvbiBzZXRSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkRvTm90VXBk
YXRlSFRUUEJvZHkpXTsKKyAgICBbbmF2aWdhdGlvbkFjdGlvbiBzZXRSZXF1ZXN0Om5zVVJMUmVx
dWVzdC5nZXQoKV07CiAgICAgW25hdmlnYXRpb25BY3Rpb24gX3NldE9yaWdpbmFsVVJMOm9yaWdp
bmFsUmVxdWVzdC51cmwoKV07CiAKICAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOikpOwpAQCAtNDEyLDEwICs0MTMsOSBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRTCiAgICAgaWYgKCFuYXZpZ2F0
aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YXNzZXJ0IHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJl
bnRseSB6ZXJvIGZvciBuYXZpZ2F0aW9ucyBvcmlnaW5hdGluZyBmcm9tIHRoZSB3ZWIgcHJvY2Vz
cy4KLSAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRp
b25JRCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlv
bnMuZ2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7Cisg
ICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0
aW9ucy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAK
ICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJW
aWV3IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOm5hdmlnYXRpb25dOwogfQpAQCAtNDMy
LDEwICs0MzIsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRSCiAg
ICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUs
IGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBuYXZpZ2F0aW9ucyBvcmlnaW5hdGluZyBmcm9t
IHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0g
ICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0
YXRlLm1fbmF2aWdhdGlvbnMuZ2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5h
dmlnYXRpb25JRCk7CisgICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQo
bmF2aWdhdGlvbik7CiAKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0
aW9uU3RhdGUubV93ZWJWaWV3IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TmF2aWdhdGlvbjpuYXZpZ2F0aW9uXTsKIH0KQEAgLTQ2OCwxMCArNDY3LDkgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90
IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIG5hdmlnYXRpb25zIG9yaWdp
bmF0aW5nIGZyb20gdGhlIHdlYiBwcm9jZXNzLgotICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+
IG5hdmlnYXRpb247Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAgICAgbmF2aWdhdGlvbiA9
IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMudGFrZShuYXZpZ2F0aW9uSUQpOworICAg
IEFTU0VSVChuYXZpZ2F0aW9uSUQpOworICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IG5hdmln
YXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLnRha2UobmF2aWdhdGlvbklE
KS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAgICAvLyBGSVhNRTogU2V0IHRo
ZSBlcnJvciBvbiB0aGUgbmF2aWdhdGlvbiBvYmplY3QuCiAKQEAgLTQ5OCwxMCArNDk2LDkgQEAg
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkQwogICAgIGlmICghbmF2aWdh
dGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGFzc2VydCB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBidXQgaXQncyBjdXJy
ZW50bHkgemVybyBmb3IgbmF2aWdhdGlvbnMgb3JpZ2luYXRpbmcgZnJvbSB0aGUgd2ViIHByb2Nl
c3MuCi0gICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbmlsOwotICAgIGlmIChuYXZpZ2F0
aW9uSUQpCi0gICAgICAgIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25zLmdldChuYXZpZ2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uSUQpOwor
ICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdh
dGlvbnMuZ2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb24pOwog
CiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2Vi
VmlldyBkaWRDb21taXROYXZpZ2F0aW9uOm5hdmlnYXRpb25dOwogfQpAQCAtNTE4LDkgKzUxNSw5
IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEYKICAgICBpZiAoIW5h
dmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tOYXZpZ2F0aW9uICpu
YXZpZ2F0aW9uID0gbmlsOwotICAgIGlmIChuYXZpZ2F0aW9uSUQpCi0gICAgICAgIG5hdmlnYXRp
b24gPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLmdldChuYXZpZ2F0aW9uSUQpLmdl
dCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uSUQpOworICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdh
dGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuZ2V0KG5hdmlnYXRpb25JRCku
Z2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb24pOwogCiAgICAgW3N0YXRpY19jYXN0PGlkIDxX
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uRGlkRmluaXNoRG9j
dW1lbnRMb2FkOm5hdmlnYXRpb25dOwogfQpAQCAtNTM3LDEwICs1MzQsOSBAQCB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdh
dGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRo
YXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJv
IGZvciBuYXZpZ2F0aW9ucyBvcmlnaW5hdGluZyBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBX
S05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAg
ICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuZ2V0KG5h
dmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAgV0tOYXZp
Z2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQo
bmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAgICBbbmF2
aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZp
bmlzaE5hdmlnYXRpb246bmF2aWdhdGlvbl07CiB9CkBAIC01NTcsMTUgKzU1MywxOSBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAgaWYgKCFuYXZpZ2F0aW9u
RGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNz
ZXJ0IHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRs
eSB6ZXJvIGZvciBuYXZpZ2F0aW9ucyBvcmlnaW5hdGluZyBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4K
LSAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25J
RCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMu
Z2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAg
V0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9u
cy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAg
ICBhdXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3Zl
cnlBdHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3LCAqd2ViRnJhbWVQcm94eSwg
ZXJyb3IpOwogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0
ZS5tX3dlYlZpZXcgZGlkRmFpbE5hdmlnYXRpb246bmF2aWdhdGlvbiB3aXRoRXJyb3I6ZXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogfQogCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdhdGlvbihXZWJQYWdlUHJveHkqLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQpCit7CisgICAgbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5y
ZW1vdmUobmF2aWdhdGlvbklEKTsKK30KKwogc3RhdGljIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZl
bnRzIHJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbWls
ZXN0b25lcykKIHsKICAgICBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBldmVudHMgPSAwOwpA
QCAtNjY2LDYgKzY2Niw4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRp
ZFIKIAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6cHJvY2Vzc0RpZENyYXNo
KFdlYktpdDo6V2ViUGFnZVByb3h5KikKIHsKKyAgICBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmln
YXRpb25zLmNsZWFyKCk7CisKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlv
bkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoKQogICAgICAgICByZXR1
cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94
eUNGLmNwcAkocmV2aXNpb24gMTcwNjQ0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Nm
L1dlYlBhZ2VQcm94eUNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDE3ICsxMDQsMTcgQEAg
UGFzc1JlZlB0cjxBUEk6OkRhdGE+IFdlYlBhZ2VQcm94eTo6c2VzcwogICAgIHJldHVybiBBUEk6
OkRhdGE6OmNyZWF0ZShzdGF0ZVZlY3Rvcik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhKiBhcGlEYXRhKQordWludDY0X3QgV2Vi
UGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhKiBhcGlEYXRh
KQogewogICAgIGlmICghYXBpRGF0YSB8fCBhcGlEYXRhLT5zaXplKCkgPCBzaXplb2YoVUludDMy
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGJ1ZmZlciA9IGFwaURhdGEtPmJ5dGVzKCk7CiAgICAgVUludDMyIHZlcnNpb25I
ZWFkZXIgPSAoYnVmZmVyWzBdIDw8IDI0KSArIChidWZmZXJbMV0gPDwgMTYpICsgKGJ1ZmZlclsy
XSA8PCA4KSArIGJ1ZmZlclszXTsKICAgICAKICAgICBpZiAodmVyc2lvbkhlYWRlciAhPSBDdXJy
ZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNpb24pIHsKICAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwg
IlVucmVjb2duaXplZCB2ZXJzaW9uIGhlYWRlciBmb3Igc2Vzc2lvbiBzdGF0ZSBkYXRhIC0gY2Fu
bm90IHJlc3RvcmUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAgICAgCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlKDAsIGFwaURhdGEtPmJ5dGVzKCkgKyBzaXplb2YoVUludDMyKSwgYXBpRGF0YS0+c2l6ZSgp
IC0gc2l6ZW9mKFVJbnQzMikpKTsKQEAgLTEyNCwxNSArMTI0LDE1IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGEKICAgICBpZiAocHJvcGVydHlMaXN0RXJyb3IpIHsK
ICAgICAgICAgQ0ZSZWxlYXNlKHByb3BlcnR5TGlzdEVycm9yKTsKICAgICAgICAgTE9HKFNlc3Np
b25TdGF0ZSwgIkNvdWxkIG5vdCByZWFkIHNlc3Npb24gc3RhdGUgcHJvcGVydHkgbGlzdCIpOwot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlmICghcHJv
cGVydHlMaXN0KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgICAgICAK
ICAgICBpZiAoQ0ZHZXRUeXBlSUQocHJvcGVydHlMaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlH
ZXRUeXBlSUQoKSkgewogICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiU2Vzc2lvblN0YXRlIHBy
b3BlcnR5IGxpc3QgaXMgbm90IGEgQ0ZEaWN0aW9uYXJ5UmVmICglaSkgLSBpdHMgQ0ZUeXBlSUQg
aXMgJWkiLCAoaW50KUNGRGljdGlvbmFyeUdldFR5cGVJRCgpLCAoaW50KUNGR2V0VHlwZUlEKHBy
b3BlcnR5TGlzdC5nZXQoKSkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAogICAgIENGRGljdGlvbmFyeVJlZiBiYWNrRm9yd2FyZExpc3REaWN0aW9uYXJ5ID0g
MDsKQEAgLTE2OSwxNCArMTY5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNl
c3Npb25TdGEKICAgICAgICAgICAgICAgICAgICAgaWYgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0q
IGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2Fj
dGlvbiwgaXRlbS0+dXJsKCkpOwogCi0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lvbkFuZE5hdmlnYXRlVG9DdXJyZW50SXRl
bShnZW5lcmF0ZU5hdmlnYXRpb25JRCgpLCBzdGF0ZSksIG1fcGFnZUlEKTsKKyAgICAgICAgICAg
ICAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklEID0gZ2VuZXJhdGVOYXZpZ2F0aW9uSUQoKTsK
KyAgICAgICAgICAgICAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
c3RvcmVTZXNzaW9uQW5kTmF2aWdhdGVUb0N1cnJlbnRJdGVtKG5hdmlnYXRpb25JRCwgc3RhdGUp
LCBtX3BhZ2VJRCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0aW9uSUQ7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKHByb3Zpc2lvbmFsVVJMKQotICAgICAgICBsb2FkUmVxdWVzdChVUkwoVVJMKCksIHByb3Zp
c2lvbmFsVVJMKSk7CisgICAgICAgIHJldHVybiBsb2FkUmVxdWVzdChVUkwoVVJMKCksIHByb3Zp
c2lvbmFsVVJMKSk7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE3MDY0NCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgLy8gV2UgY2FsbCB0aGlzIHN5bmNocm9ub3VzbHkgYmVj
YXVzZSBDRk5ldHdvcmsgY2FuIG9ubHkgY29udmVydCBhIGxvYWRpbmcgY29ubmVjdGlvbiB0byBh
IGRvd25sb2FkIGZyb20gaXRzIGRpZFJlY2VpdmVSZXNwb25zZSBjYWxsYmFjay4KICAgICBpZiAo
cmVjZWl2ZWRQb2xpY3lBY3Rpb24pCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlv
biksIGRvd25sb2FkSUQpOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCAw
LCBkb3dubG9hZElEKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2
aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xp
Y3lGdW5jdGlvbiBmdW5jdGlvbikKQEAgLTcyOSw2ICs3MjksNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoc3RkOjptb3ZlKGZ1bmN0aW9uKSk7CiAgICAg
Ym9vbCByZWNlaXZlZFBvbGljeUFjdGlvbjsKKyAgICB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQ7
CiAgICAgdWludDY0X3QgcG9saWN5QWN0aW9uOwogICAgIHVpbnQ2NF90IGRvd25sb2FkSUQ7CiAK
QEAgLTc2MCwxMyArNzYxLDE2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWQKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSA9
IG5hdmlnYXRpb25BY3Rpb24ucHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAgICAgbmF2aWdhdGlv
bkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2UtPmNhbkhhbmRsZVJlcXVlc3Qo
cmVxdWVzdCk7CiAKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29y
ZUZyYW1lKCk7CisgICAgV2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGlj
X2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lEb2N1
bWVudExvYWRlcigpKTsKKwogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIGlmICgh
d2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFtZS0+ZnJhbWVJRCgpIDogMCwgbmF2
aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgbGlzdGVuZXJJRCwgSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjo6UmVwbHkocmVj
ZWl2ZWRQb2xpY3lBY3Rpb24sIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCkpKQorICAgIGlmICgh
d2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmln
YXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZSA/IG9yaWdp
bmF0aW5nRnJhbWUtPmZyYW1lSUQoKSA6IDAsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1
ZXN0KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyKHVzZXJEYXRhLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb246OlJlcGx5KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBuZXdOYXZp
Z2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCkpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIFdlYkNvcmUgY2Fubm90
IGdyYWNlZnVsbHkgaGFuZGxlIGEgZnJhbWUgbG9hZCB3aXRob3V0IGEgc3luY2hyb25vdXMgbmF2
aWdhdGlvbiBwb2xpY3kgcmVwbHkuCiAgICAgaWYgKHJlY2VpdmVkUG9saWN5QWN0aW9uKQotICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGlj
X2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBkb3dubG9hZElEKTsKKyAgICAgICAg
bV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHN0YXRpY19jYXN0
PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9uKSwgbmV3TmF2aWdhdGlvbklELCBkb3dubG9hZElE
KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxNzA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1l
bnRMb2FkZXIuaCIKIAorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM2LDYgKzM4LDE0IEBAIFdlYkRvY3Vt
ZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcihjb24KIHsKIH0KIAordm9pZCBXZWJEb2N1bWVu
dExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKK3sKKyAgICBpZiAobV9uYXZpZ2F0aW9uSUQpCisg
ICAgICAgIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSgpKS0+ZG9jdW1lbnRMb2FkZXJE
ZXRhY2hlZChtX25hdmlnYXRpb25JRCk7CisKKyAgICBtX25hdmlnYXRpb25JRCA9IDA7Cit9CisK
IHZvaWQgV2ViRG9jdW1lbnRMb2FkZXI6OnNldE5hdmlnYXRpb25JRCh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQpCiB7CiAgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuaAkocmV2
aXNpb24gMTcwNjQ0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRv
Y3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogCisgICAgdmlydHVhbCB2
b2lkIGRldGFjaEZyb21GcmFtZSgpIG92ZXJyaWRlOworCiAgICAgdWludDY0X3QgbV9uYXZpZ2F0
aW9uSUQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE3MDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIK
ICNpbmNsdWRlICJXZWJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudExvYWRl
ci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTIxNSw3ICsyMTYsNyBAQCB2b2lkIFdl
YkZyYW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoCiAgICAgbV9wb2xpY3lGdW5jdGlvbiA9
IDA7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRf
dCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKQor
dm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVy
SUQsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3Qg
ZG93bmxvYWRJRCkKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CkBA
IC0yMzMsNiArMjM0LDExIEBAIHZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bigKICAgICBpbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKIAogICAgIG1fcG9saWN5RG93bmxv
YWRJRCA9IGRvd25sb2FkSUQ7CisgICAgaWYgKG5hdmlnYXRpb25JRCkgeworICAgICAgICBXZWJE
b2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExv
YWRlciY+KCptX2NvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5RG9jdW1lbnRMb2FkZXIoKSk7Cisg
ICAgICAgIGRvY3VtZW50TG9hZGVyLnNldE5hdmlnYXRpb25JRChuYXZpZ2F0aW9uSUQpOworICAg
IH0KKwogICAgIGZ1bmN0aW9uKGFjdGlvbik7CiB9CiAKQEAgLTc1MSw2ICs3NTcsMTEgQEAgdm9p
ZCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihjb25zdCBTdAogICAgICAgICBtX2NvcmVGcmFt
ZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRXcml0aW5nRGly
ZWN0aW9uKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6ZG9jdW1lbnRMb2FkZXJEZXRhY2hlZCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQpCit7CisgICAgcGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZERlc3Ryb3lOYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkpOworfQorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2ZURh
dGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lv
biAxNzA2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRf
dCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pOwogICAg
IHZvaWQgaW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1
aW50NjRfdCBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1
aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCk7CiAKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJl
c291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CkBAIC0xMzEsNiArMTMxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRUZXh0RGlyZWN0aW9u
KGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCBkb2N1bWVudExvYWRlckRldGFjaGVkKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCk7CisKICAgICAvLyBTaW1wbGUgbGlzdGVuZXIgY2xhc3MgdXNlZCBi
eSBwbHVnLWlucyB0byBrbm93IHdoZW4gZnJhbWVzIGZpbmlzaCBvciBmYWlsIGxvYWRpbmcuCiAg
ICAgY2xhc3MgTG9hZExpc3RlbmVyIHsKICAgICBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNzA2NDQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyNTQsMTIgKzIyNTQsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQo
U2Vzc2lvbklEIHNlcwogICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93
bmxvYWRJRCkKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9hZElEKQogewogICAgIFdlYkZyYW1l
KiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGxpc3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9u
KSwgZG93bmxvYWRJRCk7CisgICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0
ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIG5hdmlnYXRp
b25JRCwgZG93bmxvYWRJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJhbnNp
dGlvbigpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHJldmlzaW9uIDE3MDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1OSw3ICs5NTksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IGRvd25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9hZElEKTsKICAgICB2b2lkIHNl
dFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGlu
Z05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNzA2NDQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogCiAgICAgRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGJhY2tGb3J3
YXJkSXRlbUlEKQogCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3Qg
ZG93bmxvYWRJRCkKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQpCiAKICAgICBDbGVhclNlbGVjdGlvbigp
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234183</attachid>
            <date>2014-07-01 12:02:40 -0700</date>
            <delta_ts>2014-07-01 12:18:36 -0700</delta_ts>
            <desc>Attach navigationID and create WKNavigation at action policy decision time if needed</desc>
            <filename>bug-134482-20140701120220.patch</filename>
            <type>text/plain</type>
            <size>42300</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3MDY1MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDE0LTA2LTMwICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBOYXZpZ2F0aW9uIHBh
cmFtZXRlciBpbiBuYXZpZ2F0aW9uIGRlbGVnYXRlIG1lc3NhZ2VzIGlzIG5pbCBmb3IgbmF2aWdh
dGlvbnMgc3RhcnRlZCBieSB0aGUgV2ViIENvbnRlbnQgcHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NDgyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0
aW9uKTogTmV3IGNsaWVudCBmdW5jdGlvbiwgY2FsbGVkIHdoZW4gYSBuYXZpZ2F0aW9uIElECisg
ICAgICAgIGlzIG5vdCBnb2luZyB0byBiZSB1c2VkIGFueW1vcmUuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZTpdKTogSWYgcmVzdG9yaW5nIHRyaWdnZXJlZCBhIG5hdmlnYXRp
b24sIGNyZWF0ZSBhCisgICAgICAgIFdLTmF2aWdhdGlvbiBmb3IgaXRzIElELgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25T
dGF0ZTo6Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKTogUmVtb3ZlZCBGSVhNRSwgYmVjYXVz
ZSB3ZSBub3cgcmVtb3ZlCisgICAgICAgIG5hdmlnYXRpb25zIGZyb20gdGhlIG1hcCBpbiBMb2Fk
ZXJDbGllbnQ6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6OmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpjcmVhdGVMb2FkRGF0YU5hdmlnYXRp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGll
bnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBJZiB3ZSBhcmUgb25seQorICAg
ICAgICBnZXR0aW5nIGEgbmF2aWdhdGlvbiBJRCBub3csIGNyZWF0ZSBhIFdLTmF2aWdhdGlvbiBm
b3IgaXQuIEFsc28gY2hhbmdlZCB0byBjcmVhdGUgdGhlCisgICAgICAgIE5TVVJMUmVxdWVzdCBs
YXppbHkuCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTogQXNzZXJ0IHRoYXQKKyAgICAgICAgbmF2
aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGFuZCB0aGF0IGl0IG1hcHMgdG8gYW4gZXhpc3RpbmcgV0tO
YXZpZ2F0aW9uLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgor
ICAgICAgICBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJD
bGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkQ29tbWl0
TG9hZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9h
ZEZvckZyYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdh
dGlvbik6IE92ZXJyaWRlIHRoZSBuZXcgY2xpZW50CisgICAgICAgIGZ1bmN0aW9uIHRvIHJlbW92
ZSB0aGUgbmF2aWdhdGlvbiBmcm9tIHRoZSBtYXAuCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRp
b25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOiBDbGVhciB0aGUgbmF2aWdh
dGlvbnMgbWFwLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQcm94eTo6V2ViRnJhbWVMaXN0
ZW5lclByb3h5KTogSW5pdGlhbGl6ZSBuZXcgbV9uYXZpZ2F0aW9uSUQKKyAgICAgICAgbWVtYmVy
IHZhcmlhYmxlLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24pOiBQYXNzIHRoZSBuYXZpZ2F0aW9uIElEIHRvCisgICAgICAgIFdl
YkZyYW1lOjpyZWNlaXZlZFBvbGljeURlY2lzaW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
cmFtZUxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMaXN0ZW5lclBy
b3h5OjpuYXZpZ2F0aW9uSUQpOiBBZGRlZCB0aGlzIGFjY2Vzc29yLgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnNldE5hdmlnYXRpb25JRCk6IERpdHRvLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKTogQWRkZWQgbmF2aWdhdGlvbklEIHBh
cmFtZXRlciwgd2hpY2ggaXMKKyAgICAgICAgcGFzc2VkIGFsb25nIHRvIHRoZSBXZWJQYWdlUHJv
eHkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOiBBZGRlZCBuYXZpZ2F0aW9uSUQgcGFyYW1ldGVyLCB3
aGljaCBpcworICAgICAgICBwYXNzZWQgYWxvbmcgaW4gdGhlIG1lc3NhZ2UgdG8gdGhlIFdlYiBD
b250ZW50IHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZy
b21TZXNzaW9uU3RhdGVEYXRhKTogQ2hhbmdlZCB0byByZXR1cm4gYSBuYXZpZ2F0aW9uIElEIG9m
IDAuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TdGF0ZSk6IENo
YW5nZWQgdG8gcmV0dXJuIGEgbmF2aWdhdGlvbiBJRCBpZiBvbmUgd2FzCisgICAgICAgIHN0YXJ0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5hdmlnYXRpb24p
OiBBZGRlZC4gQ2FsbHMgdGhlIG5ldyBjbGllbnQgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IEFkZGVkIG5h
dmlnYXRpb25JRCBhbmQKKyAgICAgICAgbmV3TmF2aWdhdGlvbklEIHBhcmFtZXRlcnMuIElmIGEg
bWFpbi1mcmFtZSBuYXZpZ2F0aW9uIGRvZXNu4oCZdCBhbHJlYWR5IGhhdmUgYW4gSUQsIGFzc2ln
biBpdAorICAgICAgICBhIG5ldyBJRCBhbmQgcmV0dXJuIGl0IGluIHRoZSBuZXdOYXZpZ2F0aW9u
SUQgcGFybWV0ZXIgYXMgd2VsbCBhcyBzZXR0aW5nIGl0IG9uIHRoZSBsaXN0ZW5lcgorICAgICAg
ICBmb3IgdGhlIGFzeW5jaHJvbm91cyBjYXNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
IEFkZGVkIG5hdmlnYXRpb25JRCBhbmQgbmV3TmF2aWdhdGlvbklEIHBhcmFtZXRlcnMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YSk6IENoYW5nZWQgdG8g
cmV0dXJuIGEgbmF2aWdhdGlvbiBJRCBpZgorICAgICAgICBvbmUgd2FzIHN0YXJ0ZWQuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UpOiBVcGRhdGVkIGZvciBhZGRpdGlvbmFsCisgICAgICAgIHBhcmFt
ZXRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IFNlbmQgdGhlIG5hdmlnYXRpb24KKyAgICAg
ICAgSUQgdG8gdGhlIFVJIHByb2Nlc3MsIGdldCB0aGUgbmV3IG5hdmlnYXRpb24gSUQgZnJvbSB0
aGUgcmVwbHksIGFuZCBzZXQgaXQgb24gdGhlIGRvY3VtZW50CisgICAgICAgIGxvYWRlci4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUpOiBPdmVycmlk
ZSB0byBsZXQgdGhlIFVJIHByb2Nlc3Mga25vdyB0aGF0IHRoZQorICAgICAgICBuYXZpZ2F0aW9u
IElEIHdpbGwgbm90IGJlIHVzZWQgYW55bW9yZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRG9jdW1lbnRMb2FkZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24pOiBBZGRlZCBuYXZpZ2F0aW9uSUQgcGFyYW1ldGVyLCBzZXQgaXQgb24gdGhlCisg
ICAgICAgIGRvY3VtZW50IGxvYWRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRvY3Vt
ZW50TG9hZGVyRGV0YWNoZWQpOiBQYXNzIHRoZSBtZXNzYWdlIGFsb25nIHRvIHRoZSBVSSBwcm9j
ZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOiBQYXNzIG5ldyBuYXZpZ2F0aW9uSUQgcGFy
YW1ldGVyIGFsb25nLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkZWQg
bmF2aWdhdGlvbklEIHBhcmFtZXRlci4KKwogMjAxNC0wNy0wMSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtpT1NdIFVucmV2aWV3ZWQgYnVp
bGQgZml4IGFmdGVyIHIxNzA2NDAuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
RnJhbWVMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAkocmV2aXNpb24gMTcwNjUyKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBXZWJGcmFtZUxpc3Rl
bmVyUHJveHk6OldlYkZyYW1lTGlzdGVuZXJQcm94eShXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2xpc3RlbmVy
SUQobGlzdGVuZXJJRCkKKyAgICAsIG1fbmF2aWdhdGlvbklEKDApCiB7CiB9CiAKQEAgLTUwLDcg
KzUxLDcgQEAgdm9pZCBXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnJlY2VpdmVkUG9saQogICAgIGlm
ICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcmFtZS0+cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihhY3Rpb24sIG1fbGlzdGVuZXJJRCk7CisgICAgbV9mcmFtZS0+cmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihhY3Rpb24sIG1fbGlzdGVuZXJJRCwgbV9uYXZpZ2F0aW9uSUQpOwogICAg
IG1fZnJhbWUgPSAwOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAxNzA2NTIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDkgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHVpbnQ2
NF90IGxpc3RlbmVySUQoKSBjb25zdCB7IHJldHVybiBtX2xpc3RlbmVySUQ7IH0KIAorICAgIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbklEOyB9Cisg
ICAgdm9pZCBzZXROYXZpZ2F0aW9uSUQodWludDY0X3QgbmF2aWdhdGlvbklEKSB7IG1fbmF2aWdh
dGlvbklEID0gbmF2aWdhdGlvbklEOyB9CisKIHByb3RlY3RlZDoKICAgICBXZWJGcmFtZUxpc3Rl
bmVyUHJveHkoV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogCkBAIC01MCw2
ICs1Myw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+
IG1fZnJhbWU7CiAgICAgdWludDY0X3QgbV9saXN0ZW5lcklEOworICAgIHVpbnQ2NF90IG1fbmF2
aWdhdGlvbklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZpc2lvbiAxNzA2NTIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2OSwxNCArMTY5LDE0IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hhbmdlVGl0bGUo
Y29uc3QKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6cmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRf
dCBsaXN0ZW5lcklEKQordm9pZCBXZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9u
KFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQVNTRVJUKG1fYWN0aXZlTGlzdGVuZXIpOwogICAgIEFTU0VSVChtX2FjdGl2ZUxpc3Rl
bmVyLT5saXN0ZW5lcklEKCkgPT0gbGlzdGVuZXJJRCk7Ci0gICAgbV9wYWdlLT5yZWNlaXZlZFBv
bGljeURlY2lzaW9uKGFjdGlvbiwgdGhpcywgbGlzdGVuZXJJRCk7CisgICAgbV9wYWdlLT5yZWNl
aXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwgdGhpcywgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbklE
KTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiBXZWJGcmFtZVByb3h5OjpzZXRV
cFBvbGljeUxpc3RlbmVyUHJveHkodWludDY0X3QgbGlzdGVuZXJJRCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkocmV2aXNpb24gMTcwNjUyKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgLy8gUG9saWN5IG9wZXJhdGlvbnMuCi0gICAgdm9pZCByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCk7
CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwg
dWludDY0X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbmF2aWdhdGlvbklEID0gMCk7CiAgICAgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkodWludDY0
X3QgbGlzdGVuZXJJRCk7CiAgICAgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KiBzZXRV
cEZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE3
MDY1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzA4LDcgKzE3MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVy
U2VsZWN0aW9uSW5WaXNpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
ZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2Vi
RnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQpCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbmF2aWdhdGlvbklEKQog
ewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNzQ0LDcgKzE3NDQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWUtPmZyYW1lSUQoKSwgbGlzdGVuZXJJRCwg
YWN0aW9uLCBkb3dubG9hZElEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lLT5mcmFtZUlEKCks
IGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbklELCBkb3dubG9hZElEKSwgbV9wYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KQpAQCAtMTg0MCwxMyArMTg0MCwxNCBAQCBQYXNzUmVmUHRyPEFQSTo6RGF0YT4gV2Vi
UGFnZVByb3h5OjpzZXNzCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhKikKK3VpbnQ2NF90IFdlYlBhZ2VQ
cm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhKEFQSTo6RGF0YSopCiB7CiAgICAgLy8g
RklYTUU6IFJlc3RvcmUgdGhlIFBhZ2UgZnJvbSB0aGUgcGFzc2VkIGluIHNlc3Npb24gc3RhdGUg
ZGF0YS4KKyAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVz
dG9yZUZyb21TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlKQordWludDY0X3QgV2ViUGFn
ZVByb3h5OjpyZXN0b3JlRnJvbVN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUpCiB7CiAg
ICAgbV9iYWNrRm9yd2FyZExpc3QtPnJlc3RvcmVGcm9tU3RhdGUoc3RkOjptb3ZlKHNlc3Npb25T
dGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSkpOwogCkBAIC0xODU1LDEzICsxODU2LDEzIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVN0YXRlKFNlc3MKIAogICAgIC8vIEZJWE1FOiBO
YXZpZ2F0aW5nIHNob3VsZCBiZSBzZXBhcmF0ZSBmcm9tIHN0YXRlIHJlc3RvcmF0aW9uLgogCi0g
ICAgaWYgKCFzZXNzaW9uU3RhdGUucHJvdmlzaW9uYWxVUkwuaXNOdWxsKCkpIHsKLSAgICAgICAg
bG9hZFJlcXVlc3Qoc2Vzc2lvblN0YXRlLnByb3Zpc2lvbmFsVVJMKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoIXNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTC5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGxvYWRSZXF1ZXN0KHNlc3Npb25TdGF0ZS5wcm92aXNpb25hbFVSTCk7
CiAKICAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fYmFja0ZvcndhcmRM
aXN0LT5jdXJyZW50SXRlbSgpKQotICAgICAgICBnb1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0pOwor
ICAgICAgICByZXR1cm4gZ29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtKTsKKworICAgIHJldHVybiAw
OwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0Wm9vbSgpIGNvbnN0CkBAIC0y
NDI4LDYgKzI0MjksMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKCkK
ICAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmluaXNoUHJvZ3Jlc3ModGhpcyk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQp
Cit7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHRoaXMsIG5hdmln
YXRpb25JRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIElQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0
ZS50cmFuc2FjdGlvbigpOwpAQCAtMjc3Miw3ICsyNzc4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZyYW1lRGlkQmVjb21lRnJhbWVTZQogICAgICAgICBtX2ZyYW1lU2V0TGFyZ2VzdEZyYW1lID0g
dmFsdWUgPyBtX21haW5GcmFtZSA6IDA7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdG
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWlu
dDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNv
ZGVyLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25J
RCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpCiB7CiAgICAg
UmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VE
ZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBwcm9jZXNzKCkpOwpAQCAtMjc5Miw2ICsy
Nzk4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBX
ZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShvcmln
aW5hdGluZ0ZyYW1lSUQpOwogICAgIAogICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5l
cklEKTsKKyAgICBpZiAoIW5hdmlnYXRpb25JRCAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkgewor
ICAgICAgICBuZXdOYXZpZ2F0aW9uSUQgPSBnZW5lcmF0ZU5hdmlnYXRpb25JRCgpOworICAgICAg
ICBsaXN0ZW5lci0+c2V0TmF2aWdhdGlvbklEKG5ld05hdmlnYXRpb25JRCk7CisgICAgfQogCiAg
ICAgQVNTRVJUKCFtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE3MDY1MikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUxLDggKzU1MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3Mo
KTsKIAogICAgIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiBzZXNzaW9uU3RhdGVEYXRhKHN0ZDo6ZnVu
Y3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpPikgY29uc3Q7Ci0gICAgdm9pZCBy
ZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhKik7Ci0gICAgdm9pZCByZXN0b3Jl
RnJvbVN0YXRlKFNlc3Npb25TdGF0ZSk7CisgICAgdWludDY0X3QgcmVzdG9yZUZyb21TZXNzaW9u
U3RhdGVEYXRhKEFQSTo6RGF0YSopOworICAgIHVpbnQ2NF90IHJlc3RvcmVGcm9tU3RhdGUoU2Vz
c2lvblN0YXRlKTsKIAogICAgIGJvb2wgc3VwcG9ydHNUZXh0Wm9vbSgpIGNvbnN0OwogICAgIGRv
dWJsZSB0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dFpvb21GYWN0b3I7IH0K
QEAgLTY3OCw3ICs2NzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxv
b2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogI2VuZGlmCiAKLSAg
ICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBXZWJG
cmFtZVByb3h5KiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCByZWNlaXZlZFBvbGlj
eURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90
IGxpc3RlbmVySUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKICAgICB2b2lkIGJhY2tGb3J3
YXJkUmVtb3ZlZEl0ZW0odWludDY0X3QgaXRlbUlEKTsKIApAQCAtOTU3LDggKzk1Nyw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRTdGFydFByb2dyZXNzKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQ
cm9ncmVzcyhkb3VibGUpOwogICAgIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoKTsKKyAgICB2b2lk
IGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKLSAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24s
IHVpbnQ2NF90JiBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIElQQzo6TWVzc2FnZURlY29k
ZXImLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25J
RCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpOwogICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIElQQzo6TWVzc2Fn
ZURlY29kZXImKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIGJvb2wmIHJlY2VpdmVk
UG9saWN5QWN0aW9uLCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCB1aW50NjRfdCYgZG93bmxvYWRJ
RCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4JKHJldmlzaW9uIDE3MDY1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMK
ICAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6
OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNl
aXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9h
ZElEKSBWYXJpYWRpYwotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
ciB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IHBvbGlj
eUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkgVmFyaWFkaWMKKyAgICBEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0
YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25J
RCwgdWludDY0X3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKSBWYXJpYWRpYwog
ICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkg
VmFyaWFkaWMKICAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSAgVmFyaWFkaWMKIApAQCAtMTQwLDYgKzE0MCw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2RlciB1c2VyRGF0YSkgVmFyaWFkaWMKICAgICBEaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJE
YXRhKSBWYXJpYWRpYwogICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50MzJfdCB0eXBlLCBTdHJpbmcgdXJsLCBXZWJLaXQ6OkluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKSBWYXJpYWRpYworICAgIERpZERlc3Ry
b3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIAogICAgIEZyYW1lRGlkQmVjb21l
RnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxNzA2
NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZSwgQVBJOjpPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
cnN0TGF5b3V0Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkqLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95TmF2
aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25JRCkgeyB9
CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJlbW92aW5nIGRpZEZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lIHNpbmNlIGl0IGlzIHJlcGxhY2VkIGJ5IGRpZExh
eW91dC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBBUEk6
Ok9iamVjdCopIHsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE3MDY1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcxLDcg
KzE1NzEsOSBAQCBzdGF0aWMgdm9pZCByZWxlYXNlTlNEYXRhKHVuc2lnbmVkIGNoYXIqCiAtICh2
b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTooTlNEYXRhICopc2Vzc2lvblN0YXRlCiB7CiAg
ICAgW3Nlc3Npb25TdGF0ZSByZXRhaW5dOwotICAgIF9wYWdlLT5yZXN0b3JlRnJvbVNlc3Npb25T
dGF0ZURhdGEoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZygoY29uc3QgdW5zaWduZWQg
Y2hhciopc2Vzc2lvblN0YXRlLmJ5dGVzLCBzZXNzaW9uU3RhdGUubGVuZ3RoLCByZWxlYXNlTlNE
YXRhLCBzZXNzaW9uU3RhdGUpLmdldCgpKTsKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgPSBf
cGFnZS0+cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91
dENvcHlpbmcoKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXNlc3Npb25TdGF0ZS5ieXRlcywgc2Vzc2lv
blN0YXRlLmxlbmd0aCwgcmVsZWFzZU5TRGF0YSwgc2Vzc2lvblN0YXRlKS5nZXQoKSk7CisgICAg
aWYgKG5hdmlnYXRpb25JRCkKKyAgICAgICAgX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlUmVsb2Fk
TmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogfQogCiAtICh2b2lkKV9jbG9zZQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkocmV2
aXNpb24gMTcwNjUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJv
eHkqLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVzdHJv
eU5hdmlnYXRpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQp
IG92ZXJyaWRlOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTGF5b3V0KFdlYktpdDo6V2ViUGFn
ZVByb3h5KiwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKSBvdmVycmlk
ZTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VJbkZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
KiwgV2ViS2l0OjpXZWJQcm90ZWN0aW9uU3BhY2UqKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMTcwNjUyKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXS05T
VVJMUHJvdGVjdGlvblNwYWNlLmgiCisjaW1wb3J0ICJXS05TVVJMUmVxdWVzdC5oIgogI2ltcG9y
dCAiV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTmF2aWdhdGlvbkRh
dGFJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgiCkBA
IC0xNjMsNyArMTY0LDYgQEAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gTmF2aWdhdGlvblN0YXRl
OgogICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBhZG9wdE5TKFtbV0tO
YXZpZ2F0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW25hdmlnYXRpb24gc2V0UmVxdWVzdDpyZXF1
ZXN0XTsKIAotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgbmF2aWdhdGlvbiB3
aGVuIHdlJ3JlIGRvbmUgd2l0aCBpdCEKICAgICBtX25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9u
SUQsIG5hdmlnYXRpb24pOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xNzUsNyArMTc1
LDYgQEAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gTmF2aWdhdGlvblN0YXRlOgogCiAgICAgYXV0
byBuYXZpZ2F0aW9uID0gYWRvcHROUyhbW1dLTmF2aWdhdGlvbiBhbGxvY10gaW5pdF0pOwogCi0g
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBuYXZpZ2F0aW9uIHdoZW4gd2UncmUg
ZG9uZSB3aXRoIGl0IQogICAgIG1fbmF2aWdhdGlvbnMuc2V0KG5hdmlnYXRpb25JRCwgbmF2aWdh
dGlvbik7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE4Nyw3ICsxODYsNiBAQCBSZXRh
aW5QdHI8V0tOYXZpZ2F0aW9uPiBOYXZpZ2F0aW9uU3RhdGU6CiAKICAgICBhdXRvIG5hdmlnYXRp
b24gPSBhZG9wdE5TKFtbV0tOYXZpZ2F0aW9uIGFsbG9jXSBpbml0XSk7CiAKLSAgICAvLyBGSVhN
RTogV2UgbmVlZCB0byByZW1vdmUgdGhlIG5hdmlnYXRpb24gd2hlbiB3ZSdyZSBkb25lIHdpdGgg
aXQhCiAgICAgbV9uYXZpZ2F0aW9ucy5zZXQobmF2aWdhdGlvbklELCBuYXZpZ2F0aW9uKTsKIAog
ICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtMTk5LDcgKzE5Nyw2IEBAIFJldGFpblB0cjxXS05h
dmlnYXRpb24+IE5hdmlnYXRpb25TdGF0ZToKIAogICAgIGF1dG8gbmF2aWdhdGlvbiA9IGFkb3B0
TlMoW1tXS05hdmlnYXRpb24gYWxsb2NdIGluaXRdKTsKIAotICAgIC8vIEZJWE1FOiBXZSBuZWVk
IHRvIHJlbW92ZSB0aGUgbmF2aWdhdGlvbiB3aGVuIHdlJ3JlIGRvbmUgd2l0aCBpdCEKICAgICBt
X25hdmlnYXRpb25zLnNldChuYXZpZ2F0aW9uSUQsIG5hdmlnYXRpb24pOwogCiAgICAgcmV0dXJu
IG5hdmlnYXRpb247CkBAIC0yNjQsMTQgKzI2MSwxOCBAQCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGlj
eUNsaWVudDo6flBvbGljeUNsCiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGllbnQ6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQ
cm94eSogZGVzdGluYXRpb25GcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBXZWJGcmFtZVByb3h5KiBzb3VyY2VGcmFtZSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVmUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4g
bGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKKyAgICBSZXRhaW5QdHI8TlNVUkxS
ZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBhZG9wdE5TKHdyYXBwZXIoKkFQSTo6VVJMUmVxdWVzdDo6
Y3JlYXRlKHJlcXVlc3QpLmxlYWtSZWYoKSkpOworCisgICAgaWYgKGxpc3RlbmVyLT5uYXZpZ2F0
aW9uSUQoKSkKKyAgICAgICAgbV9uYXZpZ2F0aW9uU3RhdGUuY3JlYXRlTG9hZFJlcXVlc3ROYXZp
Z2F0aW9uKGxpc3RlbmVyLT5uYXZpZ2F0aW9uSUQoKSwgbnNVUkxSZXF1ZXN0LmdldCgpKTsKKwog
ICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyKSB7CiAg
ICAgICAgIGlmICghZGVzdGluYXRpb25GcmFtZSkgewogICAgICAgICAgICAgbGlzdGVuZXItPnVz
ZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTlNVUkxSZXF1
ZXN0ICpuc1VSTFJlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpEb05vdFVw
ZGF0ZUhUVFBCb2R5KTsKLSAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVx
dWVzdDpuc1VSTFJlcXVlc3RdKSB7CisgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhh
bmRsZVJlcXVlc3Q6bnNVUkxSZXF1ZXN0LmdldCgpXSkgewogICAgICAgICAgICAgbGlzdGVuZXIt
PnVzZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNzksOCArMjgwLDgg
QEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6ZGVjaQogI2lmIFBMQVRGT1JN
KE1BQykKICAgICAgICAgLy8gQSBmaWxlIFVSTCBzaG91bGRuJ3QgZmFsbCB0aHJvdWdoIHRvIGhl
cmUsIGJ1dCBpZiBpdCBkaWQsCiAgICAgICAgIC8vIGl0IHdvdWxkIGJlIGEgc2VjdXJpdHkgcmlz
ayB0byBvcGVuIGl0LgotICAgICAgICBpZiAoIVtuc1VSTFJlcXVlc3QuVVJMIGlzRmlsZVVSTF0p
Ci0gICAgICAgICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlblVSTDpuc1VS
TFJlcXVlc3QuVVJMXTsKKyAgICAgICAgaWYgKCFbW25zVVJMUmVxdWVzdCBVUkxdIGlzRmlsZVVS
TF0pCisgICAgICAgICAgICBbW05TV29ya3NwYWNlIHNoYXJlZFdvcmtzcGFjZV0gb3BlblVSTDpb
bnNVUkxSZXF1ZXN0IFVSTF1dOwogI2VuZGlmCiAgICAgICAgIGxpc3RlbmVyLT5pZ25vcmUoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzAyLDcgKzMwMyw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpQb2xpY3lDbGllbnQ6OmRlY2kKICAgICAgICAgICAgIFtuYXZpZ2F0aW9uQWN0aW9uIHNldFNv
dXJjZUZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10gaW5pdFdpdGhXZWJGcmFtZVBy
b3h5Oipzb3VyY2VGcmFtZV0pLmdldCgpXTsKICAgICB9CiAKLSAgICBbbmF2aWdhdGlvbkFjdGlv
biBzZXRSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkRvTm90VXBkYXRlSFRU
UEJvZHkpXTsKKyAgICBbbmF2aWdhdGlvbkFjdGlvbiBzZXRSZXF1ZXN0Om5zVVJMUmVxdWVzdC5n
ZXQoKV07CiAgICAgW25hdmlnYXRpb25BY3Rpb24gX3NldE9yaWdpbmFsVVJMOm9yaWdpbmFsUmVx
dWVzdC51cmwoKV07CiAKICAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4g
Y2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9u
RGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOikpOwpAQCAtNDEyLDEwICs0MTMsOSBAQCB2b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRTCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVs
ZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0
IHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6
ZXJvIGZvciBuYXZpZ2F0aW9ucyBvcmlnaW5hdGluZyBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KLSAg
ICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkK
LSAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuZ2V0
KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAgV0tO
YXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5n
ZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAgICBb
bmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOm5hdmlnYXRpb25dOwogfQpAQCAtNDMyLDEwICs0
MzIsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRSCiAgICAgaWYg
KCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBp
dCdzIGN1cnJlbnRseSB6ZXJvIGZvciBuYXZpZ2F0aW9ucyBvcmlnaW5hdGluZyBmcm9tIHRoZSB3
ZWIgcHJvY2Vzcy4KLSAgICBXS05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYg
KG5hdmlnYXRpb25JRCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbnMuZ2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRp
b25JRCk7CisgICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUu
bV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdh
dGlvbik7CiAKICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdh
dGlvbjpuYXZpZ2F0aW9uXTsKIH0KQEAgLTQ2OCwxMCArNDY3LDkgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8g
aGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIG5hdmlnYXRpb25zIG9yaWdpbmF0aW5n
IGZyb20gdGhlIHdlYiBwcm9jZXNzLgotICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IG5hdmln
YXRpb247Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMudGFrZShuYXZpZ2F0aW9uSUQpOworICAgIEFTU0VS
VChuYXZpZ2F0aW9uSUQpOworICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IG5hdmlnYXRpb24g
PSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLnRha2UobmF2aWdhdGlvbklEKS5nZXQo
KTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAgICAvLyBGSVhNRTogU2V0IHRoZSBlcnJv
ciBvbiB0aGUgbmF2aWdhdGlvbiBvYmplY3QuCiAKQEAgLTQ5OCwxMCArNDk2LDkgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkQwogICAgIGlmICghbmF2aWdhdGlvbkRl
bGVnYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2Vy
dCB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkg
emVybyBmb3IgbmF2aWdhdGlvbnMgb3JpZ2luYXRpbmcgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCi0g
ICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbmlsOwotICAgIGlmIChuYXZpZ2F0aW9uSUQp
Ci0gICAgICAgIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLmdl
dChuYXZpZ2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVChuYXZpZ2F0aW9uSUQpOworICAgIFdL
TmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMu
Z2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb24pOwogCiAgICAg
W25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBk
aWRDb21taXROYXZpZ2F0aW9uOm5hdmlnYXRpb25dOwogfQpAQCAtNTE4LDkgKzUxNSw5IEBAIHZv
aWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEYKICAgICBpZiAoIW5hdmlnYXRp
b25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0
aW9uID0gbmlsOwotICAgIGlmIChuYXZpZ2F0aW9uSUQpCi0gICAgICAgIG5hdmlnYXRpb24gPSBt
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25zLmdldChuYXZpZ2F0aW9uSUQpLmdldCgpOwor
ICAgIEFTU0VSVChuYXZpZ2F0aW9uSUQpOworICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9
IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuZ2V0KG5hdmlnYXRpb25JRCkuZ2V0KCk7
CisgICAgQVNTRVJUKG5hdmlnYXRpb24pOwogCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uRGlkRmluaXNoRG9jdW1lbnRM
b2FkOm5hdmlnYXRpb25dOwogfQpAQCAtNTM3LDEwICs1MzQsOSBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2
aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBu
YXZpZ2F0aW9ucyBvcmlnaW5hdGluZyBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBXS05hdmln
YXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAgICAg
bmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuZ2V0KG5hdmlnYXRp
b25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAgV0tOYXZpZ2F0aW9u
ICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQobmF2aWdh
dGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAgICBbbmF2aWdhdGlv
bkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZpbmlzaE5h
dmlnYXRpb246bmF2aWdhdGlvbl07CiB9CkBAIC01NTcsMTUgKzU1MywxOSBAQCB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdh
dGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRo
YXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJv
IGZvciBuYXZpZ2F0aW9ucyBvcmlnaW5hdGluZyBmcm9tIHRoZSB3ZWIgcHJvY2Vzcy4KLSAgICBX
S05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAg
ICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbnMuZ2V0KG5h
dmlnYXRpb25JRCkuZ2V0KCk7CisgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CisgICAgV0tOYXZp
Z2F0aW9uICpuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5nZXQo
bmF2aWdhdGlvbklEKS5nZXQoKTsKKyAgICBBU1NFUlQobmF2aWdhdGlvbik7CiAKICAgICBhdXRv
IGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRl
bXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3LCAqd2ViRnJhbWVQcm94eSwgZXJyb3Ip
OwogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dl
YlZpZXcgZGlkRmFpbE5hdmlnYXRpb246bmF2aWdhdGlvbiB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVj
b3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogfQogCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVy
Q2xpZW50OjpkaWREZXN0cm95TmF2aWdhdGlvbihXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQpCit7CisgICAgbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9ucy5yZW1vdmUo
bmF2aWdhdGlvbklEKTsKK30KKwogc3RhdGljIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzIHJl
bmRlcmluZ1Byb2dyZXNzRXZlbnRzKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbWlsZXN0b25l
cykKIHsKICAgICBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBldmVudHMgPSAwOwpAQCAtNjY2
LDYgKzY2Niw4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFIKIAog
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6cHJvY2Vzc0RpZENyYXNoKFdlYktp
dDo6V2ViUGFnZVByb3h5KikKIHsKKyAgICBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25z
LmNsZWFyKCk7CisKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoKQogICAgICAgICByZXR1cm47CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNw
cAkocmV2aXNpb24gMTcwNjUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBh
Z2VQcm94eUNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDE3ICsxMDQsMTcgQEAgUGFzc1Jl
ZlB0cjxBUEk6OkRhdGE+IFdlYlBhZ2VQcm94eTo6c2VzcwogICAgIHJldHVybiBBUEk6OkRhdGE6
OmNyZWF0ZShzdGF0ZVZlY3Rvcik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJv
bVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhKiBhcGlEYXRhKQordWludDY0X3QgV2ViUGFnZVBy
b3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoQVBJOjpEYXRhKiBhcGlEYXRhKQogewog
ICAgIGlmICghYXBpRGF0YSB8fCBhcGlEYXRhLT5zaXplKCkgPCBzaXplb2YoVUludDMyKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIGJ1ZmZlciA9IGFwaURhdGEtPmJ5dGVzKCk7CiAgICAgVUludDMyIHZlcnNpb25IZWFkZXIg
PSAoYnVmZmVyWzBdIDw8IDI0KSArIChidWZmZXJbMV0gPDwgMTYpICsgKGJ1ZmZlclsyXSA8PCA4
KSArIGJ1ZmZlclszXTsKICAgICAKICAgICBpZiAodmVyc2lvbkhlYWRlciAhPSBDdXJyZW50U2Vz
c2lvblN0YXRlRGF0YVZlcnNpb24pIHsKICAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIlVucmVj
b2duaXplZCB2ZXJzaW9uIGhlYWRlciBmb3Igc2Vzc2lvbiBzdGF0ZSBkYXRhIC0gY2Fubm90IHJl
c3RvcmUiKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAs
IGFwaURhdGEtPmJ5dGVzKCkgKyBzaXplb2YoVUludDMyKSwgYXBpRGF0YS0+c2l6ZSgpIC0gc2l6
ZW9mKFVJbnQzMikpKTsKQEAgLTEyNCwxNSArMTI0LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXN0b3JlRnJvbVNlc3Npb25TdGEKICAgICBpZiAocHJvcGVydHlMaXN0RXJyb3IpIHsKICAgICAg
ICAgQ0ZSZWxlYXNlKHByb3BlcnR5TGlzdEVycm9yKTsKICAgICAgICAgTE9HKFNlc3Npb25TdGF0
ZSwgIkNvdWxkIG5vdCByZWFkIHNlc3Npb24gc3RhdGUgcHJvcGVydHkgbGlzdCIpOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlmICghcHJvcGVydHlM
aXN0KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgICAgICAKICAgICBp
ZiAoQ0ZHZXRUeXBlSUQocHJvcGVydHlMaXN0LmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBl
SUQoKSkgewogICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiU2Vzc2lvblN0YXRlIHByb3BlcnR5
IGxpc3QgaXMgbm90IGEgQ0ZEaWN0aW9uYXJ5UmVmICglaSkgLSBpdHMgQ0ZUeXBlSUQgaXMgJWki
LCAoaW50KUNGRGljdGlvbmFyeUdldFR5cGVJRCgpLCAoaW50KUNGR2V0VHlwZUlEKHByb3BlcnR5
TGlzdC5nZXQoKSkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAogICAgIENGRGljdGlvbmFyeVJlZiBiYWNrRm9yd2FyZExpc3REaWN0aW9uYXJ5ID0gMDsKQEAg
LTE2OSwxNCArMTY5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25T
dGEKICAgICAgICAgICAgICAgICAgICAgaWYgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0g
PSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5kaW5nQVBJUmVxdWVzdFVSTCh0cmFuc2FjdGlvbiwg
aXRlbS0+dXJsKCkpOwogCi0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lvbkFuZE5hdmlnYXRlVG9DdXJyZW50SXRlbShnZW5l
cmF0ZU5hdmlnYXRpb25JRCgpLCBzdGF0ZSksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgICAgICAg
ICAgdWludDY0X3QgbmF2aWdhdGlvbklEID0gZ2VuZXJhdGVOYXZpZ2F0aW9uSUQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVT
ZXNzaW9uQW5kTmF2aWdhdGVUb0N1cnJlbnRJdGVtKG5hdmlnYXRpb25JRCwgc3RhdGUpLCBtX3Bh
Z2VJRCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0aW9uSUQ7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHBy
b3Zpc2lvbmFsVVJMKQotICAgICAgICBsb2FkUmVxdWVzdChVUkwoVVJMKCksIHByb3Zpc2lvbmFs
VVJMKSk7CisgICAgICAgIHJldHVybiBsb2FkUmVxdWVzdChVUkwoVVJMKCksIHByb3Zpc2lvbmFs
VVJMKSk7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDE3MDY1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZAogCiAgICAgLy8gV2UgY2FsbCB0aGlzIHN5bmNocm9ub3VzbHkgYmVjYXVzZSBD
Rk5ldHdvcmsgY2FuIG9ubHkgY29udmVydCBhIGxvYWRpbmcgY29ubmVjdGlvbiB0byBhIGRvd25s
b2FkIGZyb20gaXRzIGRpZFJlY2VpdmVSZXNwb25zZSBjYWxsYmFjay4KICAgICBpZiAocmVjZWl2
ZWRQb2xpY3lBY3Rpb24pCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIGRv
d25sb2FkSUQpOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlz
dGVuZXJJRCwgc3RhdGljX2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCAwLCBkb3du
bG9hZElEKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlv
bkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4gZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xpY3lGdW5j
dGlvbiBmdW5jdGlvbikKQEAgLTcyOSw2ICs3MjksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkCiAgICAgCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJh
bWUtPnNldFVwUG9saWN5TGlzdGVuZXIoc3RkOjptb3ZlKGZ1bmN0aW9uKSk7CiAgICAgYm9vbCBy
ZWNlaXZlZFBvbGljeUFjdGlvbjsKKyAgICB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQ7CiAgICAg
dWludDY0X3QgcG9saWN5QWN0aW9uOwogICAgIHVpbnQ2NF90IGRvd25sb2FkSUQ7CiAKQEAgLTc2
MCwxMyArNzYxLDE4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQK
ICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSA9IG5hdmln
YXRpb25BY3Rpb24ucHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlv
bkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2UtPmNhbkhhbmRsZVJlcXVlc3QocmVxdWVz
dCk7CiAKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1l
KCk7CisgICAgV2ViRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8
V2ViRG9jdW1lbnRMb2FkZXIqPihjb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeURvY3VtZW50TG9h
ZGVyKCkpOworICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIGRvY3VtZW50TG9hZGVy
ID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihjb3JlRnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkpOworCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgaWYg
KCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIG9yaWdpbmF0aW5nRnJhbWUgPyBvcmlnaW5hdGluZ0ZyYW1lLT5mcmFtZUlEKCkgOiAwLCBu
YXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBsaXN0ZW5lcklELCBJ
bmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShy
ZWNlaXZlZFBvbGljeUFjdGlvbiwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElEKSkpCisgICAgaWYg
KCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXItPm5h
dmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZSA/IG9y
aWdpbmF0aW5nRnJhbWUtPmZyYW1lSUQoKSA6IDAsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VS
ZXF1ZXN0KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyKHVzZXJEYXRhLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246OlJlcGx5KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBuZXdO
YXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCkpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIFdlYkNvcmUgY2Fu
bm90IGdyYWNlZnVsbHkgaGFuZGxlIGEgZnJhbWUgbG9hZCB3aXRob3V0IGEgc3luY2hyb25vdXMg
bmF2aWdhdGlvbiBwb2xpY3kgcmVwbHkuCiAgICAgaWYgKHJlY2VpdmVkUG9saWN5QWN0aW9uKQot
ICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3Rh
dGljX2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBkb3dubG9hZElEKTsKKyAgICAg
ICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHN0YXRpY19j
YXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0aW9uKSwgbmV3TmF2aWdhdGlvbklELCBkb3dubG9h
ZElEKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2so
KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxNzA2NTIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRG9j
dW1lbnRMb2FkZXIuaCIKIAorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTM2LDYgKzM4LDE0IEBAIFdlYkRv
Y3VtZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcihjb24KIHsKIH0KIAordm9pZCBXZWJEb2N1
bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKK3sKKyAgICBpZiAobV9uYXZpZ2F0aW9uSUQp
CisgICAgICAgIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSgpKS0+ZG9jdW1lbnRMb2Fk
ZXJEZXRhY2hlZChtX25hdmlnYXRpb25JRCk7CisKKyAgICBtX25hdmlnYXRpb25JRCA9IDA7Cit9
CisKIHZvaWQgV2ViRG9jdW1lbnRMb2FkZXI6OnNldE5hdmlnYXRpb25JRCh1aW50NjRfdCBuYXZp
Z2F0aW9uSUQpCiB7CiAgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuaAko
cmV2aXNpb24gMTcwNjUyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkRvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDggQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBXZWJEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogCisgICAgdmlydHVh
bCB2b2lkIGRldGFjaEZyb21GcmFtZSgpIG92ZXJyaWRlOworCiAgICAgdWludDY0X3QgbV9uYXZp
Z2F0aW9uSUQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE3MDY1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3Qu
aCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJEb2N1bWVudExv
YWRlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKQEAgLTIxNSw3ICsyMTYsNyBAQCB2b2lk
IFdlYkZyYW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoCiAgICAgbV9wb2xpY3lGdW5jdGlv
biA9IDA7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50
NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElE
KQordm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0
X3QgZG93bmxvYWRJRCkKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm47
CkBAIC0yMzMsNiArMjM0LDExIEBAIHZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbigKICAgICBpbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKIAogICAgIG1fcG9saWN5RG93
bmxvYWRJRCA9IGRvd25sb2FkSUQ7CisgICAgaWYgKG5hdmlnYXRpb25JRCkgeworICAgICAgICBX
ZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVu
dExvYWRlciY+KCptX2NvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5RG9jdW1lbnRMb2FkZXIoKSk7
CisgICAgICAgIGRvY3VtZW50TG9hZGVyLnNldE5hdmlnYXRpb25JRChuYXZpZ2F0aW9uSUQpOwor
ICAgIH0KKwogICAgIGZ1bmN0aW9uKGFjdGlvbik7CiB9CiAKQEAgLTc1MSw2ICs3NTcsMTEgQEAg
dm9pZCBXZWJGcmFtZTo6c2V0VGV4dERpcmVjdGlvbihjb25zdCBTdAogICAgICAgICBtX2NvcmVG
cmFtZS0+ZWRpdG9yKCkuc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oUmlnaHRUb0xlZnRXcml0aW5n
RGlyZWN0aW9uKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6ZG9jdW1lbnRMb2FkZXJEZXRhY2hlZCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQpCit7CisgICAgcGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZERlc3Ryb3lOYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkpOworfQorCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBXZWJGcmFtZTo6d2ViQXJjaGl2
ZURhdGEoRnJhbWVGaWx0ZXJGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShyZXZp
c2lvbiAxNzA2NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50
NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pOwog
ICAgIHZvaWQgaW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9u
LCB1aW50NjRfdCBkb3dubG9hZElEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bih1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgdWludDY0X3QgZG93bmxvYWRJRCk7CiAKICAgICB2b2lkIHN0YXJ0RG93bmxv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7CkBAIC0xMzEsNiArMTMxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRUZXh0RGlyZWN0
aW9uKGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCBkb2N1bWVudExvYWRlckRldGFjaGVkKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCk7CisKICAgICAvLyBTaW1wbGUgbGlzdGVuZXIgY2xhc3MgdXNl
ZCBieSBwbHVnLWlucyB0byBrbm93IHdoZW4gZnJhbWVzIGZpbmlzaCBvciBmYWlsIGxvYWRpbmcu
CiAgICAgY2xhc3MgTG9hZExpc3RlbmVyIHsKICAgICBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNzA2NTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyNTQsMTIgKzIyNTQsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9u
SUQoU2Vzc2lvbklEIHNlcwogICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9
CiAKLXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3Qg
ZG93bmxvYWRJRCkKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9hZElEKQogewogICAgIFdlYkZy
YW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGxpc3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlvbj4ocG9saWN5QWN0
aW9uKSwgZG93bmxvYWRJRCk7CisgICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihs
aXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBvbGljeUFjdGlvbiksIG5hdmln
YXRpb25JRCwgZG93bmxvYWRJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRQYWdlVHJh
bnNpdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHJldmlzaW9uIDE3MDY1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1OSw3ICs5NTksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVp
bnQ2NF90IGRvd25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlv
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBkb3dubG9hZElEKTsKICAgICB2b2lk
IHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNv
ZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxNzA2NTIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogCiAgICAgRGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGJhY2tG
b3J3YXJkSXRlbUlEKQogCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0
X3QgZG93bmxvYWRJRCkKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IGRvd25sb2FkSUQpCiAKICAgICBDbGVhclNlbGVjdGlv
bigpCiAK
</data>
<flag name="review"
          id="258723"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>