<?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>209268</bug_id>
          
          <creation_ts>2020-03-18 19:46:22 -0700</creation_ts>
          <short_desc>Implement support for cursor interactions on iPad</short_desc>
          <delta_ts>2020-03-19 12:21:15 -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>bdakin</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1631500</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-18 19:46:22 -0700</bug_when>
    <thetext>Implement support for cursor interactions on iPad</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631501</commentid>
    <comment_count>1</comment_count>
      <attachid>393938</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-18 19:47:18 -0700</bug_when>
    <thetext>Created attachment 393938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631503</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-18 19:54:06 -0700</bug_when>
    <thetext>(AFAIK the style bot complaint is only true for macOS, not iOS, so I&apos;m ignoring it)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631523</commentid>
    <comment_count>3</comment_count>
      <attachid>393938</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-18 20:45:36 -0700</bug_when>
    <thetext>Comment on attachment 393938
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8122
&gt; +    static dispatch_once_t onceToken;
&gt; +    dispatch_once(&amp;onceToken, ^{
&gt; +        // System apps will always be linked on the current OS, so
&gt; +        // check them before the linked-on-or-after.
&gt; +
&gt; +        // &lt;rdar://problem/59521967&gt; iAd Video does not respond to mouse events, only touch events
&gt; +        if (WebCore::IOSApplication::isNews() || WebCore::IOSApplication::isStocks())
&gt; +            shouldUseMouseGestureRecognizer = NO;
&gt; +
&gt; +        if (WebKit::linkedOnOrAfter(WebKit::SDKVersion::FirstThatSendsNativeMouseEvents))
&gt; +            return;
&gt; +
&gt; +        // &lt;rdar://problem/59155220&gt; Some Feedly UI does not respond to mouse events, only touch events
&gt; +        if (WebCore::IOSApplication::isFeedly())
&gt; +            shouldUseMouseGestureRecognizer = NO;
&gt; +    });

Is the thread safety really needed here? Can it be called from more than one thread concurrently?

- If so, is everything the dispatch_once block does safe to be called from any thread?

- If not, I suggest instead writing this:

    static const BOOL shouldUseMouseGestureRecognizer = []() -&gt; BOOL {
        ... code here ...
    }();

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8127
&gt; +- (void)setupMouseGestureRecognizer

The verb &quot;set up&quot; is two words, not one. So I would name this setUpMouseGestureRecognizer.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8154
&gt; +- (void)setupCursorInteraction

And name this setUpCursorInteraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631760</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-19 11:35:06 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 393938 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393938&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8122
&gt; &gt; +    static dispatch_once_t onceToken;
&gt; &gt; +    dispatch_once(&amp;onceToken, ^{
&gt; &gt; +        // System apps will always be linked on the current OS, so
&gt; &gt; +        // check them before the linked-on-or-after.
&gt; &gt; +
&gt; &gt; +        // &lt;rdar://problem/59521967&gt; iAd Video does not respond to mouse events, only touch events
&gt; &gt; +        if (WebCore::IOSApplication::isNews() || WebCore::IOSApplication::isStocks())
&gt; &gt; +            shouldUseMouseGestureRecognizer = NO;
&gt; &gt; +
&gt; &gt; +        if (WebKit::linkedOnOrAfter(WebKit::SDKVersion::FirstThatSendsNativeMouseEvents))
&gt; &gt; +            return;
&gt; &gt; +
&gt; &gt; +        // &lt;rdar://problem/59155220&gt; Some Feedly UI does not respond to mouse events, only touch events
&gt; &gt; +        if (WebCore::IOSApplication::isFeedly())
&gt; &gt; +            shouldUseMouseGestureRecognizer = NO;
&gt; &gt; +    });
&gt; 
&gt; Is the thread safety really needed here? Can it be called from more than one
&gt; thread concurrently?
&gt; 
&gt; - If so, is everything the dispatch_once block does safe to be called from
&gt; any thread?
&gt; 
&gt; - If not, I suggest instead writing this:
&gt; 
&gt;     static const BOOL shouldUseMouseGestureRecognizer = []() -&gt; BOOL {
&gt;         ... code here ...
&gt;     }();

... good point.

&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8127
&gt; &gt; +- (void)setupMouseGestureRecognizer
&gt; 
&gt; The verb &quot;set up&quot; is two words, not one. So I would name this
&gt; setUpMouseGestureRecognizer.

This file is alllll mixed up about the capitalization of setUp, so I&apos;ll be bold and fix the whole thing :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631768</commentid>
    <comment_count>5</comment_count>
      <attachid>394003</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-19 12:06:17 -0700</bug_when>
    <thetext>Created attachment 394003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631771</commentid>
    <comment_count>6</comment_count>
      <attachid>394004</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-19 12:14:00 -0700</bug_when>
    <thetext>Created attachment 394004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631772</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-03-19 12:20:08 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/258721/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631774</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-19 12:21:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/60645044&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393938</attachid>
            <date>2020-03-18 19:47:18 -0700</date>
            <delta_ts>2020-03-19 12:06:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209268-20200318194718.patch</filename>
            <type>text/plain</type>
            <size>28459</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjYmQzNjA5MTZjOTE1ODdjYmE3MjNl
ZDhiMGZjZWEzZTAxMTI3ODUuLjQwNDc2OTQzZWM0ZDhmZjdjZmVhYjg2OGRlYzE5OTg4OTlkOWZi
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIGN1cnNv
ciBpbnRlcmFjdGlvbnMgb24gaVBhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorICAgICAgICBEb24n
dCBkaXNhYmxlIHRoZSBjb250ZXh0bWVudSBldmVudCBvbiBpT1MgYW55bW9yZS4KKworICAgICAg
ICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKyAgICAgICAgUmVuYW1lIEhBVkVfSE9WRVJfR0VTVFVS
RV9SRUNPR05JWkVSIHRvIEhBVkVfVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JULgorICAgICAgICBB
ZGQgSEFWRV9VSV9DVVJTT1JfSU5URVJBQ1RJT04uCisgICAgICAgIEVuYWJsZSBIQVZFX1VJX1BB
UkFMTEFYX1RSQU5TSVRJT05fR0VTVFVSRV9SRUNPR05JWkVSIG9uIGlPUy4KKwogMjAyMC0wMy0x
OCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04ocjI1NDM4OSk6IENvcmRvdmEgdGhyb3dzIGFuIGV4Y2VwdGlvbiBiZWNhdXNlIGl0
IGV4cGVjdHMgYSBoeXBoZW4gaW5zaWRlIG5hdmlnYXRvci5sb2NhbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBm
YzUxOGEyM2QxOTdhZmI0MDgwMTI2NGVlNWVmYmY2MDZlMWIxYzM4Li43MTNiYzAwODEwMWMwZGIx
MDljZWY5ZWE0NDE5N2NhYzVmYjVmMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MjAtMDMtMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIGN1cnNvciBpbnRlcmFjdGlvbnMgb24gaVBhZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGluIHRoaXMgcGF0Y2gsIGp1c3QgdXBzdHJlYW1pbmcuIFdpbGwgYXR0ZW1wdCB0byBlbmFibGUK
KyAgICAgICAgc29tZSBtYWNPUyBtb3VzZSBldmVudCB0ZXN0cyBvbiBpT1MgaW4gdGhlIGZ1dHVy
ZSwgdGhvdWdoLgorCisgICAgICAgICogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNOZXdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1N0b2Nrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNGZWVkbHkpOgorICAgICAgICBBZGQgc29tZSBidW5kbGUgSUQg
Y2hlY2tzIG5lZWRlZCBpbiBXZWJLaXQuCisKIDIwMjAtMDMtMTggIHlvdWVubiBmYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlBhZ2Ugc2hvdWxkIG93biBhIFJlZjxXZWJG
cmFtZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOTgzOTY0Zjc3MjE1ZjU3ZmQ5YjAzMmZjYjQyOGFiZWQyNmU0NTk3
Mi4uYjM3NjNiZjEzZjRhYjcyNTAwYzIyZDUzM2VhMDI2MjAwZTkxY2ViYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzNSBAQAorMjAyMC0wMy0xOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgY3Vyc29yIGludGVyYWN0
aW9ucyBvbiBpUGFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDkyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvVmVyc2lvbkNoZWNrcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFjdGlv
bl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsZWFudXBJbnRlcmFjdGlvbl0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRSZWNl
aXZlVG91Y2g6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6
c2hvdWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXI6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3dTaGFyZVNoZWV0OmluUmVjdDpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cERyYWdBbmREcm9wSW50
ZXJhY3Rpb25zXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2hvdWxkVXNlTW91c2VHZXN0
dXJlUmVjb2duaXplcl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwTW91c2VHZXN0
dXJlUmVjb2duaXplcl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IG1vdXNlR2VzdHVyZVJl
Y29nbml6ZXJDaGFuZ2VkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwQ3Vyc29y
SW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3Vyc29ySW50ZXJhY3Rp
b246cmVnaW9uRm9yTG9jYXRpb246ZGVmYXVsdFJlZ2lvbjpjb21wbGV0aW9uOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGN1cnNvclJlZ2lvbkZvclBvc2l0aW9uSW5mb3JtYXRpb246cG9p
bnQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3Vyc29ySW50ZXJhY3Rpb246c3R5bGVG
b3JSZWdpb246bW9kaWZpZXJzOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9tb3VzZUdl
c3R1cmVSZWNvZ25pemVyQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q2hyb21lQ2xpZW50OjpzaG91bGRVc2VNb3VzZUV2ZW50Rm9yU2VsZWN0aW9uKToKKwogMjAyMC0w
My0xOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFn
ZSBzaG91bGQgb3duIGEgUmVmPFdlYkZyYW1lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1FbmFibGVDb2NvYS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2Nv
YS5oCmluZGV4IDAwNWFmYjE3NDMxYzU0MjVhZDAyNTZiNzRhMGIzZDAwMjU1MzA5YmIuLmY2NTc0
MTJmYzNkOGRjZjc3ZDg4ZDI3ZWYwYThiMjA5ZDYyNjc0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2EuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZUNvY29hLmgKQEAgLTU1LDcgKzU1LDcgQEAKICNkZWZpbmUgRU5BQkxFX0NPTlRFWFRf
TUVOVVMgMAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VX0VWRU5U
KSAmJiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKKyNp
ZiAhZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VX0VWRU5UKSAmJiAoUExBVEZPUk0oV0FUQ0hP
UykgfHwgUExBVEZPUk0oQVBQTEVUVikpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVfRVZF
TlQgMAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5o
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZTg0NGIyNjk3NTYyOGYzNDRh
NmRhNDk1NzZkMTJiYzFlMGUxN2VmOS4uNDIyNjEwODRlZTdiYTlkMGJhYjM3N2VhNDgwM2NjNGQw
NDIzYmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTQ4MCwxNSArNDgwLDE5IEBACiAjZGVm
aW5lIEhBVkVfVUlfV0tfRE9DVU1FTlRfQ09OVEVYVCAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQotI2RlZmluZSBIQVZFX0hPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUiAxCi0j
ZGVmaW5lIEhBVkVfTE9PS1VQX0dFU1RVUkVfUkVDT0dOSVpFUiAxCisjaWYgKFBMQVRGT1JNKElP
UykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwNDAwKQorI2RlZmlu
ZSBIQVZFX1VJX0NVUlNPUl9JTlRFUkFDVElPTiAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQorI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEzMDQwMCkgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjZGVmaW5lIEhB
VkVfVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUIDEKICNkZWZpbmUgSEFWRV9VSV9QQVJBTExBWF9U
UkFOU0lUSU9OX0dFU1RVUkVfUkVDT0dOSVpFUiAxCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1B
Q0NBVEFMWVNUKQorI2RlZmluZSBIQVZFX0xPT0tVUF9HRVNUVVJFX1JFQ09HTklaRVIgMQorI2Vu
ZGlmCisKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgSEFWRV9BTExP
V1NfU0VOU0lUSVZFX0xPR0dJTkcgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCmluZGV4IGQyMDNiNDZiYTgyYjhhNDNk
YTBmNzllMjBmZDhkM2U5ZDM5YTk2MWIuLmUwYTEyNGZhMjdmMDhlMWZlOTA2ZTQ1NGYzZDgzMTM0
MjUwZGZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oCkBAIC0xMDAsNiArMTAwLDkgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBp
c0FwcGxlQXBwbGljYXRpb24oKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFdmVybm90ZSgpOwog
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0V2ZW50YnJpdGUoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aXNEYXRhQWN0aXZhdGlvbigpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc05ld3MoKTsKK1dFQkNP
UkVfRVhQT1JUIGJvb2wgaXNTdG9ja3MoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNGZWVkbHko
KTsKIAogfSAvLyBJT1NBcHBsaWNhdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmlu
ZGV4IGMyYTA2ZjA1NjQzYWRhMWQ2ZWE0YTA2MzAzNzBiZTcwMTIyNGJhMDkuLmVkMjI1YjY3ZjZh
Mzg5Y2ZkMWRhZDliYTFkNzY5NzQ2ZDUzNWM0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29h
Lm1tCkBAIC0zNDUsNiArMzQ1LDI0IEBAIGJvb2wgSU9TQXBwbGljYXRpb246OmlzTWluaUJyb3dz
ZXIoKQogICAgIHJldHVybiBpc01pbmlCcm93c2VyOwogfQogCitib29sIElPU0FwcGxpY2F0aW9u
Ojppc05ld3MoKQoreworICAgIHN0YXRpYyBib29sIGlzTmV3cyA9IGFwcGxpY2F0aW9uQnVuZGxl
SXNFcXVhbFRvKCJjb20uYXBwbGUubmV3cyJfcyk7CisgICAgcmV0dXJuIGlzTmV3czsKK30KKwor
Ym9vbCBJT1NBcHBsaWNhdGlvbjo6aXNTdG9ja3MoKQoreworICAgIHN0YXRpYyBib29sIGlzU3Rv
Y2tzID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5zdG9ja3MiX3MpOwor
ICAgIHJldHVybiBpc1N0b2NrczsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNGZWVkbHko
KQoreworICAgIHN0YXRpYyBib29sIGlzRmVlZGx5ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFs
VG8oImNvbS5kZXZoZC5mZWVkbHkiX3MpOworICAgIHJldHVybiBpc0ZlZWRseTsKK30KKwogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
aW9zL1VJS2l0U1BJLmgKaW5kZXggNzlkMTlmMTk3ZTU2NWQwMGRjOWRkYTdhODgyMDliODA5YmY5
YWQ3Yi4uODc3ZjNjMzFlN2JkZWEwMTNkZWU0NTNlOGY2NWM0NWM5MWY5Y2U5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNp
bXBvcnQgPFVJS2l0L1VJVGV4dEVmZmVjdHNXaW5kb3cuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4
dElucHV0X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4dEludGVyYWN0aW9uQXNzaXN0
YW50X1ByaXZhdGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJVGV4dEludGVyYWN0aW9uX1ByaXZhdGUu
aD4KICNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uaW5nX1ByaXZhdGUu
aD4KICNpbXBvcnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
VUlLaXQvVUlWaWV3Q29udHJvbGxlcl9WaWV3U2VydmljZS5oPgpAQCAtMTIzLDYgKzEyNCwxMyBA
QAogI2ltcG9ydCA8VUlLaXQvVUlUYXJnZXRlZFByZXZpZXdfUHJpdmF0ZS5oPgogI2VuZGlmCiAK
KyNpZiBIQVZFKFVJX0NVUlNPUl9JTlRFUkFDVElPTikKKyNpbXBvcnQgPFVJS2l0L19VSUN1cnNv
ckludGVyYWN0aW9uLmg+CisjaW1wb3J0IDxVSUtpdC9fVUlDdXJzb3JJbnRlcmFjdGlvbl9Gb3JX
ZWJLaXRPbmx5Lmg+CisjaW1wb3J0IDxVSUtpdC9fVUlDdXJzb3JTdHlsZS5oPgorI2ltcG9ydCA8
VUlLaXQvX1VJQ3Vyc29yU3R5bGVfUHJpdmF0ZS5oPgorI2VuZGlmCisKICNlbHNlIC8vIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNjQ3LDYg
KzY1NSwxMCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSVdLR2VzdHVyZVR5cGUpIHsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgYXNzaWduKSBVSVRhcEdlc3R1cmVSZWNv
Z25pemVyICpzaW5nbGVUYXBHZXN0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFVJVGV4dEludGVy
YWN0aW9uICgpCitAcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJlYWRvbmx5KSBDR0Zsb2F0
IF9tYXhpbXVtQmVhbVNuYXBwaW5nTGVuZ3RoOworQGVuZAorCiBAcHJvdG9jb2wgVUlXS0ludGVy
YWN0aW9uVmlld1Byb3RvY29sCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhHZXN0dXJlQXQ6
KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3
aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0ZTsKIC0gKHZvaWQpY2hhbmdl
U2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihV
SVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggYmFzZUlzU3RhcnQ6KEJPT0wpYmFzZUlzU3RhcnQgd2l0
aEZsYWdzOihVSVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3M7CkBAIC0xMTM3LDYgKzExNDksMjMgQEAg
dHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIF9VSUNvbnRleHRNZW51TGF5b3V0KSB7CiBAcHJv
cGVydHkgKHJlYWRvbmx5KSBCT09MIGlzTG93Q29uZmlkZW5jZTsKIEBlbmQKIAorQHByb3RvY29s
IF9VSUN1cnNvckludGVyYWN0aW9uRGVsZWdhdGU7CisKK0BpbnRlcmZhY2UgX1VJQ3Vyc29ySW50
ZXJhY3Rpb24gOiBOU09iamVjdCA8VUlJbnRlcmFjdGlvbj4KKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERlbGVnYXRlOihpZCA8X1VJQ3Vyc29ySW50ZXJhY3Rpb25EZWxlZ2F0ZT4pZGVsZWdhdGU7
CistICh2b2lkKWludmFsaWRhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCBnZXR0
ZXI9X3BhdXNlc0N1cnNvclVwZGF0ZXNXaGlsZVBhbm5pbmcsIHNldHRlcj1fc2V0UGF1c2VzQ3Vy
c29yVXBkYXRlc1doaWxlUGFubmluZzopIEJPT0wgcGF1c2VzQ3Vyc29yVXBkYXRlc1doaWxlUGFu
bmluZzsKK0BlbmQKKworQGludGVyZmFjZSBfVUlDdXJzb3JSZWdpb24gOiBOU09iamVjdCA8TlND
b3B5aW5nPgorKyAoaW5zdGFuY2V0eXBlKXJlZ2lvbldpdGhJZGVudGlmaWVyOihpZCA8TlNPYmpl
Y3Q+KWlkZW50aWZpZXIgcmVjdDooQ0dSZWN0KXJlY3Q7CitAZW5kCisKK0BpbnRlcmZhY2UgX1VJ
Q3Vyc29yIDogTlNPYmplY3QKKysgKGluc3RhbmNldHlwZSliZWFtV2l0aFByZWZlcnJlZExlbmd0
aDooQ0dGbG9hdClsZW5ndGggYXhpczooVUlBeGlzKWF4aXM7CisrIChpbnN0YW5jZXR5cGUpbGlu
a0N1cnNvcjsKK0BlbmQKKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNk
ZWZpbmUgVUlXS0RvY3VtZW50UmVxdWVzdE1hcmtlZFRleHRSZWN0cyAoMSA8PCA1KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCmluZGV4IDg2NzE5YWM0
M2I1NTU5YjRlYWE4YjgwZTQ2MWYwMTlhMTNmNDQwZmMuLmUyNmM5MjQ3NzExZTVmZjNlMTMwNTM2
YjM2MjU3OTU2ODAyYjUxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZlcnNpb25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9W
ZXJzaW9uQ2hlY2tzLmgKQEAgLTkyLDYgKzkyLDcgQEAgZW51bSBjbGFzcyBTREtWZXJzaW9uIDog
dWludDMyX3QgewogICAgIEZpcnN0V2hlcmVTaXRlU3BlY2lmaWNRdWlya3NBcmVFbmFibGVkQnlE
ZWZhdWx0ID0gRFlMRF9JT1NfVkVSU0lPTl8xM18yLAogICAgIEZpcnN0VGhhdFJlc3RyaWN0c0Jh
c2VVUkxTY2hlbWVzID0gRFlMRF9JT1NfVkVSU0lPTl8xM180LAogICAgIEZpcnN0V2l0aFNlc3Np
b25DbGVhbnVwQnlEZWZhdWx0ID0gRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1NFU1NJT05f
Q0xFQU5VUF9CWV9ERUZBVUxULAorICAgIEZpcnN0VGhhdFNlbmRzTmF0aXZlTW91c2VFdmVudHMg
PSBEWUxEX0lPU19WRVJTSU9OXzEzXzQsCiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgRmlyc3RX
aXRoTmV0d29ya0NhY2hlID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMSwKICAgICBGaXJzdFdp
dGhFeGNlcHRpb25zRm9yRHVwbGljYXRlQ29tcGxldGlvbkhhbmRsZXJDYWxscyA9IERZTERfTUFD
T1NYX1ZFUlNJT05fMTBfMTMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZTc3YTUzODZkMGVkMzViMTY3OTgx
OWQwZjQyZWY1Njc3ODExZTA1MC4uMzYwODEyYjg5ZWJmODFlYzJjMGQyYmU2Mjg5YTc2OGRkOGI2
MDU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7
CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0OwogfQogCitAY2xhc3MgX1VJQ3Vyc29y
SW50ZXJhY3Rpb247CiBAY2xhc3MgX1VJTG9va3VwR2VzdHVyZVJlY29nbml6ZXI7CiBAY2xhc3Mg
X1VJSGlnaGxpZ2h0VmlldzsKIEBjbGFzcyBVSVRhcmdldGVkUHJldmlldzsKQEAgLTExOCw2ICsx
MTksOCBAQCB0eXBlZGVmIHZvaWQgKF5VSVdLU2VsZWN0aW9uV2l0aERpcmVjdGlvbkNvbXBsZXRp
b25IYW5kbGVyKShCT09MIHNlbGVjdGlvbkVuZElzTQogdHlwZWRlZiBCbG9ja1B0cjx2b2lkKFdl
YktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24pPiBJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQ2FsbGJhY2s7CiB0eXBlZGVmIHN0ZDo6cGFpcjxXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQ2FsbGJhY2s+IEludGVyYWN0
aW9uSW5mb3JtYXRpb25SZXF1ZXN0QW5kQ2FsbGJhY2s7CiAKK3R5cGVkZWYgdWludDY0X3QgQ3Vy
c29ySW50ZXJhY3Rpb25SZXF1ZXN0SUQ7CisKICNkZWZpbmUgRk9SX0VBQ0hfV0tDT05URU5UVklF
V19BQ1RJT04oTSkgXAogICAgIE0oX2FkZFNob3J0Y3V0KSBcCiAgICAgTShfZGVmaW5lKSBcCkBA
IC0yMzMsMTAgKzIzNiwxNSBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogICAgIFJl
dGFpblB0cjxfVUlMb29rdXBHZXN0dXJlUmVjb2duaXplcj4gX2xvb2t1cEdlc3R1cmVSZWNvZ25p
emVyOwogI2VuZGlmCiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKKyNpZiBI
QVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKICAgICBSZXRhaW5QdHI8V0tNb3VzZUdlc3R1
cmVSZWNvZ25pemVyPiBfbW91c2VHZXN0dXJlUmVjb2duaXplcjsKICNlbmRpZgogCisjaWYgSEFW
RShVSV9DVVJTT1JfSU5URVJBQ1RJT04pCisgICAgUmV0YWluUHRyPF9VSUN1cnNvckludGVyYWN0
aW9uPiBfY3Vyc29ySW50ZXJhY3Rpb247CisgICAgQ3Vyc29ySW50ZXJhY3Rpb25SZXF1ZXN0SUQg
X2N1cnJlbnRDdXJzb3JJbnRlcmFjdGlvblJlcXVlc3RJRDsKKyNlbmRpZgorCiAgICAgUmV0YWlu
UHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ+IF90ZXh0SW50ZXJhY3Rpb25Bc3Npc3Rh
bnQ7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6U3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFz
b24+IF9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbnM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmlu
ZGV4IGZjZDViMzM4NjkxYTA5MDFmMWFmNTA4OGRlYWMyOWY1ZjE0NGNlNTUuLjM3Nzc5YjRiY2Vi
MmZmZTRhM2ZkOTJhZWRhZDQ1M2VmN2UyNzU0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMTcxLDEx
ICsxNzEsMTcgQEAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYmtpdFNob3dMaW5rUHJldmll
d3NQcmVmZXJlbmNlS2V5ID0gQCJXZWJLaXRTaG93TGlua1ByZXZpZXdzIjsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oV0FUQ0hPUykKKyNpZiBIQVZFKFVJX0NVUlNPUl9JTlRFUkFDVElPTikKK3N0
YXRpYyBOU1N0cmluZyAqIGNvbnN0IGN1cnNvclJlZ2lvbklkZW50aWZpZXIgPSBAIldLQ3Vyc29y
UmVnaW9uIjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IGVkaXRhYmxlQ3Vyc29yUmVnaW9uSWRl
bnRpZmllciA9IEAiV0tFZGl0YWJsZUN1cnNvclJlZ2lvbiI7CiAKLUBpbnRlcmZhY2UgV0tDb250
ZW50VmlldyAoV2F0Y2hTdXBwb3J0KSA8V0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3RGVsZWdhdGUs
IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlLCBXS1RleHRJbnB1dExpc3RW
aWV3Q29udHJvbGxlckRlbGVnYXRlPgorQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXS1VJQ3Vy
c29ySW50ZXJhY3Rpb25EZWxlZ2F0ZSkgPF9VSUN1cnNvckludGVyYWN0aW9uRGVsZWdhdGU+CiBA
ZW5kCisjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFdBVENIT1MpCitAaW50ZXJmYWNlIFdLQ29udGVu
dFZpZXcgKFdhdGNoU3VwcG9ydCkgPFdLRm9jdXNlZEZvcm1Db250cm9sVmlld0RlbGVnYXRlLCBX
S1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZT4KK0BlbmQKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTc3MywxNyArNzc5LDE0IEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogICAgIFtfdG91
Y2hFdmVudEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOnNlbGZdOwogICAgIFtzZWxmIGFk
ZEdlc3R1cmVSZWNvZ25pemVyOl90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwog
Ci0jaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCi0gICAgX21vdXNlR2VzdHVyZVJl
Y29nbml6ZXIgPSBhZG9wdE5TKFtbV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0
V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX21vdXNlR2VzdHVyZVJlY29nbml6ZXJD
aGFuZ2VkOildKTsKLSAgICBbX21vdXNlR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2Vs
Zl07Ci0gICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X21vdXNlR2VzdHVyZVJlY29nbml6
ZXIuZ2V0KCldOworI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQorICAgIFtzZWxm
IHNldHVwTW91c2VHZXN0dXJlUmVjb2duaXplcl07CiAjZW5kaWYKIAogI2lmIEhBVkUoTE9PS1VQ
X0dFU1RVUkVfUkVDT0dOSVpFUikKICAgICBfbG9va3VwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9w
dE5TKFtbX1VJTG9va3VwR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNl
bGYgYWN0aW9uOkBzZWxlY3RvcihfbG9va3VwR2VzdHVyZVJlY29nbml6ZWQ6KV0pOwogICAgIFtf
bG9va3VwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAgW3NlbGYgYWRk
R2VzdHVyZVJlY29nbml6ZXI6X2xvb2t1cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSAgICAK
ICNlbmRpZgogCiAgICAgX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW1dL
U3ludGhldGljVGFwR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYg
YWN0aW9uOkBzZWxlY3Rvcihfc2luZ2xlVGFwUmVjb2duaXplZDopXSk7CkBAIC04MjcsNiArODMw
LDEwIEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogICAgIFtzZWxmIHNldHVwRHJhZ0FuZERy
b3BJbnRlcmFjdGlvbnNdOwogI2VuZGlmCiAKKyNpZiBIQVZFKFVJX0NVUlNPUl9JTlRFUkFDVElP
TikKKyAgICBbc2VsZiBzZXR1cEN1cnNvckludGVyYWN0aW9uXTsKKyNlbmRpZgorCiAjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKICAgICBbc2VsZiBzZXR1cEFkZGl0aW9uYWxJbnRlcmFjdGlv
bnNdOwogI2VuZGlmCkBAIC05MzYsNyArOTQzLDcgQEAgLSAodm9pZCljbGVhbnVwSW50ZXJhY3Rp
b24KICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfZGVmZXJyaW5nR2VzdHVyZVJl
Y29nbml6ZXJGb3JEZWxheWVkUmVzZXR0YWJsZUdlc3R1cmVzLmdldCgpXTsKICNlbmRpZgogCi0j
aWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCisjaWYgSEFWRShVSUtJVF9XSVRIX01P
VVNFX1NVUFBPUlQpCiAgICAgW19tb3VzZUdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5p
bF07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X21vdXNlR2VzdHVyZVJlY29n
bml6ZXIuZ2V0KCldOwogI2VuZGlmCkBAIC05ODksNiArOTk2LDExIEBAIC0gKHZvaWQpY2xlYW51
cEludGVyYWN0aW9uCiAgICAgW3NlbGYgdGVhcmRvd25EcmFnQW5kRHJvcEludGVyYWN0aW9uc107
CiAjZW5kaWYKIAorI2lmIEhBVkUoVUlfQ1VSU09SX0lOVEVSQUNUSU9OKQorICAgIFtzZWxmIHJl
bW92ZUludGVyYWN0aW9uOl9jdXJzb3JJbnRlcmFjdGlvbi5nZXQoKV07CisgICAgX2N1cnNvcklu
dGVyYWN0aW9uID0gbmlsOworI2VuZGlmCisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQog
ICAgIFtzZWxmIGNsZWFudXBBZGRpdGlvbmFsSW50ZXJhY3Rpb25zXTsKICNlbmRpZgpAQCAtMTA1
NSw3ICsxMDY3LDcgQEAgLSAodm9pZClfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVycwog
ICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVUYXBHZXN0
dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6
X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiBy
ZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIu
Z2V0KCldOwotI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEhBVkUoVUlL
SVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVy
Ol9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICNlbmRpZgogI2lmIEhBVkUoTE9PS1VQ
X0dFU1RVUkVfUkVDT0dOSVpFUikKQEAgLTEwODMsNyArMTA5NSw3IEBAIC0gKHZvaWQpX2FkZERl
ZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpf
dHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFk
ZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3N0eWx1c1NpbmdsZVRhcEdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpF
UikKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKICAgICBbc2VsZiBhZGRHZXN0
dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKICNp
ZiBIQVZFKExPT0tVUF9HRVNUVVJFX1JFQ09HTklaRVIpCkBAIC0xNTA0LDkgKzE1MTYsMTIgQEAg
LSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVS
ZWNvZ25pemVyIHNob3VsZFJlY2VpdmUKICAgICAgICAgcmV0dXJuIFlFUzsKICNlbmRpZgogCi0j
aWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCisjaWYgSEFWRShVSUtJVF9XSVRIX01P
VVNFX1NVUFBPUlQpCiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyICE9IF9tb3VzZUdlc3R1cmVS
ZWNvZ25pemVyICYmIFtfbW91c2VHZXN0dXJlUmVjb2duaXplciBtb3VzZVRvdWNoXSA9PSB0b3Vj
aCkKICAgICAgICAgcmV0dXJuIE5POworCisgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyID09IF9k
b3VibGVUYXBHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfbm9uQmxv
Y2tpbmdEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcikKKyAgICAgICAgcmV0dXJuICF0b3VjaC5f
aXNQb2ludGVyVG91Y2g7CiAjZW5kaWYKIAogICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBf
dG91Y2hBY3Rpb25MZWZ0U3dpcGVHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2duaXpl
ciA9PSBfdG91Y2hBY3Rpb25SaWdodFN3aXBlR2VzdHVyZVJlY29nbml6ZXIgfHwgZ2VzdHVyZVJl
Y29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uVXBTd2lwZUdlc3R1cmVSZWNvZ25pemVyIHx8IGdlc3R1
cmVSZWNvZ25pemVyID09IF90b3VjaEFjdGlvbkRvd25Td2lwZUdlc3R1cmVSZWNvZ25pemVyKSB7
CkBAIC0xNTIyLDExICsxNTM3LDcgQEAgLSAoQk9PTClnZXN0dXJlUmVjb2duaXplcjooVUlHZXN0
dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyIHNob3VsZFJlY2VpdmUKICAgICAgICAg
cmV0dXJuIHRvdWNoQWN0aW9ucyA9PSBXZWJDb3JlOjpUb3VjaEFjdGlvbjo6UGFuWDsKICAgICB9
CiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotICAgIHJldHVybiBbc2VsZiBfYWxsb3dH
ZXN0dXJlUmVjb2duaXplcjpnZXN0dXJlUmVjb2duaXplciB0b1JlY2VpdmVUb3VjaDp0b3VjaF07
Ci0jZWxzZQogICAgIHJldHVybiBZRVM7Ci0jZW5kaWYKIH0KIAogI3ByYWdtYSBtYXJrIC0gV0tU
b3VjaEFjdGlvbkdlc3R1cmVSZWNvZ25pemVyRGVsZWdhdGUgaW1wbGVtZW50YXRpb24KQEAgLTIw
NDIsNyArMjA1Myw3IEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29n
bml6ZXIgKilnZXN0dXJlUmVjb2duaXplciBzaG91bGRSZWNvZ25pCiAgICAgaWYgKGlzU2FtZVBh
aXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF9oaWdobGlnaHRM
b25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKSwgX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyLmdldCgpKSkKICAgICAgICAgcmV0dXJuIFlFUzsKIAotI2lmIEhBVkUoSE9WRVJfR0VTVFVS
RV9SRUNPR05JWkVSKQorI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIGlm
IChbZ2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbV0tNb3VzZUdlc3R1cmVSZWNvZ25p
emVyIGNsYXNzXV0gfHwgW290aGVyR2VzdHVyZVJlY29nbml6ZXIgaXNLaW5kT2ZDbGFzczpbV0tN
b3VzZUdlc3R1cmVSZWNvZ25pemVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBZRVM7CiAjZW5k
aWYKQEAgLTY1NTUsNyArNjU2Niw3IEBAIC0gKHZvaWQpX3Nob3dTaGFyZVNoZWV0Oihjb25zdCBX
ZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJilkYXRhIGluUmVjdDooV1RGCiAgICAgX3No
YXJlU2hlZXQgPSBhZG9wdE5TKFtbV0tTaGFyZVNoZWV0IGFsbG9jXSBpbml0V2l0aFZpZXc6c2Vs
Zi53ZWJWaWV3XSk7CiAgICAgW19zaGFyZVNoZWV0IHNldERlbGVnYXRlOnNlbGZdOwogCi0jaWYg
SEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCisjaWYgSEFWRShVSUtJVF9XSVRIX01PVVNF
X1NVUFBPUlQpCiAgICAgaWYgKCFyZWN0KSB7CiAgICAgICAgIGlmIChhdXRvIGxhc3RNb3VzZUxv
Y2F0aW9uID0gW19tb3VzZUdlc3R1cmVSZWNvZ25pemVyIGxhc3RNb3VzZUxvY2F0aW9uXSkgewog
ICAgICAgICAgICAgYXV0byBob3ZlckxvY2F0aW9uSW5XZWJWaWV3ID0gW3NlbGYgY29udmVydFBv
aW50OipsYXN0TW91c2VMb2NhdGlvbiB0b1ZpZXc6c2VsZi53ZWJWaWV3XTsKQEAgLTY5NTQsOSAr
Njk2NSw4IEBAIC0gKHZvaWQpc2V0dXBEcmFnQW5kRHJvcEludGVyYWN0aW9ucwogICAgIF9kcm9w
SW50ZXJhY3Rpb24gPSBhZG9wdE5TKFtbVUlEcm9wSW50ZXJhY3Rpb24gYWxsb2NdIGluaXRXaXRo
RGVsZWdhdGU6c2VsZl0pOwogICAgIFtfZHJhZ0ludGVyYWN0aW9uIF9zZXRMaWZ0RGVsYXk6c2Vs
Zi5kcmFnTGlmdERlbGF5XTsKICAgICBbX2RyYWdJbnRlcmFjdGlvbiBzZXRFbmFibGVkOnNob3Vs
ZEVuYWJsZURyYWdJbnRlcmFjdGlvbkZvclBvbGljeShzZWxmLndlYlZpZXcuX2RyYWdJbnRlcmFj
dGlvblBvbGljeSldOwotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSAgICBbc2VsZiBf
cGVyZm9ybUFkZGl0aW9uYWxTZXR1cERyYWdBbmREcm9wSW50ZXJhY3Rpb25zXTsKKyNpZiBIQVZF
KFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKKyAgICBbX2RyYWdJbnRlcmFjdGlvbiBfc2V0QWxs
b3dzUG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk6Tk9dOwogI2VuZGlmCiAKICAgICBbc2VsZiBh
ZGRJbnRlcmFjdGlvbjpfZHJhZ0ludGVyYWN0aW9uLmdldCgpXTsKQEAgLTgwNzQsMjEgKzgwODQs
NiBAQCAtICh2b2lkKV9sb29rdXBHZXN0dXJlUmVjb2duaXplZDooVUlHZXN0dXJlUmVjb2duaXpl
ciAqKWdlc3R1cmVSZWNvZ25pemVyCiB9CiAjZW5kaWYKIAotI2lmIEhBVkUoSE9WRVJfR0VTVFVS
RV9SRUNPR05JWkVSKQotLSAodm9pZClfbW91c2VHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6KFdL
TW91c2VHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCi17Ci0gICAgaWYgKCFf
cGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1
dG8gZXZlbnQgPSBnZXN0dXJlUmVjb2duaXplci5sYXN0TW91c2VFdmVudCkgewotICAgICAgICBp
ZiAoZXZlbnQtPnR5cGUoKSA9PSBXZWJLaXQ6OldlYkV2ZW50OjpNb3VzZURvd24pCi0gICAgICAg
ICAgICBfbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdEludGVyYWN0aW9uU3RhcnQgPSBkb3du
Y2FzdDxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpfcGFnZS0+ZHJh
d2luZ0FyZWEoKSkubGFzdENvbW1pdHRlZExheWVyVHJlZVRyYW5zYWN0aW9uSUQoKTsKLQotICAg
ICAgICBfcGFnZS0+aGFuZGxlTW91c2VFdmVudCgqZXZlbnQpOwotICAgIH0KLX0KLSNlbmRpZgot
CiAjaWYgSEFWRShQRU5DSUxLSVQpCiAtIChXS0RyYXdpbmdDb29yZGluYXRvciAqKV9kcmF3aW5n
Q29vcmRpbmF0b3IKIHsKQEAgLTgxMDQsNiArODA5OSwxNjAgQEAgLSAodm9pZClzZXRDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAogICAgICAgICBfcGFnZS0+cHJv
Y2VzcygpLnVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIH0KIAorI2lmIEhBVkUoVUlLSVRfV0lU
SF9NT1VTRV9TVVBQT1JUKQorCistIChCT09MKXNob3VsZFVzZU1vdXNlR2VzdHVyZVJlY29nbml6
ZXIKK3sKKyAgICBzdGF0aWMgQk9PTCBzaG91bGRVc2VNb3VzZUdlc3R1cmVSZWNvZ25pemVyID0g
WUVTOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNo
X29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgLy8gU3lzdGVtIGFwcHMgd2lsbCBhbHdheXMg
YmUgbGlua2VkIG9uIHRoZSBjdXJyZW50IE9TLCBzbworICAgICAgICAvLyBjaGVjayB0aGVtIGJl
Zm9yZSB0aGUgbGlua2VkLW9uLW9yLWFmdGVyLgorCisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS81OTUyMTk2Nz4gaUFkIFZpZGVvIGRvZXMgbm90IHJlc3BvbmQgdG8gbW91c2UgZXZlbnRzLCBv
bmx5IHRvdWNoIGV2ZW50cworICAgICAgICBpZiAoV2ViQ29yZTo6SU9TQXBwbGljYXRpb246Omlz
TmV3cygpIHx8IFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1N0b2NrcygpKQorICAgICAgICAg
ICAgc2hvdWxkVXNlTW91c2VHZXN0dXJlUmVjb2duaXplciA9IE5POworCisgICAgICAgIGlmIChX
ZWJLaXQ6OmxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNES1ZlcnNpb246OkZpcnN0VGhhdFNlbmRz
TmF0aXZlTW91c2VFdmVudHMpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIDxy
ZGFyOi8vcHJvYmxlbS81OTE1NTIyMD4gU29tZSBGZWVkbHkgVUkgZG9lcyBub3QgcmVzcG9uZCB0
byBtb3VzZSBldmVudHMsIG9ubHkgdG91Y2ggZXZlbnRzCisgICAgICAgIGlmIChXZWJDb3JlOjpJ
T1NBcHBsaWNhdGlvbjo6aXNGZWVkbHkoKSkKKyAgICAgICAgICAgIHNob3VsZFVzZU1vdXNlR2Vz
dHVyZVJlY29nbml6ZXIgPSBOTzsKKyAgICB9KTsKKworICAgIHJldHVybiBzaG91bGRVc2VNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyOworfQorCistICh2b2lkKXNldHVwTW91c2VHZXN0dXJlUmVjb2du
aXplcgoreworICAgIF9tb3VzZUdlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW1dLTW91c2VH
ZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVj
dG9yKG1vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOildKTsKKyAgICBbX21vdXNlR2VzdHVy
ZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW19tb3VzZUdlc3R1cmVSZWNvZ25p
emVyIHNldEVuYWJsZWQ6W3NlbGYgc2hvdWxkVXNlTW91c2VHZXN0dXJlUmVjb2duaXplcl1dOwor
ICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKK30KKworLSAodm9pZCltb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDooV0tNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBpZiAoIV9wYWdl
LT5oYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGV2ZW50
ID0gZ2VzdHVyZVJlY29nbml6ZXIubGFzdE1vdXNlRXZlbnQ7CisgICAgaWYgKCFldmVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gV2ViS2l0OjpXZWJFdmVu
dDo6TW91c2VEb3duKQorICAgICAgICBfbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdEludGVy
YWN0aW9uU3RhcnQgPSBkb3duY2FzdDxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk+KCpfcGFnZS0+ZHJhd2luZ0FyZWEoKSkubGFzdENvbW1pdHRlZExheWVyVHJlZVRyYW5z
YWN0aW9uSUQoKTsKKworICAgIF9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50KCpldmVudCk7Cit9CisK
KyNlbmRpZiAvLyBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKKworI2lmIEhBVkUoVUlf
Q1VSU09SX0lOVEVSQUNUSU9OKQorCistICh2b2lkKXNldHVwQ3Vyc29ySW50ZXJhY3Rpb24KK3sK
KyAgICBfY3Vyc29ySW50ZXJhY3Rpb24gPSBhZG9wdE5TKFtbX1VJQ3Vyc29ySW50ZXJhY3Rpb24g
YWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6c2VsZl0pOworICAgIFtfY3Vyc29ySW50ZXJhY3Rpb24g
X3NldFBhdXNlc0N1cnNvclVwZGF0ZXNXaGlsZVBhbm5pbmc6Tk9dOworCisgICAgW3NlbGYgYWRk
SW50ZXJhY3Rpb246X2N1cnNvckludGVyYWN0aW9uLmdldCgpXTsKK30KKworLSAodm9pZClfY3Vy
c29ySW50ZXJhY3Rpb246KF9VSUN1cnNvckludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcmVnaW9u
Rm9yTG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gZGVmYXVsdFJlZ2lvbjooX1VJQ3Vyc29yUmVn
aW9uICopZGVmYXVsdFJlZ2lvbiBjb21wbGV0aW9uOih2b2lkKF4pKF9VSUN1cnNvclJlZ2lvbiAq
cmVnaW9uKSljb21wbGV0aW9uCit7CisgICAgdWludDY0X3QgaW50ZXJhY3Rpb25SZXF1ZXN0SUQg
PSArK19jdXJyZW50Q3Vyc29ySW50ZXJhY3Rpb25SZXF1ZXN0SUQ7CisKKyAgICBXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IGludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
OworICAgIGludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LnBvaW50ID0gV2ViQ29yZTo6cm91
bmRlZEludFBvaW50KGxvY2F0aW9uKTsKKyAgICBpbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dC5pbmNsdWRlQ2FyZXRDb250ZXh0ID0gdHJ1ZTsKKworICAgIEJPT0wgZGlkU3luY2hyb25vdXNs
eVJlcGx5V2l0aEFwcHJveGltYXRpb24gPSBmYWxzZTsKKyAgICBpZiAoIVtzZWxmIF9jdXJyZW50
UG9zaXRpb25JbmZvcm1hdGlvbklzVmFsaWRGb3JSZXF1ZXN0OmludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0XSAmJiBzZWxmLndlYlZpZXcuX2VkaXRhYmxlICYmICFfcG9zaXRpb25JbmZvcm1h
dGlvbi5zaG91bGROb3RVc2VJQmVhbUluRWRpdGFibGVDb250ZW50KSB7CisgICAgICAgIGRpZFN5
bmNocm9ub3VzbHlSZXBseVdpdGhBcHByb3hpbWF0aW9uID0gdHJ1ZTsKKyAgICAgICAgY29tcGxl
dGlvbihbX1VJQ3Vyc29yUmVnaW9uIHJlZ2lvbldpdGhJZGVudGlmaWVyOmVkaXRhYmxlQ3Vyc29y
UmVnaW9uSWRlbnRpZmllciByZWN0OnNlbGYuYm91bmRzXSk7CisgICAgfQorCisgICAgW3NlbGYg
ZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6XihXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uIGludGVyYWN0aW9uSW5mb3JtYXRpb24pIHsKKyAgICAgICAgaWYg
KGludGVyYWN0aW9uUmVxdWVzdElEIDwgX2N1cnJlbnRDdXJzb3JJbnRlcmFjdGlvblJlcXVlc3RJ
RCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoZGlkU3luY2hyb25vdXNseVJl
cGx5V2l0aEFwcHJveGltYXRpb24pIHsKKyAgICAgICAgICAgIFtpbnRlcmFjdGlvbiBpbnZhbGlk
YXRlXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRp
b24oW3NlbGYgY3Vyc29yUmVnaW9uRm9yUG9zaXRpb25JbmZvcm1hdGlvbjppbnRlcmFjdGlvbklu
Zm9ybWF0aW9uIHBvaW50OmxvY2F0aW9uXSk7CisgICAgfSBmb3JSZXF1ZXN0OmludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0XTsKK30KKworLSAoX1VJQ3Vyc29yUmVnaW9uICopY3Vyc29yUmVn
aW9uRm9yUG9zaXRpb25JbmZvcm1hdGlvbjooV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiYpaW50ZXJhY3Rpb25JbmZvcm1hdGlvbiBwb2ludDooQ0dQb2ludClsb2NhdGlv
bgoreworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBleHBhbmRlZExpbmVSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChpbnRlcmFjdGlvbkluZm9ybWF0aW9uLmxpbmVDYXJldEV4dGVudCk7CisKKyAgICAv
LyBQYWQgbGluZXMgb2YgdGV4dCBpbiBvcmRlciB0byBhdm9pZCBzd2l0Y2hpbmcgYmFjayB0byB0
aGUgZG90IGN1cnNvciBiZXR3ZWVuIGxpbmVzLgorICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgdmFs
dWUgdGhhdCBVSUtpdCB1c2VzLgorICAgIGV4cGFuZGVkTGluZVJlY3QuaW5mbGF0ZVkoMTApOwor
CisgICAgaWYgKGludGVyYWN0aW9uSW5mb3JtYXRpb24uY3Vyc29yKSB7CisgICAgICAgIFdlYkNv
cmU6OkN1cnNvcjo6VHlwZSBjdXJzb3JUeXBlID0gaW50ZXJhY3Rpb25JbmZvcm1hdGlvbi5jdXJz
b3ItPnR5cGUoKTsKKyAgICAgICAgaWYgKGN1cnNvclR5cGUgPT0gV2ViQ29yZTo6Q3Vyc29yOjpI
YW5kKQorICAgICAgICAgICAgcmV0dXJuIFtfVUlDdXJzb3JSZWdpb24gcmVnaW9uV2l0aElkZW50
aWZpZXI6Y3Vyc29yUmVnaW9uSWRlbnRpZmllciByZWN0OmludGVyYWN0aW9uSW5mb3JtYXRpb24u
Ym91bmRzXTsKKworICAgICAgICBpZiAoY3Vyc29yVHlwZSA9PSBXZWJDb3JlOjpDdXJzb3I6OklC
ZWFtICYmIGV4cGFuZGVkTGluZVJlY3QuY29udGFpbnMobG9jYXRpb24pKQorICAgICAgICAgICAg
cmV0dXJuIFtfVUlDdXJzb3JSZWdpb24gcmVnaW9uV2l0aElkZW50aWZpZXI6Y3Vyc29yUmVnaW9u
SWRlbnRpZmllciByZWN0OmV4cGFuZGVkTGluZVJlY3RdOworICAgIH0KKworICAgIGlmIChzZWxm
LndlYlZpZXcuX2VkaXRhYmxlKSB7CisgICAgICAgIGlmIChleHBhbmRlZExpbmVSZWN0LmNvbnRh
aW5zKGxvY2F0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBbX1VJQ3Vyc29yUmVnaW9uIHJlZ2lv
bldpdGhJZGVudGlmaWVyOmN1cnNvclJlZ2lvbklkZW50aWZpZXIgcmVjdDpleHBhbmRlZExpbmVS
ZWN0XTsKKyAgICAgICAgcmV0dXJuIFtfVUlDdXJzb3JSZWdpb24gcmVnaW9uV2l0aElkZW50aWZp
ZXI6ZWRpdGFibGVDdXJzb3JSZWdpb25JZGVudGlmaWVyIHJlY3Q6c2VsZi5ib3VuZHNdOworICAg
IH0KKworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKF9VSUN1cnNvclN0eWxlICopY3Vyc29ySW50
ZXJhY3Rpb246KF9VSUN1cnNvckludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc3R5bGVGb3JSZWdp
b246KF9VSUN1cnNvclJlZ2lvbiAqKXJlZ2lvbiBtb2RpZmllcnM6KFVJS2V5TW9kaWZpZXJGbGFn
cyltb2RpZmllcnMKK3sKKyAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzZWxmLl9jb250ZW50Wm9v
bVNjYWxlOworCisgICAgX1VJQ3Vyc29yU3R5bGUgKiheaUJlYW1DdXJzb3IpKHZvaWQpID0gXnsK
KyAgICAgICAgZmxvYXQgYmVhbUxlbmd0aCA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLmNhcmV0SGVp
Z2h0ICogc2NhbGVGYWN0b3I7CisgICAgICAgIFVJQXhpcyBpQmVhbUNvbnN0cmFpbnRBeGVzID0g
VUlBeGlzVmVydGljYWw7CisKKyAgICAgICAgLy8gSWYgdGhlIEktYmVhbSBpcyBzbyBsYXJnZSB0
aGF0IHRoZSBtYWduZXRpc20gaXMgaGFyZCB0byBmaWdodCwgd2Ugc2hvdWxkIG5vdCBhcHBseSBh
bnkgbWFnbmV0aXNtLgorICAgICAgICBpZiAoYmVhbUxlbmd0aCA+IFtVSVRleHRJbnRlcmFjdGlv
biBfbWF4aW11bUJlYW1TbmFwcGluZ0xlbmd0aF0pCisgICAgICAgICAgICBpQmVhbUNvbnN0cmFp
bnRBeGVzID0gVUlBeGlzTmVpdGhlcjsKKworICAgICAgICAvLyBJZiB0aGUgcmVnaW9uIGlzIHRo
ZSBzaXplIG9mIHRoZSB2aWV3LCB3ZSBzaG91bGQgbm90IGFwcGx5IGFueSBtYWduZXRpc20uCisg
ICAgICAgIGlmIChbcmVnaW9uLmlkZW50aWZpZXIgaXNFcXVhbDplZGl0YWJsZUN1cnNvclJlZ2lv
bklkZW50aWZpZXJdKQorICAgICAgICAgICAgaUJlYW1Db25zdHJhaW50QXhlcyA9IFVJQXhpc05l
aXRoZXI7CisKKyAgICAgICAgcmV0dXJuIFtfVUlDdXJzb3JTdHlsZSBzdHlsZVdpdGhDdXJzb3I6
W19VSUN1cnNvciBiZWFtV2l0aFByZWZlcnJlZExlbmd0aDpiZWFtTGVuZ3RoIGF4aXM6VUlBeGlz
VmVydGljYWxdIGNvbnN0cmFpbmVkQXhlczppQmVhbUNvbnN0cmFpbnRBeGVzXTsKKyAgICB9Owor
CisgICAgaWYgKHNlbGYud2ViVmlldy5fZWRpdGFibGUpIHsKKyAgICAgICAgaWYgKF9wb3NpdGlv
bkluZm9ybWF0aW9uLnNob3VsZE5vdFVzZUlCZWFtSW5FZGl0YWJsZUNvbnRlbnQpCisgICAgICAg
ICAgICByZXR1cm4gbmlsOworICAgICAgICByZXR1cm4gaUJlYW1DdXJzb3IoKTsKKyAgICB9CisK
KyAgICBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY3Vyc29yICYmIFtyZWdpb24uaWRlbnRpZmll
ciBpc0VxdWFsOmN1cnNvclJlZ2lvbklkZW50aWZpZXJdKSB7CisgICAgICAgIFdlYkNvcmU6OkN1
cnNvcjo6VHlwZSBjdXJzb3JUeXBlID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24uY3Vyc29yLT50eXBl
KCk7CisKKyAgICAgICAgaWYgKGN1cnNvclR5cGUgPT0gV2ViQ29yZTo6Q3Vyc29yOjpIYW5kKQor
ICAgICAgICAgICAgcmV0dXJuIFtfVUlDdXJzb3JTdHlsZSBzdHlsZVdpdGhDdXJzb3I6W19VSUN1
cnNvciBsaW5rQ3Vyc29yXSBjb25zdHJhaW5lZEF4ZXM6VUlBeGlzTmVpdGhlcl07CisKKyAgICAg
ICAgaWYgKGN1cnNvclR5cGUgPT0gV2ViQ29yZTo6Q3Vyc29yOjpJQmVhbSAmJiBfcG9zaXRpb25J
bmZvcm1hdGlvbi5saW5lQ2FyZXRFeHRlbnQuY29udGFpbnMoX3Bvc2l0aW9uSW5mb3JtYXRpb24u
cmVxdWVzdC5wb2ludCkpCisgICAgICAgICAgICByZXR1cm4gaUJlYW1DdXJzb3IoKTsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbmlsOworfQorCisjZW5k
aWYgLy8gSEFWRShVSV9DVVJTT1JfSU5URVJBQ1RJT04pCisKIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaAppbmRleCA0NDEwYjdkMTNm
MDZjMTJjNmFiZWFkOGEzNjc1MjAwNmQ2OWQyNTFjLi43NDVlNDM0YjM1MTk4MzZlZjNlYzI3YWM2
MWExMTY2NzZhN2ViOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oCkBAIC0yMyw3ICsyMyw3IEBACiAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVf
UkVDT0dOSVpFUikKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKIAogI2ltcG9y
dCA8VUlLaXQvVUlHZXN0dXJlUmVjb2duaXplci5oPgogI2ltcG9ydCAiTmF0aXZlV2ViTW91c2VF
dmVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VH
ZXN0dXJlUmVjb2duaXplci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNl
R2VzdHVyZVJlY29nbml6ZXIubW0KaW5kZXggZGVjNDViNmZjYTExNTEwNmYyN2M0MTcyYWJmM2Nh
ZGMzZTAwNjZlNy4uODUxNDk5MjA4OGU0YTYzZDIyZWQ1ZGI4Yjc2ZWUyMjE0NGMwMWNlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2du
aXplci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyLm1tCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIldLTW91c2VHZXN0dXJlUmVjb2duaXplci5oIgogCi0jaWYgSEFWRShIT1ZFUl9HRVNUVVJF
X1JFQ09HTklaRVIpCisjaWYgSEFWRShVSUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCiAKICNpbXBv
cnQgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9t
ZUNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4IDFjNWFhMjhmY2YzMDA1NDgwYjE0ZTIyYjI0
ZGI1ODA5MGIyOTE0NDIuLjcwZjVlNDBiYWI3ZmMzMGIyZmE1NGY0NmYzNDM2YWU0NTMwODhmOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC0xODQsOSArMTg0LDkgQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKEdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmUKIAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFVz
ZU1vdXNlRXZlbnRGb3JTZWxlY3Rpb24oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCkKIHsKLSAgICAvLyBJbiBtYWNDYXRhbHlzdCwgZGVzcGl0ZSBnZXR0aW5nIG1vdXNl
IGV2ZW50cywgd2Ugc3RpbGwgd2FudCBVSVRleHRJbnRlcmFjdGlvbiBhbmQgZnJpZW5kcyB0byBv
d24gc2VsZWN0aW9uIGdlc3R1cmVzLgorICAgIC8vIEluIGlQYWRPUyBhbmQgbWFjQ2F0YWx5c3Qs
IGRlc3BpdGUgZ2V0dGluZyBtb3VzZSBldmVudHMsIHdlIHN0aWxsIHdhbnQgVUlUZXh0SW50ZXJh
Y3Rpb24gYW5kIGZyaWVuZHMgdG8gb3duIHNlbGVjdGlvbiBnZXN0dXJlcy4KICAgICAvLyBIb3dl
dmVyLCB3ZSBuZWVkIHRvIGFsbG93IHNpbmdsZS1jbGlja3MgdG8gc2V0IHRoZSBzZWxlY3Rpb24s
IGJlY2F1c2UgdGhhdCBpcyBob3cgVUlUZXh0SW50ZXJhY3Rpb24gaXMgYWN0aXZhdGVkLgotI2lm
IEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VT
RV9TVVBQT1JUKQogICAgIHJldHVybiBldmVudC5jbGlja0NvdW50KCkgPD0gMTsKICNlbHNlCiAg
ICAgcmV0dXJuIHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394003</attachid>
            <date>2020-03-19 12:06:17 -0700</date>
            <delta_ts>2020-03-19 12:13:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209268-20200319120617.patch</filename>
            <type>text/plain</type>
            <size>31594</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjYmQzNjA5MTZjOTE1ODdjYmE3MjNl
ZDhiMGZjZWEzZTAxMTI3ODUuLjcyNmYxOTZlY2RkYjJhZmI1MTUwMDlmOWNhNGIyY2QxMjhhZGIz
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIGN1cnNv
ciBpbnRlcmFjdGlvbnMgb24gaVBhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorICAgICAgICBEb24ndCBk
aXNhYmxlIHRoZSBjb250ZXh0bWVudSBldmVudCBvbiBpT1MgYW55bW9yZS4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKyAgICAgICAgUmVuYW1lIEhBVkVfSE9WRVJfR0VTVFVSRV9S
RUNPR05JWkVSIHRvIEhBVkVfVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JULgorICAgICAgICBBZGQg
SEFWRV9VSV9DVVJTT1JfSU5URVJBQ1RJT04uCisgICAgICAgIEVuYWJsZSBIQVZFX1VJX1BBUkFM
TEFYX1RSQU5TSVRJT05fR0VTVFVSRV9SRUNPR05JWkVSIG9uIGlPUy4KKwogMjAyMC0wMy0xOCAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjI1NDM4OSk6IENvcmRvdmEgdGhyb3dzIGFuIGV4Y2VwdGlvbiBiZWNhdXNlIGl0IGV4
cGVjdHMgYSBoeXBoZW4gaW5zaWRlIG5hdmlnYXRvci5sb2NhbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYzUx
OGEyM2QxOTdhZmI0MDgwMTI2NGVlNWVmYmY2MDZlMWIxYzM4Li4wZmEzNzU1MzE2MWVhZmIyODky
YmNhYTVmNmE5ZWZkYmZiZGZiOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAt
MDMtMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IHN1cHBvcnQgZm9yIGN1cnNvciBpbnRlcmFjdGlvbnMgb24gaVBhZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGluIHRo
aXMgcGF0Y2gsIGp1c3QgdXBzdHJlYW1pbmcuIFdpbGwgYXR0ZW1wdCB0byBlbmFibGUKKyAgICAg
ICAgc29tZSBtYWNPUyBtb3VzZSBldmVudCB0ZXN0cyBvbiBpT1MgaW4gdGhlIGZ1dHVyZSwgdGhv
dWdoLgorCisgICAgICAgICogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNOZXdzKToKKyAgICAgICAgKFdl
YkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1N0b2Nrcyk6CisgICAgICAgIChXZWJDb3JlOjpJT1NB
cHBsaWNhdGlvbjo6aXNGZWVkbHkpOgorICAgICAgICBBZGQgc29tZSBidW5kbGUgSUQgY2hlY2tz
IG5lZWRlZCBpbiBXZWJLaXQuCisKIDIwMjAtMDMtMTggIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYlBhZ2Ugc2hvdWxkIG93biBhIFJlZjxXZWJGcmFtZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggOTgzOTY0Zjc3MjE1ZjU3ZmQ5YjAzMmZjYjQyOGFiZWQyNmU0NTk3Mi4uZmY2
MjY2YzZkYjgxMjFjYTViY2MxMDkzMThiZTIxYzcyMjY2MTE1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNSBAQAorMjAyMC0wMy0xOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgY3Vyc29yIGludGVyYWN0aW9ucyBv
biBpUGFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDkyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFBs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmVy
c2lvbkNoZWNrcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFjdGlvbl0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsZWFudXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRSZWNlaXZlVG91Y2g6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6c2hvdWxkUmVj
b2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXI6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3Nob3dTaGFyZVNoZWV0OmluUmVjdDpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cERyYWdBbmREcm9wSW50ZXJhY3Rpb25z
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2hvdWxkVXNlTW91c2VHZXN0dXJlUmVjb2du
aXplcl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwTW91c2VHZXN0dXJlUmVjb2du
aXplcl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IG1vdXNlR2VzdHVyZVJlY29nbml6ZXJD
aGFuZ2VkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwQ3Vyc29ySW50ZXJhY3Rp
b25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3Vyc29ySW50ZXJhY3Rpb246cmVnaW9u
Rm9yTG9jYXRpb246ZGVmYXVsdFJlZ2lvbjpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGN1cnNvclJlZ2lvbkZvclBvc2l0aW9uSW5mb3JtYXRpb246cG9pbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgY3Vyc29ySW50ZXJhY3Rpb246c3R5bGVGb3JSZWdpb246
bW9kaWZpZXJzOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9tb3VzZUdlc3R1cmVSZWNv
Z25pemVyQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLTW91
c2VHZXN0dXJlUmVjb2duaXplci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb3VzZUdl
c3R1cmVSZWNvZ25pemVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzaG91bGRVc2VNb3VzZUV2ZW50Rm9yU2VsZWN0aW9uKToKKwogMjAyMC0wMy0xOCAgeW91
ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZSBzaG91bGQg
b3duIGEgUmVmPFdlYkZyYW1lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1F
bmFibGVDb2NvYS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCmluZGV4
IDAwNWFmYjE3NDMxYzU0MjVhZDAyNTZiNzRhMGIzZDAwMjU1MzA5YmIuLmY2NTc0MTJmYzNkOGRj
Zjc3ZDg4ZDI3ZWYwYThiMjA5ZDYyNjc0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlQ29jb2EuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmgKQEAgLTU1LDcgKzU1LDcgQEAKICNkZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAog
I2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VX0VWRU5UKSAmJiAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKKyNpZiAhZGVmaW5l
ZChFTkFCTEVfQ09OVEVYVF9NRU5VX0VWRU5UKSAmJiAoUExBVEZPUk0oV0FUQ0hPUykgfHwgUExB
VEZPUk0oQVBQTEVUVikpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVfRVZFTlQgMAogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZTg0NGIyNjk3NTYyOGYzNDRhNmRhNDk1NzZk
MTJiYzFlMGUxN2VmOS4uNDIyNjEwODRlZTdiYTlkMGJhYjM3N2VhNDgwM2NjNGQwNDIzYmY4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTQ4MCwxNSArNDgwLDE5IEBACiAjZGVmaW5lIEhBVkVf
VUlfV0tfRE9DVU1FTlRfQ09OVEVYVCAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQotI2RlZmluZSBIQVZFX0hPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUiAxCi0jZGVmaW5lIEhB
VkVfTE9PS1VQX0dFU1RVUkVfUkVDT0dOSVpFUiAxCisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwNDAwKQorI2RlZmluZSBIQVZFX1VJ
X0NVUlNPUl9JTlRFUkFDVElPTiAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQorI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEzMDQwMCkgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjZGVmaW5lIEhBVkVfVUlLSVRf
V0lUSF9NT1VTRV9TVVBQT1JUIDEKICNkZWZpbmUgSEFWRV9VSV9QQVJBTExBWF9UUkFOU0lUSU9O
X0dFU1RVUkVfUkVDT0dOSVpFUiAxCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQorI2RlZmluZSBIQVZFX0xPT0tVUF9HRVNUVVJFX1JFQ09HTklaRVIgMQorI2VuZGlmCisKICNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTUwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgSEFWRV9BTExPV1NfU0VOU0lU
SVZFX0xPR0dJTkcgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCmluZGV4IGQyMDNiNDZiYTgyYjhhNDNkYTBmNzllMjBm
ZDhkM2U5ZDM5YTk2MWIuLmUwYTEyNGZhMjdmMDhlMWZlOTA2ZTQ1NGYzZDgzMTM0MjUwZGZhZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oCkBAIC0xMDAsNiArMTAwLDkgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0FwcGxlQXBw
bGljYXRpb24oKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFdmVybm90ZSgpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0V2ZW50YnJpdGUoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEYXRhQWN0
aXZhdGlvbigpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc05ld3MoKTsKK1dFQkNPUkVfRVhQT1JU
IGJvb2wgaXNTdG9ja3MoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNGZWVkbHkoKTsKIAogfSAv
LyBJT1NBcHBsaWNhdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGMyYTA2
ZjA1NjQzYWRhMWQ2ZWE0YTA2MzAzNzBiZTcwMTIyNGJhMDkuLmVkMjI1YjY3ZjZhMzg5Y2ZkMWRh
ZDliYTFkNzY5NzQ2ZDUzNWM0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC0z
NDUsNiArMzQ1LDI0IEBAIGJvb2wgSU9TQXBwbGljYXRpb246OmlzTWluaUJyb3dzZXIoKQogICAg
IHJldHVybiBpc01pbmlCcm93c2VyOwogfQogCitib29sIElPU0FwcGxpY2F0aW9uOjppc05ld3Mo
KQoreworICAgIHN0YXRpYyBib29sIGlzTmV3cyA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRv
KCJjb20uYXBwbGUubmV3cyJfcyk7CisgICAgcmV0dXJuIGlzTmV3czsKK30KKworYm9vbCBJT1NB
cHBsaWNhdGlvbjo6aXNTdG9ja3MoKQoreworICAgIHN0YXRpYyBib29sIGlzU3RvY2tzID0gYXBw
bGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5zdG9ja3MiX3MpOworICAgIHJldHVy
biBpc1N0b2NrczsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNGZWVkbHkoKQoreworICAg
IHN0YXRpYyBib29sIGlzRmVlZGx5ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5k
ZXZoZC5mZWVkbHkiX3MpOworICAgIHJldHVybiBpc0ZlZWRseTsKK30KKwogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
c3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0
U1BJLmgKaW5kZXggNzlkMTlmMTk3ZTU2NWQwMGRjOWRkYTdhODgyMDliODA5YmY5YWQ3Yi4uODc3
ZjNjMzFlN2JkZWEwMTNkZWU0NTNlOGY2NWM0NWM5MWY5Y2U5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNpbXBvcnQgPFVJ
S2l0L1VJVGV4dEVmZmVjdHNXaW5kb3cuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4dElucHV0X1By
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4dEludGVyYWN0aW9uQXNzaXN0YW50X1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJVGV4dEludGVyYWN0aW9uX1ByaXZhdGUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uaW5nX1ByaXZhdGUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlW
aWV3Q29udHJvbGxlcl9WaWV3U2VydmljZS5oPgpAQCAtMTIzLDYgKzEyNCwxMyBAQAogI2ltcG9y
dCA8VUlLaXQvVUlUYXJnZXRlZFByZXZpZXdfUHJpdmF0ZS5oPgogI2VuZGlmCiAKKyNpZiBIQVZF
KFVJX0NVUlNPUl9JTlRFUkFDVElPTikKKyNpbXBvcnQgPFVJS2l0L19VSUN1cnNvckludGVyYWN0
aW9uLmg+CisjaW1wb3J0IDxVSUtpdC9fVUlDdXJzb3JJbnRlcmFjdGlvbl9Gb3JXZWJLaXRPbmx5
Lmg+CisjaW1wb3J0IDxVSUtpdC9fVUlDdXJzb3JTdHlsZS5oPgorI2ltcG9ydCA8VUlLaXQvX1VJ
Q3Vyc29yU3R5bGVfUHJpdmF0ZS5oPgorI2VuZGlmCisKICNlbHNlIC8vIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNjQ3LDYgKzY1NSwxMCBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSVdLR2VzdHVyZVR5cGUpIHsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgYXNzaWduKSBVSVRhcEdlc3R1cmVSZWNvZ25pemVyICpz
aW5nbGVUYXBHZXN0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFVJVGV4dEludGVyYWN0aW9uICgp
CitAcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJlYWRvbmx5KSBDR0Zsb2F0IF9tYXhpbXVt
QmVhbVNuYXBwaW5nTGVuZ3RoOworQGVuZAorCiBAcHJvdG9jb2wgVUlXS0ludGVyYWN0aW9uVmll
d1Byb3RvY29sCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhHZXN0dXJlQXQ6KENHUG9pbnQp
cG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3aXRoU3RhdGU6
KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0ZTsKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9u
V2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0
aW9uVG91Y2gpdG91Y2ggYmFzZUlzU3RhcnQ6KEJPT0wpYmFzZUlzU3RhcnQgd2l0aEZsYWdzOihV
SVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3M7CkBAIC0xMTM3LDYgKzExNDksMjMgQEAgdHlwZWRlZiBO
U19FTlVNKE5TVUludGVnZXIsIF9VSUNvbnRleHRNZW51TGF5b3V0KSB7CiBAcHJvcGVydHkgKHJl
YWRvbmx5KSBCT09MIGlzTG93Q29uZmlkZW5jZTsKIEBlbmQKIAorQHByb3RvY29sIF9VSUN1cnNv
ckludGVyYWN0aW9uRGVsZWdhdGU7CisKK0BpbnRlcmZhY2UgX1VJQ3Vyc29ySW50ZXJhY3Rpb24g
OiBOU09iamVjdCA8VUlJbnRlcmFjdGlvbj4KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVn
YXRlOihpZCA8X1VJQ3Vyc29ySW50ZXJhY3Rpb25EZWxlZ2F0ZT4pZGVsZWdhdGU7CistICh2b2lk
KWludmFsaWRhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCBnZXR0ZXI9X3BhdXNl
c0N1cnNvclVwZGF0ZXNXaGlsZVBhbm5pbmcsIHNldHRlcj1fc2V0UGF1c2VzQ3Vyc29yVXBkYXRl
c1doaWxlUGFubmluZzopIEJPT0wgcGF1c2VzQ3Vyc29yVXBkYXRlc1doaWxlUGFubmluZzsKK0Bl
bmQKKworQGludGVyZmFjZSBfVUlDdXJzb3JSZWdpb24gOiBOU09iamVjdCA8TlNDb3B5aW5nPgor
KyAoaW5zdGFuY2V0eXBlKXJlZ2lvbldpdGhJZGVudGlmaWVyOihpZCA8TlNPYmplY3Q+KWlkZW50
aWZpZXIgcmVjdDooQ0dSZWN0KXJlY3Q7CitAZW5kCisKK0BpbnRlcmZhY2UgX1VJQ3Vyc29yIDog
TlNPYmplY3QKKysgKGluc3RhbmNldHlwZSliZWFtV2l0aFByZWZlcnJlZExlbmd0aDooQ0dGbG9h
dClsZW5ndGggYXhpczooVUlBeGlzKWF4aXM7CisrIChpbnN0YW5jZXR5cGUpbGlua0N1cnNvcjsK
K0BlbmQKKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNkZWZpbmUgVUlX
S0RvY3VtZW50UmVxdWVzdE1hcmtlZFRleHRSZWN0cyAoMSA8PCA1KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCmluZGV4IDg2NzE5YWM0M2I1NTU5YjRl
YWE4YjgwZTQ2MWYwMTlhMTNmNDQwZmMuLmUyNmM5MjQ3NzExZTVmZjNlMTMwNTM2YjM2MjU3OTU2
ODAyYjUxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNp
b25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hl
Y2tzLmgKQEAgLTkyLDYgKzkyLDcgQEAgZW51bSBjbGFzcyBTREtWZXJzaW9uIDogdWludDMyX3Qg
ewogICAgIEZpcnN0V2hlcmVTaXRlU3BlY2lmaWNRdWlya3NBcmVFbmFibGVkQnlEZWZhdWx0ID0g
RFlMRF9JT1NfVkVSU0lPTl8xM18yLAogICAgIEZpcnN0VGhhdFJlc3RyaWN0c0Jhc2VVUkxTY2hl
bWVzID0gRFlMRF9JT1NfVkVSU0lPTl8xM180LAogICAgIEZpcnN0V2l0aFNlc3Npb25DbGVhbnVw
QnlEZWZhdWx0ID0gRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1NFU1NJT05fQ0xFQU5VUF9C
WV9ERUZBVUxULAorICAgIEZpcnN0VGhhdFNlbmRzTmF0aXZlTW91c2VFdmVudHMgPSBEWUxEX0lP
U19WRVJTSU9OXzEzXzQsCiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgRmlyc3RXaXRoTmV0d29y
a0NhY2hlID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMSwKICAgICBGaXJzdFdpdGhFeGNlcHRp
b25zRm9yRHVwbGljYXRlQ29tcGxldGlvbkhhbmRsZXJDYWxscyA9IERZTERfTUFDT1NYX1ZFUlNJ
T05fMTBfMTMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
CmluZGV4IGI4ZTNjMDUwOTE3ZDk4NGU5YzdiYTFlMjc5ZDYyMTk5MTM1ZDBlODEuLmI5OWI3MDU5
MWJjYjI0ZmM1NWJiMzVmMmVlODYxNjc0MjAzYTMyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0xOTAsNyArMTkwLDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYpcHIKICAgICBbX2ZpeGVkQ2xpcHBpbmdWaWV3IGFkZFN1YnZpZXc6X3Jvb3RD
b250ZW50Vmlldy5nZXQoKV07CiAKICAgICBpZiAoIWxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNE
S1ZlcnNpb246OkZpcnN0V2l0aExhenlHZXN0dXJlUmVjb2duaXplckluc3RhbGxhdGlvbikpCi0g
ICAgICAgIFtzZWxmIHNldHVwSW50ZXJhY3Rpb25dOworICAgICAgICBbc2VsZiBzZXRVcEludGVy
YWN0aW9uXTsKICAgICBbc2VsZiBzZXRVc2VySW50ZXJhY3Rpb25FbmFibGVkOllFU107CiAKICAg
ICBzZWxmLmxheWVyLmhpdFRlc3RzQXNPcGFxdWUgPSBZRVM7CkBAIC0yODYsNyArMjg2LDcgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDoo
TmFrZWRSZWY8V2ViS2l0OjpXZWJQcm8KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW3NlbGYg
Y2xlYW51cEludGVyYWN0aW9uXTsKKyAgICBbc2VsZiBjbGVhblVwSW50ZXJhY3Rpb25dOwogCiAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpz
ZWxmXTsKIApAQCAtMzI5LDcgKzMyOSw3IEBAIC0gKHZvaWQpZGlkTW92ZVRvV2luZG93CiAgICAg
W3N1cGVyIGRpZE1vdmVUb1dpbmRvd107CiAKICAgICBpZiAoc2VsZi53aW5kb3cpCi0gICAgICAg
IFtzZWxmIHNldHVwSW50ZXJhY3Rpb25dOworICAgICAgICBbc2VsZiBzZXRVcEludGVyYWN0aW9u
XTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTYxMCw3ICs2
MTAsNyBAQCAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3Jl
YXRlRHJhd2luZ0FyZWFQcm94eTooV2ViS2l0OjpXZQogLSAodm9pZClfcHJvY2Vzc0RpZEV4aXQK
IHsKICAgICBbc2VsZiBfdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbjpOT107
Ci0gICAgW3NlbGYgY2xlYW51cEludGVyYWN0aW9uXTsKKyAgICBbc2VsZiBjbGVhblVwSW50ZXJh
Y3Rpb25dOwogCiAgICAgW3NlbGYgc2V0U2hvd2luZ0luc3BlY3RvckluZGljYXRpb246Tk9dOwog
ICAgIFtzZWxmIF9oaWRlSW5zcGVjdG9ySGlnaGxpZ2h0XTsKQEAgLTYzOCw3ICs2MzgsNyBAQCAt
ICh2b2lkKV9wcm9jZXNzV2lsbFN3YXAKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJvY2Vzcwogewog
ICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnNdOwotICAgIFtz
ZWxmIHNldHVwSW50ZXJhY3Rpb25dOworICAgIFtzZWxmIHNldFVwSW50ZXJhY3Rpb25dOwogI2lm
IEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIFtzZWxmIF9zZXR1cFZpc2li
aWxpdHlQcm9wYWdhdGlvblZpZXddOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZTc3YTUzODZk
MGVkMzViMTY3OTgxOWQwZjQyZWY1Njc3ODExZTA1MC4uZmIxOGIwYzVmZDM1YWE4ZmExMWZkMGUx
YmYyODEzNmY0OGYwYzE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0OwogfQogCitAY2xh
c3MgX1VJQ3Vyc29ySW50ZXJhY3Rpb247CiBAY2xhc3MgX1VJTG9va3VwR2VzdHVyZVJlY29nbml6
ZXI7CiBAY2xhc3MgX1VJSGlnaGxpZ2h0VmlldzsKIEBjbGFzcyBVSVRhcmdldGVkUHJldmlldzsK
QEAgLTExOCw2ICsxMTksOCBAQCB0eXBlZGVmIHZvaWQgKF5VSVdLU2VsZWN0aW9uV2l0aERpcmVj
dGlvbkNvbXBsZXRpb25IYW5kbGVyKShCT09MIHNlbGVjdGlvbkVuZElzTQogdHlwZWRlZiBCbG9j
a1B0cjx2b2lkKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24pPiBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQ2FsbGJhY2s7CiB0eXBlZGVmIHN0ZDo6cGFpcjxXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQ2FsbGJh
Y2s+IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0QW5kQ2FsbGJhY2s7CiAKK3R5cGVkZWYg
dWludDY0X3QgQ3Vyc29ySW50ZXJhY3Rpb25SZXF1ZXN0SUQ7CisKICNkZWZpbmUgRk9SX0VBQ0hf
V0tDT05URU5UVklFV19BQ1RJT04oTSkgXAogICAgIE0oX2FkZFNob3J0Y3V0KSBcCiAgICAgTShf
ZGVmaW5lKSBcCkBAIC0yMzMsMTAgKzIzNiwxNSBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRh
dGEgewogICAgIFJldGFpblB0cjxfVUlMb29rdXBHZXN0dXJlUmVjb2duaXplcj4gX2xvb2t1cEdl
c3R1cmVSZWNvZ25pemVyOwogI2VuZGlmCiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dO
SVpFUikKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKICAgICBSZXRhaW5QdHI8
V0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyPiBfbW91c2VHZXN0dXJlUmVjb2duaXplcjsKICNlbmRp
ZgogCisjaWYgSEFWRShVSV9DVVJTT1JfSU5URVJBQ1RJT04pCisgICAgUmV0YWluUHRyPF9VSUN1
cnNvckludGVyYWN0aW9uPiBfY3Vyc29ySW50ZXJhY3Rpb247CisgICAgQ3Vyc29ySW50ZXJhY3Rp
b25SZXF1ZXN0SUQgX2N1cnJlbnRDdXJzb3JJbnRlcmFjdGlvblJlcXVlc3RJRDsKKyNlbmRpZgor
CiAgICAgUmV0YWluUHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ+IF90ZXh0SW50ZXJh
Y3Rpb25Bc3Npc3RhbnQ7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6U3VwcHJlc3NTZWxlY3Rpb25B
c3Npc3RhbnRSZWFzb24+IF9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbnM7CiAKQEAg
LTQyNyw4ICs0MzUsOCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogQHByb3BlcnR5
IChub25hdG9taWMsIHN0cm9uZykgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICpkYXRhTGlz
dFRleHRTdWdnZXN0aW9uczsKICNlbmRpZgogCi0tICh2b2lkKXNldHVwSW50ZXJhY3Rpb247Ci0t
ICh2b2lkKWNsZWFudXBJbnRlcmFjdGlvbjsKKy0gKHZvaWQpc2V0VXBJbnRlcmFjdGlvbjsKKy0g
KHZvaWQpY2xlYW5VcEludGVyYWN0aW9uOwogCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsU3RhcnRQ
YW5PclBpbmNoR2VzdHVyZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZmNkNWIzMzg2OTFhMDkwMWYx
YWY1MDg4ZGVhYzI5ZjVmMTQ0Y2U1NS4uMDI3ZjhlYTdiMTlkYzkyNGYzZmFiOTlhMmI0NGFmOWY1
NGMwNjlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xNzEsMTEgKzE3MSwxNyBAQAogc3RhdGljIE5T
U3RyaW5nICogY29uc3Qgd2Via2l0U2hvd0xpbmtQcmV2aWV3c1ByZWZlcmVuY2VLZXkgPSBAIldl
YktpdFNob3dMaW5rUHJldmlld3MiOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXQVRDSE9TKQor
I2lmIEhBVkUoVUlfQ1VSU09SX0lOVEVSQUNUSU9OKQorc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
Y3Vyc29yUmVnaW9uSWRlbnRpZmllciA9IEAiV0tDdXJzb3JSZWdpb24iOworc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgZWRpdGFibGVDdXJzb3JSZWdpb25JZGVudGlmaWVyID0gQCJXS0VkaXRhYmxl
Q3Vyc29yUmVnaW9uIjsKIAotQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXYXRjaFN1cHBvcnQp
IDxXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXdEZWxlZ2F0ZSwgV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyRGVsZWdhdGUsIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+
CitAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVUlDdXJzb3JJbnRlcmFjdGlvbkRlbGVnYXRl
KSA8X1VJQ3Vyc29ySW50ZXJhY3Rpb25EZWxlZ2F0ZT4KIEBlbmQKKyNlbmRpZgogCisjaWYgUExB
VEZPUk0oV0FUQ0hPUykKK0BpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoV2F0Y2hTdXBwb3J0KSA8
V0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3RGVsZWdhdGUsIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlckRlbGVnYXRlLCBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPgor
QGVuZAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzE1LDcgKzcyMSw3IEBAIC0g
KHZvaWQpX2NyZWF0ZUFuZENvbmZpZ3VyZUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCiAgICAg
W3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKIH0KIAotLSAodm9pZClzZXR1cEludGVyYWN0aW9uCistICh2b2lkKXNldFVwSW50ZXJh
Y3Rpb24KIHsKICAgICAvLyBJZiB0aGUgcGFnZSBpcyBub3QgdmFsaWQgeWV0IHRoZW4gZGVsYXkg
aW50ZXJhY3Rpb24gc2V0dXAgdW50aWwgdGhlIHByb2Nlc3MgaXMgbGF1bmNoZWQvcmVsYXVuY2hl
ZC4KICAgICBpZiAoIV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQpAQCAtNzczLDE3ICs3Nzks
MTQgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgW190b3VjaEV2ZW50R2VzdHVyZVJl
Y29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6
ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKLSNpZiBIQVZFKEhPVkVS
X0dFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBfbW91c2VHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0
TlMoW1tXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYg
YWN0aW9uOkBzZWxlY3RvcihfbW91c2VHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6KV0pOwotICAg
IFtfbW91c2VHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBbc2VsZiBh
ZGRHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisjaWYg
SEFWRShVSUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCisgICAgW3NlbGYgc2V0VXBNb3VzZUdlc3R1
cmVSZWNvZ25pemVyXTsKICNlbmRpZgogCiAjaWYgSEFWRShMT09LVVBfR0VTVFVSRV9SRUNPR05J
WkVSKQogICAgIF9sb29rdXBHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tfVUlMb29rdXBH
ZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVj
dG9yKF9sb29rdXBHZXN0dXJlUmVjb2duaXplZDopXSk7CiAgICAgW19sb29rdXBHZXN0dXJlUmVj
b2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXpl
cjpfbG9va3VwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwotICAgIAogI2VuZGlmCiAKICAgICBf
c2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbV0tTeW50aGV0aWNUYXBHZXN0
dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9y
KF9zaW5nbGVUYXBSZWNvZ25pemVkOildKTsKQEAgLTgyNCwxMSArODI3LDE1IEBAIC0gKHZvaWQp
c2V0dXBJbnRlcmFjdGlvbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikK
LSAgICBbc2VsZiBzZXR1cERyYWdBbmREcm9wSW50ZXJhY3Rpb25zXTsKKyAgICBbc2VsZiBzZXRV
cERyYWdBbmREcm9wSW50ZXJhY3Rpb25zXTsKKyNlbmRpZgorCisjaWYgSEFWRShVSV9DVVJTT1Jf
SU5URVJBQ1RJT04pCisgICAgW3NlbGYgc2V0VXBDdXJzb3JJbnRlcmFjdGlvbl07CiAjZW5kaWYK
IAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0gICAgW3NlbGYgc2V0dXBBZGRpdGlvbmFs
SW50ZXJhY3Rpb25zXTsKKyAgICBbc2VsZiBzZXRVcEFkZGl0aW9uYWxJbnRlcmFjdGlvbnNdOwog
I2VuZGlmCiAKICAgICBfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9w
dE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBh
Y3Rpb246QHNlbGVjdG9yKF90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplZDopXSk7
CkBAIC04OTAsNyArODk3LDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgX2hhc1Nl
dFVwSW50ZXJhY3Rpb25zID0gWUVTOwogfQogCi0tICh2b2lkKWNsZWFudXBJbnRlcmFjdGlvbgor
LSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KIHsKICAgICBpZiAoIV9oYXNTZXRVcEludGVyYWN0
aW9ucykKICAgICAgICAgcmV0dXJuOwpAQCAtOTM2LDcgKzk0Myw3IEBAIC0gKHZvaWQpY2xlYW51
cEludGVyYWN0aW9uCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2RlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXllZFJlc2V0dGFibGVHZXN0dXJlcy5nZXQoKV07CiAj
ZW5kaWYKIAotI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEhBVkUoVUlL
SVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIFtfbW91c2VHZXN0dXJlUmVjb2duaXplciBzZXRE
ZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9tb3VzZUdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICNlbmRpZgpAQCAtOTg5LDggKzk5NiwxMyBAQCAtICh2
b2lkKWNsZWFudXBJbnRlcmFjdGlvbgogICAgIFtzZWxmIHRlYXJkb3duRHJhZ0FuZERyb3BJbnRl
cmFjdGlvbnNdOwogI2VuZGlmCiAKKyNpZiBIQVZFKFVJX0NVUlNPUl9JTlRFUkFDVElPTikKKyAg
ICBbc2VsZiByZW1vdmVJbnRlcmFjdGlvbjpfY3Vyc29ySW50ZXJhY3Rpb24uZ2V0KCldOworICAg
IF9jdXJzb3JJbnRlcmFjdGlvbiA9IG5pbDsKKyNlbmRpZgorCiAjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKLSAgICBbc2VsZiBjbGVhbnVwQWRkaXRpb25hbEludGVyYWN0aW9uc107CisgICAg
W3NlbGYgY2xlYW5VcEFkZGl0aW9uYWxJbnRlcmFjdGlvbnNdOwogI2VuZGlmCiAKICAgICBfaW5z
cGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQgPSBOTzsKQEAgLTEwNTUsNyArMTA2Nyw3IEBAIC0gKHZv
aWQpX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKICAgICBbc2VsZiByZW1vdmVHZXN0
dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCld
OwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6
ZXI6X3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSNpZiBIQVZFKEhP
VkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9S
VCkKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CiAjZW5kaWYKICNpZiBIQVZFKExPT0tVUF9HRVNUVVJFX1JFQ09HTklaRVIp
CkBAIC0xMDgzLDcgKzEwOTUsNyBAQCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6
ZXJzCiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpf
dHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFk
ZEdlc3R1cmVSZWNvZ25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQo
KV07Ci0jaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCisjaWYgSEFWRShVSUtJVF9X
SVRIX01PVVNFX1NVUFBPUlQpCiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X21vdXNl
R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2VuZGlmCiAjaWYgSEFWRShMT09LVVBfR0VTVFVS
RV9SRUNPR05JWkVSKQpAQCAtMTUwNCw5ICsxNTE2LDEyIEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29n
bml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplciBzaG91bGRSZWNl
aXZlCiAgICAgICAgIHJldHVybiBZRVM7CiAjZW5kaWYKIAotI2lmIEhBVkUoSE9WRVJfR0VTVFVS
RV9SRUNPR05JWkVSKQorI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIGlm
IChnZXN0dXJlUmVjb2duaXplciAhPSBfbW91c2VHZXN0dXJlUmVjb2duaXplciAmJiBbX21vdXNl
R2VzdHVyZVJlY29nbml6ZXIgbW91c2VUb3VjaF0gPT0gdG91Y2gpCiAgICAgICAgIHJldHVybiBO
TzsKKworICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfZG91YmxlVGFwR2VzdHVyZVJlY29n
bml6ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVy
ZVJlY29nbml6ZXIpCisgICAgICAgIHJldHVybiAhdG91Y2guX2lzUG9pbnRlclRvdWNoOwogI2Vu
ZGlmCiAKICAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uTGVmdFN3aXBl
R2VzdHVyZVJlY29nbml6ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uUmln
aHRTd2lwZUdlc3R1cmVSZWNvZ25pemVyIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF90b3VjaEFj
dGlvblVwU3dpcGVHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfdG91
Y2hBY3Rpb25Eb3duU3dpcGVHZXN0dXJlUmVjb2duaXplcikgewpAQCAtMTUyMiwxMSArMTUzNyw3
IEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmVjb2duaXplciBzaG91bGRSZWNlaXZlCiAgICAgICAgIHJldHVybiB0b3VjaEFjdGlvbnMg
PT0gV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBhblg7CiAgICAgfQogCi0jaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLSAgICByZXR1cm4gW3NlbGYgX2FsbG93R2VzdHVyZVJlY29nbml6ZXI6Z2Vz
dHVyZVJlY29nbml6ZXIgdG9SZWNlaXZlVG91Y2g6dG91Y2hdOwotI2Vsc2UKICAgICByZXR1cm4g
WUVTOwotI2VuZGlmCiB9CiAKICNwcmFnbWEgbWFyayAtIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVj
b2duaXplckRlbGVnYXRlIGltcGxlbWVudGF0aW9uCkBAIC0yMDQyLDcgKzIwNTMsNyBAQCAtIChC
T09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIgc2hvdWxkUmVjb2duaQogICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVy
LCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIuZ2V0KCksIF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKSkpCiAgICAgICAg
IHJldHVybiBZRVM7CiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKKyNpZiBI
QVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKICAgICBpZiAoW2dlc3R1cmVSZWNvZ25pemVy
IGlzS2luZE9mQ2xhc3M6W1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBjbGFzc11dIHx8IFtvdGhl
ckdlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W1dLTW91c2VHZXN0dXJlUmVjb2duaXpl
ciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWUVTOwogI2VuZGlmCkBAIC02NTU1LDcgKzY1NjYs
NyBAQCAtICh2b2lkKV9zaG93U2hhcmVTaGVldDooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0
aFBhcnNlZFVSTCYpZGF0YSBpblJlY3Q6KFdURgogICAgIF9zaGFyZVNoZWV0ID0gYWRvcHROUyhb
W1dLU2hhcmVTaGVldCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGYud2ViVmlld10pOwogICAgIFtf
c2hhcmVTaGVldCBzZXREZWxlZ2F0ZTpzZWxmXTsKIAotI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9S
RUNPR05JWkVSKQorI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIGlmICgh
cmVjdCkgewogICAgICAgICBpZiAoYXV0byBsYXN0TW91c2VMb2NhdGlvbiA9IFtfbW91c2VHZXN0
dXJlUmVjb2duaXplciBsYXN0TW91c2VMb2NhdGlvbl0pIHsKICAgICAgICAgICAgIGF1dG8gaG92
ZXJMb2NhdGlvbkluV2ViVmlldyA9IFtzZWxmIGNvbnZlcnRQb2ludDoqbGFzdE1vdXNlTG9jYXRp
b24gdG9WaWV3OnNlbGYud2ViVmlld107CkBAIC02OTQ4LDE1ICs2OTU5LDE0IEBAIC0gKGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPil3ZWJWaWV3VUlEZWxlZ2F0ZQogICAgIHJldHVybiAoaWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+KVtfd2ViVmlldyBVSURlbGVnYXRlXTsKIH0KIAotLSAodm9pZClz
ZXR1cERyYWdBbmREcm9wSW50ZXJhY3Rpb25zCistICh2b2lkKXNldFVwRHJhZ0FuZERyb3BJbnRl
cmFjdGlvbnMKIHsKICAgICBfZHJhZ0ludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJRHJhZ0ludGVy
YWN0aW9uIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOnNlbGZdKTsKICAgICBfZHJvcEludGVyYWN0
aW9uID0gYWRvcHROUyhbW1VJRHJvcEludGVyYWN0aW9uIGFsbG9jXSBpbml0V2l0aERlbGVnYXRl
OnNlbGZdKTsKICAgICBbX2RyYWdJbnRlcmFjdGlvbiBfc2V0TGlmdERlbGF5OnNlbGYuZHJhZ0xp
ZnREZWxheV07CiAgICAgW19kcmFnSW50ZXJhY3Rpb24gc2V0RW5hYmxlZDpzaG91bGRFbmFibGVE
cmFnSW50ZXJhY3Rpb25Gb3JQb2xpY3koc2VsZi53ZWJWaWV3Ll9kcmFnSW50ZXJhY3Rpb25Qb2xp
Y3kpXTsKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0gICAgW3NlbGYgX3BlcmZvcm1B
ZGRpdGlvbmFsU2V0dXBEcmFnQW5kRHJvcEludGVyYWN0aW9uc107CisjaWYgSEFWRShVSUtJVF9X
SVRIX01PVVNFX1NVUFBPUlQpCisgICAgW19kcmFnSW50ZXJhY3Rpb24gX3NldEFsbG93c1BvaW50
ZXJEcmFnQmVmb3JlTGlmdERlbGF5Ok5PXTsKICNlbmRpZgogCiAgICAgW3NlbGYgYWRkSW50ZXJh
Y3Rpb246X2RyYWdJbnRlcmFjdGlvbi5nZXQoKV07CkBAIC04MDc0LDIxICs4MDg0LDYgQEAgLSAo
dm9pZClfbG9va3VwR2VzdHVyZVJlY29nbml6ZWQ6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmVjb2duaXplcgogfQogI2VuZGlmCiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dO
SVpFUikKLS0gKHZvaWQpX21vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOihXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgotewotICAgIGlmICghX3BhZ2UtPmhh
c1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhdXRvIGV2ZW50
ID0gZ2VzdHVyZVJlY29nbml6ZXIubGFzdE1vdXNlRXZlbnQpIHsKLSAgICAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gV2ViS2l0OjpXZWJFdmVudDo6TW91c2VEb3duKQotICAgICAgICAgICAgX2xh
eWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RJbnRlcmFjdGlvblN0YXJ0ID0gZG93bmNhc3Q8V2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UtPmRyYXdpbmdBcmVh
KCkpLmxhc3RDb21taXR0ZWRMYXllclRyZWVUcmFuc2FjdGlvbklEKCk7Ci0KLSAgICAgICAgX3Bh
Z2UtPmhhbmRsZU1vdXNlRXZlbnQoKmV2ZW50KTsKLSAgICB9Ci19Ci0jZW5kaWYKLQogI2lmIEhB
VkUoUEVOQ0lMS0lUKQogLSAoV0tEcmF3aW5nQ29vcmRpbmF0b3IgKilfZHJhd2luZ0Nvb3JkaW5h
dG9yCiB7CkBAIC04MTA0LDYgKzgwOTksMTU4IEBAIC0gKHZvaWQpc2V0Q29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS51
cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CiB9CiAKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0Vf
U1VQUE9SVCkKKworLSAoQk9PTClzaG91bGRVc2VNb3VzZUdlc3R1cmVSZWNvZ25pemVyCit7Cisg
ICAgc3RhdGljIGNvbnN0IEJPT0wgc2hvdWxkVXNlTW91c2VHZXN0dXJlUmVjb2duaXplciA9IFtd
KCkgLT4gQk9PTCB7CisgICAgICAgIC8vIFN5c3RlbSBhcHBzIHdpbGwgYWx3YXlzIGJlIGxpbmtl
ZCBvbiB0aGUgY3VycmVudCBPUywgc28KKyAgICAgICAgLy8gY2hlY2sgdGhlbSBiZWZvcmUgdGhl
IGxpbmtlZC1vbi1vci1hZnRlci4KKworICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTk1MjE5
Njc+IGlBZCBWaWRlbyBkb2VzIG5vdCByZXNwb25kIHRvIG1vdXNlIGV2ZW50cywgb25seSB0b3Vj
aCBldmVudHMKKyAgICAgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc05ld3MoKSB8
fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNTdG9ja3MoKSkKKyAgICAgICAgICAgIHJldHVy
biBOTzsKKworICAgICAgICBpZiAoV2ViS2l0OjpsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0OjpTREtW
ZXJzaW9uOjpGaXJzdFRoYXRTZW5kc05hdGl2ZU1vdXNlRXZlbnRzKSkKKyAgICAgICAgICAgIHJl
dHVybiBZRVM7CisKKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU5MTU1MjIwPiBTb21lIEZl
ZWRseSBVSSBkb2VzIG5vdCByZXNwb25kIHRvIG1vdXNlIGV2ZW50cywgb25seSB0b3VjaCBldmVu
dHMKKyAgICAgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc0ZlZWRseSgpKQorICAg
ICAgICAgICAgcmV0dXJuIE5POworICAgIH0oKTsKKworICAgIHJldHVybiBzaG91bGRVc2VNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyOworfQorCistICh2b2lkKXNldFVwTW91c2VHZXN0dXJlUmVjb2du
aXplcgoreworICAgIF9tb3VzZUdlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW1dLTW91c2VH
ZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVj
dG9yKG1vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOildKTsKKyAgICBbX21vdXNlR2VzdHVy
ZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW19tb3VzZUdlc3R1cmVSZWNvZ25p
emVyIHNldEVuYWJsZWQ6W3NlbGYgc2hvdWxkVXNlTW91c2VHZXN0dXJlUmVjb2duaXplcl1dOwor
ICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9tb3VzZUdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKK30KKworLSAodm9pZCltb3VzZUdlc3R1cmVSZWNvZ25pemVyQ2hhbmdlZDooV0tNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBpZiAoIV9wYWdl
LT5oYXNSdW5uaW5nUHJvY2VzcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGV2ZW50
ID0gZ2VzdHVyZVJlY29nbml6ZXIubGFzdE1vdXNlRXZlbnQ7CisgICAgaWYgKCFldmVudCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gV2ViS2l0OjpXZWJFdmVu
dDo6TW91c2VEb3duKQorICAgICAgICBfbGF5ZXJUcmVlVHJhbnNhY3Rpb25JZEF0TGFzdEludGVy
YWN0aW9uU3RhcnQgPSBkb3duY2FzdDxXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk+KCpfcGFnZS0+ZHJhd2luZ0FyZWEoKSkubGFzdENvbW1pdHRlZExheWVyVHJlZVRyYW5z
YWN0aW9uSUQoKTsKKworICAgIF9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50KCpldmVudCk7Cit9CisK
KyNlbmRpZiAvLyBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKKworI2lmIEhBVkUoVUlf
Q1VSU09SX0lOVEVSQUNUSU9OKQorCistICh2b2lkKXNldFVwQ3Vyc29ySW50ZXJhY3Rpb24KK3sK
KyAgICBfY3Vyc29ySW50ZXJhY3Rpb24gPSBhZG9wdE5TKFtbX1VJQ3Vyc29ySW50ZXJhY3Rpb24g
YWxsb2NdIGluaXRXaXRoRGVsZWdhdGU6c2VsZl0pOworICAgIFtfY3Vyc29ySW50ZXJhY3Rpb24g
X3NldFBhdXNlc0N1cnNvclVwZGF0ZXNXaGlsZVBhbm5pbmc6Tk9dOworCisgICAgW3NlbGYgYWRk
SW50ZXJhY3Rpb246X2N1cnNvckludGVyYWN0aW9uLmdldCgpXTsKK30KKworLSAodm9pZClfY3Vy
c29ySW50ZXJhY3Rpb246KF9VSUN1cnNvckludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcmVnaW9u
Rm9yTG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24gZGVmYXVsdFJlZ2lvbjooX1VJQ3Vyc29yUmVn
aW9uICopZGVmYXVsdFJlZ2lvbiBjb21wbGV0aW9uOih2b2lkKF4pKF9VSUN1cnNvclJlZ2lvbiAq
cmVnaW9uKSljb21wbGV0aW9uCit7CisgICAgdWludDY0X3QgaW50ZXJhY3Rpb25SZXF1ZXN0SUQg
PSArK19jdXJyZW50Q3Vyc29ySW50ZXJhY3Rpb25SZXF1ZXN0SUQ7CisKKyAgICBXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IGludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0
OworICAgIGludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LnBvaW50ID0gV2ViQ29yZTo6cm91
bmRlZEludFBvaW50KGxvY2F0aW9uKTsKKyAgICBpbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVz
dC5pbmNsdWRlQ2FyZXRDb250ZXh0ID0gdHJ1ZTsKKworICAgIEJPT0wgZGlkU3luY2hyb25vdXNs
eVJlcGx5V2l0aEFwcHJveGltYXRpb24gPSBmYWxzZTsKKyAgICBpZiAoIVtzZWxmIF9jdXJyZW50
UG9zaXRpb25JbmZvcm1hdGlvbklzVmFsaWRGb3JSZXF1ZXN0OmludGVyYWN0aW9uSW5mb3JtYXRp
b25SZXF1ZXN0XSAmJiBzZWxmLndlYlZpZXcuX2VkaXRhYmxlICYmICFfcG9zaXRpb25JbmZvcm1h
dGlvbi5zaG91bGROb3RVc2VJQmVhbUluRWRpdGFibGVDb250ZW50KSB7CisgICAgICAgIGRpZFN5
bmNocm9ub3VzbHlSZXBseVdpdGhBcHByb3hpbWF0aW9uID0gdHJ1ZTsKKyAgICAgICAgY29tcGxl
dGlvbihbX1VJQ3Vyc29yUmVnaW9uIHJlZ2lvbldpdGhJZGVudGlmaWVyOmVkaXRhYmxlQ3Vyc29y
UmVnaW9uSWRlbnRpZmllciByZWN0OnNlbGYuYm91bmRzXSk7CisgICAgfQorCisgICAgW3NlbGYg
ZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6XihXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uIGludGVyYWN0aW9uSW5mb3JtYXRpb24pIHsKKyAgICAgICAgaWYg
KGludGVyYWN0aW9uUmVxdWVzdElEIDwgX2N1cnJlbnRDdXJzb3JJbnRlcmFjdGlvblJlcXVlc3RJ
RCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoZGlkU3luY2hyb25vdXNseVJl
cGx5V2l0aEFwcHJveGltYXRpb24pIHsKKyAgICAgICAgICAgIFtpbnRlcmFjdGlvbiBpbnZhbGlk
YXRlXTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBsZXRp
b24oW3NlbGYgY3Vyc29yUmVnaW9uRm9yUG9zaXRpb25JbmZvcm1hdGlvbjppbnRlcmFjdGlvbklu
Zm9ybWF0aW9uIHBvaW50OmxvY2F0aW9uXSk7CisgICAgfSBmb3JSZXF1ZXN0OmludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0XTsKK30KKworLSAoX1VJQ3Vyc29yUmVnaW9uICopY3Vyc29yUmVn
aW9uRm9yUG9zaXRpb25JbmZvcm1hdGlvbjooV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9u
QXRQb3NpdGlvbiYpaW50ZXJhY3Rpb25JbmZvcm1hdGlvbiBwb2ludDooQ0dQb2ludClsb2NhdGlv
bgoreworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBleHBhbmRlZExpbmVSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChpbnRlcmFjdGlvbkluZm9ybWF0aW9uLmxpbmVDYXJldEV4dGVudCk7CisKKyAgICAv
LyBQYWQgbGluZXMgb2YgdGV4dCBpbiBvcmRlciB0byBhdm9pZCBzd2l0Y2hpbmcgYmFjayB0byB0
aGUgZG90IGN1cnNvciBiZXR3ZWVuIGxpbmVzLgorICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgdmFs
dWUgdGhhdCBVSUtpdCB1c2VzLgorICAgIGV4cGFuZGVkTGluZVJlY3QuaW5mbGF0ZVkoMTApOwor
CisgICAgaWYgKGludGVyYWN0aW9uSW5mb3JtYXRpb24uY3Vyc29yKSB7CisgICAgICAgIFdlYkNv
cmU6OkN1cnNvcjo6VHlwZSBjdXJzb3JUeXBlID0gaW50ZXJhY3Rpb25JbmZvcm1hdGlvbi5jdXJz
b3ItPnR5cGUoKTsKKyAgICAgICAgaWYgKGN1cnNvclR5cGUgPT0gV2ViQ29yZTo6Q3Vyc29yOjpI
YW5kKQorICAgICAgICAgICAgcmV0dXJuIFtfVUlDdXJzb3JSZWdpb24gcmVnaW9uV2l0aElkZW50
aWZpZXI6Y3Vyc29yUmVnaW9uSWRlbnRpZmllciByZWN0OmludGVyYWN0aW9uSW5mb3JtYXRpb24u
Ym91bmRzXTsKKworICAgICAgICBpZiAoY3Vyc29yVHlwZSA9PSBXZWJDb3JlOjpDdXJzb3I6OklC
ZWFtICYmIGV4cGFuZGVkTGluZVJlY3QuY29udGFpbnMobG9jYXRpb24pKQorICAgICAgICAgICAg
cmV0dXJuIFtfVUlDdXJzb3JSZWdpb24gcmVnaW9uV2l0aElkZW50aWZpZXI6Y3Vyc29yUmVnaW9u
SWRlbnRpZmllciByZWN0OmV4cGFuZGVkTGluZVJlY3RdOworICAgIH0KKworICAgIGlmIChzZWxm
LndlYlZpZXcuX2VkaXRhYmxlKSB7CisgICAgICAgIGlmIChleHBhbmRlZExpbmVSZWN0LmNvbnRh
aW5zKGxvY2F0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBbX1VJQ3Vyc29yUmVnaW9uIHJlZ2lv
bldpdGhJZGVudGlmaWVyOmN1cnNvclJlZ2lvbklkZW50aWZpZXIgcmVjdDpleHBhbmRlZExpbmVS
ZWN0XTsKKyAgICAgICAgcmV0dXJuIFtfVUlDdXJzb3JSZWdpb24gcmVnaW9uV2l0aElkZW50aWZp
ZXI6ZWRpdGFibGVDdXJzb3JSZWdpb25JZGVudGlmaWVyIHJlY3Q6c2VsZi5ib3VuZHNdOworICAg
IH0KKworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKF9VSUN1cnNvclN0eWxlICopY3Vyc29ySW50
ZXJhY3Rpb246KF9VSUN1cnNvckludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc3R5bGVGb3JSZWdp
b246KF9VSUN1cnNvclJlZ2lvbiAqKXJlZ2lvbiBtb2RpZmllcnM6KFVJS2V5TW9kaWZpZXJGbGFn
cyltb2RpZmllcnMKK3sKKyAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzZWxmLl9jb250ZW50Wm9v
bVNjYWxlOworCisgICAgX1VJQ3Vyc29yU3R5bGUgKiheaUJlYW1DdXJzb3IpKHZvaWQpID0gXnsK
KyAgICAgICAgZmxvYXQgYmVhbUxlbmd0aCA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLmNhcmV0SGVp
Z2h0ICogc2NhbGVGYWN0b3I7CisgICAgICAgIFVJQXhpcyBpQmVhbUNvbnN0cmFpbnRBeGVzID0g
VUlBeGlzVmVydGljYWw7CisKKyAgICAgICAgLy8gSWYgdGhlIEktYmVhbSBpcyBzbyBsYXJnZSB0
aGF0IHRoZSBtYWduZXRpc20gaXMgaGFyZCB0byBmaWdodCwgd2Ugc2hvdWxkIG5vdCBhcHBseSBh
bnkgbWFnbmV0aXNtLgorICAgICAgICBpZiAoYmVhbUxlbmd0aCA+IFtVSVRleHRJbnRlcmFjdGlv
biBfbWF4aW11bUJlYW1TbmFwcGluZ0xlbmd0aF0pCisgICAgICAgICAgICBpQmVhbUNvbnN0cmFp
bnRBeGVzID0gVUlBeGlzTmVpdGhlcjsKKworICAgICAgICAvLyBJZiB0aGUgcmVnaW9uIGlzIHRo
ZSBzaXplIG9mIHRoZSB2aWV3LCB3ZSBzaG91bGQgbm90IGFwcGx5IGFueSBtYWduZXRpc20uCisg
ICAgICAgIGlmIChbcmVnaW9uLmlkZW50aWZpZXIgaXNFcXVhbDplZGl0YWJsZUN1cnNvclJlZ2lv
bklkZW50aWZpZXJdKQorICAgICAgICAgICAgaUJlYW1Db25zdHJhaW50QXhlcyA9IFVJQXhpc05l
aXRoZXI7CisKKyAgICAgICAgcmV0dXJuIFtfVUlDdXJzb3JTdHlsZSBzdHlsZVdpdGhDdXJzb3I6
W19VSUN1cnNvciBiZWFtV2l0aFByZWZlcnJlZExlbmd0aDpiZWFtTGVuZ3RoIGF4aXM6VUlBeGlz
VmVydGljYWxdIGNvbnN0cmFpbmVkQXhlczppQmVhbUNvbnN0cmFpbnRBeGVzXTsKKyAgICB9Owor
CisgICAgaWYgKHNlbGYud2ViVmlldy5fZWRpdGFibGUpIHsKKyAgICAgICAgaWYgKF9wb3NpdGlv
bkluZm9ybWF0aW9uLnNob3VsZE5vdFVzZUlCZWFtSW5FZGl0YWJsZUNvbnRlbnQpCisgICAgICAg
ICAgICByZXR1cm4gbmlsOworICAgICAgICByZXR1cm4gaUJlYW1DdXJzb3IoKTsKKyAgICB9CisK
KyAgICBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24uY3Vyc29yICYmIFtyZWdpb24uaWRlbnRpZmll
ciBpc0VxdWFsOmN1cnNvclJlZ2lvbklkZW50aWZpZXJdKSB7CisgICAgICAgIFdlYkNvcmU6OkN1
cnNvcjo6VHlwZSBjdXJzb3JUeXBlID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24uY3Vyc29yLT50eXBl
KCk7CisKKyAgICAgICAgaWYgKGN1cnNvclR5cGUgPT0gV2ViQ29yZTo6Q3Vyc29yOjpIYW5kKQor
ICAgICAgICAgICAgcmV0dXJuIFtfVUlDdXJzb3JTdHlsZSBzdHlsZVdpdGhDdXJzb3I6W19VSUN1
cnNvciBsaW5rQ3Vyc29yXSBjb25zdHJhaW5lZEF4ZXM6VUlBeGlzTmVpdGhlcl07CisKKyAgICAg
ICAgaWYgKGN1cnNvclR5cGUgPT0gV2ViQ29yZTo6Q3Vyc29yOjpJQmVhbSAmJiBfcG9zaXRpb25J
bmZvcm1hdGlvbi5saW5lQ2FyZXRFeHRlbnQuY29udGFpbnMoX3Bvc2l0aW9uSW5mb3JtYXRpb24u
cmVxdWVzdC5wb2ludCkpCisgICAgICAgICAgICByZXR1cm4gaUJlYW1DdXJzb3IoKTsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbmlsOworfQorCisjZW5k
aWYgLy8gSEFWRShVSV9DVVJTT1JfSU5URVJBQ1RJT04pCisKIEBlbmQKIAogQGltcGxlbWVudGF0
aW9uIFdLQ29udGVudFZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaAppbmRleCA0NDEwYjdkMTNm
MDZjMTJjNmFiZWFkOGEzNjc1MjAwNmQ2OWQyNTFjLi43NDVlNDM0YjM1MTk4MzZlZjNlYzI3YWM2
MWExMTY2NzZhN2ViOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5oCkBAIC0yMyw3ICsyMyw3IEBACiAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVf
UkVDT0dOSVpFUikKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKIAogI2ltcG9y
dCA8VUlLaXQvVUlHZXN0dXJlUmVjb2duaXplci5oPgogI2ltcG9ydCAiTmF0aXZlV2ViTW91c2VF
dmVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VH
ZXN0dXJlUmVjb2duaXplci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNl
R2VzdHVyZVJlY29nbml6ZXIubW0KaW5kZXggZGVjNDViNmZjYTExNTEwNmYyN2M0MTcyYWJmM2Nh
ZGMzZTAwNjZlNy4uODUxNDk5MjA4OGU0YTYzZDIyZWQ1ZGI4Yjc2ZWUyMjE0NGMwMWNlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2du
aXplci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVS
ZWNvZ25pemVyLm1tCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIldLTW91c2VHZXN0dXJlUmVjb2duaXplci5oIgogCi0jaWYgSEFWRShIT1ZFUl9HRVNUVVJF
X1JFQ09HTklaRVIpCisjaWYgSEFWRShVSUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCiAKICNpbXBv
cnQgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYkNocm9t
ZUNsaWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCmluZGV4IDFjNWFhMjhmY2YzMDA1NDgwYjE0ZTIyYjI0
ZGI1ODA5MGIyOTE0NDIuLjcwZjVlNDBiYWI3ZmMzMGIyZmE1NGY0NmYzNDM2YWU0NTMwODhmOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3Mv
V2ViQ2hyb21lQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tCkBAIC0xODQsOSArMTg0LDkgQEAg
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKEdyYXBoaWNzTGF5
ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmUKIAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnNob3VsZFVz
ZU1vdXNlRXZlbnRGb3JTZWxlY3Rpb24oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCkKIHsKLSAgICAvLyBJbiBtYWNDYXRhbHlzdCwgZGVzcGl0ZSBnZXR0aW5nIG1vdXNl
IGV2ZW50cywgd2Ugc3RpbGwgd2FudCBVSVRleHRJbnRlcmFjdGlvbiBhbmQgZnJpZW5kcyB0byBv
d24gc2VsZWN0aW9uIGdlc3R1cmVzLgorICAgIC8vIEluIGlQYWRPUyBhbmQgbWFjQ2F0YWx5c3Qs
IGRlc3BpdGUgZ2V0dGluZyBtb3VzZSBldmVudHMsIHdlIHN0aWxsIHdhbnQgVUlUZXh0SW50ZXJh
Y3Rpb24gYW5kIGZyaWVuZHMgdG8gb3duIHNlbGVjdGlvbiBnZXN0dXJlcy4KICAgICAvLyBIb3dl
dmVyLCB3ZSBuZWVkIHRvIGFsbG93IHNpbmdsZS1jbGlja3MgdG8gc2V0IHRoZSBzZWxlY3Rpb24s
IGJlY2F1c2UgdGhhdCBpcyBob3cgVUlUZXh0SW50ZXJhY3Rpb24gaXMgYWN0aXZhdGVkLgotI2lm
IEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VT
RV9TVVBQT1JUKQogICAgIHJldHVybiBldmVudC5jbGlja0NvdW50KCkgPD0gMTsKICNlbHNlCiAg
ICAgcmV0dXJuIHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394004</attachid>
            <date>2020-03-19 12:14:00 -0700</date>
            <delta_ts>2020-03-19 12:14:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209268-20200319121359.patch</filename>
            <type>text/plain</type>
            <size>31617</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVjYmQzNjA5MTZjOTE1ODdjYmE3MjNl
ZDhiMGZjZWEzZTAxMTI3ODUuLjcyNmYxOTZlY2RkYjJhZmI1MTUwMDlmOWNhNGIyY2QxMjhhZGIz
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDMtMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHN1cHBvcnQgZm9yIGN1cnNv
ciBpbnRlcmFjdGlvbnMgb24gaVBhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5MjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oOgorICAgICAgICBEb24ndCBk
aXNhYmxlIHRoZSBjb250ZXh0bWVudSBldmVudCBvbiBpT1MgYW55bW9yZS4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKyAgICAgICAgUmVuYW1lIEhBVkVfSE9WRVJfR0VTVFVSRV9S
RUNPR05JWkVSIHRvIEhBVkVfVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JULgorICAgICAgICBBZGQg
SEFWRV9VSV9DVVJTT1JfSU5URVJBQ1RJT04uCisgICAgICAgIEVuYWJsZSBIQVZFX1VJX1BBUkFM
TEFYX1RSQU5TSVRJT05fR0VTVFVSRV9SRUNPR05JWkVSIG9uIGlPUy4KKwogMjAyMC0wMy0xOCAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjI1NDM4OSk6IENvcmRvdmEgdGhyb3dzIGFuIGV4Y2VwdGlvbiBiZWNhdXNlIGl0IGV4
cGVjdHMgYSBoeXBoZW4gaW5zaWRlIG5hdmlnYXRvci5sb2NhbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYzUx
OGEyM2QxOTdhZmI0MDgwMTI2NGVlNWVmYmY2MDZlMWIxYzM4Li4wZmEzNzU1MzE2MWVhZmIyODky
YmNhYTVmNmE5ZWZkYmZiZGZiOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAt
MDMtMTggIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
SW1wbGVtZW50IHN1cHBvcnQgZm9yIGN1cnNvciBpbnRlcmFjdGlvbnMgb24gaVBhZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5MjY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGluIHRo
aXMgcGF0Y2gsIGp1c3QgdXBzdHJlYW1pbmcuIFdpbGwgYXR0ZW1wdCB0byBlbmFibGUKKyAgICAg
ICAgc29tZSBtYWNPUyBtb3VzZSBldmVudCB0ZXN0cyBvbiBpT1MgaW4gdGhlIGZ1dHVyZSwgdGhv
dWdoLgorCisgICAgICAgICogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW06
CisgICAgICAgIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNOZXdzKToKKyAgICAgICAgKFdl
YkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc1N0b2Nrcyk6CisgICAgICAgIChXZWJDb3JlOjpJT1NB
cHBsaWNhdGlvbjo6aXNGZWVkbHkpOgorICAgICAgICBBZGQgc29tZSBidW5kbGUgSUQgY2hlY2tz
IG5lZWRlZCBpbiBXZWJLaXQuCisKIDIwMjAtMDMtMTggIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYlBhZ2Ugc2hvdWxkIG93biBhIFJlZjxXZWJGcmFtZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggOTgzOTY0Zjc3MjE1ZjU3ZmQ5YjAzMmZjYjQyOGFiZWQyNmU0NTk3Mi4uZmY2
MjY2YzZkYjgxMjFjYTViY2MxMDkzMThiZTIxYzcyMjY2MTE1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNSBAQAorMjAyMC0wMy0xOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgY3Vyc29yIGludGVyYWN0aW9ucyBv
biBpUGFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDkyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFBs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVmVy
c2lvbkNoZWNrcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2V0dXBJbnRlcmFjdGlvbl0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGNsZWFudXBJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplcjpzaG91bGRSZWNlaXZlVG91Y2g6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6c2hvdWxkUmVj
b2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXI6XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgX3Nob3dTaGFyZVNoZWV0OmluUmVjdDpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cERyYWdBbmREcm9wSW50ZXJhY3Rpb25z
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgc2hvdWxkVXNlTW91c2VHZXN0dXJlUmVjb2du
aXplcl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwTW91c2VHZXN0dXJlUmVjb2du
aXplcl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IG1vdXNlR2VzdHVyZVJlY29nbml6ZXJD
aGFuZ2VkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwQ3Vyc29ySW50ZXJhY3Rp
b25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3Vyc29ySW50ZXJhY3Rpb246cmVnaW9u
Rm9yTG9jYXRpb246ZGVmYXVsdFJlZ2lvbjpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IGN1cnNvclJlZ2lvbkZvclBvc2l0aW9uSW5mb3JtYXRpb246cG9pbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgY3Vyc29ySW50ZXJhY3Rpb246c3R5bGVGb3JSZWdpb246
bW9kaWZpZXJzOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9tb3VzZUdlc3R1cmVSZWNv
Z25pemVyQ2hhbmdlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLTW91
c2VHZXN0dXJlUmVjb2duaXplci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb3VzZUdl
c3R1cmVSZWNvZ25pemVyLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYkNocm9tZUNsaWVudElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpzaG91bGRVc2VNb3VzZUV2ZW50Rm9yU2VsZWN0aW9uKToKKwogMjAyMC0wMy0xOCAgeW91
ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViUGFnZSBzaG91bGQg
b3duIGEgUmVmPFdlYkZyYW1lPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1F
bmFibGVDb2NvYS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCmluZGV4
IDAwNWFmYjE3NDMxYzU0MjVhZDAyNTZiNzRhMGIzZDAwMjU1MzA5YmIuLmY2NTc0MTJmYzNkOGRj
Zjc3ZDg4ZDI3ZWYwYThiMjA5ZDYyNjc0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlQ29jb2EuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNv
Y29hLmgKQEAgLTU1LDcgKzU1LDcgQEAKICNkZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAog
I2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VX0VWRU5UKSAmJiAoUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkKKyNpZiAhZGVmaW5l
ZChFTkFCTEVfQ09OVEVYVF9NRU5VX0VWRU5UKSAmJiAoUExBVEZPUk0oV0FUQ0hPUykgfHwgUExB
VEZPUk0oQVBQTEVUVikpCiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVfRVZFTlQgMAogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZTg0NGIyNjk3NTYyOGYzNDRhNmRhNDk1NzZk
MTJiYzFlMGUxN2VmOS4uNDIyNjEwODRlZTdiYTlkMGJhYjM3N2VhNDgwM2NjNGQwNDIzYmY4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTQ4MCwxNSArNDgwLDE5IEBACiAjZGVmaW5lIEhBVkVf
VUlfV0tfRE9DVU1FTlRfQ09OVEVYVCAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQotI2RlZmluZSBIQVZFX0hPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUiAxCi0jZGVmaW5lIEhB
VkVfTE9PS1VQX0dFU1RVUkVfUkVDT0dOSVpFUiAxCisjaWYgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTMwNDAwKQorI2RlZmluZSBIQVZFX1VJ
X0NVUlNPUl9JTlRFUkFDVElPTiAxCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQorI2lmIChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEzMDQwMCkgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisjZGVmaW5lIEhBVkVfVUlLSVRf
V0lUSF9NT1VTRV9TVVBQT1JUIDEKICNkZWZpbmUgSEFWRV9VSV9QQVJBTExBWF9UUkFOU0lUSU9O
X0dFU1RVUkVfUkVDT0dOSVpFUiAxCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQorI2RlZmluZSBIQVZFX0xPT0tVUF9HRVNUVVJFX1JFQ09HTklaRVIgMQorI2VuZGlmCisKICNp
ZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTUwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNkZWZpbmUgSEFWRV9BTExPV1NfU0VOU0lU
SVZFX0xPR0dJTkcgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oCmluZGV4IGQyMDNiNDZiYTgyYjhhNDNkYTBmNzllMjBm
ZDhkM2U5ZDM5YTk2MWIuLmUwYTEyNGZhMjdmMDhlMWZlOTA2ZTQ1NGYzZDgzMTM0MjUwZGZhZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oCkBAIC0xMDAsNiArMTAwLDkgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0FwcGxlQXBw
bGljYXRpb24oKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFdmVybm90ZSgpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBpc0V2ZW50YnJpdGUoKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNEYXRhQWN0
aXZhdGlvbigpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBpc05ld3MoKTsKK1dFQkNPUkVfRVhQT1JU
IGJvb2wgaXNTdG9ja3MoKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgaXNGZWVkbHkoKTsKIAogfSAv
LyBJT1NBcHBsaWNhdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCmluZGV4IGMyYTA2
ZjA1NjQzYWRhMWQ2ZWE0YTA2MzAzNzBiZTcwMTIyNGJhMDkuLmVkMjI1YjY3ZjZhMzg5Y2ZkMWRh
ZDliYTFkNzY5NzQ2ZDUzNWM0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tCkBAIC0z
NDUsNiArMzQ1LDI0IEBAIGJvb2wgSU9TQXBwbGljYXRpb246OmlzTWluaUJyb3dzZXIoKQogICAg
IHJldHVybiBpc01pbmlCcm93c2VyOwogfQogCitib29sIElPU0FwcGxpY2F0aW9uOjppc05ld3Mo
KQoreworICAgIHN0YXRpYyBib29sIGlzTmV3cyA9IGFwcGxpY2F0aW9uQnVuZGxlSXNFcXVhbFRv
KCJjb20uYXBwbGUubmV3cyJfcyk7CisgICAgcmV0dXJuIGlzTmV3czsKK30KKworYm9vbCBJT1NB
cHBsaWNhdGlvbjo6aXNTdG9ja3MoKQoreworICAgIHN0YXRpYyBib29sIGlzU3RvY2tzID0gYXBw
bGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5hcHBsZS5zdG9ja3MiX3MpOworICAgIHJldHVy
biBpc1N0b2NrczsKK30KKworYm9vbCBJT1NBcHBsaWNhdGlvbjo6aXNGZWVkbHkoKQoreworICAg
IHN0YXRpYyBib29sIGlzRmVlZGx5ID0gYXBwbGljYXRpb25CdW5kbGVJc0VxdWFsVG8oImNvbS5k
ZXZoZC5mZWVkbHkiX3MpOworICAgIHJldHVybiBpc0ZlZWRseTsKK30KKwogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
c3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0
U1BJLmgKaW5kZXggNzlkMTlmMTk3ZTU2NWQwMGRjOWRkYTdhODgyMDliODA5YmY5YWQ3Yi4uODc3
ZjNjMzFlN2JkZWEwMTNkZWU0NTNlOGY2NWM0NWM5MWY5Y2U5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNpbXBvcnQgPFVJ
S2l0L1VJVGV4dEVmZmVjdHNXaW5kb3cuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4dElucHV0X1By
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVGV4dEludGVyYWN0aW9uQXNzaXN0YW50X1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFVJS2l0L1VJVGV4dEludGVyYWN0aW9uX1ByaXZhdGUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uaW5nX1ByaXZhdGUuaD4KICNpbXBv
cnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXJfUHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlW
aWV3Q29udHJvbGxlcl9WaWV3U2VydmljZS5oPgpAQCAtMTIzLDYgKzEyNCwxMyBAQAogI2ltcG9y
dCA8VUlLaXQvVUlUYXJnZXRlZFByZXZpZXdfUHJpdmF0ZS5oPgogI2VuZGlmCiAKKyNpZiBIQVZF
KFVJX0NVUlNPUl9JTlRFUkFDVElPTikKKyNpbXBvcnQgPFVJS2l0L19VSUN1cnNvckludGVyYWN0
aW9uLmg+CisjaW1wb3J0IDxVSUtpdC9fVUlDdXJzb3JJbnRlcmFjdGlvbl9Gb3JXZWJLaXRPbmx5
Lmg+CisjaW1wb3J0IDxVSUtpdC9fVUlDdXJzb3JTdHlsZS5oPgorI2ltcG9ydCA8VUlLaXQvX1VJ
Q3Vyc29yU3R5bGVfUHJpdmF0ZS5oPgorI2VuZGlmCisKICNlbHNlIC8vIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtNjQ3LDYgKzY1NSwxMCBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBVSVdLR2VzdHVyZVR5cGUpIHsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgYXNzaWduKSBVSVRhcEdlc3R1cmVSZWNvZ25pemVyICpz
aW5nbGVUYXBHZXN0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFVJVGV4dEludGVyYWN0aW9uICgp
CitAcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJlYWRvbmx5KSBDR0Zsb2F0IF9tYXhpbXVt
QmVhbVNuYXBwaW5nTGVuZ3RoOworQGVuZAorCiBAcHJvdG9jb2wgVUlXS0ludGVyYWN0aW9uVmll
d1Byb3RvY29sCiAtICh2b2lkKWNoYW5nZVNlbGVjdGlvbldpdGhHZXN0dXJlQXQ6KENHUG9pbnQp
cG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSB3aXRoU3RhdGU6
KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0ZTsKIC0gKHZvaWQpY2hhbmdlU2VsZWN0aW9u
V2l0aFRvdWNoQXQ6KENHUG9pbnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0
aW9uVG91Y2gpdG91Y2ggYmFzZUlzU3RhcnQ6KEJPT0wpYmFzZUlzU3RhcnQgd2l0aEZsYWdzOihV
SVdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3M7CkBAIC0xMTM3LDYgKzExNDksMjMgQEAgdHlwZWRlZiBO
U19FTlVNKE5TVUludGVnZXIsIF9VSUNvbnRleHRNZW51TGF5b3V0KSB7CiBAcHJvcGVydHkgKHJl
YWRvbmx5KSBCT09MIGlzTG93Q29uZmlkZW5jZTsKIEBlbmQKIAorQHByb3RvY29sIF9VSUN1cnNv
ckludGVyYWN0aW9uRGVsZWdhdGU7CisKK0BpbnRlcmZhY2UgX1VJQ3Vyc29ySW50ZXJhY3Rpb24g
OiBOU09iamVjdCA8VUlJbnRlcmFjdGlvbj4KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVn
YXRlOihpZCA8X1VJQ3Vyc29ySW50ZXJhY3Rpb25EZWxlZ2F0ZT4pZGVsZWdhdGU7CistICh2b2lk
KWludmFsaWRhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCBnZXR0ZXI9X3BhdXNl
c0N1cnNvclVwZGF0ZXNXaGlsZVBhbm5pbmcsIHNldHRlcj1fc2V0UGF1c2VzQ3Vyc29yVXBkYXRl
c1doaWxlUGFubmluZzopIEJPT0wgcGF1c2VzQ3Vyc29yVXBkYXRlc1doaWxlUGFubmluZzsKK0Bl
bmQKKworQGludGVyZmFjZSBfVUlDdXJzb3JSZWdpb24gOiBOU09iamVjdCA8TlNDb3B5aW5nPgor
KyAoaW5zdGFuY2V0eXBlKXJlZ2lvbldpdGhJZGVudGlmaWVyOihpZCA8TlNPYmplY3Q+KWlkZW50
aWZpZXIgcmVjdDooQ0dSZWN0KXJlY3Q7CitAZW5kCisKK0BpbnRlcmZhY2UgX1VJQ3Vyc29yIDog
TlNPYmplY3QKKysgKGluc3RhbmNldHlwZSliZWFtV2l0aFByZWZlcnJlZExlbmd0aDooQ0dGbG9h
dClsZW5ndGggYXhpczooVUlBeGlzKWF4aXM7CisrIChpbnN0YW5jZXR5cGUpbGlua0N1cnNvcjsK
K0BlbmQKKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAKICNkZWZpbmUgVUlX
S0RvY3VtZW50UmVxdWVzdE1hcmtlZFRleHRSZWN0cyAoMSA8PCA1KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVmVyc2lvbkNoZWNrcy5oCmluZGV4IDg2NzE5YWM0M2I1NTU5YjRl
YWE4YjgwZTQ2MWYwMTlhMTNmNDQwZmMuLmUyNmM5MjQ3NzExZTVmZjNlMTMwNTM2YjM2MjU3OTU2
ODAyYjUxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZlcnNp
b25DaGVja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WZXJzaW9uQ2hl
Y2tzLmgKQEAgLTkyLDYgKzkyLDcgQEAgZW51bSBjbGFzcyBTREtWZXJzaW9uIDogdWludDMyX3Qg
ewogICAgIEZpcnN0V2hlcmVTaXRlU3BlY2lmaWNRdWlya3NBcmVFbmFibGVkQnlEZWZhdWx0ID0g
RFlMRF9JT1NfVkVSU0lPTl8xM18yLAogICAgIEZpcnN0VGhhdFJlc3RyaWN0c0Jhc2VVUkxTY2hl
bWVzID0gRFlMRF9JT1NfVkVSU0lPTl8xM180LAogICAgIEZpcnN0V2l0aFNlc3Npb25DbGVhbnVw
QnlEZWZhdWx0ID0gRFlMRF9JT1NfVkVSU0lPTl9GSVJTVF9XSVRIX1NFU1NJT05fQ0xFQU5VUF9C
WV9ERUZBVUxULAorICAgIEZpcnN0VGhhdFNlbmRzTmF0aXZlTW91c2VFdmVudHMgPSBEWUxEX0lP
U19WRVJTSU9OXzEzXzQsCiAjZWxpZiBQTEFURk9STShNQUMpCiAgICAgRmlyc3RXaXRoTmV0d29y
a0NhY2hlID0gRFlMRF9NQUNPU1hfVkVSU0lPTl8xMF8xMSwKICAgICBGaXJzdFdpdGhFeGNlcHRp
b25zRm9yRHVwbGljYXRlQ29tcGxldGlvbkhhbmRsZXJDYWxscyA9IERZTERfTUFDT1NYX1ZFUlNJ
T05fMTBfMTMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
CmluZGV4IGI4ZTNjMDUwOTE3ZDk4NGU5YzdiYTFlMjc5ZDYyMTk5MTM1ZDBlODEuLmI5OWI3MDU5
MWJjYjI0ZmM1NWJiMzVmMmVlODYxNjc0MjAzYTMyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC0xOTAsNyArMTkwLDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbCYpcHIKICAgICBbX2ZpeGVkQ2xpcHBpbmdWaWV3IGFkZFN1YnZpZXc6X3Jvb3RD
b250ZW50Vmlldy5nZXQoKV07CiAKICAgICBpZiAoIWxpbmtlZE9uT3JBZnRlcihXZWJLaXQ6OlNE
S1ZlcnNpb246OkZpcnN0V2l0aExhenlHZXN0dXJlUmVjb2duaXplckluc3RhbGxhdGlvbikpCi0g
ICAgICAgIFtzZWxmIHNldHVwSW50ZXJhY3Rpb25dOworICAgICAgICBbc2VsZiBzZXRVcEludGVy
YWN0aW9uXTsKICAgICBbc2VsZiBzZXRVc2VySW50ZXJhY3Rpb25FbmFibGVkOllFU107CiAKICAg
ICBzZWxmLmxheWVyLmhpdFRlc3RzQXNPcGFxdWUgPSBZRVM7CkBAIC0yODYsNyArMjg2LDcgQEAg
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDoo
TmFrZWRSZWY8V2ViS2l0OjpXZWJQcm8KIAogLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgW3NlbGYg
Y2xlYW51cEludGVyYWN0aW9uXTsKKyAgICBbc2VsZiBjbGVhblVwSW50ZXJhY3Rpb25dOwogCiAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpz
ZWxmXTsKIApAQCAtMzI5LDcgKzMyOSw3IEBAIC0gKHZvaWQpZGlkTW92ZVRvV2luZG93CiAgICAg
W3N1cGVyIGRpZE1vdmVUb1dpbmRvd107CiAKICAgICBpZiAoc2VsZi53aW5kb3cpCi0gICAgICAg
IFtzZWxmIHNldHVwSW50ZXJhY3Rpb25dOworICAgICAgICBbc2VsZiBzZXRVcEludGVyYWN0aW9u
XTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTYxMCw3ICs2
MTAsNyBAQCAtIChzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PilfY3Jl
YXRlRHJhd2luZ0FyZWFQcm94eTooV2ViS2l0OjpXZQogLSAodm9pZClfcHJvY2Vzc0RpZEV4aXQK
IHsKICAgICBbc2VsZiBfdXBkYXRlUmVtb3RlQWNjZXNzaWJpbGl0eVJlZ2lzdHJhdGlvbjpOT107
Ci0gICAgW3NlbGYgY2xlYW51cEludGVyYWN0aW9uXTsKKyAgICBbc2VsZiBjbGVhblVwSW50ZXJh
Y3Rpb25dOwogCiAgICAgW3NlbGYgc2V0U2hvd2luZ0luc3BlY3RvckluZGljYXRpb246Tk9dOwog
ICAgIFtzZWxmIF9oaWRlSW5zcGVjdG9ySGlnaGxpZ2h0XTsKQEAgLTYzOCw3ICs2MzgsNyBAQCAt
ICh2b2lkKV9wcm9jZXNzV2lsbFN3YXAKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJvY2Vzcwogewog
ICAgIFtzZWxmIF9hY2Nlc3NpYmlsaXR5UmVnaXN0ZXJVSVByb2Nlc3NUb2tlbnNdOwotICAgIFtz
ZWxmIHNldHVwSW50ZXJhY3Rpb25dOworICAgIFtzZWxmIHNldFVwSW50ZXJhY3Rpb25dOwogI2lm
IEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogICAgIFtzZWxmIF9zZXR1cFZpc2li
aWxpdHlQcm9wYWdhdGlvblZpZXddOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZTc3YTUzODZk
MGVkMzViMTY3OTgxOWQwZjQyZWY1Njc3ODExZTA1MC4uZmIxOGIwYzVmZDM1YWE4ZmExMWZkMGUx
YmYyODEzNmY0OGYwYzE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHk7CiBzdHJ1Y3QgV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0OwogfQogCitAY2xh
c3MgX1VJQ3Vyc29ySW50ZXJhY3Rpb247CiBAY2xhc3MgX1VJTG9va3VwR2VzdHVyZVJlY29nbml6
ZXI7CiBAY2xhc3MgX1VJSGlnaGxpZ2h0VmlldzsKIEBjbGFzcyBVSVRhcmdldGVkUHJldmlldzsK
QEAgLTExOCw2ICsxMTksOCBAQCB0eXBlZGVmIHZvaWQgKF5VSVdLU2VsZWN0aW9uV2l0aERpcmVj
dGlvbkNvbXBsZXRpb25IYW5kbGVyKShCT09MIHNlbGVjdGlvbkVuZElzTQogdHlwZWRlZiBCbG9j
a1B0cjx2b2lkKFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24pPiBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQ2FsbGJhY2s7CiB0eXBlZGVmIHN0ZDo6cGFpcjxXZWJLaXQ6Oklu
dGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQ2FsbGJh
Y2s+IEludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0QW5kQ2FsbGJhY2s7CiAKK3R5cGVkZWYg
dWludDY0X3QgQ3Vyc29ySW50ZXJhY3Rpb25SZXF1ZXN0SUQ7CisKICNkZWZpbmUgRk9SX0VBQ0hf
V0tDT05URU5UVklFV19BQ1RJT04oTSkgXAogICAgIE0oX2FkZFNob3J0Y3V0KSBcCiAgICAgTShf
ZGVmaW5lKSBcCkBAIC0yMzMsMTAgKzIzNiwxNSBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRh
dGEgewogICAgIFJldGFpblB0cjxfVUlMb29rdXBHZXN0dXJlUmVjb2duaXplcj4gX2xvb2t1cEdl
c3R1cmVSZWNvZ25pemVyOwogI2VuZGlmCiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dO
SVpFUikKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKICAgICBSZXRhaW5QdHI8
V0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyPiBfbW91c2VHZXN0dXJlUmVjb2duaXplcjsKICNlbmRp
ZgogCisjaWYgSEFWRShVSV9DVVJTT1JfSU5URVJBQ1RJT04pCisgICAgUmV0YWluUHRyPF9VSUN1
cnNvckludGVyYWN0aW9uPiBfY3Vyc29ySW50ZXJhY3Rpb247CisgICAgQ3Vyc29ySW50ZXJhY3Rp
b25SZXF1ZXN0SUQgX2N1cnJlbnRDdXJzb3JJbnRlcmFjdGlvblJlcXVlc3RJRDsKKyNlbmRpZgor
CiAgICAgUmV0YWluUHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ+IF90ZXh0SW50ZXJh
Y3Rpb25Bc3Npc3RhbnQ7CiAgICAgT3B0aW9uU2V0PFdlYktpdDo6U3VwcHJlc3NTZWxlY3Rpb25B
c3Npc3RhbnRSZWFzb24+IF9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbnM7CiAKQEAg
LTQyNyw4ICs0MzUsOCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogQHByb3BlcnR5
IChub25hdG9taWMsIHN0cm9uZykgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICpkYXRhTGlz
dFRleHRTdWdnZXN0aW9uczsKICNlbmRpZgogCi0tICh2b2lkKXNldHVwSW50ZXJhY3Rpb247Ci0t
ICh2b2lkKWNsZWFudXBJbnRlcmFjdGlvbjsKKy0gKHZvaWQpc2V0VXBJbnRlcmFjdGlvbjsKKy0g
KHZvaWQpY2xlYW5VcEludGVyYWN0aW9uOwogCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsU3RhcnRQ
YW5PclBpbmNoR2VzdHVyZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZmNkNWIzMzg2OTFhMDkwMWYx
YWY1MDg4ZGVhYzI5ZjVmMTQ0Y2U1NS4uYzNjODJjODRmZTdiZjg2NjUxNTdiNWZmNTU5ZWQ4Y2M1
OTBmOTAxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xNzEsMTEgKzE3MSwxNyBAQAogc3RhdGljIE5T
U3RyaW5nICogY29uc3Qgd2Via2l0U2hvd0xpbmtQcmV2aWV3c1ByZWZlcmVuY2VLZXkgPSBAIldl
YktpdFNob3dMaW5rUHJldmlld3MiOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShXQVRDSE9TKQor
I2lmIEhBVkUoVUlfQ1VSU09SX0lOVEVSQUNUSU9OKQorc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
Y3Vyc29yUmVnaW9uSWRlbnRpZmllciA9IEAiV0tDdXJzb3JSZWdpb24iOworc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgZWRpdGFibGVDdXJzb3JSZWdpb25JZGVudGlmaWVyID0gQCJXS0VkaXRhYmxl
Q3Vyc29yUmVnaW9uIjsKIAotQGludGVyZmFjZSBXS0NvbnRlbnRWaWV3IChXYXRjaFN1cHBvcnQp
IDxXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXdEZWxlZ2F0ZSwgV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyRGVsZWdhdGUsIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+
CitAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVUlDdXJzb3JJbnRlcmFjdGlvbkRlbGVnYXRl
KSA8X1VJQ3Vyc29ySW50ZXJhY3Rpb25EZWxlZ2F0ZT4KIEBlbmQKKyNlbmRpZgogCisjaWYgUExB
VEZPUk0oV0FUQ0hPUykKK0BpbnRlcmZhY2UgV0tDb250ZW50VmlldyAoV2F0Y2hTdXBwb3J0KSA8
V0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3RGVsZWdhdGUsIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlckRlbGVnYXRlLCBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPgor
QGVuZAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzE1LDcgKzcyMSw3IEBAIC0g
KHZvaWQpX2NyZWF0ZUFuZENvbmZpZ3VyZUxvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCiAgICAg
W3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdl
dCgpXTsKIH0KIAotLSAodm9pZClzZXR1cEludGVyYWN0aW9uCistICh2b2lkKXNldFVwSW50ZXJh
Y3Rpb24KIHsKICAgICAvLyBJZiB0aGUgcGFnZSBpcyBub3QgdmFsaWQgeWV0IHRoZW4gZGVsYXkg
aW50ZXJhY3Rpb24gc2V0dXAgdW50aWwgdGhlIHByb2Nlc3MgaXMgbGF1bmNoZWQvcmVsYXVuY2hl
ZC4KICAgICBpZiAoIV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQpAQCAtNzczLDE3ICs3Nzks
MTQgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgW190b3VjaEV2ZW50R2VzdHVyZVJl
Y29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6
ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKLSNpZiBIQVZFKEhPVkVS
X0dFU1RVUkVfUkVDT0dOSVpFUikKLSAgICBfbW91c2VHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0
TlMoW1tXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYg
YWN0aW9uOkBzZWxlY3RvcihfbW91c2VHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6KV0pOwotICAg
IFtfbW91c2VHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICBbc2VsZiBh
ZGRHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisjaWYg
SEFWRShVSUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCisgICAgW3NlbGYgc2V0VXBNb3VzZUdlc3R1
cmVSZWNvZ25pemVyXTsKICNlbmRpZgogCiAjaWYgSEFWRShMT09LVVBfR0VTVFVSRV9SRUNPR05J
WkVSKQogICAgIF9sb29rdXBHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tfVUlMb29rdXBH
ZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVj
dG9yKF9sb29rdXBHZXN0dXJlUmVjb2duaXplZDopXSk7CiAgICAgW19sb29rdXBHZXN0dXJlUmVj
b2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXpl
cjpfbG9va3VwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwotICAgIAogI2VuZGlmCiAKICAgICBf
c2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbV0tTeW50aGV0aWNUYXBHZXN0
dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9y
KF9zaW5nbGVUYXBSZWNvZ25pemVkOildKTsKQEAgLTgyNCwxMSArODI3LDE1IEBAIC0gKHZvaWQp
c2V0dXBJbnRlcmFjdGlvbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikK
LSAgICBbc2VsZiBzZXR1cERyYWdBbmREcm9wSW50ZXJhY3Rpb25zXTsKKyAgICBbc2VsZiBzZXRV
cERyYWdBbmREcm9wSW50ZXJhY3Rpb25zXTsKKyNlbmRpZgorCisjaWYgSEFWRShVSV9DVVJTT1Jf
SU5URVJBQ1RJT04pCisgICAgW3NlbGYgc2V0VXBDdXJzb3JJbnRlcmFjdGlvbl07CiAjZW5kaWYK
IAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0gICAgW3NlbGYgc2V0dXBBZGRpdGlvbmFs
SW50ZXJhY3Rpb25zXTsKKyAgICBbc2VsZiBzZXRVcEFkZGl0aW9uYWxJbnRlcmFjdGlvbnNdOwog
I2VuZGlmCiAKICAgICBfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9w
dE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBh
Y3Rpb246QHNlbGVjdG9yKF90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplZDopXSk7
CkBAIC04OTAsNyArODk3LDcgQEAgLSAodm9pZClzZXR1cEludGVyYWN0aW9uCiAgICAgX2hhc1Nl
dFVwSW50ZXJhY3Rpb25zID0gWUVTOwogfQogCi0tICh2b2lkKWNsZWFudXBJbnRlcmFjdGlvbgor
LSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KIHsKICAgICBpZiAoIV9oYXNTZXRVcEludGVyYWN0
aW9ucykKICAgICAgICAgcmV0dXJuOwpAQCAtOTM2LDcgKzk0Myw3IEBAIC0gKHZvaWQpY2xlYW51
cEludGVyYWN0aW9uCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2RlZmVycmlu
Z0dlc3R1cmVSZWNvZ25pemVyRm9yRGVsYXllZFJlc2V0dGFibGVHZXN0dXJlcy5nZXQoKV07CiAj
ZW5kaWYKIAotI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEhBVkUoVUlL
SVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIFtfbW91c2VHZXN0dXJlUmVjb2duaXplciBzZXRE
ZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9tb3VzZUdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICNlbmRpZgpAQCAtOTg5LDggKzk5NiwxMyBAQCAtICh2
b2lkKWNsZWFudXBJbnRlcmFjdGlvbgogICAgIFtzZWxmIHRlYXJkb3duRHJhZ0FuZERyb3BJbnRl
cmFjdGlvbnNdOwogI2VuZGlmCiAKKyNpZiBIQVZFKFVJX0NVUlNPUl9JTlRFUkFDVElPTikKKyAg
ICBbc2VsZiByZW1vdmVJbnRlcmFjdGlvbjpfY3Vyc29ySW50ZXJhY3Rpb24uZ2V0KCldOworICAg
IF9jdXJzb3JJbnRlcmFjdGlvbiA9IG5pbDsKKyNlbmRpZgorCiAjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKLSAgICBbc2VsZiBjbGVhbnVwQWRkaXRpb25hbEludGVyYWN0aW9uc107CisgICAg
W3NlbGYgY2xlYW5VcEFkZGl0aW9uYWxJbnRlcmFjdGlvbnNdOwogI2VuZGlmCiAKICAgICBfaW5z
cGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQgPSBOTzsKQEAgLTEwNTUsNyArMTA2Nyw3IEBAIC0gKHZv
aWQpX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnMKICAgICBbc2VsZiByZW1vdmVHZXN0
dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCld
OwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6
ZXI6X3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKLSNpZiBIQVZFKEhP
VkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9S
VCkKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfbW91c2VHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CiAjZW5kaWYKICNpZiBIQVZFKExPT0tVUF9HRVNUVVJFX1JFQ09HTklaRVIp
CkBAIC0xMDgzLDcgKzEwOTUsNyBAQCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6
ZXJzCiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpf
dHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFk
ZEdlc3R1cmVSZWNvZ25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQo
KV07Ci0jaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCisjaWYgSEFWRShVSUtJVF9X
SVRIX01PVVNFX1NVUFBPUlQpCiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X21vdXNl
R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2VuZGlmCiAjaWYgSEFWRShMT09LVVBfR0VTVFVS
RV9SRUNPR05JWkVSKQpAQCAtMTUwNCw5ICsxNTE2LDEyIEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29n
bml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplciBzaG91bGRSZWNl
aXZlCiAgICAgICAgIHJldHVybiBZRVM7CiAjZW5kaWYKIAotI2lmIEhBVkUoSE9WRVJfR0VTVFVS
RV9SRUNPR05JWkVSKQorI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIGlm
IChnZXN0dXJlUmVjb2duaXplciAhPSBfbW91c2VHZXN0dXJlUmVjb2duaXplciAmJiBbX21vdXNl
R2VzdHVyZVJlY29nbml6ZXIgbW91c2VUb3VjaF0gPT0gdG91Y2gpCiAgICAgICAgIHJldHVybiBO
TzsKKworICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfZG91YmxlVGFwR2VzdHVyZVJlY29n
bml6ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVy
ZVJlY29nbml6ZXIpCisgICAgICAgIHJldHVybiAhdG91Y2guX2lzUG9pbnRlclRvdWNoOwogI2Vu
ZGlmCiAKICAgICBpZiAoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uTGVmdFN3aXBl
R2VzdHVyZVJlY29nbml6ZXIgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3RvdWNoQWN0aW9uUmln
aHRTd2lwZUdlc3R1cmVSZWNvZ25pemVyIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF90b3VjaEFj
dGlvblVwU3dpcGVHZXN0dXJlUmVjb2duaXplciB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfdG91
Y2hBY3Rpb25Eb3duU3dpcGVHZXN0dXJlUmVjb2duaXplcikgewpAQCAtMTUyMiwxMSArMTUzNyw3
IEBAIC0gKEJPT0wpZ2VzdHVyZVJlY29nbml6ZXI6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmVjb2duaXplciBzaG91bGRSZWNlaXZlCiAgICAgICAgIHJldHVybiB0b3VjaEFjdGlvbnMg
PT0gV2ViQ29yZTo6VG91Y2hBY3Rpb246OlBhblg7CiAgICAgfQogCi0jaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKLSAgICByZXR1cm4gW3NlbGYgX2FsbG93R2VzdHVyZVJlY29nbml6ZXI6Z2Vz
dHVyZVJlY29nbml6ZXIgdG9SZWNlaXZlVG91Y2g6dG91Y2hdOwotI2Vsc2UKICAgICByZXR1cm4g
WUVTOwotI2VuZGlmCiB9CiAKICNwcmFnbWEgbWFyayAtIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVj
b2duaXplckRlbGVnYXRlIGltcGxlbWVudGF0aW9uCkBAIC0yMDQyLDcgKzIwNTMsNyBAQCAtIChC
T09MKWdlc3R1cmVSZWNvZ25pemVyOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIgc2hvdWxkUmVjb2duaQogICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVy
LCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIuZ2V0KCksIF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKSkpCiAgICAgICAg
IHJldHVybiBZRVM7CiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKKyNpZiBI
QVZFKFVJS0lUX1dJVEhfTU9VU0VfU1VQUE9SVCkKICAgICBpZiAoW2dlc3R1cmVSZWNvZ25pemVy
IGlzS2luZE9mQ2xhc3M6W1dLTW91c2VHZXN0dXJlUmVjb2duaXplciBjbGFzc11dIHx8IFtvdGhl
ckdlc3R1cmVSZWNvZ25pemVyIGlzS2luZE9mQ2xhc3M6W1dLTW91c2VHZXN0dXJlUmVjb2duaXpl
ciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWUVTOwogI2VuZGlmCkBAIC02NTU1LDcgKzY1NjYs
NyBAQCAtICh2b2lkKV9zaG93U2hhcmVTaGVldDooY29uc3QgV2ViQ29yZTo6U2hhcmVEYXRhV2l0
aFBhcnNlZFVSTCYpZGF0YSBpblJlY3Q6KFdURgogICAgIF9zaGFyZVNoZWV0ID0gYWRvcHROUyhb
W1dLU2hhcmVTaGVldCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGYud2ViVmlld10pOwogICAgIFtf
c2hhcmVTaGVldCBzZXREZWxlZ2F0ZTpzZWxmXTsKIAotI2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9S
RUNPR05JWkVSKQorI2lmIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9TVVBQT1JUKQogICAgIGlmICgh
cmVjdCkgewogICAgICAgICBpZiAoYXV0byBsYXN0TW91c2VMb2NhdGlvbiA9IFtfbW91c2VHZXN0
dXJlUmVjb2duaXplciBsYXN0TW91c2VMb2NhdGlvbl0pIHsKICAgICAgICAgICAgIGF1dG8gaG92
ZXJMb2NhdGlvbkluV2ViVmlldyA9IFtzZWxmIGNvbnZlcnRQb2ludDoqbGFzdE1vdXNlTG9jYXRp
b24gdG9WaWV3OnNlbGYud2ViVmlld107CkBAIC02OTQ4LDE1ICs2OTU5LDE0IEBAIC0gKGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPil3ZWJWaWV3VUlEZWxlZ2F0ZQogICAgIHJldHVybiAoaWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+KVtfd2ViVmlldyBVSURlbGVnYXRlXTsKIH0KIAotLSAodm9pZClz
ZXR1cERyYWdBbmREcm9wSW50ZXJhY3Rpb25zCistICh2b2lkKXNldFVwRHJhZ0FuZERyb3BJbnRl
cmFjdGlvbnMKIHsKICAgICBfZHJhZ0ludGVyYWN0aW9uID0gYWRvcHROUyhbW1VJRHJhZ0ludGVy
YWN0aW9uIGFsbG9jXSBpbml0V2l0aERlbGVnYXRlOnNlbGZdKTsKICAgICBfZHJvcEludGVyYWN0
aW9uID0gYWRvcHROUyhbW1VJRHJvcEludGVyYWN0aW9uIGFsbG9jXSBpbml0V2l0aERlbGVnYXRl
OnNlbGZdKTsKICAgICBbX2RyYWdJbnRlcmFjdGlvbiBfc2V0TGlmdERlbGF5OnNlbGYuZHJhZ0xp
ZnREZWxheV07CiAgICAgW19kcmFnSW50ZXJhY3Rpb24gc2V0RW5hYmxlZDpzaG91bGRFbmFibGVE
cmFnSW50ZXJhY3Rpb25Gb3JQb2xpY3koc2VsZi53ZWJWaWV3Ll9kcmFnSW50ZXJhY3Rpb25Qb2xp
Y3kpXTsKLQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0gICAgW3NlbGYgX3BlcmZvcm1B
ZGRpdGlvbmFsU2V0dXBEcmFnQW5kRHJvcEludGVyYWN0aW9uc107CisjaWYgSEFWRShVSUtJVF9X
SVRIX01PVVNFX1NVUFBPUlQpCisgICAgW19kcmFnSW50ZXJhY3Rpb24gX3NldEFsbG93c1BvaW50
ZXJEcmFnQmVmb3JlTGlmdERlbGF5Ok5PXTsKICNlbmRpZgogCiAgICAgW3NlbGYgYWRkSW50ZXJh
Y3Rpb246X2RyYWdJbnRlcmFjdGlvbi5nZXQoKV07CkBAIC04MDc0LDIxICs4MDg0LDYgQEAgLSAo
dm9pZClfbG9va3VwR2VzdHVyZVJlY29nbml6ZWQ6KFVJR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmVjb2duaXplcgogfQogI2VuZGlmCiAKLSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dO
SVpFUikKLS0gKHZvaWQpX21vdXNlR2VzdHVyZVJlY29nbml6ZXJDaGFuZ2VkOihXS01vdXNlR2Vz
dHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgotewotICAgIGlmICghX3BhZ2UtPmhh
c1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhdXRvIGV2ZW50
ID0gZ2VzdHVyZVJlY29nbml6ZXIubGFzdE1vdXNlRXZlbnQpIHsKLSAgICAgICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gV2ViS2l0OjpXZWJFdmVudDo6TW91c2VEb3duKQotICAgICAgICAgICAgX2xh
eWVyVHJlZVRyYW5zYWN0aW9uSWRBdExhc3RJbnRlcmFjdGlvblN0YXJ0ID0gZG93bmNhc3Q8V2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5PigqX3BhZ2UtPmRyYXdpbmdBcmVh
KCkpLmxhc3RDb21taXR0ZWRMYXllclRyZWVUcmFuc2FjdGlvbklEKCk7Ci0KLSAgICAgICAgX3Bh
Z2UtPmhhbmRsZU1vdXNlRXZlbnQoKmV2ZW50KTsKLSAgICB9Ci19Ci0jZW5kaWYKLQogI2lmIEhB
VkUoUEVOQ0lMS0lUKQogLSAoV0tEcmF3aW5nQ29vcmRpbmF0b3IgKilfZHJhd2luZ0Nvb3JkaW5h
dG9yCiB7CkBAIC04MTA0LDYgKzgwOTksMTYwIEBAIC0gKHZvaWQpc2V0Q29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkOihCT09MKWVuYWJsZWQKICAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS51
cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CiB9CiAKKyNpZiBIQVZFKFVJS0lUX1dJVEhfTU9VU0Vf
U1VQUE9SVCkKKworLSAoQk9PTClzaG91bGRVc2VNb3VzZUdlc3R1cmVSZWNvZ25pemVyCit7Cisg
ICAgc3RhdGljIGNvbnN0IEJPT0wgc2hvdWxkVXNlTW91c2VHZXN0dXJlUmVjb2duaXplciA9IFtd
KCkgLT4gQk9PTCB7CisgICAgICAgIC8vIFN5c3RlbSBhcHBzIHdpbGwgYWx3YXlzIGJlIGxpbmtl
ZCBvbiB0aGUgY3VycmVudCBPUywgc28KKyAgICAgICAgLy8gY2hlY2sgdGhlbSBiZWZvcmUgdGhl
IGxpbmtlZC1vbi1vci1hZnRlci4KKworICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTk1MjE5
Njc+IGlBZCBWaWRlbyBkb2VzIG5vdCByZXNwb25kIHRvIG1vdXNlIGV2ZW50cywgb25seSB0b3Vj
aCBldmVudHMKKyAgICAgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc05ld3MoKSB8
fCBXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNTdG9ja3MoKSkKKyAgICAgICAgICAgIHJldHVy
biBOTzsKKworICAgICAgICBpZiAoV2ViS2l0OjpsaW5rZWRPbk9yQWZ0ZXIoV2ViS2l0OjpTREtW
ZXJzaW9uOjpGaXJzdFRoYXRTZW5kc05hdGl2ZU1vdXNlRXZlbnRzKSkKKyAgICAgICAgICAgIHJl
dHVybiBZRVM7CisKKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU5MTU1MjIwPiBTb21lIEZl
ZWRseSBVSSBkb2VzIG5vdCByZXNwb25kIHRvIG1vdXNlIGV2ZW50cywgb25seSB0b3VjaCBldmVu
dHMKKyAgICAgICAgaWYgKFdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc0ZlZWRseSgpKQorICAg
ICAgICAgICAgcmV0dXJuIE5POworCisgICAgICAgIHJldHVybiBZRVM7CisgICAgfSgpOworCisg
ICAgcmV0dXJuIHNob3VsZFVzZU1vdXNlR2VzdHVyZVJlY29nbml6ZXI7Cit9CisKKy0gKHZvaWQp
c2V0VXBNb3VzZUdlc3R1cmVSZWNvZ25pemVyCit7CisgICAgX21vdXNlR2VzdHVyZVJlY29nbml6
ZXIgPSBhZG9wdE5TKFtbV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRh
cmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IobW91c2VHZXN0dXJlUmVjb2duaXplckNoYW5nZWQ6
KV0pOworICAgIFtfbW91c2VHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAg
ICBbX21vdXNlR2VzdHVyZVJlY29nbml6ZXIgc2V0RW5hYmxlZDpbc2VsZiBzaG91bGRVc2VNb3Vz
ZUdlc3R1cmVSZWNvZ25pemVyXV07CisgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X21v
dXNlR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworfQorCistICh2b2lkKW1vdXNlR2VzdHVyZVJl
Y29nbml6ZXJDaGFuZ2VkOihXS01vdXNlR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2du
aXplcgoreworICAgIGlmICghX3BhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8gZXZlbnQgPSBnZXN0dXJlUmVjb2duaXplci5sYXN0TW91c2VFdmVu
dDsKKyAgICBpZiAoIWV2ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBXZWJLaXQ6OldlYkV2ZW50OjpNb3VzZURvd24pCisgICAgICAgIF9sYXllclRyZWVU
cmFuc2FjdGlvbklkQXRMYXN0SW50ZXJhY3Rpb25TdGFydCA9IGRvd25jYXN0PFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKl9wYWdlLT5kcmF3aW5nQXJlYSgpKS5sYXN0
Q29tbWl0dGVkTGF5ZXJUcmVlVHJhbnNhY3Rpb25JRCgpOworCisgICAgX3BhZ2UtPmhhbmRsZU1v
dXNlRXZlbnQoKmV2ZW50KTsKK30KKworI2VuZGlmIC8vIEhBVkUoVUlLSVRfV0lUSF9NT1VTRV9T
VVBQT1JUKQorCisjaWYgSEFWRShVSV9DVVJTT1JfSU5URVJBQ1RJT04pCisKKy0gKHZvaWQpc2V0
VXBDdXJzb3JJbnRlcmFjdGlvbgoreworICAgIF9jdXJzb3JJbnRlcmFjdGlvbiA9IGFkb3B0TlMo
W1tfVUlDdXJzb3JJbnRlcmFjdGlvbiBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZTpzZWxmXSk7Cisg
ICAgW19jdXJzb3JJbnRlcmFjdGlvbiBfc2V0UGF1c2VzQ3Vyc29yVXBkYXRlc1doaWxlUGFubmlu
ZzpOT107CisKKyAgICBbc2VsZiBhZGRJbnRlcmFjdGlvbjpfY3Vyc29ySW50ZXJhY3Rpb24uZ2V0
KCldOworfQorCistICh2b2lkKV9jdXJzb3JJbnRlcmFjdGlvbjooX1VJQ3Vyc29ySW50ZXJhY3Rp
b24gKilpbnRlcmFjdGlvbiByZWdpb25Gb3JMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbiBkZWZh
dWx0UmVnaW9uOihfVUlDdXJzb3JSZWdpb24gKilkZWZhdWx0UmVnaW9uIGNvbXBsZXRpb246KHZv
aWQoXikoX1VJQ3Vyc29yUmVnaW9uICpyZWdpb24pKWNvbXBsZXRpb24KK3sKKyAgICB1aW50NjRf
dCBpbnRlcmFjdGlvblJlcXVlc3RJRCA9ICsrX2N1cnJlbnRDdXJzb3JJbnRlcmFjdGlvblJlcXVl
c3RJRDsKKworICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QgaW50ZXJh
Y3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CisgICAgaW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVl
c3QucG9pbnQgPSBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQobG9jYXRpb24pOworICAgIGludGVy
YWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LmluY2x1ZGVDYXJldENvbnRleHQgPSB0cnVlOworCisg
ICAgQk9PTCBkaWRTeW5jaHJvbm91c2x5UmVwbHlXaXRoQXBwcm94aW1hdGlvbiA9IGZhbHNlOwor
ICAgIGlmICghW3NlbGYgX2N1cnJlbnRQb3NpdGlvbkluZm9ybWF0aW9uSXNWYWxpZEZvclJlcXVl
c3Q6aW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3RdICYmIHNlbGYud2ViVmlldy5fZWRpdGFi
bGUgJiYgIV9wb3NpdGlvbkluZm9ybWF0aW9uLnNob3VsZE5vdFVzZUlCZWFtSW5FZGl0YWJsZUNv
bnRlbnQpIHsKKyAgICAgICAgZGlkU3luY2hyb25vdXNseVJlcGx5V2l0aEFwcHJveGltYXRpb24g
PSB0cnVlOworICAgICAgICBjb21wbGV0aW9uKFtfVUlDdXJzb3JSZWdpb24gcmVnaW9uV2l0aElk
ZW50aWZpZXI6ZWRpdGFibGVDdXJzb3JSZWdpb25JZGVudGlmaWVyIHJlY3Q6c2VsZi5ib3VuZHNd
KTsKKyAgICB9CisKKyAgICBbc2VsZiBkb0FmdGVyUG9zaXRpb25JbmZvcm1hdGlvblVwZGF0ZTpe
KFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gaW50ZXJhY3Rpb25JbmZv
cm1hdGlvbikgeworICAgICAgICBpZiAoaW50ZXJhY3Rpb25SZXF1ZXN0SUQgPCBfY3VycmVudEN1
cnNvckludGVyYWN0aW9uUmVxdWVzdElEKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmIChkaWRTeW5jaHJvbm91c2x5UmVwbHlXaXRoQXBwcm94aW1hdGlvbikgeworICAgICAgICAg
ICAgW2ludGVyYWN0aW9uIGludmFsaWRhdGVdOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgY29tcGxldGlvbihbc2VsZiBjdXJzb3JSZWdpb25Gb3JQb3NpdGlvbklu
Zm9ybWF0aW9uOmludGVyYWN0aW9uSW5mb3JtYXRpb24gcG9pbnQ6bG9jYXRpb25dKTsKKyAgICB9
IGZvclJlcXVlc3Q6aW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3RdOworfQorCistIChfVUlD
dXJzb3JSZWdpb24gKiljdXJzb3JSZWdpb25Gb3JQb3NpdGlvbkluZm9ybWF0aW9uOihXZWJLaXQ6
OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJilpbnRlcmFjdGlvbkluZm9ybWF0aW9u
IHBvaW50OihDR1BvaW50KWxvY2F0aW9uCit7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGV4cGFu
ZGVkTGluZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGludGVyYWN0aW9uSW5mb3JtYXRpb24ubGlu
ZUNhcmV0RXh0ZW50KTsKKworICAgIC8vIFBhZCBsaW5lcyBvZiB0ZXh0IGluIG9yZGVyIHRvIGF2
b2lkIHN3aXRjaGluZyBiYWNrIHRvIHRoZSBkb3QgY3Vyc29yIGJldHdlZW4gbGluZXMuCisgICAg
Ly8gVGhpcyBtYXRjaGVzIHRoZSB2YWx1ZSB0aGF0IFVJS2l0IHVzZXMuCisgICAgZXhwYW5kZWRM
aW5lUmVjdC5pbmZsYXRlWSgxMCk7CisKKyAgICBpZiAoaW50ZXJhY3Rpb25JbmZvcm1hdGlvbi5j
dXJzb3IpIHsKKyAgICAgICAgV2ViQ29yZTo6Q3Vyc29yOjpUeXBlIGN1cnNvclR5cGUgPSBpbnRl
cmFjdGlvbkluZm9ybWF0aW9uLmN1cnNvci0+dHlwZSgpOworICAgICAgICBpZiAoY3Vyc29yVHlw
ZSA9PSBXZWJDb3JlOjpDdXJzb3I6OkhhbmQpCisgICAgICAgICAgICByZXR1cm4gW19VSUN1cnNv
clJlZ2lvbiByZWdpb25XaXRoSWRlbnRpZmllcjpjdXJzb3JSZWdpb25JZGVudGlmaWVyIHJlY3Q6
aW50ZXJhY3Rpb25JbmZvcm1hdGlvbi5ib3VuZHNdOworCisgICAgICAgIGlmIChjdXJzb3JUeXBl
ID09IFdlYkNvcmU6OkN1cnNvcjo6SUJlYW0gJiYgZXhwYW5kZWRMaW5lUmVjdC5jb250YWlucyhs
b2NhdGlvbikpCisgICAgICAgICAgICByZXR1cm4gW19VSUN1cnNvclJlZ2lvbiByZWdpb25XaXRo
SWRlbnRpZmllcjpjdXJzb3JSZWdpb25JZGVudGlmaWVyIHJlY3Q6ZXhwYW5kZWRMaW5lUmVjdF07
CisgICAgfQorCisgICAgaWYgKHNlbGYud2ViVmlldy5fZWRpdGFibGUpIHsKKyAgICAgICAgaWYg
KGV4cGFuZGVkTGluZVJlY3QuY29udGFpbnMobG9jYXRpb24pKQorICAgICAgICAgICAgcmV0dXJu
IFtfVUlDdXJzb3JSZWdpb24gcmVnaW9uV2l0aElkZW50aWZpZXI6Y3Vyc29yUmVnaW9uSWRlbnRp
ZmllciByZWN0OmV4cGFuZGVkTGluZVJlY3RdOworICAgICAgICByZXR1cm4gW19VSUN1cnNvclJl
Z2lvbiByZWdpb25XaXRoSWRlbnRpZmllcjplZGl0YWJsZUN1cnNvclJlZ2lvbklkZW50aWZpZXIg
cmVjdDpzZWxmLmJvdW5kc107CisgICAgfQorCisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoX1VJ
Q3Vyc29yU3R5bGUgKiljdXJzb3JJbnRlcmFjdGlvbjooX1VJQ3Vyc29ySW50ZXJhY3Rpb24gKilp
bnRlcmFjdGlvbiBzdHlsZUZvclJlZ2lvbjooX1VJQ3Vyc29yUmVnaW9uICopcmVnaW9uIG1vZGlm
aWVyczooVUlLZXlNb2RpZmllckZsYWdzKW1vZGlmaWVycworeworICAgIGRvdWJsZSBzY2FsZUZh
Y3RvciA9IHNlbGYuX2NvbnRlbnRab29tU2NhbGU7CisKKyAgICBfVUlDdXJzb3JTdHlsZSAqKF5p
QmVhbUN1cnNvcikodm9pZCkgPSBeeworICAgICAgICBmbG9hdCBiZWFtTGVuZ3RoID0gX3Bvc2l0
aW9uSW5mb3JtYXRpb24uY2FyZXRIZWlnaHQgKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgVUlBeGlz
IGlCZWFtQ29uc3RyYWludEF4ZXMgPSBVSUF4aXNWZXJ0aWNhbDsKKworICAgICAgICAvLyBJZiB0
aGUgSS1iZWFtIGlzIHNvIGxhcmdlIHRoYXQgdGhlIG1hZ25ldGlzbSBpcyBoYXJkIHRvIGZpZ2h0
LCB3ZSBzaG91bGQgbm90IGFwcGx5IGFueSBtYWduZXRpc20uCisgICAgICAgIGlmIChiZWFtTGVu
Z3RoID4gW1VJVGV4dEludGVyYWN0aW9uIF9tYXhpbXVtQmVhbVNuYXBwaW5nTGVuZ3RoXSkKKyAg
ICAgICAgICAgIGlCZWFtQ29uc3RyYWludEF4ZXMgPSBVSUF4aXNOZWl0aGVyOworCisgICAgICAg
IC8vIElmIHRoZSByZWdpb24gaXMgdGhlIHNpemUgb2YgdGhlIHZpZXcsIHdlIHNob3VsZCBub3Qg
YXBwbHkgYW55IG1hZ25ldGlzbS4KKyAgICAgICAgaWYgKFtyZWdpb24uaWRlbnRpZmllciBpc0Vx
dWFsOmVkaXRhYmxlQ3Vyc29yUmVnaW9uSWRlbnRpZmllcl0pCisgICAgICAgICAgICBpQmVhbUNv
bnN0cmFpbnRBeGVzID0gVUlBeGlzTmVpdGhlcjsKKworICAgICAgICByZXR1cm4gW19VSUN1cnNv
clN0eWxlIHN0eWxlV2l0aEN1cnNvcjpbX1VJQ3Vyc29yIGJlYW1XaXRoUHJlZmVycmVkTGVuZ3Ro
OmJlYW1MZW5ndGggYXhpczpVSUF4aXNWZXJ0aWNhbF0gY29uc3RyYWluZWRBeGVzOmlCZWFtQ29u
c3RyYWludEF4ZXNdOworICAgIH07CisKKyAgICBpZiAoc2VsZi53ZWJWaWV3Ll9lZGl0YWJsZSkg
eworICAgICAgICBpZiAoX3Bvc2l0aW9uSW5mb3JtYXRpb24uc2hvdWxkTm90VXNlSUJlYW1JbkVk
aXRhYmxlQ29udGVudCkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIHJldHVybiBp
QmVhbUN1cnNvcigpOworICAgIH0KKworICAgIGlmIChfcG9zaXRpb25JbmZvcm1hdGlvbi5jdXJz
b3IgJiYgW3JlZ2lvbi5pZGVudGlmaWVyIGlzRXF1YWw6Y3Vyc29yUmVnaW9uSWRlbnRpZmllcl0p
IHsKKyAgICAgICAgV2ViQ29yZTo6Q3Vyc29yOjpUeXBlIGN1cnNvclR5cGUgPSBfcG9zaXRpb25J
bmZvcm1hdGlvbi5jdXJzb3ItPnR5cGUoKTsKKworICAgICAgICBpZiAoY3Vyc29yVHlwZSA9PSBX
ZWJDb3JlOjpDdXJzb3I6OkhhbmQpCisgICAgICAgICAgICByZXR1cm4gW19VSUN1cnNvclN0eWxl
IHN0eWxlV2l0aEN1cnNvcjpbX1VJQ3Vyc29yIGxpbmtDdXJzb3JdIGNvbnN0cmFpbmVkQXhlczpV
SUF4aXNOZWl0aGVyXTsKKworICAgICAgICBpZiAoY3Vyc29yVHlwZSA9PSBXZWJDb3JlOjpDdXJz
b3I6OklCZWFtICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmxpbmVDYXJldEV4dGVudC5jb250YWlu
cyhfcG9zaXRpb25JbmZvcm1hdGlvbi5yZXF1ZXN0LnBvaW50KSkKKyAgICAgICAgICAgIHJldHVy
biBpQmVhbUN1cnNvcigpOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBuaWw7Cit9CisKKyNlbmRpZiAvLyBIQVZFKFVJX0NVUlNPUl9JTlRFUkFDVElPTikK
KwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tDb250ZW50VmlldyAoV0tUZXN0aW5nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2du
aXplci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2du
aXplci5oCmluZGV4IDQ0MTBiN2QxM2YwNmMxMmM2YWJlYWQ4YTM2NzUyMDA2ZDY5ZDI1MWMuLjc0
NWU0MzRiMzUxOTgzNmVmM2VjMjdhYzYxYTExNjY3NmE3ZWI4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmgKQEAg
LTIzLDcgKzIzLDcgQEAKICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogKi8KIAot
I2lmIEhBVkUoSE9WRVJfR0VTVFVSRV9SRUNPR05JWkVSKQorI2lmIEhBVkUoVUlLSVRfV0lUSF9N
T1VTRV9TVVBQT1JUKQogCiAjaW1wb3J0IDxVSUtpdC9VSUdlc3R1cmVSZWNvZ25pemVyLmg+CiAj
aW1wb3J0ICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLTW91c2VHZXN0dXJlUmVjb2duaXplci5tbQppbmRleCBkZWM0NWI2
ZmNhMTE1MTA2ZjI3YzQxNzJhYmYzY2FkYzNlMDA2NmU3Li44NTE0OTkyMDg4ZTRhNjNkMjJlZDVk
YjhiNzZlZTIyMTQ0YzAxY2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS01vdXNlR2VzdHVyZVJlY29nbml6ZXIubW0KQEAgLTI2LDcgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyLmgiCiAK
LSNpZiBIQVZFKEhPVkVSX0dFU1RVUkVfUkVDT0dOSVpFUikKKyNpZiBIQVZFKFVJS0lUX1dJVEhf
TU9VU0VfU1VQUE9SVCkKIAogI2ltcG9ydCAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2ltcG9y
dCAiVUlLaXRTUEkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViQ2hyb21lQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0KaW5kZXggMWM1
YWEyOGZjZjMwMDU0ODBiMTRlMjJiMjRkYjU4MDkwYjI5MTQ0Mi4uNzBmNWU0MGJhYjdmYzMwYjJm
YTU0ZjQ2ZjM0MzZhZTQ1MzA4OGY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJDaHJvbWVDbGllbnRJT1Mu
bW0KQEAgLTE4NCw5ICsxODQsOSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkRGVzdHJveUVk
aXRhYmxlSW1hZ2UoR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZQogCiBib29sIFdl
YkNocm9tZUNsaWVudDo6c2hvdWxkVXNlTW91c2VFdmVudEZvclNlbGVjdGlvbihjb25zdCBXZWJD
b3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIC8vIEluIG1hY0NhdGFseXN0
LCBkZXNwaXRlIGdldHRpbmcgbW91c2UgZXZlbnRzLCB3ZSBzdGlsbCB3YW50IFVJVGV4dEludGVy
YWN0aW9uIGFuZCBmcmllbmRzIHRvIG93biBzZWxlY3Rpb24gZ2VzdHVyZXMuCisgICAgLy8gSW4g
aVBhZE9TIGFuZCBtYWNDYXRhbHlzdCwgZGVzcGl0ZSBnZXR0aW5nIG1vdXNlIGV2ZW50cywgd2Ug
c3RpbGwgd2FudCBVSVRleHRJbnRlcmFjdGlvbiBhbmQgZnJpZW5kcyB0byBvd24gc2VsZWN0aW9u
IGdlc3R1cmVzLgogICAgIC8vIEhvd2V2ZXIsIHdlIG5lZWQgdG8gYWxsb3cgc2luZ2xlLWNsaWNr
cyB0byBzZXQgdGhlIHNlbGVjdGlvbiwgYmVjYXVzZSB0aGF0IGlzIGhvdyBVSVRleHRJbnRlcmFj
dGlvbiBpcyBhY3RpdmF0ZWQuCi0jaWYgSEFWRShIT1ZFUl9HRVNUVVJFX1JFQ09HTklaRVIpCisj
aWYgSEFWRShVSUtJVF9XSVRIX01PVVNFX1NVUFBPUlQpCiAgICAgcmV0dXJuIGV2ZW50LmNsaWNr
Q291bnQoKSA8PSAxOwogI2Vsc2UKICAgICByZXR1cm4gdHJ1ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>