<?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>225508</bug_id>
          
          <creation_ts>2021-05-07 03:33:33 -0700</creation_ts>
          <short_desc>Add an experimental alternative display-list-based RemoteLayerBackingStore implementation</short_desc>
          <delta_ts>2021-05-07 16:57:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>dino</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1757828</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-07 03:33:33 -0700</bug_when>
    <thetext>Add an experimental alternative display-list-based RemoteLayerBackingStore implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757829</commentid>
    <comment_count>1</comment_count>
      <attachid>427987</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-07 03:38:30 -0700</bug_when>
    <thetext>Created attachment 427987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757830</commentid>
    <comment_count>2</comment_count>
      <attachid>427988</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-07 03:44:21 -0700</bug_when>
    <thetext>Created attachment 427988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757872</commentid>
    <comment_count>3</comment_count>
      <attachid>427988</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-07 08:31:58 -0700</bug_when>
    <thetext>Comment on attachment 427988
Patch

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

Really excellent work.

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:416
&gt; +#if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER)
&gt; +        , [&amp;] (IPC::SharedBufferCopy&amp; buffer) {
&gt; +            ASSERT(m_type == Type::CGDisplayList);
&gt; +            ASSERT([layer isKindOfClass:[WKCompositingLayer class]]);
&gt; +            if (![layer isKindOfClass:[WKCompositingLayer class]])
&gt; +                return;
&gt; +            [layer setValue:@1 forKeyPath:WKCGDisplayListEnabledKey];
&gt; +            auto data = buffer.buffer()-&gt;createCFData();
&gt; +            [(WKCompositingLayer *)layer _setWKContentsDisplayList:data.get()];
&gt;          }

Perhaps in the future we can make this function take a WKCompositingLayer rather than a vanilla CALayer and just typedef WKCompositingLayer to CALayer on platforms where they can be the same thing?

&gt; Source/WebKit/UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.h:26
&gt; +#if PLATFORM(COCOA)

#pragma once?

&gt; Source/WebKit/UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.h:34
&gt; +@property (nonatomic, retain, setter=_setWKContentsDisplayList:)__attribute__((NSObject)) CFDataRef _wkContentsDisplayList;

I think you want a space before the __attribute__. Also, this can probably be direct.

&gt; Source/WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandle.h:-40
&gt;  #if PLATFORM(COCOA) // FIXME: This is really about IOSurface.
&gt; -    MachSendRight,
&gt; +    MachSendRight
&gt; +#endif
&gt; +    , ShareableBitmap::Handle
&gt; +#if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER)
&gt; +    , IPC::SharedBufferCopy
&gt;  #endif
&gt; -    ShareableBitmap::Handle

I think this could be a bit neater if we made ShareableBitmap::Handle first here.

using ImageBufferBackendHandle = Variant&lt;
    ShareableBitmap::Handle
#if PLATFORM(COCOA) // really should be HAVE(IOSURFACE) or something like that
    , MachSendRight
#endif
#if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER)
    , IPC::SharedBufferCopy
#endif
&gt;;


Additionally, I think we should probably add struct wrappers for MachSendRight and IPC::SharedBufferCopy in the future to indicate their use a bit better.

struct IOSurfaceImageBufferBackendHandle { MachSendRight handle };
struct CGDisplayListImageBufferBackendHandle { IPC::SharedBufferCopy handle };

using ImageBufferBackendHandle = Variant&lt;
    ShareableBitmap::Handle
#if PLATFORM(COCOA)
    , IOSurfaceImageBufferBackendHandle
#endif
#if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER)
    , CGDisplayListImageBufferBackendHandle
#endif
&gt;;

This would let the type system tell the story a bit nicer. Not needed in this pass though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1757949</commentid>
    <comment_count>4</comment_count>
      <attachid>428019</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-05-07 12:06:08 -0700</bug_when>
    <thetext>Created attachment 428019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758095</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-07 16:46:13 -0700</bug_when>
    <thetext>Committed r277210 (237482@main): &lt;https://commits.webkit.org/237482@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428019.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758098</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-07 16:47:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/77678782&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427987</attachid>
            <date>2021-05-07 03:38:30 -0700</date>
            <delta_ts>2021-05-07 03:44:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225508-20210507033829.patch</filename>
            <type>text/plain</type>
            <size>43590</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExZTlkZmQxYTgzNzdjMDc4NmU3MGEz
ZTkxZjA0ZGRjYzEyOTk3MjYuLjY3ZjA3ZWEzZTk5YTJlZDlmY2Y0MzZhNmRkMWNkNWU4YjliNGUy
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBhbHRlcm5h
dGl2ZSBkaXNwbGF5LWxpc3QtYmFzZWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisKIDIwMjEt
MDUtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFNhbXBs
ZWQgUGFnZSBUb3AgQ29sb3I6IHRha2UgYWRkaXRpb25hbCBzbmFwc2hvdHMgZnVydGhlciBkb3du
IHRoZSBwYWdlIHRvIHNlZSBpZiB0aGUgc2FtcGxlZCB0b3AgY29sb3IgaXMgbW9yZSB0aGFuIGp1
c3QgYSB0aW55IHN0cmlwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjMmRhNTQyNmFjNzgxZDA3YjFmNGZkMjZiOGEy
N2MyYjYwZGMxM2QuLjUzNWJhNGQ1ZTc3NTQyNzBhZTFiZTBmYWIwNjJlMTg1YWU0ZDk3MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjEtMDUtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBhbHRlcm5h
dGl2ZSBkaXNwbGF5LWxpc3QtYmFzZWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKToK
KyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Ynl0ZXNQ
ZXJSb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0SW1hZ2VEYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6cHV0
SW1hZ2VEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuaDogQWRkZWQuCisgICAgICAgIEFkZCBhbiBJbWFnZUJ1ZmZl
ciBiYWNrZW5kIGJhY2tlZCBieSBhIENHIGRpc3BsYXkgbGlzdC4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgQWRk
IGEgbmV3IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHR5cGUgdGhhdCB1c2VzIENHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCk6CisgICAg
ICAgIERpc2FibGUgcGFydGlhbCByZXBhaW50IGlmIHVzaW5nIGRpc3BsYXktbGlzdC1iYXNlZCBi
YWNraW5nIHN0b3JlLAorICAgICAgICBiZWNhdXNlIHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGFu
eSB3YXkgdG8gbXV0YXRlIGRpc3BsYXkgbGlzdHMuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKToKKyAgICAgICAgV2hlbiBh
cHBseWluZyBhIGRpc3BsYXktbGlzdC1iYXNlZCBiYWNraW5nIHN0b3JlIHRvIGEgbGF5ZXIsIHdl
IGp1c3QKKyAgICAgICAgcGFzcyB0aGUgZW5jb2RlZGUgZGF0YSBkaXJlY3RseSB0byB0aGUgbGF5
ZXIsIGFuZCB0ZWxsIGl0IHRvIHVzZSB0aGUKKyAgICAgICAgZGlzcGxheSBsaXN0IHRvIHJlbmRl
ci4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcik6CisgICAgICAgICgtW1dL
UGxhaW5SZW1vdGVMYXllciBkZXNjcmlwdGlvbl0pOiBEZWxldGVkLgorICAgICAgICBNb3ZlIFdL
UGxhaW5SZW1vdGVMYXllciB0byBSZW1vdGVMYXllclRyZWVMYXllcnMsIGFuZCByZW5hbWUgaXQg
dG8gV0tDb21wb3NpdGluZ0xheWVyLgorICAgICAgICBJdCB3aWxsIG5vdyBiYWNrIGFsbCBXS0Nv
bXBvc2l0aW5nVmlld3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2Nv
Y29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbTogQWRkZWQuCisg
ICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBkZXNjcmlwdGlvbl0pOgorICAgICAgICAoLVtX
S0NvbXBvc2l0aW5nTGF5ZXIgX3NldFdLQ29udGVudHNEaXNwbGF5TGlzdDpdKToKKyAgICAgICAg
KC1bV0tDb21wb3NpdGluZ0xheWVyIF93a0NvbnRlbnRzRGlzcGxheUxpc3RdKToKKyAgICAgICAg
KC1bV0tDb21wb3NpdGluZ0xheWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgIE1ha2UgV0tD
b21wb3NpdGluZ0xheWVyIHJlcGxheSB0aGUgZ2l2ZW4gZGlzcGxheSBsaXN0IGluIGRyYXdSZWN0
CisgICAgICAgIChqdXN0IGJlY2F1c2Ugd2UncmUgY3VycmVudGx5IG1pc3NpbmcgQVBJIHRvIGFj
dHVhbGx5IGRpcmVjdGx5IHBhc3MKKyAgICAgICAgdGhlIGVuY29kZWQgZGlzcGxheSBsaXN0IGRh
dGEgdG8gQ0EpLgorCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlVmlld3MubW06CisgICAgICAgICgrW1dLQ29tcG9zaXRpbmdWaWV3IGxheWVy
Q2xhc3NdKToKKyAgICAgICAgVXNlIFdLQ29tcG9zaXRpbmdMYXllciBhcyB0aGUgbGF5ZXIgY2xh
c3MgZm9yIGFsbCBXS0NvbXBvc2l0aW5nVmlld3MuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRl
eHQuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6dXNlQ0dEaXNw
bGF5TGlzdHNGb3JET01SZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVDb250ZXh0OjpzZXRVc2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJlbmRlcmluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgUGx1bWIgdGhlIGludGVybmFsIGZl
YXR1cmUgZmxhZyBmcm9tIFdlYlByZWZlcmVuY2VzIHRvIFJlbW90ZUxheWVyVHJlZUNvbnRleHQK
KyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIHRvIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOyBpZiB0aGUgcHJlZmVyZW5jZSBpcworICAgICAgICBvbiBhbmQgdGhlIGZlYXR1cmUgaXMg
YXZhaWxhYmxlLCB3ZSdsbCBhbHdheXMgcHJlZmVyIGRpc3BsYXktbGlzdCBiYWNrZWQKKyAgICAg
ICAgc3VyZmFjZXMgb3ZlciBlaXRoZXIgb2YgdGhlIGJpdG1hcCB0eXBlcy4KKwogMjAyMS0wNS0w
NSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2FtcGxlZCBQ
YWdlIFRvcCBDb2xvcjogdGllIGludG8gZXhpc3RpbmcgVENBREEvUkxUVCBzeXN0ZW1zIHNvIHRo
YXQgdGhlIHZhbHVlIGlzIGtlcHQgaW4gc3luYyB3aXRoIHBhaW50aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1s
IGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbAppbmRleCA5MzU3ZWU5ZDhmMzQ0YTAzYmNiOGNhMDBiZTJhZjJkMzQ5ZTZmYWExLi5iNTk4
YWE2YTA0ODMyYTcwZjk3OGRhMjkwOTFhMjlhZTdhYjg5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBi
L1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlh
bWwKQEAgLTczOCw2ICs3MzgsMTcgQEAgVXBncmFkZUtub3duSG9zdHNUb0hUVFBTRW5hYmxlZDoK
ICAgICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKK1VzZUNHRGlzcGxheUxpc3RzRm9y
RE9NUmVuZGVyaW5nOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiVXNlIENH
IERpc3BsYXkgTGlzdHMgZm9yIERPTSByZW5kZXJpbmciCisgIGh1bWFuUmVhZGFibGVEZXNjcmlw
dGlvbjogIlVzZSBDRyBEaXNwbGF5IExpc3RzIGZvciBET00gcmVuZGVyaW5nIgorICB3ZWJjb3Jl
QmluZGluZzogbm9uZQorICBjb25kaXRpb246IEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VE
X0lNQUdFX0JVRkZFUikKKyAgZXhwb3NlZDogWyBXZWJLaXQgXQorICBkZWZhdWx0VmFsdWU6Cisg
ICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKwogVXNlR1BVUHJvY2Vzc0ZvckRPTVJl
bmRlcmluZ0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJHUFUg
UHJvY2VzczogRE9NIFJlbmRlcmluZyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWM1M2E2MmY2NzhiZWFlMjQ1YzZkYjNlYjdmYTNk
NzgyMmFiMzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0wLDAgKzEs
MTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKKworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJ
U1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKworI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KKyNpbmNsdWRlIDxXZWJLaXRB
ZGRpdGlvbnMvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQWRkaXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKTsKKwor
c2l6ZV90IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNv
c3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBp
cyBmYWlybHkgbWVhbmluZ2xlc3MsIGJlY2F1c2Ugd2UgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIGJp
dG1hcCwgYW5kCisgICAgLy8gc2hvdWxkIHJlYWxseSBiZSBiYXNlZCBvbiB0aGUgZW5jb2RlZCBk
YXRhIHNpemUuCisgICAgYXV0byBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBh
cmFtZXRlcnMpOworICAgIHJldHVybiBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1
bGF0ZU1lbW9yeUNvc3QoYmFja2VuZFNpemUsIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRT
aXplKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kPiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBhdXRvIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFj
a2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoV0tD
R0NvbW1hbmRzQ29udGV4dENyZWF0ZShiYWNrZW5kU2l6ZSwgbnVsbHB0cikpOworICAgIGlmICgh
Y2dDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZD4obmV3IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQocGFyYW1ldGVycywgV1RGTW92
ZShjb250ZXh0KSkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZD4gQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKQorewor
ICAgIHJldHVybiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGUocGFyYW1l
dGVycyk7Cit9CisKK0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OkNHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogSW1h
Z2VCdWZmZXJDR0JhY2tlbmQgeyBwYXJhbWV0ZXJzIH0KKyAgICAsIG1fY29udGV4dCB7IFdURk1v
dmUoY29udGV4dCkgfQoreworfQorCitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkg
Y29uc3QKK3sKKyAgICBhdXRvIGRhdGEgPSBhZG9wdENGKFdLQ0dDb21tYW5kc0NvbnRleHRDb3B5
RW5jb2RlZERhdGEobV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpOworICAgIEFTU0VSVChk
YXRhKTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9
IH07Cit9CisKK1dlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2NvbnRleHQ7Cit9
CisKK1dlYkNvcmU6OkludFNpemUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6YmFj
a2VuZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBjYWxjdWxhdGVCYWNrZW5kU2l6ZShtX3Bh
cmFtZXRlcnMpOworfQorCit1bnNpZ25lZCBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
OjpieXRlc1BlclJvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93
KGJhY2tlbmRTaXplKCkpOworfQorCitSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IENHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNr
aW5nU3RvcmVDb3B5KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitWZWN0b3I8dWludDhfdD4gQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCit2b2lkIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25z
dCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
c3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9J
TUFHRV9CVUZGRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDAyZGU2YzhiZTQ4NDZjYTQxY2E1YjNiMzMxMTcwYWI1NjczNmYwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFH
RV9CVUZGRVIpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3RmL0lzb01h
bGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZCB7Cisg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
KTsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29u
c3QgUGFyYW1ldGVycyYpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7CisKKyAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICAvLyBOT1RFOiBUaGVzZSBhbGwgQVNTRVJUX05PVF9SRUFDSEVEKCkuCisg
ICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6
QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJy
aWRlOworICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRl
c3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVy
cmlkZTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29y
bmVyID0gdHJ1ZTsKKworcHJvdGVjdGVkOgorICAgIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+JiYpOworCisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29u
dGV4dDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VE
X0lNQUdFX0JVRkZFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggODY2YjY0NWI5
YjBhN2JmNTFhMzE5N2IzNTM5YWJiMWQ3YTBlZWIxZi4uNzUyM2NiNzliODlhMzI0MjUxYjFjODgz
MmYzZWI1MDZiYjhlOGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTU1LDYg
KzU1LDkgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewogICAgICAg
ICBJT1N1cmZhY2UsCiAgICAgICAgIEJpdG1hcCwKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNU
X0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAgICAgIENHRGlzcGxheUxpc3QsCisjZW5kaWYKICAg
ICB9OwogCiAgICAgdm9pZCBlbnN1cmVCYWNraW5nU3RvcmUoVHlwZSwgV2ViQ29yZTo6RmxvYXRT
aXplLCBmbG9hdCBzY2FsZSwgYm9vbCBkZWVwQ29sb3IsIGJvb2wgaXNPcGFxdWUpOwpAQCAtMTAz
LDYgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZSgpOwogICAg
IHZvaWQgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOwogCisgICAgYm9vbCBzdXBwb3J0c1BhcnRp
YWxSZXBhaW50KCk7CisKICAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNv
bnN0OwogCiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOwpAQCAtMTQ2LDkgKzE1
MSwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlPiB7CiAgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
VHlwZSwKLSAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6SU9T
dXJmYWNlLAotICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpC
aXRtYXAKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZQorICAg
ICAgICAsIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OklPU3VyZmFjZQor
ICAgICAgICAsIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcAor
I2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICAgICAg
LCBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpDR0Rpc3BsYXlMaXN0Cisj
ZW5kaWYKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDkw
M2QzZTA5NTNiYmU5MGVmYjI4YWZkOWMwMmEwNTQ1ODI0MDg1YjEuLmY1MmIwNzUwMmQ1OGRhN2Ez
MmViMjY0ZTU5MTk4NzA2OGFjYmQ2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0K
QEAgLTEsNSArMSw1IEBACiAgLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjcsMTEgKzI3LDEzIEBACiAjaW1wb3J0ICJSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5o
IgogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVycy5oIgorI2ltcG9ydCAiQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5oIgogI2ltcG9ydCAiTWFjaFBvcnQuaCIKICNpbXBvcnQgIlBsYXRm
b3JtQ0FMYXllclJlbW90ZS5oIgogI2ltcG9ydCAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCIKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJl
ZUxheWVycy5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKQEAgLTExNSw2ICsxMTcs
MTEgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKICAgICAgICAgY2FzZSBUeXBlOjpCaXRtYXA6CiAgICAgICAgICAgICBo
YW5kbGUgPSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNr
ZW5kJj4oKm1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkp
LmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpOwogICAgICAgICAgICAgYnJlYWs7Cisj
aWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAgICAgICBj
YXNlIFR5cGU6OkNHRGlzcGxheUxpc3Q6CisgICAgICAgICAgICBoYW5kbGUgPSBzdGF0aWNfY2Fz
dDxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kJj4oKm1fZnJvbnRCdWZmZXIuaW1hZ2VC
dWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpLmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZSgpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KIApA
QCAtMjA5LDkgKzIxNiwyOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9W
YWxpZEZyb250QnVmZmVyKCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9mcm9udEJ1ZmZl
ci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRl
ZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0
cik7CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lN
QUdFX0JVRkZFUikKKyAgICBjYXNlIFR5cGU6OkNHRGlzcGxheUxpc3Q6CisgICAgICAgIG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIp
OworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIH0KIH0KIAorYm9vbCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpCit7CisgICAgc3dpdGNoIChtX3R5
cGUpIHsKKyAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKKyAgICBjYXNlIFR5cGU6OkJpdG1hcDoK
KyAgICAgICAgcmV0dXJuIHRydWU7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURf
SU1BR0VfQlVGRkVSKQorICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogewogICAgIEFTU0VSVCghbV9mcm9u
dEJ1ZmZlckZsdXNoZXIpOwpAQCAtMjI5LDcgKzI1Niw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmRpc3BsYXkoKQogICAgICAgICByZXR1cm4gbmVlZFRvRW5jb2RlQmFja2luZ1N0
b3JlOwogCiAgICAgV2ViQ29yZTo6SW50UmVjdCBsYXllckJvdW5kcyhXZWJDb3JlOjpJbnRQb2lu
dCgpLCBXZWJDb3JlOjpleHBhbmRlZEludFNpemUobV9zaXplKSk7Ci0gICAgaWYgKCFoYXNGcm9u
dEJ1ZmZlcigpKQorICAgIGlmICghaGFzRnJvbnRCdWZmZXIoKSB8fCAhc3VwcG9ydHNQYXJ0aWFs
UmVwYWludCgpKQogICAgICAgICBtX2RpcnR5UmVnaW9uLnVuaXRlKGxheWVyQm91bmRzKTsKIAog
ICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50
ZXIobV9sYXllcikpIHsKQEAgLTM1NCwyNCArMzgxLDM3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXllciwgTGF5ZXJD
b250CiAgICAgQVNTRVJUKG1fYnVmZmVySGFuZGxlKTsKICAgICBsYXllci5jb250ZW50c09wYXF1
ZSA9IG1faXNPcGFxdWU7CiAKLSAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgVHlwZTo6
SU9TdXJmYWNlOgotICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewotICAgICAgICBjYXNl
IExheWVyQ29udGVudHNUeXBlOjpJT1N1cmZhY2U6IHsKLSAgICAgICAgICAgIGF1dG8gc3VyZmFj
ZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6
Z2V0PE1hY2hTZW5kUmlnaHQ+KCptX2J1ZmZlckhhbmRsZSkpLCBXZWJDb3JlOjpzUkdCQ29sb3JT
cGFjZVJlZigpKTsKLSAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZh
Y2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOwotICAgICAgICAgICAgYnJlYWs7CisgICAgV1RG
Ojpzd2l0Y2hPbigqbV9idWZmZXJIYW5kbGUsCisgICAgICAgIFsmXSAoTWFjaFNlbmRSaWdodCYg
bWFjaFNlbmRSaWdodCkgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpJT1N1
cmZhY2UpOworICAgICAgICAgICAgc3dpdGNoIChjb250ZW50c1R5cGUpIHsKKyAgICAgICAgICAg
IGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZTogeworICAgICAgICAgICAgICAgIGF1
dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZN
b3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAg
ICAgICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29u
dGVudHMoKSA6IG5pbDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OkNBTWFjaFBvcnQ6CisgICAgICAgICAg
ICAgICAgbGF5ZXIuY29udGVudHMgPSAoX19icmlkZ2UgaWQpYWRvcHRDRihDQU1hY2hQb3J0Q3Jl
YXRlKG1hY2hTZW5kUmlnaHQubGVha1NlbmRSaWdodCgpKSkuZ2V0KCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIFsmXSAoU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlOjpCaXRtYXApOworICAgICAgICAgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZShoYW5kbGUpOworICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSAoX19icmlk
Z2UgaWQpYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIExheWVyQ29udGVudHNUeXBlOjpDQU1hY2hQb3J0OgotICAgICAgICAgICAgbGF5ZXIu
Y29udGVudHMgPSAoX19icmlkZ2UgaWQpYWRvcHRDRihDQU1hY2hQb3J0Q3JlYXRlKFdURjo6Z2V0
PE1hY2hTZW5kUmlnaHQ+KCptX2J1ZmZlckhhbmRsZSkubGVha1NlbmRSaWdodCgpKSkuZ2V0KCk7
Ci0gICAgICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9J
TUFHRV9CVUZGRVIpCisgICAgICAgICwgWyZdIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGJ1ZmZl
cikgeworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpDR0Rpc3BsYXlMaXN0KTsK
KyAgICAgICAgICAgIEFTU0VSVChbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV0tDb21wb3NpdGluZ0xh
eWVyIGNsYXNzXV0pOworICAgICAgICAgICAgaWYgKCFbbGF5ZXIgaXNLaW5kT2ZDbGFzczpbV0tD
b21wb3NpdGluZ0xheWVyIGNsYXNzXV0pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgW2xheWVyIHNldFZhbHVlOkAxIGZvcktleVBhdGg6V0tDR0Rpc3BsYXlMaXN0RW5hYmxl
ZEtleV07CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBidWZmZXIuYnVmZmVyKCktPmNyZWF0ZUNG
RGF0YSgpOworICAgICAgICAgICAgWyhXS0NvbXBvc2l0aW5nTGF5ZXIgKilsYXllciBfc2V0V0tD
b250ZW50c0Rpc3BsYXlMaXN0OmRhdGEuZ2V0KCldOwogICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgVHlwZTo6Qml0bWFwOgotICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKFdURjo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPigqbV9idWZm
ZXJIYW5kbGUpKTsKLSAgICAgICAgbGF5ZXIuY29udGVudHMgPSAoX19icmlkZ2UgaWQpYml0bWFw
LT5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQorI2VuZGlm
CisgICAgKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1
ZmZlckZsdXNoZXI+IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp0YWtlUGVuZGluZ0ZsdXNoZXIo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDlhMjNjNDZiMGYxZmZkNWYzN2U3ZGU1MmEwZTdh
N2NiNTY0NDA2Y2QuLjU3NzE1OGFhZTZhYWVhOWRmNWY5M2JkZjQ1ODhkYzAwYTRkNjk4ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTU0MCw2ICs1NDAsOCBAQCBVSVByb2Nlc3MvUGx1Z2lu
cy9tYWMvUGx1Z2luSW5mb1N0b3JlTWFjLm1tCiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2lu
UHJvY2Vzc01hbmFnZXJNYWMubW0KIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNz
UHJveHlNYWMubW0KIAorVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXll
clRyZWVMYXllcnMubW0KKwogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsZXJN
YWMubW0KIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvbWFjL1Njcm9sbGVyUGFpck1hYy5tbQog
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZVJlbW90ZU1hYy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KaW5kZXggNGZkNGVh
MjY5ZThjYzFiZGZmYjJlYjI1OTdkNGY3NTBkODQyNDA2NC4uMDMxODRjNGZhMDAxODk4OTM5Nzdh
YjMxYWViMjBjNGM0ZmZhZTlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0KQEAgLTI2
LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
Tm9kZS5oIgogCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVMYXllcnMuaCIKICNpbXBvcnQgPFF1
YXJ0ekNvcmUvQ0FMYXllci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJBY3Rpb25EaXNhYmxpbmdD
QUxheWVyRGVsZWdhdGUuaD4KIApAQCAtMzMsMTYgKzM0LDYgQEAKICNpbXBvcnQgPFVJS2l0L1VJ
Vmlldy5oPgogI2VuZGlmCiAKLUBpbnRlcmZhY2UgV0tQbGFpblJlbW90ZUxheWVyIDogQ0FMYXll
cgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tQbGFpblJlbW90ZUxheWVyCi0tIChOU1N0cmlu
ZyAqKWRlc2NyaXB0aW9uCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlTm9k
ZTo6YXBwZW5kTGF5ZXJEZXNjcmlwdGlvbihzdXBlci5kZXNjcmlwdGlvbiwgc2VsZik7Ci19Ci1A
ZW5kCi0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdGF0aWMgTlNTdHJpbmcgKmNvbnN0IFdLUmVt
b3RlTGF5ZXJUcmVlTm9kZVByb3BlcnR5S2V5ID0gQCJXS1JlbW90ZUxheWVyVHJlZU5vZGUiOwpA
QCAtNzIsNyArNjMsNyBAQCBSZW1vdGVMYXllclRyZWVOb2RlOjp+UmVtb3RlTGF5ZXJUcmVlTm9k
ZSgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXllclRyZWVOb2RlPiBSZW1vdGVMYXllclRy
ZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0
Zm9ybUxheWVySUQgbGF5ZXJJRCkKIHsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIgPSBh
ZG9wdE5TKFtbV0tQbGFpblJlbW90ZUxheWVyIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRy
PENBTGF5ZXI+IGxheWVyID0gYWRvcHROUyhbW1dLQ29tcG9zaXRpbmdMYXllciBhbGxvY10gaW5p
dF0pOwogICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZUxheWVyVHJlZU5vZGU+KGxheWVySUQs
IFdURk1vdmUobGF5ZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxh
eWVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMwZjZhZWI3M2VlODQxZTkxYTQ5OTkyY2JjY2UzZDJhMWRjOWMx
NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmgKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZiBQTEFURk9STShDT0NPQSkKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKworQGludGVyZmFj
ZSBXS0NvbXBvc2l0aW5nTGF5ZXIgOiBDQUxheWVyCisKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9M
SVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCBz
ZXR0ZXI9X3NldFdLQ29udGVudHNEaXNwbGF5TGlzdDopX19hdHRyaWJ1dGVfXygoTlNPYmplY3Qp
KSBDRkRhdGFSZWYgX3drQ29udGVudHNEaXNwbGF5TGlzdDsKKyNlbmRpZgorCitAZW5kCisKKyNl
bmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXllcnMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVl
TGF5ZXJzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMzhhYTEwYzI0N2Y2OGQ3ZDUyYjMwZDNiY2I5YjhkNGM1
N2VjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1tCkBAIC0wLDAgKzEsNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJl
ZUxheWVycy5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIK
KyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZU5vZGUuaCIKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
UXVhcnR6Q29yZVNQSS5oPgorCisjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1B
R0VfQlVGRkVSKQorI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25zL0NHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckFkZGl0aW9ucy5oPgorI2VuZGlmCisKK0BpbXBsZW1lbnRhdGlvbiBXS0NvbXBvc2l0aW5n
TGF5ZXIgeworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikK
KyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBfY29udGVudHNEaXNwbGF5TGlzdDsKKyNlbmRpZgor
fQorCistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlTm9kZTo6YXBwZW5kTGF5ZXJEZXNjcmlwdGlvbihzdXBlci5kZXNjcmlwdGlv
biwgc2VsZik7Cit9CisKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9C
VUZGRVIpCistICh2b2lkKV9zZXRXS0NvbnRlbnRzRGlzcGxheUxpc3Q6KENGRGF0YVJlZilkYXRh
Cit7CisgICAgX2NvbnRlbnRzRGlzcGxheUxpc3QgPSBkYXRhOworICAgIFtzZWxmIHNldE5lZWRz
RGlzcGxheV07Cit9CisKKy0gKENGRGF0YVJlZilfd2tDb250ZW50c0Rpc3BsYXlMaXN0Cit7Cisg
ICAgcmV0dXJuIF9jb250ZW50c0Rpc3BsYXlMaXN0LmdldCgpOworfQorCistICh2b2lkKWRyYXdJ
bkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0Cit7CisgICAgaWYgKCFfY29udGVudHNEaXNw
bGF5TGlzdCkKKyAgICAgICAgcmV0dXJuOworICAgIFdLQ0dDb250ZXh0RHJhd0NHQ29tbWFuZHNF
bmNvZGVkRGF0YShjb250ZXh0LCBfY29udGVudHNEaXNwbGF5TGlzdC5nZXQoKSwgbnVsbHB0cik7
Cit9CisjZW5kaWYgLy8gRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVS
KQorCitAZW5kCisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmll
d3MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90
ZUxheWVyVHJlZVZpZXdzLm1tCmluZGV4IGE4ZmE2ZmY2ZmEyYWQwZTdjNGE0YzM1M2ZhYTdlYTZh
OGEyZDUyMzcuLmQ4ODNhNWIzNzM0OGVmNjJkMzFhM2ZkMTRhMjgzZWZlYjFkOTRhODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3Rl
TGF5ZXJUcmVlVmlld3MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVIb3N0LmgiCisjaW1w
b3J0ICJSZW1vdGVMYXllclRyZWVMYXllcnMuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZU5v
ZGUuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS0RlZmVycmluZ0dlc3R1cmVS
ZWNvZ25pemVyLmgiCkBAIC0zMTMsNiArMzE0LDExIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdLQ29tcG9zaXRpbmdWaWV3CiAKKysgKENsYXNzKWxheWVyQ2xhc3MKK3sKKyAgICByZXR1cm4g
W1dLQ29tcG9zaXRpbmdMYXllciBjbGFzc107Cit9CisKIC0gKFVJVmlldyAqKWhpdFRlc3Q6KENH
UG9pbnQpcG9pbnQgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKIHsKICAgICByZXR1cm4gW3Nl
bGYgX3dlYl9maW5kRGVzY2VuZGFudFZpZXdBdFBvaW50OnBvaW50IHdpdGhFdmVudDpldmVudF07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjY2YzZGVmYTA2YWNhNjc2YTE1MzRmNDIyOTQ4ODIzZGI2NjE3NmRiLi42MmE5OGFkM2Y3NzZk
YWNmMzM4MmYyZjY5NTE4MWY4YWQ1MzhiZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY2Nyw2ICs2NjcsNyBAQAogCQkyRDU0QzMx
QTIxMkYzQjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTYxLW1tLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1NEMzMDYyMTJGM0IzMzAwNDlDMTc0
IC8qIFVuaWZpZWRTb3VyY2U2MS1tbS5tbSAqLzsgfTsKIAkJMkQ1NEMzMUIyMTJGNERBNjAwNDlD
MTc0IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUUxMTdGNTExREJCMzA5MDA5ODE2MTUgLyogUHJvY2Vzc0xhdW5j
aGVyLmNwcCAqLzsgfTsKIAkJMkQ1QzlEMDYxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDVD
OUQwNDE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCAqLzsgfTsKKwkJMkQ2NDgy
NEIyNjQ0QjFBQjAwMDMwMzM1IC8qIFJlbW90ZUxheWVyVHJlZUxheWVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2NDgyNDkyNjQ0QjFBQjAwMDMw
MzM1IC8qIFJlbW90ZUxheWVyVHJlZUxheWVycy5oICovOyB9OwogCQkyRDZBQjU0MTE5MkIxQzRB
MDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZBQjUzRjE5MkIxQzRBMDAzQTlGRDEgLyog
V0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggKi87IH07CiAJCTJENkIzNzFCMThBOTY3QUQwMDQy
QUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDZCMzcxOTE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWls
Vmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJENkNEMTE5MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2Q0QxMTcxODkwNThBNTAw
RTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggKi87IH07CkBAIC0xODI3LDYgKzE4MjgsOCBA
QAogCQlCQ0U0Njk1NDEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNDY5NTAxMjE0RTZDQjAw
MEI5OEVCIC8qIFdlYkZvcm1DbGllbnQuaCAqLzsgfTsKIAkJQkNFNDY5NTYxMjE0RTZDQjAwMEI5
OEVCIC8qIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNDY5NTIxMjE0RTZDQjAwMEI5OEVCIC8q
IFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oICovOyB9OwogCQlCQ0U0Njk1QTEyMTRF
REY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U0Njk1ODEyMTRFREY0MDAwQjk4RUIg
LyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkNFNTc5QTYyNjM0ODM2NzAwRjVDNUU5IC8qIENHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTU3OUE0MjYzNDgzNjcwMEY1QzVFOSAvKiBDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IH07CisJCUJDRTU3OUE3MjYzNDgzNjcwMEY1QzVF
OSAvKiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTU3OUE1MjYzNDgzNjcwMEY1QzVFOSAv
KiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLzsgfTsKIAkJQkNFODFEOEQx
MzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U4MUQ4QjEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8u
aCAqLzsgfTsKIAkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0VFN0FDQzEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJQkNFRTdBRDExMjgxNzk4ODAwOTgyN0RBIC8qIFdlYlBy
b2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VFN0FDRDEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCAqLzsgfTsKQEAgLTMyMjUsNiArMzIyOCw4IEBACiAJCTJENTRDMzA2MjEyRjNCMzMw
MDQ5QzE3NCAvKiBVbmlmaWVkU291cmNlNjEtbW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSAi
VW5pZmllZFNvdXJjZTYxLW1tLm1tIjsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy9XZWJLaXQyL3Vu
aWZpZWQtc291cmNlcy9VbmlmaWVkU291cmNlNjEtbW0ubW0iOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQkyRDVDOUQwMzE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92
ZXJsYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGFnZU92
ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDVDOUQwNDE5QzgxRDhG
MDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ2
NDgyNDkyNjQ0QjFBQjAwMDMwMzM1IC8qIFJlbW90ZUxheWVyVHJlZUxheWVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllclRyZWVMYXllcnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ2NDgyNEEyNjQ0QjFBQjAwMDMwMzM1IC8qIFJlbW90
ZUxheWVyVHJlZUxheWVycy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlbW90ZUxheWVyVHJlZUxheWVycy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ2QUI1M0YxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0
b3IuaDsgcGF0aCA9IGlvcy9XS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2QUI1NDAxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51
bWJlckluZGljYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdLUERGUGFnZU51bWJlckluZGljYXRvci5tbTsgcGF0aCA9IGlvcy9XS1BERlBhZ2VOdW1iZXJJ
bmRpY2F0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkIzNzE5MThBOTY3
QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS1RodW1ibmFpbFZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU1MDYsNiArNTUxMSw4IEBACiAJCUJDRTQ2OTUyMTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJG
b3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRTQ2OTU3MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9u
TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tGb3Jt
U3VibWlzc2lvbkxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNF
NDY5NTgxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFNTc5QTQyNjM0ODM2NzAwRjVDNUU5IC8q
IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQ0U1NzlBNTI2MzQ4MzY3MDBGNUM1RTkgLyogQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFODFEOEExMzE5RjdFRjAw
MjQxOTEwIC8qIEZvbnRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZvbnRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFODFEOEIx
MzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZvbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTlDMENG
MTQ4NTk2NUQwMEUzM0Q2MSAvKiBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyODcsNiArNzI5NCw3IEBACiAJCTJE
MTU1MUE5MUY1QTlCNDIwMDA2RTNGRSAvKiBSZW1vdGVMYXllclRyZWUgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTJENjQ4MjQ4MjY0NEIxQUIwMDAzMDMz
NSAvKiBjb2NvYSAqLywKIAkJCQkyRDE1NTFBQTFGNUE5QkE3MDAwNkUzRkUgLyogaW9zICovLAog
CQkJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBEQiAvKiBtYWMgKi8sCiAJCQkJMUFCMTZBRTAxNjQ4
NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCAqLywKQEAg
LTczNTQsNiArNzM2Miw4IEBACiAJCTJEMkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAvKiBSZW1vdGVM
YXllclRyZWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUJDRTU3OUE1MjYzNDgzNjcwMEY1QzVFOSAvKiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcCAqLywKKwkJCQlCQ0U1NzlBNDI2MzQ4MzY3MDBGNUM1RTkgLyogQ0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZC5oICovLAogCQkJCTJENDdCNTZCMTgxMDcxNEUwMDNBM0FFRSAv
KiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oICovLAogCQkJCTJENDdCNTZBMTgxMDcxNEUwMDNB
M0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSAqLywKIAkJCQkyRERGNzMxMzE4RTk1
MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggKi8sCkBA
IC03MzcxLDYgKzczODEsMTUgQEAKIAkJCXBhdGggPSBSZW1vdGVMYXllclRyZWU7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkyRDY0ODI0ODI2NDRCMUFCMDAwMzAzMzUgLyog
Y29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTJE
NjQ4MjQ5MjY0NEIxQUIwMDAzMDMzNSAvKiBSZW1vdGVMYXllclRyZWVMYXllcnMuaCAqLywKKwkJ
CQkyRDY0ODI0QTI2NDRCMUFCMDAwMzAzMzUgLyogUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1tICov
LAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTJEN0RFQkUyMjEyNjlFNEIwMEI5RjczQyAvKiB1bmlmaWVkLXNvdXJjZXMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTE4NjYsNiArMTE4ODUs
NyBAQAogCQkJCTQxODk3RUQ4MUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxRkFCRDJBMUY0REUwMDEwMDZBNkM5NyAvKiBDYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE4OTdFREExRjQxNUQ4QTAw
MTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUJDRTU3OUE2MjYzNDgzNjcwMEY1QzVFOSAvKiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I0QjQ2MDIwQjUwNEFDMDBENEFENzkgLyog
Q2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRjRGRTBBM0IyNDYzMkI2MDAwMjYzMUUxIC8qIENvY29hQ29sb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ0ODI3MzQ3MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUltYWdlLmggaW4g
SGVhZGVycyAqLywKQEAgLTEyMjAzLDYgKzEyMjIzLDcgQEAKIAkJCQkxQUIxNkFFMjE2NDg2NTZE
MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGMjRBMkUxODc5RTRCQzAwM0FCRjBDIC8qIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBM0Q3NUMxNjUxQjQ0
RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTJE
NjQ4MjRCMjY0NEIxQUIwMDAzMDMzNSAvKiBSZW1vdGVMYXllclRyZWVMYXllcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUU0RTU3RjZCMjFBODNCMTIwMDM0NUYzQyAvKiBSZW1vdGVMYXllclRyZWVO
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERFMEFGQTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYyNjRB
MDFBMUZGOUNDMDAxRkU3NTkgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VE
YXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MDg3LDYgKzE0MTA4LDcgQEAKIAkJCQk1MUZBRUMz
QjFCMDY1NzY4MDAwOUM0RTcgLyogQXV4aWxpYXJ5UHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4NTIxMkI2QUIxMDBGNDkzRkQgLyogQmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkNFNTc5QTcyNjM0ODM2NzAw
RjVDNUU5IC8qIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMkQ5MkE3N0QyMTJCNkE3MTAwRjQ5M0ZEIC8qIENvbm5lY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5MkE3N0YyMTJCNkE3MTAwRjQ5M0ZEIC8qIERlY29kZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDlEQUEzOEMyNENCQTFBODAwNzkzRDc1IC8qIERlZmF1bHRXZWJC
cm93c2VyQ2hlY2tzLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUuaAppbmRleCA0MDJjMjhhNDBlODI2MzllNTQzMjIwZWY5MTA3OGQ5YjFjOTRkMzRiLi44ODc4
ZjY2YzBmZDhmYmE5M2U5OGVkZjdkYjhmN2JhNzA5NDYyYTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCkBAIC0zNSw5ICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcg
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlID0gVmFyaWFudDwKICNpZiBQTEFURk9STShDT0NPQSkg
Ly8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IGFib3V0IElPU3VyZmFjZS4KLSAgICBNYWNoU2VuZFJp
Z2h0LAorICAgIE1hY2hTZW5kUmlnaHQKKyNlbmRpZgorICAgICwgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisg
ICAgLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKICNlbmRpZgotICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlCiA+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggMWM5NzY1OTlkZjUzNTJiZjhhMDIz
ZTkyNjQwOTEzOWQ1YmMyNzBkOC4uNmY0MDY2YzM2ZDRkNDY0MGYyMjMyOTc5ZjhmODA4ODEzMDAy
NzAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5j
cHAKQEAgLTIzNCw2ICsyMzQsMTAgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnVwZGF0
ZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRh
Y2hlZCk7CiAKICAgICBhdXRvIHR5cGUgPSBtX2FjY2VsZXJhdGVzRHJhd2luZyA/IFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpUeXBlOjpJT1N1cmZhY2UgOiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6VHlwZTo6Qml0bWFwOworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdF
X0JVRkZFUikKKyAgICBpZiAobV9jb250ZXh0LT51c2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJlbmRl
cmluZygpKQorICAgICAgICB0eXBlID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkNH
RGlzcGxheUxpc3Q7CisjZW5kaWYKICAgICBtX3Byb3BlcnRpZXMuYmFja2luZ1N0b3JlLT5lbnN1
cmVCYWNraW5nU3RvcmUodHlwZSwgbV9wcm9wZXJ0aWVzLmJvdW5kcy5zaXplKCksIG1fcHJvcGVy
dGllcy5jb250ZW50c1NjYWxlLCBtX3dhbnRzRGVlcENvbG9yQmFja2luZ1N0b3JlLCBtX3Byb3Bl
cnRpZXMub3BhcXVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVDb250ZXh0LmgKaW5kZXggNzAyYzY3OWZmYmMxNjg3YzQzMDE3ODQyMjhiNGUzN2E2ZjU2Y2Mx
MS4uNjIzOTc5N2Y1NGE1NzQyMzY0NDJmZDY5YzlkZGUwMmI0YTA3NGUwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCkBAIC04MCw2ICs4MCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkb3B0TGF5ZXJzRnJvbUNvbnRleHQoUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCYpOwogCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBlbnN1cmVSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKKworICAgIGJvb2wgdXNlQ0dEaXNwbGF5TGlzdHNG
b3JET01SZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiBtX3VzZUNHRGlzcGxheUxpc3RzRm9yRE9N
UmVuZGVyaW5nOyB9CisgICAgdm9pZCBzZXRVc2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJlbmRlcmlu
Zyhib29sIHVzZUNHRGlzcGxheUxpc3RzKSB7IG1fdXNlQ0dEaXNwbGF5TGlzdHNGb3JET01SZW5k
ZXJpbmcgPSB1c2VDR0Rpc3BsYXlMaXN0czsgfQogICAgIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQoKSBjb25zdDsKQEAgLTEwNiw2ICsxMDks
OCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkxheWVyUG9vbCBtX2xheWVyUG9vbDsKICAgICAK
ICAgICBib29sIG1fbmV4dFJlbmRlcmluZ1VwZGF0ZVJlcXVpcmVzU3luY2hyb25vdXNJbWFnZURl
Y29kaW5nIHsgZmFsc2UgfTsKKworICAgIGJvb2wgbV91c2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJl
bmRlcmluZyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA2
ZjM1NjVhOTA4YWFjYzJkNTg3MmEyMjBjZGY0ZjM1Mzc5YWQ5OGExLi45ZjM1ZWFiMTEyZjUzODU1
ZGE3NzRlYTgyZmYxYTEwMzM1YTA3YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0
ICJXZWJQYWdlLmgiCiAjaW1wb3J0ICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW1w
b3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlz
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGVidWdQYWdlT3ZlcmxheXMuaD4KQEAgLTE2MSw3ICsx
NjIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpzaG91bGRVc2VUaWxlZEJh
Y2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaQogICAgIHJldHVybiBmcmFtZVZpZXcuZnJh
bWUoKS5pc01haW5GcmFtZSgpIHx8IG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLmFz
eW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkKCk7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQor
dm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgcHJlZmVyZW5jZXMpCiB7CiAgICAgU2V0dGluZ3MmIHNldHRp
bmdzID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCk7CiAKQEAgLTE3MSw2ICsxNzIs
OCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRhdGVQcmVmZXJlbmNlcyhj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikKIAogICAgIG1fcm9vdExheWVyLT5zZXRTaG93RGVi
dWdCb3JkZXIoc2V0dGluZ3Muc2hvd0RlYnVnQm9yZGVycygpKTsKIAorICAgIG1fcmVtb3RlTGF5
ZXJUcmVlQ29udGV4dC0+c2V0VXNlQ0dEaXNwbGF5TGlzdHNGb3JET01SZW5kZXJpbmcocHJlZmVy
ZW5jZXMuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp1c2VDR0Rpc3BsYXlM
aXN0c0ZvckRPTVJlbmRlcmluZ0tleSgpKSk7CisKICAgICBEZWJ1Z1BhZ2VPdmVybGF5czo6c2V0
dGluZ3NDaGFuZ2VkKCptX3dlYlBhZ2UuY29yZVBhZ2UoKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427988</attachid>
            <date>2021-05-07 03:44:21 -0700</date>
            <delta_ts>2021-05-07 12:06:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225508-20210507034420.patch</filename>
            <type>text/plain</type>
            <size>43904</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExZTlkZmQxYTgzNzdjMDc4NmU3MGEz
ZTkxZjA0ZGRjYzEyOTk3MjYuLjY3ZjA3ZWEzZTk5YTJlZDlmY2Y0MzZhNmRkMWNkNWU4YjliNGUy
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBhbHRlcm5h
dGl2ZSBkaXNwbGF5LWxpc3QtYmFzZWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisKIDIwMjEt
MDUtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFNhbXBs
ZWQgUGFnZSBUb3AgQ29sb3I6IHRha2UgYWRkaXRpb25hbCBzbmFwc2hvdHMgZnVydGhlciBkb3du
IHRoZSBwYWdlIHRvIHNlZSBpZiB0aGUgc2FtcGxlZCB0b3AgY29sb3IgaXMgbW9yZSB0aGFuIGp1
c3QgYSB0aW55IHN0cmlwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjMmRhNTQyNmFjNzgxZDA3YjFmNGZkMjZiOGEy
N2MyYjYwZGMxM2QuLjUzNWJhNGQ1ZTc3NTQyNzBhZTFiZTBmYWIwNjJlMTg1YWU0ZDk3MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjEtMDUtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBhbHRlcm5h
dGl2ZSBkaXNwbGF5LWxpc3QtYmFzZWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tl
bmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKToK
KyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJhY2tlbmRTaXplIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Ynl0ZXNQ
ZXJSb3cgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjp0b0JHUkFEYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0SW1hZ2VEYXRhIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6cHV0
SW1hZ2VEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuaDogQWRkZWQuCisgICAgICAgIEFkZCBhbiBJbWFnZUJ1ZmZl
ciBiYWNrZW5kIGJhY2tlZCBieSBhIENHIGRpc3BsYXkgbGlzdC4KKworICAgICAgICAqIFNoYXJl
ZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgQWRk
IGEgbmV3IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHR5cGUgdGhhdCB1c2VzIENHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCk6CisgICAg
ICAgIERpc2FibGUgcGFydGlhbCByZXBhaW50IGlmIHVzaW5nIGRpc3BsYXktbGlzdC1iYXNlZCBi
YWNraW5nIHN0b3JlLAorICAgICAgICBiZWNhdXNlIHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGFu
eSB3YXkgdG8gbXV0YXRlIGRpc3BsYXkgbGlzdHMuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKToKKyAgICAgICAgV2hlbiBh
cHBseWluZyBhIGRpc3BsYXktbGlzdC1iYXNlZCBiYWNraW5nIHN0b3JlIHRvIGEgbGF5ZXIsIHdl
IGp1c3QKKyAgICAgICAgcGFzcyB0aGUgZW5jb2RlZGUgZGF0YSBkaXJlY3RseSB0byB0aGUgbGF5
ZXIsIGFuZCB0ZWxsIGl0IHRvIHVzZSB0aGUKKyAgICAgICAgZGlzcGxheSBsaXN0IHRvIHJlbmRl
ci4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVOb2RlLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVOb2RlOjpjcmVhdGVXaXRoUGxhaW5MYXllcik6CisgICAgICAgICgtW1dL
UGxhaW5SZW1vdGVMYXllciBkZXNjcmlwdGlvbl0pOiBEZWxldGVkLgorICAgICAgICBNb3ZlIFdL
UGxhaW5SZW1vdGVMYXllciB0byBSZW1vdGVMYXllclRyZWVMYXllcnMsIGFuZCByZW5hbWUgaXQg
dG8gV0tDb21wb3NpdGluZ0xheWVyLgorICAgICAgICBJdCB3aWxsIG5vdyBiYWNrIGFsbCBXS0Nv
bXBvc2l0aW5nVmlld3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2Nv
Y29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbTogQWRkZWQuCisg
ICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBkZXNjcmlwdGlvbl0pOgorICAgICAgICAoLVtX
S0NvbXBvc2l0aW5nTGF5ZXIgX3NldFdLQ29udGVudHNEaXNwbGF5TGlzdDpdKToKKyAgICAgICAg
KC1bV0tDb21wb3NpdGluZ0xheWVyIF93a0NvbnRlbnRzRGlzcGxheUxpc3RdKToKKyAgICAgICAg
KC1bV0tDb21wb3NpdGluZ0xheWVyIGRyYXdJbkNvbnRleHQ6XSk6CisgICAgICAgIE1ha2UgV0tD
b21wb3NpdGluZ0xheWVyIHJlcGxheSB0aGUgZ2l2ZW4gZGlzcGxheSBsaXN0IGluIGRyYXdSZWN0
CisgICAgICAgIChqdXN0IGJlY2F1c2Ugd2UncmUgY3VycmVudGx5IG1pc3NpbmcgQVBJIHRvIGFj
dHVhbGx5IGRpcmVjdGx5IHBhc3MKKyAgICAgICAgdGhlIGVuY29kZWQgZGlzcGxheSBsaXN0IGRh
dGEgdG8gQ0EpLgorCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVt
b3RlTGF5ZXJUcmVlVmlld3MubW06CisgICAgICAgICgrW1dLQ29tcG9zaXRpbmdWaWV3IGxheWVy
Q2xhc3NdKToKKyAgICAgICAgVXNlIFdLQ29tcG9zaXRpbmdMYXllciBhcyB0aGUgbGF5ZXIgY2xh
c3MgZm9yIGFsbCBXS0NvbXBvc2l0aW5nVmlld3MuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dXBkYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRl
eHQuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6dXNlQ0dEaXNw
bGF5TGlzdHNGb3JET01SZW5kZXJpbmcgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVDb250ZXh0OjpzZXRVc2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJlbmRlcmluZyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgUGx1bWIgdGhlIGludGVybmFsIGZl
YXR1cmUgZmxhZyBmcm9tIFdlYlByZWZlcmVuY2VzIHRvIFJlbW90ZUxheWVyVHJlZUNvbnRleHQK
KyAgICAgICAgdG8gUGxhdGZvcm1DQUxheWVyUmVtb3RlIHRvIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOyBpZiB0aGUgcHJlZmVyZW5jZSBpcworICAgICAgICBvbiBhbmQgdGhlIGZlYXR1cmUgaXMg
YXZhaWxhYmxlLCB3ZSdsbCBhbHdheXMgcHJlZmVyIGRpc3BsYXktbGlzdCBiYWNrZWQKKyAgICAg
ICAgc3VyZmFjZXMgb3ZlciBlaXRoZXIgb2YgdGhlIGJpdG1hcCB0eXBlcy4KKwogMjAyMS0wNS0w
NSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgU2FtcGxlZCBQ
YWdlIFRvcCBDb2xvcjogdGllIGludG8gZXhpc3RpbmcgVENBREEvUkxUVCBzeXN0ZW1zIHNvIHRo
YXQgdGhlIHZhbHVlIGlzIGtlcHQgaW4gc3luYyB3aXRoIHBhaW50aW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1s
IGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbAppbmRleCA5MzU3ZWU5ZDhmMzQ0YTAzYmNiOGNhMDBiZTJhZjJkMzQ5ZTZmYWExLi5iNTk4
YWE2YTA0ODMyYTcwZjk3OGRhMjkwOTFhMjlhZTdhYjg5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBi
L1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlh
bWwKQEAgLTczOCw2ICs3MzgsMTcgQEAgVXBncmFkZUtub3duSG9zdHNUb0hUVFBTRW5hYmxlZDoK
ICAgICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0OiB0cnVlCiAKK1VzZUNHRGlzcGxheUxpc3RzRm9y
RE9NUmVuZGVyaW5nOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiVXNlIENH
IERpc3BsYXkgTGlzdHMgZm9yIERPTSByZW5kZXJpbmciCisgIGh1bWFuUmVhZGFibGVEZXNjcmlw
dGlvbjogIlVzZSBDRyBEaXNwbGF5IExpc3RzIGZvciBET00gcmVuZGVyaW5nIgorICB3ZWJjb3Jl
QmluZGluZzogbm9uZQorICBjb25kaXRpb246IEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VE
X0lNQUdFX0JVRkZFUikKKyAgZXhwb3NlZDogWyBXZWJLaXQgXQorICBkZWZhdWx0VmFsdWU6Cisg
ICAgV2ViS2l0OgorICAgICAgZGVmYXVsdDogZmFsc2UKKwogVXNlR1BVUHJvY2Vzc0ZvckRPTVJl
bmRlcmluZ0VuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJHUFUg
UHJvY2VzczogRE9NIFJlbmRlcmluZyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NWM1M2E2MmY2NzhiZWFlMjQ1YzZkYjNlYjdmYTNk
NzgyMmFiMzYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0wLDAgKzEs
MTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCIKKworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJ
U1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKworI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KKyNpbmNsdWRlIDxXZWJLaXRB
ZGRpdGlvbnMvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQWRkaXRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKTsKKwor
c2l6ZV90IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNv
c3QoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBp
cyBmYWlybHkgbWVhbmluZ2xlc3MsIGJlY2F1c2Ugd2UgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIGJp
dG1hcCwgYW5kCisgICAgLy8gc2hvdWxkIHJlYWxseSBiZSBiYXNlZCBvbiB0aGUgZW5jb2RlZCBk
YXRhIHNpemUuCisgICAgYXV0byBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBh
cmFtZXRlcnMpOworICAgIHJldHVybiBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1
bGF0ZU1lbW9yeUNvc3QoYmFja2VuZFNpemUsIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRT
aXplKSk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kPiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBhdXRvIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFj
a2VuZFNpemUocGFyYW1ldGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoV0tD
R0NvbW1hbmRzQ29udGV4dENyZWF0ZShiYWNrZW5kU2l6ZSwgbnVsbHB0cikpOworICAgIGlmICgh
Y2dDb250ZXh0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9
IG1ha2VVbmlxdWU8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZD4obmV3IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQocGFyYW1ldGVycywgV1RGTW92
ZShjb250ZXh0KSkpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZD4gQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKQorewor
ICAgIHJldHVybiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGUocGFyYW1l
dGVycyk7Cit9CisKK0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OkNHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogSW1h
Z2VCdWZmZXJDR0JhY2tlbmQgeyBwYXJhbWV0ZXJzIH0KKyAgICAsIG1fY29udGV4dCB7IFdURk1v
dmUoY29udGV4dCkgfQoreworfQorCitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkg
Y29uc3QKK3sKKyAgICBhdXRvIGRhdGEgPSBhZG9wdENGKFdLQ0dDb21tYW5kc0NvbnRleHRDb3B5
RW5jb2RlZERhdGEobV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpOworICAgIEFTU0VSVChk
YXRhKTsKKworICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkgeyBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9
IH07Cit9CisKK1dlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2NvbnRleHQ7Cit9
CisKK1dlYkNvcmU6OkludFNpemUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6YmFj
a2VuZFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBjYWxjdWxhdGVCYWNrZW5kU2l6ZShtX3Bh
cmFtZXRlcnMpOworfQorCit1bnNpZ25lZCBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
OjpieXRlc1BlclJvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93
KGJhY2tlbmRTaXplKCkpOworfQorCitSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IENHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNr
aW5nU3RvcmVDb3B5KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitWZWN0b3I8dWludDhfdD4gQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZDo6dG9CR1JBRGF0YSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIHsgfTsKK30KKworUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
cmNSZWN0KSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCit2b2lkIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dElt
YWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25z
dCBXZWJDb3JlOjpJbWFnZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
c3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9J
TUFHRV9CVUZGRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMDAyZGU2YzhiZTQ4NDZjYTQxY2E1YjNiMzMxMTcwYWI1NjczNmYwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFH
RV9CVUZGRVIpCisKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3RmL0lzb01h
bGxvYy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZCA6IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZCB7Cisg
ICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
KTsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29u
c3QgUGFyYW1ldGVycyYpOworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7CisKKyAg
ICBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICAvLyBOT1RFOiBUaGVzZSBhbGwgQVNTRVJUX05PVF9SRUFDSEVEKCkuCisg
ICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6
QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJy
aWRlOworICAgIFZlY3Rvcjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhh
UHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRl
c3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVy
cmlkZTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29y
bmVyID0gdHJ1ZTsKKworcHJvdGVjdGVkOgorICAgIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+JiYpOworCisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29u
dGV4dDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VE
X0lNQUdFX0JVRkZFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggODY2YjY0NWI5
YjBhN2JmNTFhMzE5N2IzNTM5YWJiMWQ3YTBlZWIxZi4uNzUyM2NiNzliODlhMzI0MjUxYjFjODgz
MmYzZWI1MDZiYjhlOGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTU1LDYg
KzU1LDkgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewogICAgICAg
ICBJT1N1cmZhY2UsCiAgICAgICAgIEJpdG1hcCwKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNU
X0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAgICAgIENHRGlzcGxheUxpc3QsCisjZW5kaWYKICAg
ICB9OwogCiAgICAgdm9pZCBlbnN1cmVCYWNraW5nU3RvcmUoVHlwZSwgV2ViQ29yZTo6RmxvYXRT
aXplLCBmbG9hdCBzY2FsZSwgYm9vbCBkZWVwQ29sb3IsIGJvb2wgaXNPcGFxdWUpOwpAQCAtMTAz
LDYgKzEwNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZSgpOwogICAg
IHZvaWQgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOwogCisgICAgYm9vbCBzdXBwb3J0c1BhcnRp
YWxSZXBhaW50KCk7CisKICAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNv
bnN0OwogCiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOwpAQCAtMTQ2LDkgKzE1
MSwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlPiB7CiAgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
VHlwZSwKLSAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6SU9T
dXJmYWNlLAotICAgICAgICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpC
aXRtYXAKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZQorICAg
ICAgICAsIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OklPU3VyZmFjZQor
ICAgICAgICAsIFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcAor
I2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICAgICAg
LCBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpDR0Rpc3BsYXlMaXN0Cisj
ZW5kaWYKICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDkw
M2QzZTA5NTNiYmU5MGVmYjI4YWZkOWMwMmEwNTQ1ODI0MDg1YjEuLmYyYTRmMzdiYzRlOTE3ZTM5
NzQwNjUxYzVhNWQyMjQ2M2Y0MTc0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0K
QEAgLTEsNSArMSw1IEBACiAgLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjcsMTEgKzI3LDEzIEBACiAjaW1wb3J0ICJSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5o
IgogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVycy5oIgorI2ltcG9ydCAiQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5oIgogI2ltcG9ydCAiTWFjaFBvcnQuaCIKICNpbXBvcnQgIlBsYXRm
b3JtQ0FMYXllclJlbW90ZS5oIgogI2ltcG9ydCAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCIKICNp
bXBvcnQgIlJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJl
ZUxheWVycy5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKQEAgLTQ1LDYgKzQ3LDEw
IEBACiAjaW1wb3J0IDxtYWNoL21hY2hfcG9ydC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9R
dWFydHpDb3JlU1BJLmg+CiAKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFH
RV9CVUZGRVIpCisjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQWRkaXRpb25zLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZShQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUqIGxheWVyKQpAQCAtMTE1LDYgKzEyMSwxMSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBjYXNl
IFR5cGU6OkJpdG1hcDoKICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQmPigqbV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCk7CiAgICAgICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JB
Q0tFRF9JTUFHRV9CVUZGRVIpCisgICAgICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKKyAg
ICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQmPigqbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQo
KSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICBicmVhazsK
KyNlbmRpZgogICAgICAgICB9CiAgICAgfQogCkBAIC0yMDksOSArMjIwLDI5IEBAIHZvaWQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29u
Y3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
Pjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5B
QkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAgIGNhc2UgVHlwZTo6
Q0dEaXNwbGF5TGlzdDoKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNv
cmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46
OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAg
ICAgfQogfQogCitib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRpYWxS
ZXBhaW50KCkKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6SU9TdXJm
YWNlOgorICAgIGNhc2UgVHlwZTo6Qml0bWFwOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiBF
TkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAgY2FzZSBUeXBl
OjpDR0Rpc3BsYXlMaXN0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlz
cGxheSgpCiB7CiAgICAgQVNTRVJUKCFtX2Zyb250QnVmZmVyRmx1c2hlcik7CkBAIC0yMjksNyAr
MjYwLDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAg
IHJldHVybiBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmU7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0
IGxheWVyQm91bmRzKFdlYkNvcmU6OkludFBvaW50KCksIFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6
ZShtX3NpemUpKTsKLSAgICBpZiAoIWhhc0Zyb250QnVmZmVyKCkpCisgICAgaWYgKCFoYXNGcm9u
dEJ1ZmZlcigpIHx8ICFzdXBwb3J0c1BhcnRpYWxSZXBhaW50KCkpCiAgICAgICAgIG1fZGlydHlS
ZWdpb24udW5pdGUobGF5ZXJCb3VuZHMpOwogCiAgICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBs
YXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihtX2xheWVyKSkgewpAQCAtMzU0LDI0ICsz
ODUsMzcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVU
b0xheWVyKENBTGF5ZXIgKmxheWVyLCBMYXllckNvbnQKICAgICBBU1NFUlQobV9idWZmZXJIYW5k
bGUpOwogICAgIGxheWVyLmNvbnRlbnRzT3BhcXVlID0gbV9pc09wYXF1ZTsKIAotICAgIHN3aXRj
aCAobV90eXBlKSB7Ci0gICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAgIHN3aXRjaCAo
Y29udGVudHNUeXBlKSB7Ci0gICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFj
ZTogewotICAgICAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oKm1fYnVmZmVy
SGFuZGxlKSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwotICAgICAgICAgICAgbGF5
ZXIuY29udGVudHMgPSBzdXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBXVEY6OnN3aXRjaE9uKCptX2J1ZmZlckhhbmRsZSwK
KyAgICAgICAgWyZdIChNYWNoU2VuZFJpZ2h0JiBtYWNoU2VuZFJpZ2h0KSB7CisgICAgICAgICAg
ICBBU1NFUlQobV90eXBlID09IFR5cGU6OklPU3VyZmFjZSk7CisgICAgICAgICAgICBzd2l0Y2gg
KGNvbnRlbnRzVHlwZSkgeworICAgICAgICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6SU9T
dXJmYWNlOiB7CisgICAgICAgICAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJm
YWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6
OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0g
c3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBMYXllckNvbnRlbnRz
VHlwZTo6Q0FNYWNoUG9ydDoKKyAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IChfX2Jy
aWRnZSBpZClhZG9wdENGKENBTWFjaFBvcnRDcmVhdGUobWFjaFNlbmRSaWdodC5sZWFrU2VuZFJp
Z2h0KCkpKS5nZXQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgWyZdIChTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKSB7
CisgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkJpdG1hcCk7CisgICAgICAgICAg
ICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7CisgICAgICAg
ICAgICBsYXllci5jb250ZW50cyA9IChfX2JyaWRnZSBpZCliaXRtYXAtPm1ha2VDR0ltYWdlQ29w
eSgpLmdldCgpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OkNB
TWFjaFBvcnQ6Ci0gICAgICAgICAgICBsYXllci5jb250ZW50cyA9IChfX2JyaWRnZSBpZClhZG9w
dENGKENBTWFjaFBvcnRDcmVhdGUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oKm1fYnVmZmVySGFu
ZGxlKS5sZWFrU2VuZFJpZ2h0KCkpKS5nZXQoKTsKLSAgICAgICAgICAgIGJyZWFrOworI2lmIEVO
QUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICAgICAgLCBbJl0g
KElQQzo6U2hhcmVkQnVmZmVyQ29weSYgYnVmZmVyKSB7CisgICAgICAgICAgICBBU1NFUlQobV90
eXBlID09IFR5cGU6OkNHRGlzcGxheUxpc3QpOworICAgICAgICAgICAgQVNTRVJUKFtsYXllciBp
c0tpbmRPZkNsYXNzOltXS0NvbXBvc2l0aW5nTGF5ZXIgY2xhc3NdXSk7CisgICAgICAgICAgICBp
ZiAoIVtsYXllciBpc0tpbmRPZkNsYXNzOltXS0NvbXBvc2l0aW5nTGF5ZXIgY2xhc3NdXSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBbbGF5ZXIgc2V0VmFsdWU6QDEgZm9y
S2V5UGF0aDpXS0NHRGlzcGxheUxpc3RFbmFibGVkS2V5XTsKKyAgICAgICAgICAgIGF1dG8gZGF0
YSA9IGJ1ZmZlci5idWZmZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CisgICAgICAgICAgICBbKFdLQ29t
cG9zaXRpbmdMYXllciAqKWxheWVyIF9zZXRXS0NvbnRlbnRzRGlzcGxheUxpc3Q6ZGF0YS5nZXQo
KV07CiAgICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlOjpCaXRtYXA6Ci0g
ICAgICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoV1RGOjpnZXQ8U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGU+KCptX2J1ZmZlckhhbmRsZSkpOwotICAgICAgICBsYXllci5j
b250ZW50cyA9IChfX2JyaWRnZSBpZCliaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOwot
ICAgICAgICBicmVhazsKLSAgICB9CisjZW5kaWYKKyAgICApOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OnRha2VQZW5kaW5nRmx1c2hlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
OWEyM2M0NmIwZjFmZmQ1ZjM3ZTdkZTUyYTBlN2E3Y2I1NjQ0MDZjZC4uNTc3MTU4YWFlNmFhZWE5
ZGY1ZjkzYmRmNDU4OGRjMDBhNGQ2OThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTQw
LDYgKzU0MCw4IEBAIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5JbmZvU3RvcmVNYWMubW0K
IFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbQogVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQogCitVSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbQorCiBVSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxlck1hYy5tbQogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9tYWMvU2Nyb2xsZXJQYWlyTWFjLm1tCiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21h
Yy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZU5vZGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlTm9kZS5tbQppbmRleCA0ZmQ0ZWEyNjllOGNjMWJkZmZiMmViMjU5N2Q0Zjc1MGQ4
NDI0MDY0Li4wMzE4NGM0ZmEwMDE4OTg5Mzk3N2FiMzFhZWIyMGM0YzRmZmFlOWQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlTm9kZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVOb2RlLmgiCiAKKyNpbXBvcnQgIlJlbW90ZUxh
eWVyVHJlZUxheWVycy5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dlYkFjdGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oPgogCkBAIC0zMywx
NiArMzQsNiBAQAogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAjZW5kaWYKIAotQGludGVyZmFj
ZSBXS1BsYWluUmVtb3RlTGF5ZXIgOiBDQUxheWVyCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBX
S1BsYWluUmVtb3RlTGF5ZXIKLS0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KLXsKLSAgICByZXR1
cm4gV2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2RlOjphcHBlbmRMYXllckRlc2NyaXB0aW9uKHN1
cGVyLmRlc2NyaXB0aW9uLCBzZWxmKTsKLX0KLUBlbmQKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IHN0YXRpYyBOU1N0cmluZyAqY29uc3QgV0tSZW1vdGVMYXllclRyZWVOb2RlUHJvcGVydHlLZXkg
PSBAIldLUmVtb3RlTGF5ZXJUcmVlTm9kZSI7CkBAIC03Miw3ICs2Myw3IEBAIFJlbW90ZUxheWVy
VHJlZU5vZGU6On5SZW1vdGVMYXllclRyZWVOb2RlKCkKIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZUxheWVyVHJlZU5vZGU+IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVy
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKQogewotICAg
IFJldGFpblB0cjxDQUxheWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1BsYWluUmVtb3RlTGF5ZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIgPSBhZG9wdE5TKFtb
V0tDb21wb3NpdGluZ0xheWVyIGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlTGF5ZXJUcmVlTm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVt
b3RlTGF5ZXJUcmVlTGF5ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBmNmFlYjcz
ZWU4NDFlOTFhNDk5OTJjYmNjZTNkMmExZGM5YzE0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVM
YXllcnMuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBMQVRGT1JNKENPQ09B
KQorCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFF1YXJ0ekNv
cmUvUXVhcnR6Q29yZS5oPgorCitAaW50ZXJmYWNlIFdLQ29tcG9zaXRpbmdMYXllciA6IENBTGF5
ZXIKKworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4sIHNldHRlcj1fc2V0V0tDb250ZW50c0Rpc3BsYXlM
aXN0OilfX2F0dHJpYnV0ZV9fKChOU09iamVjdCkpIENGRGF0YVJlZiBfd2tDb250ZW50c0Rpc3Bs
YXlMaXN0OworI2VuZGlmCisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1Jl
bW90ZUxheWVyVHJlZUxheWVycy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXllcnMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmIzOGFh
MTBjMjQ3ZjY4ZDdkNTJiMzBkM2JjYjliOGQ0YzU3ZWM5MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRy
ZWVMYXllcnMubW0KQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmgiCisKKyNpZiBQTEFURk9STShD
T0NPQSkKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlTm9k
ZS5oIgorI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CisKKyNpZiBFTkFC
TEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisjaW1wb3J0IDxXZWJLaXRB
ZGRpdGlvbnMvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQWRkaXRpb25zLmg+CisjZW5kaWYKKwor
QGltcGxlbWVudGF0aW9uIFdLQ29tcG9zaXRpbmdMYXllciB7CisjaWYgRU5BQkxFKENHX0RJU1BM
QVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IF9j
b250ZW50c0Rpc3BsYXlMaXN0OworI2VuZGlmCit9CisKKy0gKE5TU3RyaW5nICopZGVzY3JpcHRp
b24KK3sKKyAgICByZXR1cm4gV2ViS2l0OjpSZW1vdGVMYXllclRyZWVOb2RlOjphcHBlbmRMYXll
ckRlc2NyaXB0aW9uKHN1cGVyLmRlc2NyaXB0aW9uLCBzZWxmKTsKK30KKworI2lmIEVOQUJMRShD
R19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKy0gKHZvaWQpX3NldFdLQ29udGVu
dHNEaXNwbGF5TGlzdDooQ0ZEYXRhUmVmKWRhdGEKK3sKKyAgICBfY29udGVudHNEaXNwbGF5TGlz
dCA9IGRhdGE7CisgICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKK30KKworLSAoQ0ZEYXRhUmVm
KV93a0NvbnRlbnRzRGlzcGxheUxpc3QKK3sKKyAgICByZXR1cm4gX2NvbnRlbnRzRGlzcGxheUxp
c3QuZ2V0KCk7Cit9CisKKy0gKHZvaWQpZHJhd0luQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRl
eHQKK3sKKyAgICBpZiAoIV9jb250ZW50c0Rpc3BsYXlMaXN0KQorICAgICAgICByZXR1cm47Cisg
ICAgV0tDR0NvbnRleHREcmF3Q0dDb21tYW5kc0VuY29kZWREYXRhKGNvbnRleHQsIF9jb250ZW50
c0Rpc3BsYXlMaXN0LmdldCgpLCBudWxscHRyKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ0dfRElT
UExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVlVmlld3MubW0KaW5kZXggYThm
YTZmZjZmYTJhZDBlN2M0YTRjMzUzZmFhN2VhNmE4YTJkNTIzNy4uZDg4M2E1YjM3MzQ4ZWY2MmQz
MWEzZmQxNGEyODNlZmViMWQ5NGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZp
ZXdzLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
IlJlbW90ZUxheWVyVHJlZUhvc3QuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZUxheWVycy5o
IgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlTm9kZS5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIK
ICNpbXBvcnQgIldLRGVmZXJyaW5nR2VzdHVyZVJlY29nbml6ZXIuaCIKQEAgLTMxMyw2ICszMTQs
MTEgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tDb21wb3NpdGluZ1ZpZXcKIAorKyAoQ2xh
c3MpbGF5ZXJDbGFzcworeworICAgIHJldHVybiBbV0tDb21wb3NpdGluZ0xheWVyIGNsYXNzXTsK
K30KKwogLSAoVUlWaWV3ICopaGl0VGVzdDooQ0dQb2ludClwb2ludCB3aXRoRXZlbnQ6KFVJRXZl
bnQgKilldmVudAogewogICAgIHJldHVybiBbc2VsZiBfd2ViX2ZpbmREZXNjZW5kYW50Vmlld0F0
UG9pbnQ6cG9pbnQgd2l0aEV2ZW50OmV2ZW50XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNjZjNkZWZhMDZhY2E2NzZhMTUzNGY0MjI5
NDg4MjNkYjY2MTc2ZGIuLjYyYTk4YWQzZjc3NmRhY2YzMzgyZjJmNjk1MTgxZjhhZDUzOGJmOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNjY3LDYgKzY2Nyw3IEBACiAJCTJENTRDMzFBMjEyRjNCMzMwMDQ5QzE3NCAvKiBVbmlmaWVk
U291cmNlNjEtbW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDU0QzMwNjIxMkYzQjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTYxLW1tLm1tICov
OyB9OwogCQkyRDU0QzMxQjIxMkY0REE2MDA0OUMxNzQgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTExN0Y1MTFE
QkIzMDkwMDk4MTYxNSAvKiBQcm9jZXNzTGF1bmNoZXIuY3BwICovOyB9OwogCQkyRDVDOUQwNjE5
QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENUM5RDA0MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQ
YWdlT3ZlcmxheS5oICovOyB9OworCQkyRDY0ODI0QjI2NDRCMUFCMDAwMzAzMzUgLyogUmVtb3Rl
TGF5ZXJUcmVlTGF5ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDY0ODI0OTI2NDRCMUFCMDAwMzAzMzUgLyogUmVtb3RlTGF5ZXJUcmVlTGF5ZXJz
LmggKi87IH07CiAJCTJENkFCNTQxMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJ
bmRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJENkFCNTNGMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCAq
LzsgfTsKIAkJMkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkIzNzE5MThB
OTY3QUQwMDQyQUU4MCAvKiBfV0tUaHVtYm5haWxWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ2Q0QxMTkxODkwNThBNTAwRTVBNEEwIC8q
IFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUu
aCAqLzsgfTsKQEAgLTE4MjcsNiArMTgyOCw4IEBACiAJCUJDRTQ2OTU0MTIxNEU2Q0IwMDBCOThF
QiAvKiBXZWJGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0U0Njk1MDEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybUNsaWVudC5oICov
OyB9OwogCQlCQ0U0Njk1NjEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Npb25MaXN0
ZW5lclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0U0Njk1MjEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclBy
b3h5LmggKi87IH07CiAJCUJDRTQ2OTVBMTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNz
aW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQ0U1
NzlBNjI2MzQ4MzY3MDBGNUM1RTkgLyogQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFNTc5QTQy
NjM0ODM2NzAwRjVDNUU5IC8qIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsg
fTsKKwkJQkNFNTc5QTcyNjM0ODM2NzAwRjVDNUU5IC8qIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNFNTc5QTUyNjM0ODM2NzAwRjVDNUU5IC8qIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwICovOyB9OwogCQlCQ0U4MUQ4RDEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTgxRDhC
MTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5oICovOyB9OwogCQlCQ0VFN0FEMDEyODE3OTg4
MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU3QUNDMTI4MTc5ODgwMDk4
MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlCQ0VF
N0FEMTEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUU3QUNEMTI4MTc5ODgw
MDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oICovOyB9OwpAQCAtMzIyNSw2ICsz
MjI4LDggQEAKIAkJMkQ1NEMzMDYyMTJGM0IzMzAwNDlDMTc0IC8qIFVuaWZpZWRTb3VyY2U2MS1t
bS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9ICJVbmlmaWVkU291cmNlNjEtbW0ubW0iOyBwYXRo
ID0gIkRlcml2ZWRTb3VyY2VzL1dlYktpdDIvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRTb3VyY2U2
MS1tbS5tbSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTJENUM5RDAz
MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYWdlT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJENUM5RDA0MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYWdlT3ZlcmxheS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDY0ODI0OTI2NDRCMUFCMDAwMzAzMzUgLyogUmVt
b3RlTGF5ZXJUcmVlTGF5ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bW90ZUxheWVyVHJlZUxheWVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDY0
ODI0QTI2NDRCMUFCMDAwMzAzMzUgLyogUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZBQjUzRjE5MkIxQzRBMDAzQTlGRDEg
LyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdLUERGUGFnZU51bWJlckluZGljYXRvci5oOyBwYXRoID0gaW9zL1dLUERGUGFnZU51
bWJlckluZGljYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZBQjU0MDE5
MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLm1t
OyBwYXRoID0gaW9zL1dLUERGUGFnZU51bWJlckluZGljYXRvci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZp
ZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLVGh1bWJuYWlsVmlldy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUwNiw2ICs1NTExLDggQEAKIAkJQkNF
NDY5NTIxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFNDY5NTcxMjE0RURG
NDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0U0Njk1ODEyMTRFREY0MDAwQjk4RUIgLyogV0tG
b3JtU3VibWlzc2lvbkxpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQ0U1NzlBNDI2MzQ4MzY3MDBGNUM1RTkgLyogQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRTU3OUE1MjYzNDgzNjcwMEY1QzVFOSAv
KiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0U4MUQ4QTEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEluZm8uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0U4MUQ4QjEzMTlGN0VGMDAyNDE5MTAgLyogRm9udEluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udEluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFOUMwQ0YxNDg1OTY1RDAwRTMzRDYxIC8qIFdlYkNvbm5l
Y3Rpb25Ub1VJUHJvY2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNzI4Nyw2ICs3Mjk0LDcgQEAKIAkJMkQxNTUxQTkxRjVBOUI0MjAwMDZFM0ZFIC8qIFJl
bW90ZUxheWVyVHJlZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJMkQ2NDgyNDgyNjQ0QjFBQjAwMDMwMzM1IC8qIGNvY29hICovLAogCQkJCTJEMTU1MUFB
MUY1QTlCQTcwMDA2RTNGRSAvKiBpb3MgKi8sCiAJCQkJRTQwNDkwNkYyMURFNjVENzAwMzdGMERC
IC8qIG1hYyAqLywKIAkJCQkxQUIxNkFFMDE2NDg2NTZEMDAyOTBENjIgLyogUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5oICovLApAQCAtNzM1NCw2ICs3MzYyLDggQEAKIAkJMkQyRTA0
NzYxRjVCRUM0RjAwQkIyNUVEIC8qIFJlbW90ZUxheWVyVHJlZSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQkNFNTc5QTUyNjM0ODM2NzAwRjVDNUU5IC8q
IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovLAorCQkJCUJDRTU3OUE0MjYz
NDgzNjcwMEY1QzVFOSAvKiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8sCiAJ
CQkJMkQ0N0I1NkIxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgg
Ki8sCiAJCQkJMkQ0N0I1NkExODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tICovLAogCQkJCTJEREY3MzEzMThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24uaCAqLywKQEAgLTczNzEsNiArNzM4MSwxNSBAQAogCQkJcGF0
aCA9IFJlbW90ZUxheWVyVHJlZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJ
CTJENjQ4MjQ4MjY0NEIxQUIwMDAzMDMzNSAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMkQ2NDgyNDkyNjQ0QjFBQjAwMDMwMzM1IC8qIFJl
bW90ZUxheWVyVHJlZUxheWVycy5oICovLAorCQkJCTJENjQ4MjRBMjY0NEIxQUIwMDAzMDMzNSAv
KiBSZW1vdGVMYXllclRyZWVMYXllcnMubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMkQ3REVCRTIyMTI2OUU0QjAwQjlG
NzNDIC8qIHVuaWZpZWQtc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0xMTg2Niw2ICsxMTg4NSw3IEBACiAJCQkJNDE4OTdFRDgxRjQxNUQ4QTAw
MTZGQTQyIC8qIENhY2hlU3RvcmFnZUVuZ2luZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQUJE
MkExRjRERTAwMTAwNkE2Qzk3IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTg5N0VEQTFGNDE1RDhBMDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNFNTc5QTYyNjM0ODM2NzAwRjVDNUU5
IC8qIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0
aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEZFMEEzQjI0NjMyQjYwMDAy
NjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4MjczNDcyNDUyOEY2
MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTIyMDMsNiArMTIy
MjMsNyBAQAogCQkJCTFBQjE2QUUyMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkYyNEEyRTE4NzlFNEJDMDAz
QUJGMEMgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUEzRDc1QzE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVl
SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ2NDgyNEIyNjQ0QjFBQjAwMDMwMzM1IC8qIFJl
bW90ZUxheWVyVHJlZUxheWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRFNTdGNkIyMUE4M0Ix
MjAwMzQ1RjNDIC8qIFJlbW90ZUxheWVyVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJE
REUwQUZBMTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjI2NEEwMUExRkY5Q0MwMDFGRTc1OSAvKiBSZW1vdGVM
YXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMTQw
ODcsNiArMTQxMDgsNyBAQAogCQkJCTUxRkFFQzNCMUIwNjU3NjgwMDA5QzRFNyAvKiBBdXhpbGlh
cnlQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg1
MjEyQjZBQjEwMEY0OTNGRCAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVu
c2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyog
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlCQ0U1NzlBNzI2MzQ4MzY3MDBGNUM1RTkgLyogQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RDIxMkI2QTcxMDBG
NDkzRkQgLyogQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc3RjIxMkI2
QTcxMDBGNDkzRkQgLyogRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OURBQTM4QzI0
Q0JBMUE4MDA3OTNENzUgLyogRGVmYXVsdFdlYkJyb3dzZXJDaGVja3MubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCmluZGV4IDQwMmMyOGE0MGU4MjYzOWU1
NDMyMjBlZjkxMDc4ZDliMWM5NGQzNGIuLjg4NzhmNjZjMGZkOGZiYTkzZTk4ZWRmN2RiOGY3YmE3
MDk0NjJhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaApAQCAtMjgsNiArMjgs
NyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1h
cC5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDx3dGYvTWFjaFNl
bmRSaWdodC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKQEAgLTM1LDkgKzM2LDEyIEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgPSBW
YXJpYW50PAogI2lmIFBMQVRGT1JNKENPQ09BKSAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgYWJv
dXQgSU9TdXJmYWNlLgotICAgIE1hY2hTZW5kUmlnaHQsCisgICAgTWFjaFNlbmRSaWdodAorI2Vu
ZGlmCisgICAgLCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZQorI2lmIEVOQUJMRShDR19ESVNQTEFZ
X0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICAsIElQQzo6U2hhcmVkQnVmZmVyQ29weQog
I2VuZGlmCi0gICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUKID47CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cAppbmRleCAxYzk3NjU5OWRmNTM1MmJmOGEwMjNlOTI2NDA5MTM5ZDViYzI3MGQ4Li42ZjQwNjZj
MzZkNGQ0NjQwZjIyMzI5NzlmOGY4MDg4MTMwMDI3MDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMjM0LDYgKzIzNCwxMCBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6dXBkYXRlQmFja2luZ1N0b3JlKCkKICAgICBBU1NFUlQo
bV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVkKTsKIAogICAgIGF1dG8gdHlwZSA9IG1f
YWNjZWxlcmF0ZXNEcmF3aW5nID8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OklPU3Vy
ZmFjZSA6IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpCaXRtYXA7CisjaWYgRU5BQkxF
KENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAgIGlmIChtX2NvbnRleHQt
PnVzZUNHRGlzcGxheUxpc3RzRm9yRE9NUmVuZGVyaW5nKCkpCisgICAgICAgIHR5cGUgPSBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6Q0dEaXNwbGF5TGlzdDsKKyNlbmRpZgogICAgIG1f
cHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmVuc3VyZUJhY2tpbmdTdG9yZSh0eXBlLCBtX3Byb3Bl
cnRpZXMuYm91bmRzLnNpemUoKSwgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUsIG1fd2FudHNE
ZWVwQ29sb3JCYWNraW5nU3RvcmUsIG1fcHJvcGVydGllcy5vcGFxdWUpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaAppbmRleCA3MDJjNjc5ZmZi
YzE2ODdjNDMwMTc4NDIyOGI0ZTM3YTZmNTZjYzExLi42MjM5Nzk3ZjU0YTU3NDIzNjQ0MmZkNjlj
OWRkZTAyYjRhMDc0ZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVDb250ZXh0LmgKQEAgLTgwLDYgKzgwLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRvcHRMYXll
cnNGcm9tQ29udGV4dChSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CiAKICAgICBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkmIGVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwor
CisgICAgYm9vbCB1c2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJlbmRlcmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlQ0dEaXNwbGF5TGlzdHNGb3JET01SZW5kZXJpbmc7IH0KKyAgICB2b2lkIHNldFVz
ZUNHRGlzcGxheUxpc3RzRm9yRE9NUmVuZGVyaW5nKGJvb2wgdXNlQ0dEaXNwbGF5TGlzdHMpIHsg
bV91c2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJlbmRlcmluZyA9IHVzZUNHRGlzcGxheUxpc3RzOyB9
CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBib29sIGNhblNob3dXaGlsZUxv
Y2tlZCgpIGNvbnN0OwpAQCAtMTA2LDYgKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
TGF5ZXJQb29sIG1fbGF5ZXJQb29sOwogICAgIAogICAgIGJvb2wgbV9uZXh0UmVuZGVyaW5nVXBk
YXRlUmVxdWlyZXNTeW5jaHJvbm91c0ltYWdlRGVjb2RpbmcgeyBmYWxzZSB9OworCisgICAgYm9v
bCBtX3VzZUNHRGlzcGxheUxpc3RzRm9yRE9NUmVuZGVyaW5nIHsgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDZmMzU2NWE5MDhhYWNjMmQ1ODcyYTIyMGNkZjRm
MzUzNzlhZDk4YTEuLjlmMzVlYWIxMTJmNTM4NTVkYTc3NGVhODJmZjFhMTAzMzVhMDdhMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIK
ICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5oPgpAQCAtMTYxLDcgKzE2Miw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OnNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBGcmFt
ZVZpCiAgICAgcmV0dXJuIGZyYW1lVmlldy5mcmFtZSgpLmlzTWFpbkZyYW1lKCkgfHwgbV93ZWJQ
YWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCkuYXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQoKTsK
IH0KIAotdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMo
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpCit2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBwcmVmZXJl
bmNlcykKIHsKICAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+
c2V0dGluZ3MoKTsKIApAQCAtMTcxLDYgKzE3Miw4IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKQog
CiAgICAgbV9yb290TGF5ZXItPnNldFNob3dEZWJ1Z0JvcmRlcihzZXR0aW5ncy5zaG93RGVidWdC
b3JkZXJzKCkpOwogCisgICAgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0LT5zZXRVc2VDR0Rpc3Bs
YXlMaXN0c0ZvckRPTVJlbmRlcmluZyhwcmVmZXJlbmNlcy5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OnVzZUNHRGlzcGxheUxpc3RzRm9yRE9NUmVuZGVyaW5nS2V5KCkpKTsK
KwogICAgIERlYnVnUGFnZU92ZXJsYXlzOjpzZXR0aW5nc0NoYW5nZWQoKm1fd2ViUGFnZS5jb3Jl
UGFnZSgpKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428019</attachid>
            <date>2021-05-07 12:06:08 -0700</date>
            <delta_ts>2021-05-07 16:46:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225508-20210507120607.patch</filename>
            <type>text/plain</type>
            <size>43776</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMwYjBmNjRjYTgxYWRlYWE0ZDU2Njc2
YTlhMWFjMThkYWI3Yjk3N2MuLmJlZTA2NWI0ODI4Yjc2ZjBjMGMzMjA2MjFlNmZmMDRlYTlmMmJm
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDUtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBhbHRlcm5h
dGl2ZSBkaXNwbGF5LWxpc3QtYmFzZWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NTUwOAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBTY3Jp
cHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbDoKKwogMjAyMS0wNS0w
NyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gV2FybmluZ3MgYWJvdXQgdW51c2VkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDdmYWYxZTZkMTI3NzEwNmM3YmJmZTFjMjk3ZmJhNDA0YmRiNzMxZTUuLjdiZmM0ZGZhOTQ2YmU1
MTg3MTQwOTg3NTUzZmYwOGJmZTgzNzNkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIw
MjEtMDUtMDcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBhbHRlcm5hdGl2ZSBkaXNwbGF5LWxpc3QtYmFzZWQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTUwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Q0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdCk6CisgICAg
ICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OkNHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb250
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZDo6YmFja2VuZFNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kOjpieXRlc1BlclJvdyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OnRvQkdS
QURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kOjpnZXRJbWFnZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRJbWFnZURhdGEpOgorICAgICAgICAqIFNoYXJlZC9S
ZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oOiBBZGRlZC4K
KyAgICAgICAgQWRkIGFuIEltYWdlQnVmZmVyIGJhY2tlbmQgYmFja2VkIGJ5IGEgQ0cgZGlzcGxh
eSBsaXN0LgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICBBZGQgYSBuZXcgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUg
dHlwZSB0aGF0IHVzZXMgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC4KKworICAgICAg
ICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9u
dEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBw
b3J0c1BhcnRpYWxSZXBhaW50KToKKyAgICAgICAgRGlzYWJsZSBwYXJ0aWFsIHJlcGFpbnQgaWYg
dXNpbmcgZGlzcGxheS1saXN0LWJhc2VkIGJhY2tpbmcgc3RvcmUsCisgICAgICAgIGJlY2F1c2Ug
d2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYW55IHdheSB0byBtdXRhdGUgZGlzcGxheSBsaXN0cy4K
KworICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9y
ZVRvTGF5ZXIpOgorICAgICAgICBXaGVuIGFwcGx5aW5nIGEgZGlzcGxheS1saXN0LWJhc2VkIGJh
Y2tpbmcgc3RvcmUgdG8gYSBsYXllciwgd2UganVzdAorICAgICAgICBwYXNzIHRoZSBlbmNvZGVk
ZSBkYXRhIGRpcmVjdGx5IHRvIHRoZSBsYXllciwgYW5kIHRlbGwgaXQgdG8gdXNlIHRoZQorICAg
ICAgICBkaXNwbGF5IGxpc3QgdG8gcmVuZGVyLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5v
ZGUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQ
bGFpbkxheWVyKToKKyAgICAgICAgKC1bV0tQbGFpblJlbW90ZUxheWVyIGRlc2NyaXB0aW9uXSk6
IERlbGV0ZWQuCisgICAgICAgIE1vdmUgV0tQbGFpblJlbW90ZUxheWVyIHRvIFJlbW90ZUxheWVy
VHJlZUxheWVycywgYW5kIHJlbmFtZSBpdCB0byBXS0NvbXBvc2l0aW5nTGF5ZXIuCisgICAgICAg
IEl0IHdpbGwgbm93IGJhY2sgYWxsIFdLQ29tcG9zaXRpbmdWaWV3cy4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5
ZXJUcmVlTGF5ZXJzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tDb21wb3NpdGluZ0xheWVyIGRl
c2NyaXB0aW9uXSk6CisgICAgICAgICgtW1dLQ29tcG9zaXRpbmdMYXllciBfc2V0V0tDb250ZW50
c0Rpc3BsYXlMaXN0Ol0pOgorICAgICAgICAoLVtXS0NvbXBvc2l0aW5nTGF5ZXIgX3drQ29udGVu
dHNEaXNwbGF5TGlzdF0pOgorICAgICAgICAoLVtXS0NvbXBvc2l0aW5nTGF5ZXIgZHJhd0luQ29u
dGV4dDpdKToKKyAgICAgICAgTWFrZSBXS0NvbXBvc2l0aW5nTGF5ZXIgcmVwbGF5IHRoZSBnaXZl
biBkaXNwbGF5IGxpc3QgaW4gZHJhd1JlY3QKKyAgICAgICAgKGp1c3QgYmVjYXVzZSB3ZSdyZSBj
dXJyZW50bHkgbWlzc2luZyBBUEkgdG8gYWN0dWFsbHkgZGlyZWN0bHkgcGFzcworICAgICAgICB0
aGUgZW5jb2RlZCBkaXNwbGF5IGxpc3QgZGF0YSB0byBDQSkuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbToKKyAgICAgICAg
KCtbV0tDb21wb3NpdGluZ1ZpZXcgbGF5ZXJDbGFzc10pOgorICAgICAgICBVc2UgV0tDb21wb3Np
dGluZ0xheWVyIGFzIHRoZSBsYXllciBjbGFzcyBmb3IgYWxsIFdLQ29tcG9zaXRpbmdWaWV3cy4K
KworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRh
dGVCYWNraW5nU3RvcmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVDb250ZXh0Ojp1c2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJlbmRlcmluZyBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OnNldFVzZUNHRGlzcGxh
eUxpc3RzRm9yRE9NUmVuZGVyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAg
ICAgICBQbHVtYiB0aGUgaW50ZXJuYWwgZmVhdHVyZSBmbGFnIGZyb20gV2ViUHJlZmVyZW5jZXMg
dG8gUmVtb3RlTGF5ZXJUcmVlQ29udGV4dAorICAgICAgICB0byBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU7IGlmIHRoZSBwcmVmZXJlbmNlIGlzCisgICAg
ICAgIG9uIGFuZCB0aGUgZmVhdHVyZSBpcyBhdmFpbGFibGUsIHdlJ2xsIGFsd2F5cyBwcmVmZXIg
ZGlzcGxheS1saXN0IGJhY2tlZAorICAgICAgICBzdXJmYWNlcyBvdmVyIGVpdGhlciBvZiB0aGUg
Yml0bWFwIHR5cGVzLgorCiAyMDIxLTA1LTA3ICBDYXJsb3MgR2FybmFjaG8gIDxjYXJsb3NnQGdu
b21lLm9yZz4KIAogICAgICAgICBbR1RLNF0gUmV3cml0ZSBHVEsgZ2VzdHVyZSBzdXBwb3J0IHRv
IHdvcmsgZm9yIGJvdGggMy54IGFuZCA0LnguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIGIvU291cmNlL1dURi9T
Y3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAppbmRleCA5MzU3
ZWU5ZDhmMzQ0YTAzYmNiOGNhMDBiZTJhZjJkMzQ5ZTZmYWExLi5iNTk4YWE2YTA0ODMyYTcwZjk3
OGRhMjkwOTFhMjlhZTdhYjg5NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTczOCw2ICs3
MzgsMTcgQEAgVXBncmFkZUtub3duSG9zdHNUb0hUVFBTRW5hYmxlZDoKICAgICBXZWJLaXQ6CiAg
ICAgICBkZWZhdWx0OiB0cnVlCiAKK1VzZUNHRGlzcGxheUxpc3RzRm9yRE9NUmVuZGVyaW5nOgor
ICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiVXNlIENHIERpc3BsYXkgTGlzdHMg
Zm9yIERPTSByZW5kZXJpbmciCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIlVzZSBDRyBE
aXNwbGF5IExpc3RzIGZvciBET00gcmVuZGVyaW5nIgorICB3ZWJjb3JlQmluZGluZzogbm9uZQor
ICBjb25kaXRpb246IEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikK
KyAgZXhwb3NlZDogWyBXZWJLaXQgXQorICBkZWZhdWx0VmFsdWU6CisgICAgV2ViS2l0OgorICAg
ICAgZGVmYXVsdDogZmFsc2UKKwogVXNlR1BVUHJvY2Vzc0ZvckRPTVJlbmRlcmluZ0VuYWJsZWQ6
CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJHUFUgUHJvY2VzczogRE9NIFJl
bmRlcmluZyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40NWM1M2E2MmY2NzhiZWFlMjQ1YzZkYjNlYjdmYTNkNzgyMmFiMzYxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlz
cGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0wLDAgKzEsMTIxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQuaCIKKworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdF
X0JVRkZFUikKKworI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9JbWFnZURhdGEuaD4KKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQWRkaXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKTsKKworc2l6ZV90IENHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBmYWlybHkgbWVhbmlu
Z2xlc3MsIGJlY2F1c2Ugd2UgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIGJpdG1hcCwgYW5kCisgICAg
Ly8gc2hvdWxkIHJlYWxseSBiZSBiYXNlZCBvbiB0aGUgZW5jb2RlZCBkYXRhIHNpemUuCisgICAg
YXV0byBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOworICAg
IHJldHVybiBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3Qo
YmFja2VuZFNpemUsIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRTaXplKSk7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kPiBDR0Rpc3BsYXlM
aXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKK3sKKyAgICBhdXRvIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlQmFja2VuZFNpemUocGFyYW1l
dGVycyk7CisgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoV0tDR0NvbW1hbmRzQ29udGV4
dENyZWF0ZShiYWNrZW5kU2l6ZSwgbnVsbHB0cikpOworICAgIGlmICghY2dDb250ZXh0KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY29udGV4dCA9IG1ha2VVbmlxdWU8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOworICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD4obmV3IENHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQocGFyYW1ldGVycywgV1RGTW92ZShjb250ZXh0KSkpOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD4gQ0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IFdlYkNvcmU6Okhvc3RXaW5kb3cqKQoreworICAgIHJldHVybiBDR0Rp
c3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycyk7Cit9CisKK0NH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQorICAgIDogSW1hZ2VCdWZmZXJDR0JhY2tl
bmQgeyBwYXJhbWV0ZXJzIH0KKyAgICAsIG1fY29udGV4dCB7IFdURk1vdmUoY29udGV4dCkgfQor
eworfQorCitJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3QKK3sKKyAgICBh
dXRvIGRhdGEgPSBhZG9wdENGKFdLQ0dDb21tYW5kc0NvbnRleHRDb3B5RW5jb2RlZERhdGEobV9j
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpOworICAgIEFTU0VSVChkYXRhKTsKKworICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgeyBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgeyBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmdldCgpKSB9IH07Cit9CisKK1dlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6Y29u
dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICptX2NvbnRleHQ7Cit9CisKK1dlYkNvcmU6Oklu
dFNpemUgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6YmFja2VuZFNpemUoKSBjb25z
dAoreworICAgIHJldHVybiBjYWxjdWxhdGVCYWNrZW5kU2l6ZShtX3BhcmFtZXRlcnMpOworfQor
Cit1bnNpZ25lZCBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpieXRlc1BlclJvdygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRTaXplKCkp
OworfQorCitSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IENHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5KSBj
b25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOwor
fQorCitWZWN0b3I8dWludDhfdD4gQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZDo6dG9C
R1JBRGF0YSgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworUmVmUHRyPFdlYkNvcmU6OkltYWdlRGF0YT4gQ0dEaXNwbGF5TGlzdEltYWdl
QnVmZmVyQmFja2VuZDo6Z2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2
b2lkIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dEltYWdlRGF0YShXZWJDb3Jl
OjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbWFn
ZURhdGEmIGltYWdlRGF0YSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBkZXN0Rm9ybWF0KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDAy
ZGU2YzhiZTQ4NDZjYTQxY2E1YjNiMzMxMTcwYWI1NjczNmYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlckJhY2tlbmQuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmg+CisjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZCA6
IHB1YmxpYyBXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZCB7CisgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKTsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kKTsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYp
OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmLCBjb25zdCBXZWJDb3JlOjpIb3N0V2luZG93Kik7CisKKyAgICBJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUgY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCkgY29uc3Q7CisKKyAg
ICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBXZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAv
LyBOT1RFOiBUaGVzZSBhbGwgQVNTRVJUX05PVF9SRUFDSEVEKCkuCisgICAgUmVmUHRyPFdlYkNv
cmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29w
eSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOworICAgIFZlY3Rv
cjx1aW50OF90PiB0b0JHUkFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNv
cmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRp
b24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBwdXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBp
bnB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEYXRhJiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVycmlkZTsKKworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKKwor
cHJvdGVjdGVkOgorICAgIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+JiYpOwor
CisgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBvdmVycmlkZTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggODY2YjY0NWI5YjBhN2JmNTFhMzE5N2Iz
NTM5YWJiMWQ3YTBlZWIxZi4uNzUyM2NiNzliODlhMzI0MjUxYjFjODgzMmYzZWI1MDZiYjhlOGE1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTU1LDYgKzU1LDkgQEAgcHVibGlj
OgogICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBJT1N1cmZhY2UsCiAg
ICAgICAgIEJpdG1hcCwKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9C
VUZGRVIpCisgICAgICAgIENHRGlzcGxheUxpc3QsCisjZW5kaWYKICAgICB9OwogCiAgICAgdm9p
ZCBlbnN1cmVCYWNraW5nU3RvcmUoVHlwZSwgV2ViQ29yZTo6RmxvYXRTaXplLCBmbG9hdCBzY2Fs
ZSwgYm9vbCBkZWVwQ29sb3IsIGJvb2wgaXNPcGFxdWUpOwpAQCAtMTAzLDYgKzEwNiw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZSgpOwogICAgIHZvaWQgc3dhcFRvVmFs
aWRGcm9udEJ1ZmZlcigpOwogCisgICAgYm9vbCBzdXBwb3J0c1BhcnRpYWxSZXBhaW50KCk7CisK
ICAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0OwogCiAgICAgUGxh
dGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOwpAQCAtMTQ2LDkgKzE1MSwxMiBAQCBuYW1lc3Bh
Y2UgV1RGIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpUeXBlPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
LSAgICAgICAgV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZSwKLSAgICAgICAg
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6SU9TdXJmYWNlLAotICAgICAg
ICBXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpCaXRtYXAKKyAgICAgICAg
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZQorICAgICAgICAsIFdlYktpdDo6
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OklPU3VyZmFjZQorICAgICAgICAsIFdlYktp
dDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OlR5cGU6OkJpdG1hcAorI2lmIEVOQUJMRShDR19E
SVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICAgICAgLCBXZWJLaXQ6OlJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpDR0Rpc3BsYXlMaXN0CisjZW5kaWYKICAgICA+Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDkwM2QzZTA5NTNiYmU5MGVm
YjI4YWZkOWMwMmEwNTQ1ODI0MDg1YjEuLjAzMTYyMzZhYzM1MGY0M2I0ZGMzYzI4YWFmZGZkMWVl
NDdiMGZlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTEsNSArMSw1IEBA
CiAgLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsMTEgKzI3
LDEzIEBACiAjaW1wb3J0ICJSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIgogCiAjaW1wb3J0ICJB
cmd1bWVudENvZGVycy5oIgorI2ltcG9ydCAiQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2Vu
ZC5oIgogI2ltcG9ydCAiTWFjaFBvcnQuaCIKICNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllclJlbW90
ZS5oIgogI2ltcG9ydCAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCiAjaW1wb3J0
ICJSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCIKICNpbXBvcnQgIlJlbW90ZUxh
eWVyVHJlZUNvbnRleHQuaCIKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZUxheWVycy5oIgogI2lt
cG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKQEAgLTQ1LDYgKzQ3LDEwIEBACiAjaW1wb3J0IDxt
YWNoL21hY2hfcG9ydC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+
CiAKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisjaW1w
b3J0IDxXZWJLaXRBZGRpdGlvbnMvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQWRkaXRpb25zLmg+
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZShQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIGxheWVyKQpA
QCAtMTE1LDYgKzEyMSwxMSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBjYXNlIFR5cGU6OkJpdG1hcDoK
ICAgICAgICAgICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJhY2tlbmQmPigqbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFj
a2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlKCk7CiAgICAgICAg
ICAgICBicmVhazsKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZG
RVIpCisgICAgICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKKyAgICAgICAgICAgIGhhbmRs
ZSA9IHN0YXRpY19jYXN0PENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQmPigqbV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkuY3JlYXRlSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlKCk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAg
ICB9CiAgICAgfQogCkBAIC0yMDksOSArMjIwLDI5IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6
ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZv
cm1hdCgpLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CisjaWYgRU5BQkxFKENHX0RJU1BMQVlf
TElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoK
KyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1h
Z2VCdWZmZXI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUs
IG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3Jt
YXQoKSwgbnVsbHB0cik7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgfQogfQogCitib29s
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRpYWxSZXBhaW50KCkKK3sKKyAg
ICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgorICAgIGNhc2Ug
VHlwZTo6Qml0bWFwOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNpZiBFTkFCTEUoQ0dfRElTUExB
WV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAgY2FzZSBUeXBlOjpDR0Rpc3BsYXlMaXN0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiB7CiAgICAg
QVNTRVJUKCFtX2Zyb250QnVmZmVyRmx1c2hlcik7CkBAIC0yMjksNyArMjYwLDcgQEAgYm9vbCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIHJldHVybiBuZWVkVG9F
bmNvZGVCYWNraW5nU3RvcmU7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IGxheWVyQm91bmRzKFdl
YkNvcmU6OkludFBvaW50KCksIFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShtX3NpemUpKTsKLSAg
ICBpZiAoIWhhc0Zyb250QnVmZmVyKCkpCisgICAgaWYgKCFoYXNGcm9udEJ1ZmZlcigpIHx8ICFz
dXBwb3J0c1BhcnRpYWxSZXBhaW50KCkpCiAgICAgICAgIG1fZGlydHlSZWdpb24udW5pdGUobGF5
ZXJCb3VuZHMpOwogCiAgICAgaWYgKG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclNo
b3dSZXBhaW50Q291bnRlcihtX2xheWVyKSkgewpAQCAtMzU0LDI0ICszODUsMzcgQEAgdm9pZCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKENBTGF5ZXIg
KmxheWVyLCBMYXllckNvbnQKICAgICBBU1NFUlQobV9idWZmZXJIYW5kbGUpOwogICAgIGxheWVy
LmNvbnRlbnRzT3BhcXVlID0gbV9pc09wYXF1ZTsKIAotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0g
ICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAgIHN3aXRjaCAoY29udGVudHNUeXBlKSB7
Ci0gICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZTogewotICAgICAgICAg
ICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oKm1fYnVmZmVySGFuZGxlKSksIFdlYkNv
cmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwotICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBz
dXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICBXVEY6OnN3aXRjaE9uKCptX2J1ZmZlckhhbmRsZSwKKyAgICAgICAgWyZdIChT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaGFuZGxlKSB7CisgICAgICAgICAgICBBU1NFUlQobV90
eXBlID09IFR5cGU6OkJpdG1hcCk7CisgICAgICAgICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGhhbmRsZSk7CisgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IChf
X2JyaWRnZSBpZCliaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOworICAgICAgICB9LAor
ICAgICAgICBbJl0gKE1hY2hTZW5kUmlnaHQmIG1hY2hTZW5kUmlnaHQpIHsKKyAgICAgICAgICAg
IEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6SU9TdXJmYWNlKTsKKyAgICAgICAgICAgIHN3aXRjaCAo
Y29udGVudHNUeXBlKSB7CisgICAgICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBlOjpJT1N1
cmZhY2U6IHsKKyAgICAgICAgICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNoU2VuZFJpZ2h0KSwgV2ViQ29yZTo6
c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBz
dXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIExheWVyQ29udGVudHNU
eXBlOjpDQU1hY2hQb3J0OgorICAgICAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gKF9fYnJp
ZGdlIGlkKWFkb3B0Q0YoQ0FNYWNoUG9ydENyZWF0ZShtYWNoU2VuZFJpZ2h0LmxlYWtTZW5kUmln
aHQoKSkpLmdldCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OkNBTWFjaFBvcnQ6Ci0gICAg
ICAgICAgICBsYXllci5jb250ZW50cyA9IChfX2JyaWRnZSBpZClhZG9wdENGKENBTWFjaFBvcnRD
cmVhdGUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oKm1fYnVmZmVySGFuZGxlKS5sZWFrU2VuZFJp
Z2h0KCkpKS5nZXQoKTsKLSAgICAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShDR19ESVNQTEFZ
X0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICAgICAgLCBbJl0gKElQQzo6U2hhcmVkQnVm
ZmVyQ29weSYgYnVmZmVyKSB7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OkNH
RGlzcGxheUxpc3QpOworICAgICAgICAgICAgQVNTRVJUKFtsYXllciBpc0tpbmRPZkNsYXNzOltX
S0NvbXBvc2l0aW5nTGF5ZXIgY2xhc3NdXSk7CisgICAgICAgICAgICBpZiAoIVtsYXllciBpc0tp
bmRPZkNsYXNzOltXS0NvbXBvc2l0aW5nTGF5ZXIgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBbbGF5ZXIgc2V0VmFsdWU6QDEgZm9yS2V5UGF0aDpXS0NHRGlz
cGxheUxpc3RFbmFibGVkS2V5XTsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IGJ1ZmZlci5idWZm
ZXIoKS0+Y3JlYXRlQ0ZEYXRhKCk7CisgICAgICAgICAgICBbKFdLQ29tcG9zaXRpbmdMYXllciAq
KWxheWVyIF9zZXRXS0NvbnRlbnRzRGlzcGxheUxpc3Q6ZGF0YS5nZXQoKV07CiAgICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlOjpCaXRtYXA6Ci0gICAgICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoV1RGOjpnZXQ8U2hhcmVhYmxlQml0bWFwOjpI
YW5kbGU+KCptX2J1ZmZlckhhbmRsZSkpOwotICAgICAgICBsYXllci5jb250ZW50cyA9IChfX2Jy
aWRnZSBpZCliaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOwotICAgICAgICBicmVhazsK
LSAgICB9CisjZW5kaWYKKyAgICApOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhy
ZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnRha2VQ
ZW5kaW5nRmx1c2hlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZGFlMzk4NmZkNGMwZDkz
YmI0OWI4NWNhMGExZTIxYTQxYTQzYTIwMy4uMDRlYWE3OWY2MTYwOTY1NTQxMjY3OWYzNjk2NzE5
YzZmMjFhMGNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNTQwLDYgKzU0MCw4IEBAIFVJ
UHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5JbmZvU3RvcmVNYWMubW0KIFVJUHJvY2Vzcy9QbHVn
aW5zL21hYy9QbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbQogVUlQcm9jZXNzL1BsdWdpbnMvbWFj
L1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQogCitVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2Nv
Y29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbQorCiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L21hYy9TY3JvbGxlck1hYy5tbQogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9tYWMvU2Nyb2xs
ZXJQYWlyTWFjLm1tCiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL21hYy9TY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlTWFjLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZU5vZGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5t
bQppbmRleCA0ZmQ0ZWEyNjllOGNjMWJkZmZiMmViMjU5N2Q0Zjc1MGQ4NDI0MDY0Li4wMzE4NGM0
ZmEwMDE4OTg5Mzk3N2FiMzFhZWIyMGM0YzRmZmFlOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlTm9kZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
Tm9kZS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJS
ZW1vdGVMYXllclRyZWVOb2RlLmgiCiAKKyNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZUxheWVycy5o
IgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQUxheWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkFj
dGlvbkRpc2FibGluZ0NBTGF5ZXJEZWxlZ2F0ZS5oPgogCkBAIC0zMywxNiArMzQsNiBAQAogI2lt
cG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAjZW5kaWYKIAotQGludGVyZmFjZSBXS1BsYWluUmVtb3Rl
TGF5ZXIgOiBDQUxheWVyCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1BsYWluUmVtb3RlTGF5
ZXIKLS0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KLXsKLSAgICByZXR1cm4gV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVOb2RlOjphcHBlbmRMYXllckRlc2NyaXB0aW9uKHN1cGVyLmRlc2NyaXB0aW9u
LCBzZWxmKTsKLX0KLUBlbmQKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0YXRpYyBOU1N0cmlu
ZyAqY29uc3QgV0tSZW1vdGVMYXllclRyZWVOb2RlUHJvcGVydHlLZXkgPSBAIldLUmVtb3RlTGF5
ZXJUcmVlTm9kZSI7CkBAIC03Miw3ICs2Myw3IEBAIFJlbW90ZUxheWVyVHJlZU5vZGU6On5SZW1v
dGVMYXllclRyZWVOb2RlKCkKIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyVHJlZU5vZGU+
IFJlbW90ZUxheWVyVHJlZU5vZGU6OmNyZWF0ZVdpdGhQbGFpbkxheWVyKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBsYXllcklEKQogewotICAgIFJldGFpblB0cjxDQUxh
eWVyPiBsYXllciA9IGFkb3B0TlMoW1tXS1BsYWluUmVtb3RlTGF5ZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbGF5ZXIgPSBhZG9wdE5TKFtbV0tDb21wb3NpdGluZ0xh
eWVyIGFsbG9jXSBpbml0XSk7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlTGF5ZXJUcmVl
Tm9kZT4obGF5ZXJJRCwgV1RGTW92ZShsYXllcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVtb3RlTGF5ZXJUcmVlTGF5
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2EvUmVt
b3RlTGF5ZXJUcmVlTGF5ZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI1MWM0YzA4ZjlmMDU5NGQ3MDY2ZTgx
NTA5ZmM4ZTczMWMwNTEyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9jb2NvYS9SZW1vdGVMYXllclRyZWVMYXllcnMuaApAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShDT0NP
QSkKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxRdWFydHpD
b3JlL1F1YXJ0ekNvcmUuaD4KKworQGludGVyZmFjZSBXS0NvbXBvc2l0aW5nTGF5ZXIgOiBDQUxh
eWVyCisKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluLCBzZXR0ZXI9X3NldFdLQ29udGVudHNEaXNwbGF5
TGlzdDopIF9fYXR0cmlidXRlX18oKE5TT2JqZWN0KSkgQ0ZEYXRhUmVmIF93a0NvbnRlbnRzRGlz
cGxheUxpc3Q7CisjZW5kaWYKKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvY29jb2Ev
UmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVyVHJlZUxheWVycy5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjM4
YWExMGMyNDdmNjhkN2Q1MmIzMGQzYmNiOWI4ZDRjNTdlYzkzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2NvY29hL1JlbW90ZUxheWVy
VHJlZUxheWVycy5tbQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVMYXllcnMuaCIKKworI2lmIFBMQVRGT1JN
KENPQ09BKQorCisjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVO
b2RlLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KKworI2lmIEVO
QUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyNpbXBvcnQgPFdlYktp
dEFkZGl0aW9ucy9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJBZGRpdGlvbnMuaD4KKyNlbmRpZgor
CitAaW1wbGVtZW50YXRpb24gV0tDb21wb3NpdGluZ0xheWVyIHsKKyNpZiBFTkFCTEUoQ0dfRElT
UExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
X2NvbnRlbnRzRGlzcGxheUxpc3Q7CisjZW5kaWYKK30KKworLSAoTlNTdHJpbmcgKilkZXNjcmlw
dGlvbgoreworICAgIHJldHVybiBXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZU5vZGU6OmFwcGVuZExh
eWVyRGVzY3JpcHRpb24oc3VwZXIuZGVzY3JpcHRpb24sIHNlbGYpOworfQorCisjaWYgRU5BQkxF
KENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQorLSAodm9pZClfc2V0V0tDb250
ZW50c0Rpc3BsYXlMaXN0OihDRkRhdGFSZWYpZGF0YQoreworICAgIF9jb250ZW50c0Rpc3BsYXlM
aXN0ID0gZGF0YTsKKyAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXldOworfQorCistIChDRkRhdGFS
ZWYpX3drQ29udGVudHNEaXNwbGF5TGlzdAoreworICAgIHJldHVybiBfY29udGVudHNEaXNwbGF5
TGlzdC5nZXQoKTsKK30KKworLSAodm9pZClkcmF3SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29u
dGV4dAoreworICAgIGlmICghX2NvbnRlbnRzRGlzcGxheUxpc3QpCisgICAgICAgIHJldHVybjsK
KyAgICBXS0NHQ29udGV4dERyYXdDR0NvbW1hbmRzRW5jb2RlZERhdGEoY29udGV4dCwgX2NvbnRl
bnRzRGlzcGxheUxpc3QuZ2V0KCksIG51bGxwdHIpOworfQorI2VuZGlmIC8vIEVOQUJMRShDR19E
SVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKworQGVuZAorCisjZW5kaWYgLy8gUExB
VEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVMYXllclRyZWVWaWV3cy5tbQppbmRleCBh
OGZhNmZmNmZhMmFkMGU3YzRhNGMzNTNmYWE3ZWE2YThhMmQ1MjM3Li5kODgzYTViMzczNDhlZjYy
ZDMxYTNmZDE0YTI4M2VmZWIxZDk0YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZUxheWVyVHJlZVZpZXdzLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlTGF5ZXJUcmVl
Vmlld3MubW0KQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9y
dCAiUmVtb3RlTGF5ZXJUcmVlSG9zdC5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlTGF5ZXJz
LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVOb2RlLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5o
IgogI2ltcG9ydCAiV0tEZWZlcnJpbmdHZXN0dXJlUmVjb2duaXplci5oIgpAQCAtMzEzLDYgKzMx
NCwxMSBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS0NvbXBvc2l0aW5nVmlldwogCisrIChD
bGFzcylsYXllckNsYXNzCit7CisgICAgcmV0dXJuIFtXS0NvbXBvc2l0aW5nTGF5ZXIgY2xhc3Nd
OworfQorCiAtIChVSVZpZXcgKiloaXRUZXN0OihDR1BvaW50KXBvaW50IHdpdGhFdmVudDooVUlF
dmVudCAqKWV2ZW50CiB7CiAgICAgcmV0dXJuIFtzZWxmIF93ZWJfZmluZERlc2NlbmRhbnRWaWV3
QXRQb2ludDpwb2ludCB3aXRoRXZlbnQ6ZXZlbnRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZkYjFiNTQ1ZDEwYzY2YmE3MGUyYzgx
ZTBlMzk5NzIyZWNmNmM3OS4uZTJmMDMwODI1NDQ0MzNmYTE3YjYzYzZiZGRlMjdmOWZkZDM3ZTM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC02NjcsNiArNjY3LDcgQEAKIAkJMkQ1NEMzMUEyMTJGM0IzMzAwNDlDMTc0IC8qIFVuaWZp
ZWRTb3VyY2U2MS1tbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJENTRDMzA2MjEyRjNCMzMwMDQ5QzE3NCAvKiBVbmlmaWVkU291cmNlNjEtbW0ubW0g
Ki87IH07CiAJCTJENTRDMzFCMjEyRjREQTYwMDQ5QzE3NCAvKiBQcm9jZXNzTGF1bmNoZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMTE3RjUx
MURCQjMwOTAwOTgxNjE1IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgKi87IH07CiAJCTJENUM5RDA2
MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ1QzlEMDQxOUM4MUQ4RjAwQjNDNUMxIC8qIFdl
YlBhZ2VPdmVybGF5LmggKi87IH07CisJCTJENjQ4MjRCMjY0NEIxQUIwMDAzMDMzNSAvKiBSZW1v
dGVMYXllclRyZWVMYXllcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJENjQ4MjQ5MjY0NEIxQUIwMDAzMDMzNSAvKiBSZW1vdGVMYXllclRyZWVMYXll
cnMuaCAqLzsgfTsKIAkJMkQ2QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJl
ckluZGljYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ2QUI1M0YxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5o
ICovOyB9OwogCQkyRDZCMzcxQjE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWlsVmlldy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2QjM3MTkx
OEE5NjdBRDAwNDJBRTgwIC8qIF9XS1RodW1ibmFpbFZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDZDRDExOTE4OTA1OEE1MDBFNUE0QTAg
LyogVmlld1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9y
ZS5oICovOyB9OwpAQCAtMTgyOCw2ICsxODI5LDggQEAKIAkJQkNFNDY5NTQxMjE0RTZDQjAwMEI5
OEVCIC8qIFdlYkZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRTQ2OTUwMTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50Lmgg
Ki87IH07CiAJCUJDRTQ2OTU2MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lvbkxp
c3RlbmVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRTQ2OTUyMTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHkuaCAqLzsgfTsKIAkJQkNFNDY5NUExMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1p
c3Npb25MaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNFNDY5NTgxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJD
RTU3OUE2MjYzNDgzNjcwMEY1QzVFOSAvKiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U1NzlB
NDI2MzQ4MzY3MDBGNUM1RTkgLyogQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oICov
OyB9OworCQlCQ0U1NzlBNzI2MzQ4MzY3MDBGNUM1RTkgLyogQ0dEaXNwbGF5TGlzdEltYWdlQnVm
ZmVyQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0U1NzlBNTI2MzQ4MzY3MDBGNUM1RTkgLyogQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVy
QmFja2VuZC5jcHAgKi87IH07CiAJCUJDRTgxRDhEMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFODFE
OEIxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggKi87IH07CiAJCUJDRUU3QUQwMTI4MTc5
ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTdBQ0MxMjgxNzk4ODAw
OTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUJD
RUU3QUQxMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFRTdBQ0QxMjgxNzk4
ODAwOTgyN0RBIC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi87IH07CkBAIC0zMjI3LDYg
KzMyMzAsOCBAQAogCQkyRDU0QzMwNjIxMkYzQjMzMDA0OUMxNzQgLyogVW5pZmllZFNvdXJjZTYx
LW1tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gIlVuaWZpZWRTb3VyY2U2MS1tbS5tbSI7IHBh
dGggPSAiRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi91bmlmaWVkLXNvdXJjZXMvVW5pZmllZFNvdXJj
ZTYxLW1tLm1tIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMkQ1QzlE
MDMxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBhZ2VPdmVybGF5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkQ1QzlEMDQxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VPdmVybGF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJENjQ4MjQ5MjY0NEIxQUIwMDAzMDMzNSAvKiBS
ZW1vdGVMYXllclRyZWVMYXllcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJE
NjQ4MjRBMjY0NEIxQUIwMDAzMDMzNSAvKiBSZW1vdGVMYXllclRyZWVMYXllcnMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVMYXllclRyZWVMYXllcnMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkFCNTNGMTkyQjFDNEEwMDNBOUZE
MSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLmg7IHBhdGggPSBpb3MvV0tQREZQYWdl
TnVtYmVySW5kaWNhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkFCNTQw
MTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3Iu
bW07IHBhdGggPSBpb3MvV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDZCMzcxOTE4QTk2N0FEMDA0MkFFODAgLyogX1dLVGh1bWJuYWls
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tUaHVtYm5haWxWaWV3
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTA4LDYgKzU1MTMsOCBAQAogCQlC
Q0U0Njk1MjEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkZvcm1TdWJtaXNzaW9uTGlz
dGVuZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0U0Njk1NzEyMTRF
REY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBX
S0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDRTU3OUE0MjYzNDgzNjcwMEY1QzVFOSAvKiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNFNTc5QTUyNjM0ODM2NzAwRjVDNUU5
IC8qIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRTgxRDhBMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250SW5mby5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRTgxRDhCMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250SW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0U5QzBDRjE0ODU5NjVEMDBFMzNENjEgLyogV2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC03MjkxLDYgKzcyOTgsNyBAQAogCQkyRDE1NTFBOTFGNUE5QjQyMDAwNkUzRkUgLyog
UmVtb3RlTGF5ZXJUcmVlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkyRDY0ODI0ODI2NDRCMUFCMDAwMzAzMzUgLyogY29jb2EgKi8sCiAJCQkJMkQxNTUx
QUExRjVBOUJBNzAwMDZFM0ZFIC8qIGlvcyAqLywKIAkJCQlFNDA0OTA2RjIxREU2NUQ3MDAzN0Yw
REIgLyogbWFjICovLAogCQkJCTFBQjE2QUUwMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5LmggKi8sCkBAIC03MzU4LDYgKzczNjYsOCBAQAogCQkyRDJF
MDQ3NjFGNUJFQzRGMDBCQjI1RUQgLyogUmVtb3RlTGF5ZXJUcmVlICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCQ0U1NzlBNTI2MzQ4MzY3MDBGNUM1RTkg
LyogQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8sCisJCQkJQkNFNTc5QTQy
NjM0ODM2NzAwRjVDNUU5IC8qIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywK
IAkJCQkyRDQ3QjU2QjE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
aCAqLywKIAkJCQkyRDQ3QjU2QTE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0gKi8sCiAJCQkJMkRERjczMTMxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oICovLApAQCAtNzM3NSw2ICs3Mzg1LDE1IEBACiAJCQlw
YXRoID0gUmVtb3RlTGF5ZXJUcmVlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
KwkJMkQ2NDgyNDgyNjQ0QjFBQjAwMDMwMzM1IC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyRDY0ODI0OTI2NDRCMUFCMDAwMzAzMzUgLyog
UmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmggKi8sCisJCQkJMkQ2NDgyNEEyNjQ0QjFBQjAwMDMwMzM1
IC8qIFJlbW90ZUxheWVyVHJlZUxheWVycy5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkyRDdERUJFMjIxMjY5RTRCMDBC
OUY3M0MgLyogdW5pZmllZC1zb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTExODcwLDYgKzExODg5LDcgQEAKIAkJCQk0MTg5N0VEODFGNDE1RDhB
MDAxNkZBNDIgLyogQ2FjaGVTdG9yYWdlRW5naW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUZB
QkQyQTFGNERFMDAxMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxODk3RURBMUY0MTVEOEEwMDE2RkE0MiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0U1NzlBNjI2MzQ4MzY3MDBGNUM1
RTkgLyogQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdCNEI0NjAyMEI1MDRBQzAwRDRBRDc5IC8qIENsaWVudENlcnRpZmljYXRlQXV0aGVudGlj
YXRpb25YUENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RkUwQTNCMjQ2MzJCNjAw
MDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDgyNzM0NzI0NTI4
RjYwMDBBOTU0OTMgLyogQ29jb2FJbWFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjIwNyw2ICsx
MjIyNyw3IEBACiAJCQkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjI0QTJFMTg3OUU0QkMw
MDNBQkYwQyAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQTNENzVDMTY1MUI0NEYwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRy
ZWVIb3N0LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDY0ODI0QjI2NDRCMUFCMDAwMzAzMzUgLyog
UmVtb3RlTGF5ZXJUcmVlTGF5ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEU1N0Y2QjIxQTgz
QjEyMDAzNDVGM0MgLyogUmVtb3RlTGF5ZXJUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGMjY0QTAxQTFGRjlDQzAwMUZFNzU5IC8qIFJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NDA5Miw2ICsxNDExMyw3IEBACiAJCQkJNTFGQUVDM0IxQjA2NTc2ODAwMDlDNEU3IC8qIEF1eGls
aWFyeVByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3
ODUyMTJCNkFCMTAwRjQ5M0ZEIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRiAv
KiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJDRTU3OUE3MjYzNDgzNjcwMEY1QzVFOSAvKiBDR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdEMjEyQjZBNzEw
MEY0OTNGRCAvKiBDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzdGMjEy
QjZBNzEwMEY0OTNGRCAvKiBEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5REFBMzhD
MjRDQkExQTgwMDc5M0Q3NSAvKiBEZWZhdWx0V2ViQnJvd3NlckNoZWNrcy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKaW5kZXggNDAyYzI4YTQwZTgyNjM5
ZTU0MzIyMGVmOTEwNzhkOWIxYzk0ZDM0Yi4uNjE4NDNkODkyY2YyZjZiMDQwZGYxMTBiMzk0NWNm
MDIxODI5ZWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCkBAIC0yOCwxNiAr
MjgsMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJTaGFyZWFibGVC
aXRtYXAuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8d3RmL01h
Y2hTZW5kUmlnaHQuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdXNpbmcgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlID0gVmFyaWFudDwKKyAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZQogI2lmIFBMQVRGT1JNKENPQ09BKSAvLyBGSVhNRTogVGhp
cyBpcyByZWFsbHkgYWJvdXQgSU9TdXJmYWNlLgotICAgIE1hY2hTZW5kUmlnaHQsCisgICAgLCBN
YWNoU2VuZFJpZ2h0CisjZW5kaWYKKyNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9J
TUFHRV9CVUZGRVIpCisgICAgLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkKICNlbmRpZgotICAgIFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlCiA+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggMWM5NzY1
OTlkZjUzNTJiZjhhMDIzZTkyNjQwOTEzOWQ1YmMyNzBkOC4uNmY0MDY2YzM2ZDRkNDY0MGYyMjMy
OTc5ZjhmODA4ODEzMDAyNzAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAKQEAgLTIzNCw2ICsyMzQsMTAgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGU6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgQVNTRVJUKG1fcHJvcGVydGllcy5i
YWNraW5nU3RvcmVBdHRhY2hlZCk7CiAKICAgICBhdXRvIHR5cGUgPSBtX2FjY2VsZXJhdGVzRHJh
d2luZyA/IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpJT1N1cmZhY2UgOiBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6VHlwZTo6Qml0bWFwOworI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJ
U1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKKyAgICBpZiAobV9jb250ZXh0LT51c2VDR0Rpc3BsYXlM
aXN0c0ZvckRPTVJlbmRlcmluZygpKQorICAgICAgICB0eXBlID0gUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OlR5cGU6OkNHRGlzcGxheUxpc3Q7CisjZW5kaWYKICAgICBtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLT5lbnN1cmVCYWNraW5nU3RvcmUodHlwZSwgbV9wcm9wZXJ0aWVzLmJvdW5kcy5z
aXplKCksIG1fcHJvcGVydGllcy5jb250ZW50c1NjYWxlLCBtX3dhbnRzRGVlcENvbG9yQmFja2lu
Z1N0b3JlLCBtX3Byb3BlcnRpZXMub3BhcXVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVDb250ZXh0LmgKaW5kZXggNzAyYzY3OWZmYmMxNjg3YzQzMDE3ODQy
MjhiNGUzN2E2ZjU2Y2MxMS4uNjIzOTc5N2Y1NGE1NzQyMzY0NDJmZDY5YzlkZGUwMmI0YTA3NGUw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCkBA
IC04MCw2ICs4MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkb3B0TGF5ZXJzRnJvbUNvbnRleHQo
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYpOwogCiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5JiBlbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKKworICAgIGJvb2wgdXNl
Q0dEaXNwbGF5TGlzdHNGb3JET01SZW5kZXJpbmcoKSBjb25zdCB7IHJldHVybiBtX3VzZUNHRGlz
cGxheUxpc3RzRm9yRE9NUmVuZGVyaW5nOyB9CisgICAgdm9pZCBzZXRVc2VDR0Rpc3BsYXlMaXN0
c0ZvckRPTVJlbmRlcmluZyhib29sIHVzZUNHRGlzcGxheUxpc3RzKSB7IG1fdXNlQ0dEaXNwbGF5
TGlzdHNGb3JET01SZW5kZXJpbmcgPSB1c2VDR0Rpc3BsYXlMaXN0czsgfQogICAgIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQoKSBjb25zdDsK
QEAgLTEwNiw2ICsxMDksOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkxheWVyUG9vbCBtX2xh
eWVyUG9vbDsKICAgICAKICAgICBib29sIG1fbmV4dFJlbmRlcmluZ1VwZGF0ZVJlcXVpcmVzU3lu
Y2hyb25vdXNJbWFnZURlY29kaW5nIHsgZmFsc2UgfTsKKworICAgIGJvb2wgbV91c2VDR0Rpc3Bs
YXlMaXN0c0ZvckRPTVJlbmRlcmluZyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYS5tbQppbmRleCA2ZjM1NjVhOTA4YWFjYzJkNTg3MmEyMjBjZGY0ZjM1Mzc5YWQ5OGExLi45
ZjM1ZWFiMTEyZjUzODU1ZGE3NzRlYTgyZmYxYTEwMzM1YTA3YTI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAjaW1wb3J0ICJXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCAiV2Vi
UHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGVidWdQYWdlT3ZlcmxheXMu
aD4KQEAgLTE2MSw3ICsxNjIsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpz
aG91bGRVc2VUaWxlZEJhY2tpbmdGb3JGcmFtZVZpZXcoY29uc3QgRnJhbWVWaQogICAgIHJldHVy
biBmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5GcmFtZSgpIHx8IG1fd2ViUGFnZS5jb3JlUGFnZSgp
LT5zZXR0aW5ncygpLmFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkKCk7CiB9CiAKLXZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKQordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUHJl
ZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcHJlZmVyZW5jZXMpCiB7CiAgICAg
U2V0dGluZ3MmIHNldHRpbmdzID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNldHRpbmdzKCk7CiAK
QEAgLTE3MSw2ICsxNzIsOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRh
dGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikKIAogICAgIG1fcm9vdExh
eWVyLT5zZXRTaG93RGVidWdCb3JkZXIoc2V0dGluZ3Muc2hvd0RlYnVnQm9yZGVycygpKTsKIAor
ICAgIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dC0+c2V0VXNlQ0dEaXNwbGF5TGlzdHNGb3JET01S
ZW5kZXJpbmcocHJlZmVyZW5jZXMuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
Ojp1c2VDR0Rpc3BsYXlMaXN0c0ZvckRPTVJlbmRlcmluZ0tleSgpKSk7CisKICAgICBEZWJ1Z1Bh
Z2VPdmVybGF5czo6c2V0dGluZ3NDaGFuZ2VkKCptX3dlYlBhZ2UuY29yZVBhZ2UoKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>