<?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>34979</bug_id>
          
          <creation_ts>2010-02-16 12:57:52 -0800</creation_ts>
          <short_desc>[WinCairo, Windows] Implement COM wrappers for DOM traversal</short_desc>
          <delta_ts>2023-02-19 04:05:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Emerick Rogul">emerick</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>bfulgham</cc>
    
    <cc>charn.opcode</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>fujii</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>190701</commentid>
    <comment_count>0</comment_count>
    <who name="Emerick Rogul">emerick</who>
    <bug_when>2010-02-16 12:57:52 -0800</bug_when>
    <thetext>Most of the COM wrappers for DOM traversal are unimplemented in the Windows port.  For example, none of the following  functions defined in WebKit/win/DOMCoreClasses.cpp are defined:

DOMNode::firstChild()
DOMNode::lastChild()
DOMNode::attributes()
DOMNode::hasAttributes()
...
(many others; 53 functions return E_NOTIMPL in DOMCoreClasses.cpp, for example)

Ideally, there should be no functions returning E_NOTIMPL in any of the DOM*.cpp modules (DOMCSSClasses.cpp, DOMCoreClasses.cpp, DOMEventsClasses.cpp, and DOMHTMLClasses.cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190702</commentid>
    <comment_count>1</comment_count>
    <who name="Emerick Rogul">emerick</who>
    <bug_when>2010-02-16 13:01:16 -0800</bug_when>
    <thetext>Brent Fulgham made the following comment on this topic on webkit-help (I&apos;d link directly to it, but the webkit.org server seems to be having issues at the moment):

---
In my own work, I&apos;ve been performing all DOM traversal in JavaScript,
calling back into C++ to interact with my main application via the
standard JavaScriptCore extension API.  Consequently, I hadn&apos;t noticed
that the DOM logic was all unimplemented.  Consequently, the
underlying logic for DOM traversal is certainly present in the Windows
build, but the specific API connecting these routines to the COM
wrapper don&apos;t seem to be present.

Please file a bug and we&apos;ll see what we can do about getting things up
and running.
---</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206611</commentid>
    <comment_count>2</comment_count>
      <attachid>52191</attachid>
    <who name="Peter Nelson">charn.opcode</who>
    <bug_when>2010-03-31 11:46:30 -0700</bug_when>
    <thetext>Created attachment 52191
Proposed patch - implemented numerous methods in DOMCoreClasses.cpp and added classes for missing DOM objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206612</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-31 11:47:30 -0700</bug_when>
    <thetext>Attachment 52191 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Last 3072 characters of output:
xtra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2455:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2458:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2461:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2464:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2467:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2470:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2473:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2476:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2479:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2484:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2489:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2493:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2497:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2500:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2506:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2511:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2514:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2517:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2520:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2523:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2526:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2530:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2534:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2537:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2540:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/win/DOMCoreClasses.h:2541:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2544:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2547:  Extra space after ( in function call  [whitespace/parens] [4]
WebKit/win/DOMCoreClasses.h:2550:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/win/DOMCoreClasses.h:2551:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/win/DOMCoreClasses.h:2554:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 1280 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206615</commentid>
    <comment_count>4</comment_count>
      <attachid>52191</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-03-31 11:51:11 -0700</bug_when>
    <thetext>Comment on attachment 52191
Proposed patch - implemented numerous methods in DOMCoreClasses.cpp and added classes for missing DOM objects.

Thanks for contributing this patch!

This patch is a bit too big to be reviewed in a timely manner. Could you please break it up into smaller pieces that can each be reviewed and landed independently?

You should also fix the errors that the style checker uncovered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207942</commentid>
    <comment_count>5</comment_count>
      <attachid>52424</attachid>
    <who name="Peter Nelson">charn.opcode</who>
    <bug_when>2010-04-02 11:00:05 -0700</bug_when>
    <thetext>Created attachment 52424
Patch part #1 - Fixes existing style errors in DOMCoreClasses.h

Part #1 of several smaller patches for this bug.  Though it doesn&apos;t fix anything directly related to the bug, I didn&apos;t think it important enough to require it&apos;s own report, and these changes are required for the subsequent patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208799</commentid>
    <comment_count>6</comment_count>
      <attachid>52424</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 16:58:47 -0700</bug_when>
    <thetext>Comment on attachment 52424
Patch part #1 - Fixes existing style errors in DOMCoreClasses.h

This looks to be just style fixes, which looks OK.  (Assuming our COM style guides are the same as the rest of our C++?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208800</commentid>
    <comment_count>7</comment_count>
      <attachid>52424</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-05 16:59:30 -0700</bug_when>
    <thetext>Comment on attachment 52424
Patch part #1 - Fixes existing style errors in DOMCoreClasses.h

Based on Adam&apos;s comment about style above, I&apos;m going to assume that check-webkit-style is doing the right thing for these COM files and r+/cq+ this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208923</commentid>
    <comment_count>8</comment_count>
      <attachid>52424</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-05 23:48:56 -0700</bug_when>
    <thetext>Comment on attachment 52424
Patch part #1 - Fixes existing style errors in DOMCoreClasses.h

Clearing flags on attachment: 52424

Committed r57129: &lt;http://trac.webkit.org/changeset/57129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208924</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-05 23:49:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213865</commentid>
    <comment_count>10</comment_count>
    <who name="Emerick Rogul">emerick</who>
    <bug_when>2010-04-18 16:57:17 -0700</bug_when>
    <thetext>Apologies if I&apos;m misreading the comment trail on this bug, but it appears that it&apos;s been closed as RESOLVED FIXED when only a small style-specific patch has been landed.  I think it was Peter&apos;s intent to add more patches to this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214035</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-19 08:06:10 -0700</bug_when>
    <thetext>Re-opening this bug so Peter can keep working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214548</commentid>
    <comment_count>12</comment_count>
      <attachid>53790</attachid>
    <who name="Peter Nelson">charn.opcode</who>
    <bug_when>2010-04-20 02:46:17 -0700</bug_when>
    <thetext>Created attachment 53790
Patch part #2 - Class declarations for a number missing DOM objects in DOMCoreClasses.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214551</commentid>
    <comment_count>13</comment_count>
    <who name="Peter Nelson">charn.opcode</who>
    <bug_when>2010-04-20 03:09:16 -0700</bug_when>
    <thetext>Will unflagging the very first patch as obsolete prevent this bug from being auto-closed again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214563</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-20 04:22:16 -0700</bug_when>
    <thetext>The commit-queue will automatically close bugs if no patches remain with r? or r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223093</commentid>
    <comment_count>15</comment_count>
      <attachid>53790</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-09 15:00:50 -0700</bug_when>
    <thetext>Comment on attachment 53790
Patch part #2 - Class declarations for a number missing DOM objects in DOMCoreClasses.h

We strongly prefer one-patch per bug.  Bug numbers are cheap.  You can always use &quot;master&quot; bugs for large features and related all the sub-bugs as blockers.

Why can&apos;t these be autogenerated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240466</commentid>
    <comment_count>16</comment_count>
      <attachid>53790</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-20 10:37:52 -0700</bug_when>
    <thetext>Comment on attachment 53790
Patch part #2 - Class declarations for a number missing DOM objects in DOMCoreClasses.h

I agree with Eric.  Let&apos;s try to auto-generate this code from the IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240681</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-06-21 06:29:35 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 53790 [details])
&gt; I agree with Eric.  Let&apos;s try to auto-generate this code from the IDL.

We actually had some experimental support for generating these bindings. There were still a few issues to work out IIRC. It was removed in &lt;http://trac.webkit.org/changeset/52921&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1934903</commentid>
    <comment_count>18</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2023-02-18 06:42:55 -0800</bug_when>
    <thetext>@rniwa - do we need this now? [Windows] port is gone while we still have [WinCairo] so hence I am just asking. Trying to clean-up some old bugs. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1934964</commentid>
    <comment_count>19</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2023-02-19 04:05:35 -0800</bug_when>
    <thetext>Windows WK1 was removed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52191</attachid>
            <date>2010-03-31 11:46:30 -0700</date>
            <delta_ts>2010-04-02 11:00:05 -0700</delta_ts>
            <desc>Proposed patch - implemented numerous methods in DOMCoreClasses.cpp and added classes for missing DOM objects.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>155747</size>
            <attacher name="Peter Nelson">charn.opcode</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NjgzNykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNTAzIEBACisyMDEwLTAzLTMxICBQZXRlciBOZWxzb24gIDxjaGFy
bi5vcGNvZGVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudHMgbW9zdCBvZiB0aGUgdW5pbXBsZW1lbnRlZCBtZXRob2Rz
IGluIERPTUNvcmVDbGFzc2VzLmNwcCwKKwkJYXMgZGV0YWlsZWQgaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0OTc5LiAgVGhlCisJCXZhc3QgbWFqb3JpdHkgb2Yg
dGhlc2Ugc2ltcGx5IGludm9sdmUgY2FsbGluZyB0aGUgY29ycmVzcG9uZGluZworCQltZXRob2Rz
IG9uIFdlYkNvcmUgb2JqZWN0cyBhbmQgd3JhcHBpbmcgYW5kIHVud3JhcHBpbmcgQ09NIG9iamVj
dHMuCisJCQorCQlBbHNvIGFkZGVkIG1pc3NpbmcgQ09NIGNsYXNzZXMgZm9yIERPTSBvYmplY3Rz
IC0gRE9NQXR0ciwgCisJCURPTUNEQVRBU2VjdGlvbiwgRE9NQ2hhcmFjdGVyRGF0YSwgRE9NQ29t
bWVudCwgRE9NRG9jdW1lbnRGcmFnbWVudCwKKwkJRE9NRG9jdW1lbnRUeXBlLCBET01FbnRpdHlS
ZWZlcmVuY2UsIERPTUltcGxlbWVudGF0aW9uLCAKKwkJRE9NTmFtZWROb2RlTWFwLCBET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24gYW5kIERPTVRleHQuCisJCSAKKyAgICAgICAgKiBET01Db3JlQ2xh
c3Nlcy5jcHA6CisgICAgICAgIChET01Ob2RlOjpub2RlVmFsdWUpOgorICAgICAgICAoRE9NTm9k
ZTo6c2V0Tm9kZVZhbHVlKToKKyAgICAgICAgKERPTU5vZGU6Om5vZGVUeXBlKToKKyAgICAgICAg
KERPTU5vZGU6OnBhcmVudE5vZGUpOgorICAgICAgICAoRE9NTm9kZTo6Zmlyc3RDaGlsZCk6Cisg
ICAgICAgIChET01Ob2RlOjpsYXN0Q2hpbGQpOgorICAgICAgICAoRE9NTm9kZTo6cHJldmlvdXNT
aWJsaW5nKToKKyAgICAgICAgKERPTU5vZGU6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKERPTU5v
ZGU6OmF0dHJpYnV0ZXMpOgorICAgICAgICAoRE9NTm9kZTo6aW5zZXJ0QmVmb3JlKToKKyAgICAg
ICAgKERPTU5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChET01Ob2RlOjpyZW1vdmVDaGls
ZCk6CisgICAgICAgIChET01Ob2RlOjphcHBlbmRDaGlsZCk6CisgICAgICAgIChET01Ob2RlOjpo
YXNDaGlsZE5vZGVzKToKKyAgICAgICAgKERPTU5vZGU6OmNsb25lTm9kZSk6CisgICAgICAgIChE
T01Ob2RlOjpub3JtYWxpemUpOgorICAgICAgICAoRE9NTm9kZTo6aXNTdXBwb3J0ZWQpOgorICAg
ICAgICAoRE9NTm9kZTo6bmFtZXNwYWNlVVJJKToKKyAgICAgICAgKERPTU5vZGU6OnByZWZpeCk6
CisgICAgICAgIChET01Ob2RlOjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NTm9kZTo6bG9jYWxO
YW1lKToKKyAgICAgICAgKERPTU5vZGU6Omhhc0F0dHJpYnV0ZXMpOgorICAgICAgICAoRE9NTm9k
ZTo6aXNFcXVhbE5vZGUpOgorICAgICAgICAoRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQpOgorICAg
ICAgICAoRE9NTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChET01Ob2RlOjpyZW1v
dmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKERPTU5vZGVMaXN0OjppdGVtKToKKyAgICAgICAg
KERPTU5vZGVMaXN0OjpsZW5ndGgpOgorICAgICAgICAoRE9NTm9kZUxpc3Q6OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKERPTURvY3VtZW50Ojpkb2N0eXBlKToKKyAgICAgICAgKERPTURvY3Vt
ZW50OjppbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChET01Eb2N1bWVudDo6ZG9jdW1lbnRFbGVt
ZW50KToKKyAgICAgICAgKERPTURvY3VtZW50OjpjcmVhdGVFbGVtZW50KToKKyAgICAgICAgKERP
TURvY3VtZW50OjpjcmVhdGVEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKERPTURvY3VtZW50
OjpjcmVhdGVUZXh0Tm9kZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6Y3JlYXRlQ29tbWVudCk6
CisgICAgICAgIChET01Eb2N1bWVudDo6Y3JlYXRlQ0RBVEFTZWN0aW9uKToKKyAgICAgICAgKERP
TURvY3VtZW50OjpjcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoRE9NRG9j
dW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6Y3JlYXRlRW50
aXR5UmVmZXJlbmNlKToKKyAgICAgICAgKERPTURvY3VtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFt
ZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6aW1wb3J0Tm9kZSk6CisgICAgICAgIChET01Eb2N1
bWVudDo6Y3JlYXRlRWxlbWVudE5TKToKKyAgICAgICAgKERPTURvY3VtZW50OjpjcmVhdGVBdHRy
aWJ1dGVOUyk6CisgICAgICAgIChET01Eb2N1bWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyk6
CisgICAgICAgIChET01Eb2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQpOgorICAgICAgICAoRE9NRG9j
dW1lbnQ6OmNyZWF0ZUV2ZW50KToKKyAgICAgICAgKERPTUVsZW1lbnQ6OmxpbmVCb3hSZWN0cyk6
CisgICAgICAgIChET01FbGVtZW50OjpnZXRBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NRWxlbWVu
dDo6cmVtb3ZlQXR0cmlidXRlKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5v
ZGUpOgorICAgICAgICAoRE9NRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZSk6CisgICAgICAgIChE
T01FbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKToKKyAgICAgICAgKERPTUVsZW1lbnQ6Omdl
dEVsZW1lbnRzQnlUYWdOYW1lKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5T
KToKKyAgICAgICAgKERPTUVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5TKToKKyAgICAgICAgKERPTUVs
ZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5TKToKKyAgICAgICAgKERPTUVsZW1lbnQ6OmdldEF0dHJp
YnV0ZU5vZGVOUyk6CisgICAgICAgIChET01FbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlTlMpOgor
ICAgICAgICAoRE9NRWxlbWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyk6CisgICAgICAgIChE
T01FbGVtZW50OjpoYXNBdHRyaWJ1dGUpOgorICAgICAgICAoRE9NRWxlbWVudDo6aGFzQXR0cmli
dXRlTlMpOgorICAgICAgICAoRE9NRWxlbWVudDo6Y29yZUVsZW1lbnQpOgorICAgICAgICAoRE9N
RWxlbWVudDo6aXNFcXVhbCk6CisgICAgICAgIChET01FbGVtZW50Ojppc0ZvY3VzZWQpOgorICAg
ICAgICAoRE9NRWxlbWVudDo6b2Zmc2V0TGVmdCk6CisgICAgICAgIChET01FbGVtZW50OjpvZmZz
ZXRUb3ApOgorICAgICAgICAoRE9NRWxlbWVudDo6b2Zmc2V0V2lkdGgpOgorICAgICAgICAoRE9N
RWxlbWVudDo6b2Zmc2V0SGVpZ2h0KToKKyAgICAgICAgKERPTUVsZW1lbnQ6Om9mZnNldFBhcmVu
dCk6CisgICAgICAgIChET01FbGVtZW50OjpjbGllbnRXaWR0aCk6CisgICAgICAgIChET01FbGVt
ZW50OjpjbGllbnRIZWlnaHQpOgorICAgICAgICAoRE9NRWxlbWVudDo6c2Nyb2xsTGVmdCk6Cisg
ICAgICAgIChET01FbGVtZW50OjpzZXRTY3JvbGxMZWZ0KToKKyAgICAgICAgKERPTUVsZW1lbnQ6
OnNjcm9sbFRvcCk6CisgICAgICAgIChET01FbGVtZW50OjpzZXRTY3JvbGxUb3ApOgorICAgICAg
ICAoRE9NRWxlbWVudDo6c2Nyb2xsV2lkdGgpOgorICAgICAgICAoRE9NRWxlbWVudDo6c2Nyb2xs
SGVpZ2h0KToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OlF1ZXJ5SW50ZXJmYWNlKToKKyAg
ICAgICAgKERPTUNoYXJhY3RlckRhdGE6OmRhdGEpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0
YTo6c2V0RGF0YSk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpsZW5ndGgpOgorICAgICAg
ICAoRE9NQ2hhcmFjdGVyRGF0YTo6c3Vic3RyaW5nRGF0YSk6CisgICAgICAgIChET01DaGFyYWN0
ZXJEYXRhOjphcHBlbmREYXRhKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6Omluc2VydERh
dGEpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChE
T01DaGFyYWN0ZXJEYXRhOjpyZXBsYWNlRGF0YSk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRh
OjpET01DaGFyYWN0ZXJEYXRhKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6On5ET01DaGFy
YWN0ZXJEYXRhKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OmNyZWF0ZUluc3RhbmNlKToK
KyAgICAgICAgKERPTVRleHQ6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAgKERPTVRleHQ6OnNw
bGl0VGV4dCk6CisgICAgICAgIChET01UZXh0OjpET01UZXh0KToKKyAgICAgICAgKERPTVRleHQ6
On5ET01UZXh0KToKKyAgICAgICAgKERPTVRleHQ6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAg
KERPTU5hbWVkTm9kZU1hcDo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NTmFtZWROb2Rl
TWFwOjpnZXROYW1lZEl0ZW0pOgorICAgICAgICAoRE9NTmFtZWROb2RlTWFwOjpzZXROYW1lZEl0
ZW0pOgorICAgICAgICAoRE9NTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0pOgorICAgICAg
ICAoRE9NTmFtZWROb2RlTWFwOjppdGVtKToKKyAgICAgICAgKERPTU5hbWVkTm9kZU1hcDo6bGVu
Z3RoKToKKyAgICAgICAgKERPTU5hbWVkTm9kZU1hcDo6Z2V0TmFtZWRJdGVtTlMpOgorICAgICAg
ICAoRE9NTmFtZWROb2RlTWFwOjpzZXROYW1lZEl0ZW1OUyk6CisgICAgICAgIChET01OYW1lZE5v
ZGVNYXA6OnJlbW92ZU5hbWVkSXRlbU5TKToKKyAgICAgICAgKERPTU5hbWVkTm9kZU1hcDo6RE9N
TmFtZWROb2RlTWFwKToKKyAgICAgICAgKERPTU5hbWVkTm9kZU1hcDo6fkRPTU5hbWVkTm9kZU1h
cCk6CisgICAgICAgIChET01OYW1lZE5vZGVNYXA6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAg
KERPTUltcGxlbWVudGF0aW9uOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChET01JbXBsZW1l
bnRhdGlvbjo6aGFzRmVhdHVyZSk6CisgICAgICAgIChET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnRUeXBlKToKKyAgICAgICAgKERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dCk6CisgICAgICAgIChET01JbXBsZW1lbnRhdGlvbjo6RE9NSW1wbGVtZW50YXRpb24pOgorICAg
ICAgICAoRE9NSW1wbGVtZW50YXRpb246On5ET01JbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChE
T01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoRE9NQXR0cjo6UXVl
cnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NQXR0cjo6bmFtZSk6CisgICAgICAgIChET01BdHRy
OjpzcGVjaWZpZWQpOgorICAgICAgICAoRE9NQXR0cjo6dmFsdWUpOgorICAgICAgICAoRE9NQXR0
cjo6c2V0VmFsdWUpOgorICAgICAgICAoRE9NQXR0cjo6b3duZXJFbGVtZW50KToKKyAgICAgICAg
KERPTUF0dHI6OkRPTUF0dHIpOgorICAgICAgICAoRE9NQXR0cjo6fkRPTUF0dHIpOgorICAgICAg
ICAoRE9NQXR0cjo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoRE9NQ29tbWVudDo6UXVlcnlJ
bnRlcmZhY2UpOgorICAgICAgICAoRE9NQ29tbWVudDo6RE9NQ29tbWVudCk6CisgICAgICAgIChE
T01Db21tZW50Ojp+RE9NQ29tbWVudCk6CisgICAgICAgIChET01Db21tZW50OjpjcmVhdGVJbnN0
YW5jZSk6CisgICAgICAgIChET01DREFUQVNlY3Rpb246OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAg
ICAgKERPTUNEQVRBU2VjdGlvbjo6RE9NQ0RBVEFTZWN0aW9uKToKKyAgICAgICAgKERPTUNEQVRB
U2VjdGlvbjo6fkRPTUNEQVRBU2VjdGlvbik6CisgICAgICAgIChET01DREFUQVNlY3Rpb246OmNy
ZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6OlF1ZXJ5SW50ZXJm
YWNlKToKKyAgICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6OkRPTURvY3VtZW50RnJhZ21lbnQp
OgorICAgICAgICAoRE9NRG9jdW1lbnRGcmFnbWVudDo6fkRPTURvY3VtZW50RnJhZ21lbnQpOgor
ICAgICAgICAoRE9NRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAo
RE9NRG9jdW1lbnRUeXBlOjpRdWVyeUludGVyZmFjZSk6CisgICAgICAgIChET01Eb2N1bWVudFR5
cGU6Om5hbWUpOgorICAgICAgICAoRE9NRG9jdW1lbnRUeXBlOjplbnRpdGllcyk6CisgICAgICAg
IChET01Eb2N1bWVudFR5cGU6Om5vdGF0aW9ucyk6CisgICAgICAgIChET01Eb2N1bWVudFR5cGU6
OnB1YmxpY0lkKToKKyAgICAgICAgKERPTURvY3VtZW50VHlwZTo6c3lzdGVtSWQpOgorICAgICAg
ICAoRE9NRG9jdW1lbnRUeXBlOjppbnRlcm5hbFN1YnNldCk6CisgICAgICAgIChET01Eb2N1bWVu
dFR5cGU6OkRPTURvY3VtZW50VHlwZSk6CisgICAgICAgIChET01Eb2N1bWVudFR5cGU6On5ET01E
b2N1bWVudFR5cGUpOgorICAgICAgICAoRE9NRG9jdW1lbnRUeXBlOjpjcmVhdGVJbnN0YW5jZSk6
CisgICAgICAgIChET01FbnRpdHlSZWZlcmVuY2U6OlF1ZXJ5SW50ZXJmYWNlKToKKyAgICAgICAg
KERPTUVudGl0eVJlZmVyZW5jZTo6RE9NRW50aXR5UmVmZXJlbmNlKToKKyAgICAgICAgKERPTUVu
dGl0eVJlZmVyZW5jZTo6fkRPTUVudGl0eVJlZmVyZW5jZSk6CisgICAgICAgIChET01FbnRpdHlS
ZWZlcmVuY2U6OmNyZWF0ZUluc3RhbmNlKToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9u
Ojp0YXJnZXQpOgorICAgICAgICAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpkYXRhKToKKyAg
ICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0RGF0YSk6CisgICAgICAgIChET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OkRPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbik6CisgICAgICAg
IChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246On5ET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpjcmVhdGVJbnN0YW5jZSk6CisgICAg
ICAgICogRE9NQ29yZUNsYXNzZXMuaDoKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OkFkZFJl
Zik6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpSZWxlYXNlKToKKyAgICAgICAgKERPTUNo
YXJhY3RlckRhdGE6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6
OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6ZXZhbHVh
dGVXZWJTY3JpcHQpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6cmVtb3ZlV2ViU2NyaXB0
S2V5KToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OnN0cmluZ1JlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OndlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAg
ICAgIChET01DaGFyYWN0ZXJEYXRhOjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAg
ICAoRE9NQ2hhcmFjdGVyRGF0YTo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUNoYXJhY3Rl
ckRhdGE6Om5vZGVOYW1lKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6Om5vZGVWYWx1ZSk6
CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFsdWUpOgorICAgICAgICAoRE9N
Q2hhcmFjdGVyRGF0YTo6bm9kZVR5cGUpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6cGFy
ZW50Tm9kZSk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpjaGlsZE5vZGVzKToKKyAgICAg
ICAgKERPTUNoYXJhY3RlckRhdGE6OmZpcnN0Q2hpbGQpOgorICAgICAgICAoRE9NQ2hhcmFjdGVy
RGF0YTo6bGFzdENoaWxkKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OnByZXZpb3VzU2li
bGluZyk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpuZXh0U2libGluZyk6CisgICAgICAg
IChET01DaGFyYWN0ZXJEYXRhOjphdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRh
dGE6Om93bmVyRG9jdW1lbnQpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6aW5zZXJ0QmVm
b3JlKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OnJlcGxhY2VDaGlsZCk6CisgICAgICAg
IChET01DaGFyYWN0ZXJEYXRhOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChET01DaGFyYWN0ZXJE
YXRhOjphcHBlbmRDaGlsZCk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpoYXNDaGlsZE5v
ZGVzKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OmNsb25lTm9kZSk6CisgICAgICAgIChE
T01DaGFyYWN0ZXJEYXRhOjpub3JtYWxpemUpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6
aXNTdXBwb3J0ZWQpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6bmFtZXNwYWNlVVJJKToK
KyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OnByZWZpeCk6CisgICAgICAgIChET01DaGFyYWN0
ZXJEYXRhOjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6bG9jYWxOYW1l
KToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6Omhhc0F0dHJpYnV0ZXMpOgorICAgICAgICAo
RE9NQ2hhcmFjdGVyRGF0YTo6aXNTYW1lTm9kZSk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRh
Ojppc0VxdWFsTm9kZSk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjp0ZXh0Q29udGVudCk6
CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgIChE
T01DaGFyYWN0ZXJEYXRhOjpjaGFyYWN0ZXJEYXRhKToKKyAgICAgICAgKERPTVRleHQ6OkFkZFJl
Zik6CisgICAgICAgIChET01UZXh0OjpSZWxlYXNlKToKKyAgICAgICAgKERPTVRleHQ6OnRocm93
RXhjZXB0aW9uKToKKyAgICAgICAgKERPTVRleHQ6OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAg
ICAgICAoRE9NVGV4dDo6ZXZhbHVhdGVXZWJTY3JpcHQpOgorICAgICAgICAoRE9NVGV4dDo6cmVt
b3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTVRleHQ6OnN0cmluZ1JlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKERPTVRleHQ6OndlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChE
T01UZXh0OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NVGV4dDo6c2V0
RXhjZXB0aW9uKToKKyAgICAgICAgKERPTVRleHQ6Om5vZGVOYW1lKToKKyAgICAgICAgKERPTVRl
eHQ6Om5vZGVWYWx1ZSk6CisgICAgICAgIChET01UZXh0OjpzZXROb2RlVmFsdWUpOgorICAgICAg
ICAoRE9NVGV4dDo6bm9kZVR5cGUpOgorICAgICAgICAoRE9NVGV4dDo6cGFyZW50Tm9kZSk6Cisg
ICAgICAgIChET01UZXh0OjpjaGlsZE5vZGVzKToKKyAgICAgICAgKERPTVRleHQ6OmZpcnN0Q2hp
bGQpOgorICAgICAgICAoRE9NVGV4dDo6bGFzdENoaWxkKToKKyAgICAgICAgKERPTVRleHQ6OnBy
ZXZpb3VzU2libGluZyk6CisgICAgICAgIChET01UZXh0OjpuZXh0U2libGluZyk6CisgICAgICAg
IChET01UZXh0OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTVRleHQ6Om93bmVyRG9jdW1lbnQp
OgorICAgICAgICAoRE9NVGV4dDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKERPTVRleHQ6OnJl
cGxhY2VDaGlsZCk6CisgICAgICAgIChET01UZXh0OjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChE
T01UZXh0OjphcHBlbmRDaGlsZCk6CisgICAgICAgIChET01UZXh0OjpoYXNDaGlsZE5vZGVzKToK
KyAgICAgICAgKERPTVRleHQ6OmNsb25lTm9kZSk6CisgICAgICAgIChET01UZXh0Ojpub3JtYWxp
emUpOgorICAgICAgICAoRE9NVGV4dDo6aXNTdXBwb3J0ZWQpOgorICAgICAgICAoRE9NVGV4dDo6
bmFtZXNwYWNlVVJJKToKKyAgICAgICAgKERPTVRleHQ6OnByZWZpeCk6CisgICAgICAgIChET01U
ZXh0OjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NVGV4dDo6bG9jYWxOYW1lKToKKyAgICAgICAg
KERPTVRleHQ6Omhhc0F0dHJpYnV0ZXMpOgorICAgICAgICAoRE9NVGV4dDo6aXNTYW1lTm9kZSk6
CisgICAgICAgIChET01UZXh0Ojppc0VxdWFsTm9kZSk6CisgICAgICAgIChET01UZXh0Ojp0ZXh0
Q29udGVudCk6CisgICAgICAgIChET01UZXh0OjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgIChE
T01UZXh0OjpkYXRhKToKKyAgICAgICAgKERPTVRleHQ6OnNldERhdGEpOgorICAgICAgICAoRE9N
VGV4dDo6bGVuZ3RoKToKKyAgICAgICAgKERPTVRleHQ6OnN1YnN0cmluZ0RhdGEpOgorICAgICAg
ICAoRE9NVGV4dDo6YXBwZW5kRGF0YSk6CisgICAgICAgIChET01UZXh0OjppbnNlcnREYXRhKToK
KyAgICAgICAgKERPTVRleHQ6OmRlbGV0ZURhdGEpOgorICAgICAgICAoRE9NVGV4dDo6cmVwbGFj
ZURhdGEpOgorICAgICAgICAoRE9NVGV4dDo6dGV4dCk6CisgICAgICAgIChET01OYW1lZE5vZGVN
YXA6OkFkZFJlZik6CisgICAgICAgIChET01OYW1lZE5vZGVNYXA6OlJlbGVhc2UpOgorICAgICAg
ICAoRE9NTmFtZWROb2RlTWFwOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChET01OYW1lZE5v
ZGVNYXA6OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9NTmFtZWROb2RlTWFwOjpl
dmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01OYW1lZE5vZGVNYXA6OnJlbW92ZVdlYlNj
cmlwdEtleSk6CisgICAgICAgIChET01OYW1lZE5vZGVNYXA6OnN0cmluZ1JlcHJlc2VudGF0aW9u
KToKKyAgICAgICAgKERPTU5hbWVkTm9kZU1hcDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAg
ICAgICAgKERPTU5hbWVkTm9kZU1hcDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAg
ICAgKERPTU5hbWVkTm9kZU1hcDo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTU5hbWVkTm9k
ZU1hcDo6bmFtZWROb2RlTWFwKToKKyAgICAgICAgKERPTUltcGxlbWVudGF0aW9uOjpBZGRSZWYp
OgorICAgICAgICAoRE9NSW1wbGVtZW50YXRpb246OlJlbGVhc2UpOgorICAgICAgICAoRE9NSW1w
bGVtZW50YXRpb246OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUltcGxlbWVudGF0aW9u
OjpjYWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTUltcGxlbWVudGF0aW9uOjpldmFs
dWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChET01JbXBsZW1lbnRhdGlvbjo6cmVtb3ZlV2ViU2Ny
aXB0S2V5KToKKyAgICAgICAgKERPTUltcGxlbWVudGF0aW9uOjpzdHJpbmdSZXByZXNlbnRhdGlv
bik6CisgICAgICAgIChET01JbXBsZW1lbnRhdGlvbjo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KToK
KyAgICAgICAgKERPTUltcGxlbWVudGF0aW9uOjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgor
ICAgICAgICAoRE9NSW1wbGVtZW50YXRpb246OnNldEV4Y2VwdGlvbik6CisgICAgICAgIChET01J
bXBsZW1lbnRhdGlvbjo6aW1wbGVtZW50YXRpb24pOgorICAgICAgICAoRE9NQ29tbWVudDo6QWRk
UmVmKToKKyAgICAgICAgKERPTUNvbW1lbnQ6OlJlbGVhc2UpOgorICAgICAgICAoRE9NQ29tbWVu
dDo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAoRE9NQ29tbWVudDo6Y2FsbFdlYlNjcmlwdE1l
dGhvZCk6CisgICAgICAgIChET01Db21tZW50OjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAg
IChET01Db21tZW50OjpyZW1vdmVXZWJTY3JpcHRLZXkpOgorICAgICAgICAoRE9NQ29tbWVudDo6
c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoRE9NQ29tbWVudDo6d2ViU2NyaXB0VmFs
dWVBdEluZGV4KToKKyAgICAgICAgKERPTUNvbW1lbnQ6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRl
eCk6CisgICAgICAgIChET01Db21tZW50OjpzZXRFeGNlcHRpb24pOgorICAgICAgICAoRE9NQ29t
bWVudDo6bm9kZU5hbWUpOgorICAgICAgICAoRE9NQ29tbWVudDo6bm9kZVZhbHVlKToKKyAgICAg
ICAgKERPTUNvbW1lbnQ6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIChET01Db21tZW50Ojpub2Rl
VHlwZSk6CisgICAgICAgIChET01Db21tZW50OjpwYXJlbnROb2RlKToKKyAgICAgICAgKERPTUNv
bW1lbnQ6OmNoaWxkTm9kZXMpOgorICAgICAgICAoRE9NQ29tbWVudDo6Zmlyc3RDaGlsZCk6Cisg
ICAgICAgIChET01Db21tZW50OjpsYXN0Q2hpbGQpOgorICAgICAgICAoRE9NQ29tbWVudDo6cHJl
dmlvdXNTaWJsaW5nKToKKyAgICAgICAgKERPTUNvbW1lbnQ6Om5leHRTaWJsaW5nKToKKyAgICAg
ICAgKERPTUNvbW1lbnQ6OmF0dHJpYnV0ZXMpOgorICAgICAgICAoRE9NQ29tbWVudDo6b3duZXJE
b2N1bWVudCk6CisgICAgICAgIChET01Db21tZW50OjppbnNlcnRCZWZvcmUpOgorICAgICAgICAo
RE9NQ29tbWVudDo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKERPTUNvbW1lbnQ6OnJlbW92ZUNo
aWxkKToKKyAgICAgICAgKERPTUNvbW1lbnQ6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKERPTUNv
bW1lbnQ6Omhhc0NoaWxkTm9kZXMpOgorICAgICAgICAoRE9NQ29tbWVudDo6Y2xvbmVOb2RlKToK
KyAgICAgICAgKERPTUNvbW1lbnQ6Om5vcm1hbGl6ZSk6CisgICAgICAgIChET01Db21tZW50Ojpp
c1N1cHBvcnRlZCk6CisgICAgICAgIChET01Db21tZW50OjpuYW1lc3BhY2VVUkkpOgorICAgICAg
ICAoRE9NQ29tbWVudDo6cHJlZml4KToKKyAgICAgICAgKERPTUNvbW1lbnQ6OnNldFByZWZpeCk6
CisgICAgICAgIChET01Db21tZW50Ojpsb2NhbE5hbWUpOgorICAgICAgICAoRE9NQ29tbWVudDo6
aGFzQXR0cmlidXRlcyk6CisgICAgICAgIChET01Db21tZW50Ojppc1NhbWVOb2RlKToKKyAgICAg
ICAgKERPTUNvbW1lbnQ6OmlzRXF1YWxOb2RlKToKKyAgICAgICAgKERPTUNvbW1lbnQ6OnRleHRD
b250ZW50KToKKyAgICAgICAgKERPTUNvbW1lbnQ6OnNldFRleHRDb250ZW50KToKKyAgICAgICAg
KERPTUNvbW1lbnQ6OmRhdGEpOgorICAgICAgICAoRE9NQ29tbWVudDo6c2V0RGF0YSk6CisgICAg
ICAgIChET01Db21tZW50OjpsZW5ndGgpOgorICAgICAgICAoRE9NQ29tbWVudDo6c3Vic3RyaW5n
RGF0YSk6CisgICAgICAgIChET01Db21tZW50OjphcHBlbmREYXRhKToKKyAgICAgICAgKERPTUNv
bW1lbnQ6Omluc2VydERhdGEpOgorICAgICAgICAoRE9NQ29tbWVudDo6ZGVsZXRlRGF0YSk6Cisg
ICAgICAgIChET01Db21tZW50OjpyZXBsYWNlRGF0YSk6CisgICAgICAgIChET01Db21tZW50Ojpj
b21tZW50KToKKyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6QWRkUmVmKToKKyAgICAgICAgKERP
TUNEQVRBU2VjdGlvbjo6UmVsZWFzZSk6CisgICAgICAgIChET01DREFUQVNlY3Rpb246OnRocm93
RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6Y2FsbFdlYlNjcmlwdE1ldGhv
ZCk6CisgICAgICAgIChET01DREFUQVNlY3Rpb246OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAg
ICAgKERPTUNEQVRBU2VjdGlvbjo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTUNE
QVRBU2VjdGlvbjo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoRE9NQ0RBVEFTZWN0
aW9uOjp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjpz
ZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjpzZXRF
eGNlcHRpb24pOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjpub2RlTmFtZSk6CisgICAgICAg
IChET01DREFUQVNlY3Rpb246Om5vZGVWYWx1ZSk6CisgICAgICAgIChET01DREFUQVNlY3Rpb246
OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIChET01DREFUQVNlY3Rpb246Om5vZGVUeXBlKToKKyAg
ICAgICAgKERPTUNEQVRBU2VjdGlvbjo6cGFyZW50Tm9kZSk6CisgICAgICAgIChET01DREFUQVNl
Y3Rpb246OmNoaWxkTm9kZXMpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjpmaXJzdENoaWxk
KToKKyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6bGFzdENoaWxkKToKKyAgICAgICAgKERPTUNE
QVRBU2VjdGlvbjo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6
bmV4dFNpYmxpbmcpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjphdHRyaWJ1dGVzKToKKyAg
ICAgICAgKERPTUNEQVRBU2VjdGlvbjo6b3duZXJEb2N1bWVudCk6CisgICAgICAgIChET01DREFU
QVNlY3Rpb246Omluc2VydEJlZm9yZSk6CisgICAgICAgIChET01DREFUQVNlY3Rpb246OnJlcGxh
Y2VDaGlsZCk6CisgICAgICAgIChET01DREFUQVNlY3Rpb246OnJlbW92ZUNoaWxkKToKKyAgICAg
ICAgKERPTUNEQVRBU2VjdGlvbjo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0
aW9uOjpoYXNDaGlsZE5vZGVzKToKKyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6Y2xvbmVOb2Rl
KToKKyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6bm9ybWFsaXplKToKKyAgICAgICAgKERPTUNE
QVRBU2VjdGlvbjo6aXNTdXBwb3J0ZWQpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjpuYW1l
c3BhY2VVUkkpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjpwcmVmaXgpOgorICAgICAgICAo
RE9NQ0RBVEFTZWN0aW9uOjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjps
b2NhbE5hbWUpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjpoYXNBdHRyaWJ1dGVzKToKKyAg
ICAgICAgKERPTUNEQVRBU2VjdGlvbjo6aXNTYW1lTm9kZSk6CisgICAgICAgIChET01DREFUQVNl
Y3Rpb246OmlzRXF1YWxOb2RlKToKKyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6dGV4dENvbnRl
bnQpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjpzZXRUZXh0Q29udGVudCk6CisgICAgICAg
IChET01DREFUQVNlY3Rpb246OmRhdGEpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjpzZXRE
YXRhKToKKyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6bGVuZ3RoKToKKyAgICAgICAgKERPTUNE
QVRBU2VjdGlvbjo6c3Vic3RyaW5nRGF0YSk6CisgICAgICAgIChET01DREFUQVNlY3Rpb246OmFw
cGVuZERhdGEpOgorICAgICAgICAoRE9NQ0RBVEFTZWN0aW9uOjppbnNlcnREYXRhKToKKyAgICAg
ICAgKERPTUNEQVRBU2VjdGlvbjo6ZGVsZXRlRGF0YSk6CisgICAgICAgIChET01DREFUQVNlY3Rp
b246OnJlcGxhY2VEYXRhKToKKyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6c3BsaXRUZXh0KToK
KyAgICAgICAgKERPTUNEQVRBU2VjdGlvbjo6Y2RhdGFTZWN0aW9uKToKKyAgICAgICAgKERPTURv
Y3VtZW50RnJhZ21lbnQ6OkFkZFJlZik6CisgICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50OjpS
ZWxlYXNlKToKKyAgICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6OnRocm93RXhjZXB0aW9uKToK
KyAgICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAg
ICAgICAoRE9NRG9jdW1lbnRGcmFnbWVudDo6ZXZhbHVhdGVXZWJTY3JpcHQpOgorICAgICAgICAo
RE9NRG9jdW1lbnRGcmFnbWVudDo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTURv
Y3VtZW50RnJhZ21lbnQ6OnN0cmluZ1JlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKERPTURvY3Vt
ZW50RnJhZ21lbnQ6OndlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01Eb2N1bWVu
dEZyYWdtZW50OjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NRG9jdW1l
bnRGcmFnbWVudDo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6
Om5vZGVOYW1lKToKKyAgICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6Om5vZGVWYWx1ZSk6Cisg
ICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50OjpzZXROb2RlVmFsdWUpOgorICAgICAgICAoRE9N
RG9jdW1lbnRGcmFnbWVudDo6bm9kZVR5cGUpOgorICAgICAgICAoRE9NRG9jdW1lbnRGcmFnbWVu
dDo6cGFyZW50Tm9kZSk6CisgICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50OjpjaGlsZE5vZGVz
KToKKyAgICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6OmZpcnN0Q2hpbGQpOgorICAgICAgICAo
RE9NRG9jdW1lbnRGcmFnbWVudDo6bGFzdENoaWxkKToKKyAgICAgICAgKERPTURvY3VtZW50RnJh
Z21lbnQ6OnByZXZpb3VzU2libGluZyk6CisgICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50Ojpu
ZXh0U2libGluZyk6CisgICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50OjphdHRyaWJ1dGVzKToK
KyAgICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6Om93bmVyRG9jdW1lbnQpOgorICAgICAgICAo
RE9NRG9jdW1lbnRGcmFnbWVudDo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKERPTURvY3VtZW50
RnJhZ21lbnQ6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50Ojpy
ZW1vdmVDaGlsZCk6CisgICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50OjphcHBlbmRDaGlsZCk6
CisgICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50OjpoYXNDaGlsZE5vZGVzKToKKyAgICAgICAg
KERPTURvY3VtZW50RnJhZ21lbnQ6OmNsb25lTm9kZSk6CisgICAgICAgIChET01Eb2N1bWVudEZy
YWdtZW50Ojpub3JtYWxpemUpOgorICAgICAgICAoRE9NRG9jdW1lbnRGcmFnbWVudDo6aXNTdXBw
b3J0ZWQpOgorICAgICAgICAoRE9NRG9jdW1lbnRGcmFnbWVudDo6bmFtZXNwYWNlVVJJKToKKyAg
ICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6OnByZWZpeCk6CisgICAgICAgIChET01Eb2N1bWVu
dEZyYWdtZW50OjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NRG9jdW1lbnRGcmFnbWVudDo6bG9j
YWxOYW1lKToKKyAgICAgICAgKERPTURvY3VtZW50RnJhZ21lbnQ6Omhhc0F0dHJpYnV0ZXMpOgor
ICAgICAgICAoRE9NRG9jdW1lbnRGcmFnbWVudDo6aXNTYW1lTm9kZSk6CisgICAgICAgIChET01E
b2N1bWVudEZyYWdtZW50Ojppc0VxdWFsTm9kZSk6CisgICAgICAgIChET01Eb2N1bWVudEZyYWdt
ZW50Ojp0ZXh0Q29udGVudCk6CisgICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50OjpzZXRUZXh0
Q29udGVudCk6CisgICAgICAgIChET01Eb2N1bWVudEZyYWdtZW50Ojpkb2N1bWVudEZyYWdtZW50
KToKKyAgICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6QWRkUmVmKToKKyAgICAgICAgKERPTUVu
dGl0eVJlZmVyZW5jZTo6UmVsZWFzZSk6CisgICAgICAgIChET01FbnRpdHlSZWZlcmVuY2U6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6Y2FsbFdlYlNjcmlw
dE1ldGhvZCk6CisgICAgICAgIChET01FbnRpdHlSZWZlcmVuY2U6OmV2YWx1YXRlV2ViU2NyaXB0
KToKKyAgICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAg
ICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAg
ICAoRE9NRW50aXR5UmVmZXJlbmNlOjp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAo
RE9NRW50aXR5UmVmZXJlbmNlOjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAo
RE9NRW50aXR5UmVmZXJlbmNlOjpzZXRFeGNlcHRpb24pOgorICAgICAgICAoRE9NRW50aXR5UmVm
ZXJlbmNlOjpub2RlTmFtZSk6CisgICAgICAgIChET01FbnRpdHlSZWZlcmVuY2U6Om5vZGVWYWx1
ZSk6CisgICAgICAgIChET01FbnRpdHlSZWZlcmVuY2U6OnNldE5vZGVWYWx1ZSk6CisgICAgICAg
IChET01FbnRpdHlSZWZlcmVuY2U6Om5vZGVUeXBlKToKKyAgICAgICAgKERPTUVudGl0eVJlZmVy
ZW5jZTo6cGFyZW50Tm9kZSk6CisgICAgICAgIChET01FbnRpdHlSZWZlcmVuY2U6OmNoaWxkTm9k
ZXMpOgorICAgICAgICAoRE9NRW50aXR5UmVmZXJlbmNlOjpmaXJzdENoaWxkKToKKyAgICAgICAg
KERPTUVudGl0eVJlZmVyZW5jZTo6bGFzdENoaWxkKToKKyAgICAgICAgKERPTUVudGl0eVJlZmVy
ZW5jZTo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6bmV4
dFNpYmxpbmcpOgorICAgICAgICAoRE9NRW50aXR5UmVmZXJlbmNlOjphdHRyaWJ1dGVzKToKKyAg
ICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6b3duZXJEb2N1bWVudCk6CisgICAgICAgIChET01F
bnRpdHlSZWZlcmVuY2U6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChET01FbnRpdHlSZWZlcmVu
Y2U6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChET01FbnRpdHlSZWZlcmVuY2U6OnJlbW92ZUNo
aWxkKToKKyAgICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6YXBwZW5kQ2hpbGQpOgorICAgICAg
ICAoRE9NRW50aXR5UmVmZXJlbmNlOjpoYXNDaGlsZE5vZGVzKToKKyAgICAgICAgKERPTUVudGl0
eVJlZmVyZW5jZTo6Y2xvbmVOb2RlKToKKyAgICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6bm9y
bWFsaXplKToKKyAgICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6aXNTdXBwb3J0ZWQpOgorICAg
ICAgICAoRE9NRW50aXR5UmVmZXJlbmNlOjpuYW1lc3BhY2VVUkkpOgorICAgICAgICAoRE9NRW50
aXR5UmVmZXJlbmNlOjpwcmVmaXgpOgorICAgICAgICAoRE9NRW50aXR5UmVmZXJlbmNlOjpzZXRQ
cmVmaXgpOgorICAgICAgICAoRE9NRW50aXR5UmVmZXJlbmNlOjpsb2NhbE5hbWUpOgorICAgICAg
ICAoRE9NRW50aXR5UmVmZXJlbmNlOjpoYXNBdHRyaWJ1dGVzKToKKyAgICAgICAgKERPTUVudGl0
eVJlZmVyZW5jZTo6aXNTYW1lTm9kZSk6CisgICAgICAgIChET01FbnRpdHlSZWZlcmVuY2U6Omlz
RXF1YWxOb2RlKToKKyAgICAgICAgKERPTUVudGl0eVJlZmVyZW5jZTo6dGV4dENvbnRlbnQpOgor
ICAgICAgICAoRE9NRW50aXR5UmVmZXJlbmNlOjpzZXRUZXh0Q29udGVudCk6CisgICAgICAgIChE
T01FbnRpdHlSZWZlcmVuY2U6OmVudGl0eVJlZmVyZW5jZSk6CisgICAgICAgIChET01Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OkFkZFJlZik6CisgICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b246OlJlbGVhc2UpOgorICAgICAgICAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjp0aHJvd0V4
Y2VwdGlvbik6CisgICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNhbGxXZWJTY3Jp
cHRNZXRob2QpOgorICAgICAgICAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpldmFsdWF0ZVdl
YlNjcmlwdCk6CisgICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnJlbW92ZVdlYlNj
cmlwdEtleSk6CisgICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnN0cmluZ1JlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6d2ViU2NyaXB0
VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0V2Vi
U2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6bm9kZU5h
bWUpOgorICAgICAgICAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpub2RlVmFsdWUpOgorICAg
ICAgICAoRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXROb2RlVmFsdWUpOgorICAgICAgICAo
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpub2RlVHlwZSk6CisgICAgICAgIChET01Qcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OnBhcmVudE5vZGUpOgorICAgICAgICAoRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpjaGlsZE5vZGVzKToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
Zmlyc3RDaGlsZCk6CisgICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Omxhc3RDaGls
ZCk6CisgICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnByZXZpb3VzU2libGluZyk6
CisgICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Om5leHRTaWJsaW5nKToKKyAgICAg
ICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6YXR0cmlidXRlcyk6CisgICAgICAgIChET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246Om93bmVyRG9jdW1lbnQpOgorICAgICAgICAoRE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uOjpyZW1vdmVDaGlsZCk6CisgICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmFw
cGVuZENoaWxkKToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6aGFzQ2hpbGRO
b2Rlcyk6CisgICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNsb25lTm9kZSk6Cisg
ICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246Om5vcm1hbGl6ZSk6CisgICAgICAgIChE
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmlzU3VwcG9ydGVkKToKKyAgICAgICAgKERPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbjo6bmFtZXNwYWNlVVJJKToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6cHJlZml4KToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
c2V0UHJlZml4KToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6bG9jYWxOYW1l
KToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6aGFzQXR0cmlidXRlcyk6Cisg
ICAgICAgIChET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmlzU2FtZU5vZGUpOgorICAgICAgICAo
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uOjppc0VxdWFsTm9kZSk6CisgICAgICAgIChET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb246OnRleHRDb250ZW50KToKKyAgICAgICAgKERPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6c2V0VGV4dENvbnRlbnQpOgorICAgICAgICAoRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOgorCiAyMDEwLTAzLTMwICBHYXZpbiBCYXJy
YWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXIgc3RhbXBl
ZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAJKHJldmlzaW9uIDU2ODM2
KQorKysgV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDI1ICszNCwzOSBAQAogI2luY2x1ZGUgIldlYktpdEdyYXBoaWNzLmgiCiAKICNwcmFnbWEgd2Fy
bmluZyhwdXNoLCAwKQorI2luY2x1ZGUgPFdlYkNvcmUvQXR0ci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9DREFUQVNlY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudEZy
YWdtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFR5cGUuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL0RPTUltcGxlbWVudGF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0VudGl0
eVJlZmVyZW5jZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1NpbXBsZUZvbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxOYW1lcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE9wdGlvbkVsZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxTZWxlY3RFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9IVE1MVGV4dEFyZWFFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYW1lZEF0dHJNYXAu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vZGVMaXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlck9iamVjdC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2ltcGxlRm9udERhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Rl
eHQuaD4KICNwcmFnbWEgd2FybmluZyhwb3ApCiAKICNpbmNsdWRlIDxpbml0Z3VpZC5oPgogLy8g
ezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIxRTA4RTIzRX0KIERFRklORV9HVUlEKElJRF9E
T01FbGVtZW50LCAweDNiMGMwZWZmLCAweDQ3OGIsIDB4NGIwYiwgMHg4MiwgMHg5MCwgMHhkMiwg
MHgzMiwgMHgxZSwgMHg4LCAweGUyLCAweDNlKTsKKy8vIHsyN0ZCNUEyOS02OTdELTQ5NDgtOUFF
Qy04RUFFOERFMzEwMDd9CitERUZJTkVfR1VJRChJSURfRE9NRG9jdW1lbnRUeXBlLCAweDI3ZmI1
YTI5LCAweDY5N2QsIDB4NDk0OCwgMHg5YSwgMHhlYywgMHg4ZSwgMHhhZSwgMHg4ZCwgMHhlMywg
MHgxMCwgMHg3KTsKKy8vIHtGQTIwNjJGMi0zM0VFLTQ4OWMtODgwMy0yNEU0REU3OUI4Q0R9CitE
RUZJTkVfR1VJRChJSURfRE9NQXR0ciwgMHhmYTIwNjJmMiwgMHgzM2VlLCAweDQ4OWMsIDB4ODgs
IDB4MywgMHgyNCwgMHhlNCwgMHhkZSwgMHg3OSwgMHhiOCwgMHhjZCk7CiAKIC8vIE91ciBub3Jt
YWwgc3R5bGUgaXMganVzdCB0byBzYXkgInVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlIiByYXRoZXIg
dGhhbiBoYXZpbmcKIC8vIGluZGl2aWR1YWwgdXNpbmcgZGlyZWN0aXZlcyBmb3IgZWFjaCB0eXBl
IGZyb20gdGhhdCBuYW1lc3BhY2UuIEJ1dApAQCAtNjEsMTIgKzc1LDE0IEBAIERFRklORV9HVUlE
KElJRF9ET01FbGVtZW50LCAweDNiMGMwZWZmLCAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpI
VE1MTmFtZXM7CiB1c2luZyBXZWJDb3JlOjpBdG9taWNTdHJpbmc7CiB1c2luZyBXZWJDb3JlOjpC
U3RyaW5nOwordXNpbmcgV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTsKIHVzaW5nIFdlYkNvcmU6OkVs
ZW1lbnQ7CiB1c2luZyBXZWJDb3JlOjpFeGNlcHRpb25Db2RlOwogdXNpbmcgV2ViQ29yZTo6Rm9u
dERlc2NyaXB0aW9uOwogdXNpbmcgV2ViQ29yZTo6RnJhbWU7CiB1c2luZyBXZWJDb3JlOjpJbnRS
ZWN0OwogdXNpbmcgV2ViQ29yZTo6U3RyaW5nOwordXNpbmcgV2ViQ29yZTo6VGV4dDsKIAogLy8g
RE9NT2JqZWN0IC0gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xMTYsNiArMTMyLDggQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01Ob2RlOjpub2RlTgogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01O
b2RlOjpub2RlVmFsdWUoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQog
eworCWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOwogICAgIGlmICghbV9ub2RlKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIFdlYkNvcmU6OlN0cmluZyBub2RlVmFsdWVTdHIg
PSBtX25vZGUtPm5vZGVWYWx1ZSgpOwpAQCAtMTI2LDIyICsxNDQsMzUgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBET01Ob2RlOjpub2RlVgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTU5vZGU6OnNldE5vZGVWYWx1ZSggCi0gICAgLyogW2luXSAqLyBCU1RSIC8qdmFsdWUq
LykKKyAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsKKwlpZiAoIW1fbm9kZSkKKwkJcmV0dXJuIEVfRkFJ
TDsKKworCUV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCW1fbm9kZS0+c2V0Tm9kZVZhbHVlKFN0cmlu
Zyh2YWx1ZSksIGVjKTsKKworICAgIHJldHVybiBlYyA/IEVfRkFJTCA6IFNfT0s7CiB9CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6bm9kZVR5cGUoIAotICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQqIC8qcmVzdWx0Ki8pCisgICAgLyogW3JldHZhbF1b
b3V0XSAqLyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisgICAgaWYgKCFyZXN1bHQpCisJCXJldHVybiBF
X1BPSU5URVI7CisKKwlpZiAoIW1fbm9kZSkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQg
PSBtX25vZGUtPm5vZGVUeXBlKCk7CisgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6cGFyZW50Tm9kZSggCiAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkKIHsKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9J
TlRFUjsKICAgICAqcmVzdWx0ID0gMDsKICAgICBpZiAoIW1fbm9kZSB8fCAhbV9ub2RlLT5wYXJl
bnROb2RlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xNjMsMjQgKzE5NCw0NSBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OmNoaWxkCiB9CiAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6Zmlyc3RDaGlsZCggCi0gICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NTm9kZSoqIC8qcmVzdWx0Ki8pCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZSoqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
RV9OT1RJTVBMOworICAgIGlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJKnJl
c3VsdCA9IDA7CisJaWYgKCFtX25vZGUpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0g
RE9NTm9kZTo6Y3JlYXRlSW5zdGFuY2UobV9ub2RlLT5maXJzdENoaWxkKCkpOworCXJldHVybiBT
X09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6Omxhc3RDaGlsZCgg
Ci0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIC8qcmVzdWx0Ki8pCisgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gRV9OT1RJTVBMOworICAgIGlmICghcmVzdWx0KQorCQlyZXR1
cm4gRV9QT0lOVEVSOworCisJKnJlc3VsdCA9IDA7CisJaWYgKCFtX25vZGUpCisJCXJldHVybiBF
X0ZBSUw7CisKKwkqcmVzdWx0ID0gRE9NTm9kZTo6Y3JlYXRlSW5zdGFuY2UobV9ub2RlLT5sYXN0
Q2hpbGQoKSk7CisJcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NTm9kZTo6cHJldmlvdXNTaWJsaW5nKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlKiogLypyZXN1bHQqLykKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVz
dWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFX05PVElNUEw7
CisgICAgaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisKKwkqcmVzdWx0ID0gMDsK
KwlpZiAoIW1fbm9kZSkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBET01Ob2RlOjpj
cmVhdGVJbnN0YW5jZShtX25vZGUtPnByZXZpb3VzU2libGluZygpKTsKKwlyZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpuZXh0U2libGluZyggCkBA
IC0xOTIsMTQgKzI0NCwyMiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6Om5l
eHRTCiAgICAgaWYgKCFtX25vZGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgKnJlc3Vs
dCA9IERPTU5vZGU6OmNyZWF0ZUluc3RhbmNlKG1fbm9kZS0+bmV4dFNpYmxpbmcoKSk7Ci0gICAg
cmV0dXJuICpyZXN1bHQgPyBTX09LIDogRV9GQUlMOworICAgIHJldHVybiBTX09LOwogfQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OmF0dHJpYnV0ZXMoIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCoqIC8qcmVzdWx0Ki8pCisgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwKiogcmVzdWx0KQogewotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisJaWYgKCFyZXN1bHQpCisJCXJl
dHVybiBFX1BPSU5URVI7CisJCisJKnJlc3VsdCA9IDA7CisKKwlpZiAoIW1fbm9kZSkKKwkJcmV0
dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBET01OYW1lZE5vZGVNYXA6OmNyZWF0ZUluc3RhbmNl
KG1fbm9kZS0+YXR0cmlidXRlcygpKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7
CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6b3duZXJEb2N1bWVudCgg
CkBAIC0yMzMsNyArMjkzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpp
bnNlcgogCiAgICAgQ09NUHRyPERPTU5vZGU+IHJlZkNoaWxkTm9kZShRdWVyeSwgcmVmQ2hpbGQp
OwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBpZiAoIW1fbm9kZS0+aW5zZXJ0QmVmb3JlKG5ld0NoaWxkTm9kZS0+bm9kZSgpLCByZWZDaGls
ZE5vZGUgPyByZWZDaGlsZE5vZGUtPm5vZGUoKSA6IDAsIGVjKSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIApAQCAtMjQzLDEyICszMDMsMzMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01Ob2RlOjppbnNlcgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OnJl
cGxhY2VDaGlsZCggCi0gICAgLyogW2luXSAqLyBJRE9NTm9kZSogLypuZXdDaGlsZCovLAotICAg
IC8qIFtpbl0gKi8gSURPTU5vZGUqIC8qb2xkQ2hpbGQqLywKLSAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlKiogLypyZXN1bHQqLykKKyAgICAvKiBbaW5dICovIElET01Ob2RlKiBuZXdD
aGlsZCwKKyAgICAvKiBbaW5dICovIElET01Ob2RlKiBvbGRDaGlsZCwKKyAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBFX05PVElNUEw7CisgICAgaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BP
SU5URVI7CisKKwkqcmVzdWx0ID0gMDsKKworCWlmICghbV9ub2RlKQorCQlyZXR1cm4gRV9GQUlM
OworCisJQ09NUHRyPERPTU5vZGU+IG9sZENoaWxkTm9kZShRdWVyeSwgb2xkQ2hpbGQpOworCWlm
ICghb2xkQ2hpbGROb2RlKQorCQlyZXR1cm4gRV9GQUlMOworCisJQ09NUHRyPERPTU5vZGU+IG5l
d0NoaWxkTm9kZShRdWVyeSwgbmV3Q2hpbGQpOworCWlmICghbmV3Q2hpbGROb2RlKQorCQlyZXR1
cm4gRV9GQUlMOworCisJRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisJaWYgKCFtX25vZGUtPnJlcGxh
Y2VDaGlsZChuZXdDaGlsZE5vZGUtPm5vZGUoKSwgb2xkQ2hpbGROb2RlLT5ub2RlKCksIGVjKSkK
KwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBvbGRDaGlsZDsKKwkoKnJlc3VsdCktPkFk
ZFJlZigpOworCXJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TU5vZGU6OnJlbW92ZUNoaWxkKCAKQEAgLTI2Nyw3ICszNDgsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTU5vZGU6OnJlbW92CiAgICAgaWYgKCFvbGRDaGlsZE5vZGUpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIGlmICghbV9ub2RlLT5yZW1vdmVDaGlsZChvbGRDaGlsZE5vZGUtPm5v
ZGUoKSwgZWMpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC0yNzcsNzYgKzM1OCwxNDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpyZW1vdgogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OmFwcGVuZENoaWxkKCAKLSAgICAvKiBbaW5dICov
IElET01Ob2RlKiAvKm9sZENoaWxkKi8sCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9k
ZSoqIC8qcmVzdWx0Ki8pCisgICAgLyogW2luXSAqLyBJRE9NTm9kZSogbmV3Q2hpbGQsCisgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRV9OT1RJTVBMOworICAgIGlmICghcmVzdWx0KQorCQly
ZXR1cm4gRV9QT0lOVEVSOworCisJKnJlc3VsdCA9IDA7CisKKwlpZiAoIW1fbm9kZSkKKwkJcmV0
dXJuIEVfRkFJTDsKKworCUNPTVB0cjxET01Ob2RlPiBuZXdDaGlsZE5vZGUoUXVlcnksIG5ld0No
aWxkKTsKKwlpZiAoIW5ld0NoaWxkTm9kZSkKKwkJcmV0dXJuIEVfRkFJTDsKKworCUV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworCWlmICghbV9ub2RlLT5hcHBlbmRDaGlsZChuZXdDaGlsZE5vZGUtPm5v
ZGUoKSwgZWMpKQorCQlyZXR1cm4gRV9GQUlMOworCisJKnJlc3VsdCA9IG5ld0NoaWxkOworICAg
ICgqcmVzdWx0KS0+QWRkUmVmKCk7CisgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6aGFzQ2hpbGROb2RlcyggCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiAvKnJlc3VsdCovKQorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCog
cmVzdWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFX05PVElN
UEw7CisgICAgaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisKKwkqcmVzdWx0ID0g
MDsKKworCWlmICghbV9ub2RlKQorCQlyZXR1cm4gRV9GQUlMOworCisJKnJlc3VsdCA9IG1fbm9k
ZS0+aGFzQ2hpbGROb2RlcygpOworICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTU5vZGU6OmNsb25lTm9kZSggCi0gICAgLyogW2luXSAqLyBCT09MIC8q
ZGVlcCovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiAvKnJlc3VsdCovKQor
ICAgIC8qIFtpbl0gKi8gQk9PTCBkZWVwLAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGUqKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVf
Tk9USU1QTDsKKyAgICBpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCSpyZXN1
bHQgPSAwOworCisJaWYgKCFtX25vZGUpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0g
RE9NTm9kZTo6Y3JlYXRlSW5zdGFuY2UobV9ub2RlLT5jbG9uZU5vZGUoZGVlcCkuZ2V0KCkpOwor
CXJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01Ob2RlOjpub3JtYWxpemUoIHZvaWQpCitIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTU5vZGU6Om5vcm1hbGl6ZSh2b2lkKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBFX05PVElNUEw7CisgICAgaWYgKCFtX25vZGUpCisJCXJldHVybiBFX0ZB
SUw7CisKKwltX25vZGUtPm5vcm1hbGl6ZSgpOworCXJldHVybiBTX09LOwogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OmlzU3VwcG9ydGVkKCAKLSAgICAvKiBbaW5dICov
IEJTVFIgLypmZWF0dXJlKi8sCi0gICAgLyogW2luXSAqLyBCU1RSIC8qdmVyc2lvbiovLAotICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogLypyZXN1bHQqLykKKyAgICAvKiBbaW5dICovIEJT
VFIgZmVhdHVyZSwKKyAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwKKyAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gRV9OT1RJTVBMOworICAgIGlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVS
OworCisJaWYgKCFtX25vZGUpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gbV9ub2Rl
LT5pc1N1cHBvcnRlZChTdHJpbmcoZmVhdHVyZSksIFN0cmluZyh2ZXJzaW9uKSk7CisJcmV0dXJu
IFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZTo6bmFtZXNwYWNl
VVJJKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIC8qcmVzdWx0Ki8pCisgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKworICAgIGlmICghbV9ub2RlKQorICAgICAgICByZXR1cm4gRV9GQUlM
OworCisJKnJlc3VsdCA9IEJTdHJpbmcobV9ub2RlLT5uYW1lc3BhY2VVUkkoKS5zdHJpbmcoKSku
cmVsZWFzZSgpOworICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTU5vZGU6OnByZWZpeCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKnJl
c3VsdCovKQorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQogewotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICBpZiAoIW1fbm9kZSkKKyAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBCU3RyaW5nKG1fbm9kZS0+cHJlZml4KCku
c3RyaW5nKCkpLnJlbGVhc2UoKTsKKwlyZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01Ob2RlOjpzZXRQcmVmaXgoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKnBy
ZWZpeCovKQorICAgIC8qIFtpbl0gKi8gQlNUUiBwcmVmaXgpCiB7Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsKKwlpZiAoIW1fbm9kZSkKKwkJcmV0dXJu
IEVfRkFJTDsKKworCUV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCW1fbm9kZS0+c2V0UHJlZml4KEF0
b21pY1N0cmluZyhwcmVmaXgpLCBlYyk7CisKKyAgICByZXR1cm4gZWMgPyBFX0ZBSUwgOiBTX09L
OwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OmxvY2FsTmFtZSggCi0g
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiAvKnJlc3VsdCovKQorICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQlNUUiogcmVzdWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBFX05PVElNUEw7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFX1BP
SU5URVI7CisKKyAgICBpZiAoIW1fbm9kZSkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworCSpy
ZXN1bHQgPSBCU3RyaW5nKG1fbm9kZS0+bG9jYWxOYW1lKCkuc3RyaW5nKCkpLnJlbGVhc2UoKTsK
KwlyZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjpo
YXNBdHRyaWJ1dGVzKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIC8qcmVzdWx0Ki8p
CisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsKKyAgICBpZiAoIXJlc3VsdCkKKwkJ
cmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9ub2RlKQorCQlyZXR1cm4gRV9GQUlMOworCisJ
KnJlc3VsdCA9IG1fbm9kZS0+aGFzQXR0cmlidXRlcygpOworCXJldHVybiBTX09LOwogfQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OmlzU2FtZU5vZGUoIApAQCAtMzczLDEx
ICs1MjUsMjEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Ob2RlOjppc1NhbQogfQog
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OmlzRXF1YWxOb2RlKCAKLSAgICAv
KiBbaW5dICovIElET01Ob2RlKiAvKm90aGVyKi8sCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiAvKnJlc3VsdCovKQorICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAorICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BP
SU5URVI7CisKKwlpZiAoIW1fbm9kZSkKKwkJcmV0dXJuIEVfRkFJTDsKKworCUNPTVB0cjxET01O
b2RlPiBvdGhlck5vZGUoUXVlcnksIG90aGVyKTsKKwlpZiAoIW90aGVyTm9kZSkKKwkJcmV0dXJu
IEVfRkFJTDsKKworCSpyZXN1bHQgPSBtX25vZGUtPmlzRXF1YWxOb2RlKG90aGVyTm9kZS0+bm9k
ZSgpKTsKKwlyZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01O
b2RlOjp0ZXh0Q29udGVudCggCkBAIC0zOTIsMTAgKzU1NCwxMyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTU5vZGU6OnRleHRDCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NTm9kZTo6c2V0VGV4dENvbnRlbnQoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKnRleHQqLykK
KyAgICAvKiBbaW5dICovIEJTVFIgdGV4dCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gRV9OT1RJTVBMOworCVN0cmluZyB0ZXh0U3RyaW5nKHRleHQpOworCUV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworCW1fbm9kZS0+c2V0VGV4dENvbnRlbnQodGV4dFN0cmluZywgZWMp
OworCisgICAgcmV0dXJuIGVjID8gRV9GQUlMIDogU19PSzsKIH0KIAogLy8gRE9NTm9kZSAtIElE
T01FdmVudFRhcmdldCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtNDA1LDYgKzU3MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
Tm9kZTo6YWRkRXYKICAgICAvKiBbaW5dICovIElET01FdmVudExpc3RlbmVyKiAvKmxpc3RlbmVy
Ki8sCiAgICAgLyogW2luXSAqLyBCT09MIC8qdXNlQ2FwdHVyZSovKQogeworCUFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBFX05PVElNUEw7CiB9CiAKQEAgLTQxMyw2ICs1NzksNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGU6OnJlbW92CiAgICAgLyogW2luXSAq
LyBJRE9NRXZlbnRMaXN0ZW5lciogLypsaXN0ZW5lciovLAogICAgIC8qIFtpbl0gKi8gQk9PTCAv
KnVzZUNhcHR1cmUqLykKIHsKKwlBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRV9O
T1RJTVBMOwogfQogCkBAIC01MTgsNyArNjg1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01Ob2RlTGlzdDo6UQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGVMaXN0
OjppdGVtKCAKICAgICAvKiBbaW5dICovIFVJTlQgaW5kZXgsCi0gICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2Rl
KiogcmVzdWx0KQogewogICAgICpyZXN1bHQgPSAwOwogICAgIGlmICghbV9ub2RlTGlzdCkKQEAg
LTUzMyw3ICs3MDAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTU5vZGVMaXN0Ojpp
CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NTm9kZUxpc3Q6Omxlbmd0aCggCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCAqcmVzdWx0KQorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIFVJTlQqIHJlc3VsdCkKIHsKICAgICAqcmVzdWx0ID0gMDsKICAgICBpZiAo
IW1fbm9kZUxpc3QpCkBAIC01NjYsNyArNzMzLDcgQEAgSURPTU5vZGVMaXN0KiBET01Ob2RlTGlz
dDo6Y3JlYXRlSW5zdGFuYwogCiAgICAgSURPTU5vZGVMaXN0KiBkb21Ob2RlTGlzdCA9IDA7CiAg
ICAgRE9NTm9kZUxpc3QqIG5ld05vZGVMaXN0ID0gbmV3IERPTU5vZGVMaXN0KGwpOwotICAgIGlm
IChGQUlMRUQobmV3Tm9kZUxpc3QtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NTm9kZUxpc3QsICh2
b2lkKiopJmRvbU5vZGVMaXN0KSkpCisgICAgaWYgKEZBSUxFRChuZXdOb2RlTGlzdC0+UXVlcnlJ
bnRlcmZhY2UoSUlEX0lET01Ob2RlTGlzdCwgKHZvaWQqKikgJmRvbU5vZGVMaXN0KSkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIGRvbU5vZGVMaXN0OwpAQCAtNTkzLDIyICs3NjAs
NDAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVudDo6UQogLy8gRE9NRG9j
dW1lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50Ojpk
b2N0eXBlKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudFR5cGUqKiAvKnJl
c3VsdCovKQorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50VHlwZSoqIHJlc3Vs
dCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRV9OT1RJTVBMOwor
CWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX2RvY3VtZW50KQor
CQlyZXR1cm4gRV9GQUlMOworCisJKnJlc3VsdCA9IERPTURvY3VtZW50VHlwZTo6Y3JlYXRlSW5z
dGFuY2UobV9kb2N1bWVudC0+ZG9jdHlwZSgpKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBF
X0ZBSUw7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmltcGxl
bWVudGF0aW9uKCAKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01JbXBsZW1lbnRhdGlvbioq
IC8qcmVzdWx0Ki8pCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NSW1wbGVtZW50YXRpb24q
KiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9U
SU1QTDsKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9kb2N1
bWVudCkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6
Y3JlYXRlSW5zdGFuY2UobV9kb2N1bWVudC0+aW1wbGVtZW50YXRpb24oKSk7CisJcmV0dXJuICpy
ZXN1bHQgPyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TURvY3VtZW50Ojpkb2N1bWVudEVsZW1lbnQoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TUVsZW1lbnQqKiByZXN1bHQpCiB7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7
CisKKwlpZiAoIW1fZG9jdW1lbnQpCisJCXJldHVybiBFX0ZBSUw7CisKICAgICAqcmVzdWx0ID0g
RE9NRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UobV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkp
OwogICAgIHJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KQEAgLTYxNyw3NiArODAy
LDEzMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50OjpjCiAgICAgLyog
W2luXSAqLyBCU1RSIHRhZ05hbWUsCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVu
dCoqIHJlc3VsdCkKIHsKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKwogICAg
IGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFN0cmluZyB0
YWdOYW1lU3RyaW5nKHRhZ05hbWUpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgKnJlc3VsdCA9IERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNl
KG1fZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQodGFnTmFtZVN0cmluZywgZWMpLmdldCgpKTsKICAg
ICByZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoIAotICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50RnJhZ21lbnQqKiAvKnJlc3VsdCovKQorICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50RnJhZ21lbnQqKiByZXN1bHQpCiB7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsKKwlpZiAoIXJlc3Vs
dCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9kb2N1bWVudCkKKwkJcmV0dXJuIEVf
RkFJTDsKKworCSpyZXN1bHQgPSBET01Eb2N1bWVudEZyYWdtZW50OjpjcmVhdGVJbnN0YW5jZSht
X2RvY3VtZW50LT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuZ2V0KCkpOworCXJldHVybiAqcmVz
dWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01E
b2N1bWVudDo6Y3JlYXRlVGV4dE5vZGUoIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKmRhdGEqLywK
LSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01UZXh0KiogLypyZXN1bHQqLykKKyAgICAvKiBb
aW5dICovIEJTVFIgZGF0YSwKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01UZXh0KiogcmVz
dWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFX05PVElNUEw7
CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisJCisJKnJlc3VsdCA9IDA7CisK
KwlpZiAoIW1fZG9jdW1lbnQpCisJCXJldHVybiBFX0ZBSUw7CisJCisJKnJlc3VsdCA9IERPTVRl
eHQ6OmNyZWF0ZUluc3RhbmNlKG1fZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKFN0cmluZyhkYXRh
KSkuZ2V0KCkpOworCXJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KIAogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVudDo6Y3JlYXRlQ29tbWVudCggCi0gICAgLyog
W2luXSAqLyBCU1RSIC8qZGF0YSovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUNvbW1l
bnQqKiAvKnJlc3VsdCovKQorICAgIC8qIFtpbl0gKi8gQlNUUiBkYXRhLAorICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTUNvbW1lbnQqKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVf
UE9JTlRFUjsKKworCWlmICghbV9kb2N1bWVudCkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1
bHQgPSBET01Db21tZW50OjpjcmVhdGVJbnN0YW5jZShtX2RvY3VtZW50LT5jcmVhdGVDb21tZW50
KFN0cmluZyhkYXRhKSkuZ2V0KCkpOworCXJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVudDo6Y3JlYXRlQ0RBVEFT
ZWN0aW9uKCAKLSAgICAvKiBbaW5dICovIEJTVFIgLypkYXRhKi8sCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NQ0RBVEFTZWN0aW9uKiogLypyZXN1bHQqLykKKyAgICAvKiBbaW5dICovIEJT
VFIgZGF0YSwKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01DREFUQVNlY3Rpb24qKiByZXN1
bHQpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsK
KwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9kb2N1bWVudCkK
KwkJcmV0dXJuIEVfRkFJTDsKKworCUV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCSpyZXN1bHQgPSBE
T01DREFUQVNlY3Rpb246OmNyZWF0ZUluc3RhbmNlKG1fZG9jdW1lbnQtPmNyZWF0ZUNEQVRBU2Vj
dGlvbihTdHJpbmcoZGF0YSksIGVjKS5nZXQoKSk7CisJcmV0dXJuICpyZXN1bHQgPyBTX09LIDog
RV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50OjpjcmVh
dGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oIAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKnRhcmdldCov
LAotICAgIC8qIFtpbl0gKi8gQlNUUiAvKmRhdGEqLywKLSAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qKiAvKnJlc3VsdCovKQotewotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisgICAgLyogW2luXSAqLyBCU1RS
IHRhcmdldCwKKyAgICAvKiBbaW5dICovIEJTVFIgZGF0YSwKKyAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qKiByZXN1bHQpCit7CisJaWYgKCFyZXN1bHQp
CisJCXJldHVybiBFX1BPSU5URVI7CisKKwlpZiAoIW1fZG9jdW1lbnQpCisJCXJldHVybiBFX0ZB
SUw7CisKKwlFeGNlcHRpb25Db2RlIGVjID0gMDsKKwkqcmVzdWx0ID0gRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOjpjcmVhdGVJbnN0YW5jZShtX2RvY3VtZW50LT5jcmVhdGVQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24oCisJCVN0cmluZyh0YXJnZXQpLCBTdHJpbmcoZGF0YSksIGVjKS5nZXQoKSk7CisJ
cmV0dXJuICpyZXN1bHQgPyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTURvY3VtZW50OjpjcmVhdGVBdHRyaWJ1dGUoIAotICAgIC8qIFtpbl0gKi8gQlNU
UiAvKm5hbWUqLywKLSAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyKiogLypyZXN1bHQq
LykKKyAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01BdHRyKiogcmVzdWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBFX05PVElNUEw7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisKKwlpZiAo
IW1fZG9jdW1lbnQpCisJCXJldHVybiBFX0ZBSUw7CisKKwlFeGNlcHRpb25Db2RlIGVjID0gMDsK
KwkqcmVzdWx0ID0gRE9NQXR0cjo6Y3JlYXRlSW5zdGFuY2UobV9kb2N1bWVudC0+Y3JlYXRlQXR0
cmlidXRlKFN0cmluZyhuYW1lKSwgZWMpLmdldCgpKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sg
OiBFX0ZBSUw7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmNy
ZWF0ZUVudGl0eVJlZmVyZW5jZSggCi0gICAgLyogW2luXSAqLyBCU1RSIC8qbmFtZSovLAotICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVudGl0eVJlZmVyZW5jZSoqIC8qcmVzdWx0Ki8pCisg
ICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRW50
aXR5UmVmZXJlbmNlKiogcmVzdWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBFX05PVElNUEw7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisK
KwlpZiAoIW1fZG9jdW1lbnQpCisJCXJldHVybiBFX0ZBSUw7CisKKwlFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKwkqcmVzdWx0ID0gRE9NRW50aXR5UmVmZXJlbmNlOjpjcmVhdGVJbnN0YW5jZShtX2Rv
Y3VtZW50LT5jcmVhdGVFbnRpdHlSZWZlcmVuY2UoU3RyaW5nKG5hbWUpLCBlYykuZ2V0KCkpOwor
CXJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01Eb2N1bWVudDo6Z2V0RWxlbWVudHNCeVRhZ05hbWUoIAogICAgIC8qIFtpbl0g
Ki8gQlNUUiB0YWdOYW1lLAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0Kiog
cmVzdWx0KQogewotICAgIGlmICghbV9kb2N1bWVudCkKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJu
IEVfUE9JTlRFUjsKKwkKKwlpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKICAgICBTdHJpbmcgdGFnTmFtZVN0cmluZyh0YWdOYW1lKTsKQEAgLTY5NSwzMCArOTM1LDU3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmcKIH0KIAogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVudDo6aW1wb3J0Tm9kZSggCi0gICAgLyogW2lu
XSAqLyBJRE9NTm9kZSogLyppbXBvcnRlZE5vZGUqLywKLSAgICAvKiBbaW5dICovIEJPT0wgLypk
ZWVwKi8sCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIC8qcmVzdWx0Ki8pCisg
ICAgLyogW2luXSAqLyBJRE9NTm9kZSogaW1wb3J0ZWROb2RlLAorICAgIC8qIFtpbl0gKi8gQk9P
TCBkZWVwLAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpCiB7Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsKKwlpZiAoIXJl
c3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9kb2N1bWVudCkKKwkJcmV0dXJu
IEVfRkFJTDsKKworCUNPTVB0cjxET01Ob2RlPiBkb21JbXBvcnRlZE5vZGUoUXVlcnksIGltcG9y
dGVkTm9kZSk7CisJaWYgKCFkb21JbXBvcnRlZE5vZGUpCisJCXJldHVybiBFX0ZBSUw7CisKKwlF
eGNlcHRpb25Db2RlIGVjID0gMDsKKwkqcmVzdWx0ID0gRE9NTm9kZTo6Y3JlYXRlSW5zdGFuY2Uo
bV9kb2N1bWVudC0+aW1wb3J0Tm9kZShkb21JbXBvcnRlZE5vZGUtPm5vZGUoKSwgZGVlcCwgZWMp
LmdldCgpKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmNyZWF0ZUVsZW1lbnROUyggCi0gICAgLyog
W2luXSAqLyBCU1RSIC8qbmFtZXNwYWNlVVJJKi8sCi0gICAgLyogW2luXSAqLyBCU1RSIC8qcXVh
bGlmaWVkTmFtZSovLAotICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQqKiAvKnJl
c3VsdCovKQorICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCisgICAgLyogW2luXSAq
LyBCU1RSIHF1YWxpZmllZE5hbWUsCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVu
dCoqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRV9O
T1RJTVBMOworCWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX2Rv
Y3VtZW50KQorCQlyZXR1cm4gRV9GQUlMOworCisJRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisJKnJl
c3VsdCA9IERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKG1fZG9jdW1lbnQtPmNyZWF0ZUVsZW1l
bnROUygKKwkJU3RyaW5nKG5hbWVzcGFjZVVSSSksIFN0cmluZyhxdWFsaWZpZWROYW1lKSwgZWMp
LmdldCgpKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmNyZWF0ZUF0dHJpYnV0ZU5TKCAKLSAgICAv
KiBbaW5dICovIEJTVFIgLypuYW1lc3BhY2VVUkkqLywKLSAgICAvKiBbaW5dICovIEJTVFIgLypx
dWFsaWZpZWROYW1lKi8sCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0cioqIC8qcmVz
dWx0Ki8pCisgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKKyAgICAvKiBbaW5dICov
IEJTVFIgcXVhbGlmaWVkTmFtZSwKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyKiog
cmVzdWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFX05PVElN
UEw7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisKKwlpZiAoIW1fZG9jdW1l
bnQpCisJCXJldHVybiBFX0ZBSUw7CisKKwlFeGNlcHRpb25Db2RlIGVjID0gMDsKKwkqcmVzdWx0
ID0gRE9NQXR0cjo6Y3JlYXRlSW5zdGFuY2UobV9kb2N1bWVudC0+Y3JlYXRlQXR0cmlidXRlTlMo
CisJCVN0cmluZyhuYW1lc3BhY2VVUkkpLCBTdHJpbmcocXVhbGlmaWVkTmFtZSksIGVjKS5nZXQo
KSk7CisJcmV0dXJuICpyZXN1bHQgPyBTX09LIDogRV9GQUlMOwogfQogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTURvY3VtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKCAKQEAgLTcy
Niw2ICs5OTMsOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTURvY3VtZW50OjpnCiAg
ICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Ob2RlTGlzdCoqIHJlc3VsdCkKIHsKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRF
UjsKKwogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAt
NzM5LDcgKzEwMDksMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVudDo6
ZwogICAgIC8qIFtpbl0gKi8gQlNUUiBlbGVtZW50SWQsCiAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NRWxlbWVudCoqIHJlc3VsdCkKIHsKLSAgICBpZiAoIW1fZG9jdW1lbnQpCisJaWYgKCFy
ZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisKKwlpZiAoIW1fZG9jdW1lbnQpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKICAgICBTdHJpbmcgaWRTdHJpbmcoZWxlbWVudElkKTsKQEAgLTc3
OSw3ICsxMDUyLDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnQ6OmMK
ICAgICAvKiBbaW5dICovIEJTVFIgZXZlbnRUeXBlLAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTUV2ZW50ICoqcmVzdWx0KQogewotICAgIFN0cmluZyBldmVudFR5cGVTdHJpbmcoZXZlbnRU
eXBlLCBTeXNTdHJpbmdMZW4oZXZlbnRUeXBlKSk7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBF
X1BPSU5URVI7CisKKwlpZiAoIW1fZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisK
KwlTdHJpbmcgZXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSwgU3lzU3RyaW5nTGVuKGV2ZW50VHlw
ZSkpOwogICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICpyZXN1bHQgPSBE
T01FdmVudDo6Y3JlYXRlSW5zdGFuY2UobV9kb2N1bWVudC0+Y3JlYXRlRXZlbnQoZXZlbnRUeXBl
U3RyaW5nLCBlYykpOwogICAgIHJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKQEAgLTg2
OSw2ICsxMTQ4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpsaQog
ICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gUkVDVCogLypyZWN0cyovLAogICAgIC8qIFtpbl0gKi8g
aW50IC8qY1JlY3RzKi8pCiB7CisJQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEVf
Tk9USU1QTDsKIH0KIApAQCAtODkxLDYgKzExNzEsOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUVsZW1lbnQ6OmdlCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAogICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKKwlpZiAoIXJlc3VsdCkKKwkJ
cmV0dXJuIEVfUE9JTlRFUjsKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKICAgICBXZWJDb3JlOjpTdHJpbmcgbmFtZVN0cmluZyhuYW1lLCBTeXNTdHJpbmdMZW4o
bmFtZSkpOwpAQCAtOTE2LDExMSArMTE5OCwyMDAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01FbGVtZW50OjpzZQogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01F
bGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypuYW1l
Ki8pCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKQogewotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisJaWYgKCFtX2VsZW1lbnQpCisJCXJldHVy
biBFX0ZBSUw7CisKKwlFeGNlcHRpb25Db2RlIGVjID0gMDsKKwltX2VsZW1lbnQtPnJlbW92ZUF0
dHJpYnV0ZShTdHJpbmcobmFtZSksIGVjKTsKKworICAgIHJldHVybiBlYyA/IEVfRkFJTCA6IFNf
T0s7CiB9CiAgICAgCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OmdldEF0
dHJpYnV0ZU5vZGUoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypuYW1lKi8sCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIqKiAvKnJlc3VsdCovKQorICAgICAgICAvKiBb
aW5dICovIEJTVFIgbmFtZSwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0cioq
IHJlc3VsdCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRV9OT1RJ
TVBMOworCWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX2VsZW1l
bnQpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gRE9NQXR0cjo6Y3JlYXRlSW5zdGFu
Y2UobV9lbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2RlKFN0cmluZyhuYW1lKSkuZ2V0KCkpOworCXJl
dHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKIH0KICAgICAKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NRWxlbWVudDo6c2V0QXR0cmlidXRlTm9kZSggCi0gICAgICAgIC8qIFtpbl0g
Ki8gSURPTUF0dHIqIC8qbmV3QXR0ciovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01BdHRyKiogLypyZXN1bHQqLykKKyAgICAgICAgLyogW2luXSAqLyBJRE9NQXR0ciogbmV3QXR0
ciwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0cioqIHJlc3VsdCkKIHsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRV9OT1RJTVBMOworCWlmICghcmVz
dWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX2VsZW1lbnQpCisJCXJldHVybiBF
X0ZBSUw7CisKKwlDT01QdHI8RE9NQXR0cj4gZG9tTmV3QXR0cihRdWVyeSwgbmV3QXR0cik7CisJ
aWYgKCFkb21OZXdBdHRyKQorCQlyZXR1cm4gRV9GQUlMOworCisJRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisJKnJlc3VsdCA9IERPTUF0dHI6OmNyZWF0ZUluc3RhbmNlKG1fZWxlbWVudC0+c2V0QXR0
cmlidXRlTm9kZShkb21OZXdBdHRyLT5hdHRyKCksIGVjKS5nZXQoKSk7CisJcmV0dXJuICpyZXN1
bHQgPyBTX09LIDogRV9GQUlMOwogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01FbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGVOb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9N
QXR0ciogLypvbGRBdHRyKi8sCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIq
KiAvKnJlc3VsdCovKQorICAgICAgICAvKiBbaW5dICovIElET01BdHRyKiBvbGRBdHRyLAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyKiogcmVzdWx0KQogewotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisJaWYgKCFyZXN1bHQpCisJ
CXJldHVybiBFX1BPSU5URVI7CisKKwlpZiAoIW1fZWxlbWVudCkKKwkJcmV0dXJuIEVfRkFJTDsK
KworCUNPTVB0cjxET01BdHRyPiBkb21PbGRBdHRyKFF1ZXJ5LCBvbGRBdHRyKTsKKwlpZiAoIWRv
bU9sZEF0dHIpCisJCXJldHVybiBFX0ZBSUw7CisKKwlFeGNlcHRpb25Db2RlIGVjID0gMDsKKwkq
cmVzdWx0ID0gRE9NQXR0cjo6Y3JlYXRlSW5zdGFuY2UobV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1
dGVOb2RlKGRvbU9sZEF0dHItPmF0dHIoKSwgZWMpLmdldCgpKTsKKwlyZXR1cm4gKnJlc3VsdCA/
IFNfT0sgOiBFX0ZBSUw7CiB9CiAgICAgCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVs
ZW1lbnQ6OmdldEVsZW1lbnRzQnlUYWdOYW1lKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8q
bmFtZSovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCoqIC8qcmVz
dWx0Ki8pCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01Ob2RlTGlzdCoqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gRV9OT1RJTVBMOworCWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9Q
T0lOVEVSOworCisJaWYgKCFtX2VsZW1lbnQpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0
ID0gRE9NTm9kZUxpc3Q6OmNyZWF0ZUluc3RhbmNlKG1fZWxlbWVudC0+Z2V0RWxlbWVudHNCeVRh
Z05hbWUoU3RyaW5nKG5hbWUpKS5nZXQoKSk7CisJcmV0dXJuICpyZXN1bHQgPyBTX09LIDogRV9G
QUlMOwogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpnZXRB
dHRyaWJ1dGVOUyggCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKm5hbWVzcGFjZVVSSSovLAot
ICAgICAgICAvKiBbaW5dICovIEJTVFIgLypsb2NhbE5hbWUqLywKLSAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCU1RSKiAvKnJlc3VsdCovKQorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFt
ZXNwYWNlVVJJLAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lLAorICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gRV9OT1RJTVBMOworCWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9Q
T0lOVEVSOworCisJaWYgKCFtX2VsZW1lbnQpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0
ID0gQlN0cmluZyhtX2VsZW1lbnQtPmdldEF0dHJpYnV0ZU5TKFN0cmluZyhuYW1lc3BhY2VVUkkp
LCBTdHJpbmcobG9jYWxOYW1lKSkpLnJlbGVhc2UoKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sg
OiBFX0ZBSUw7CiB9CiAgICAgCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6
OnNldEF0dHJpYnV0ZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qbmFtZXNwYWNlVVJJ
Ki8sCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKnF1YWxpZmllZE5hbWUqLywKLSAgICAgICAg
LyogW2luXSAqLyBCU1RSIC8qdmFsdWUqLykKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVz
cGFjZVVSSSwKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHF1YWxpZmllZE5hbWUsCisgICAgICAg
IC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gRV9OT1RJTVBMOworCWlmICghbV9lbGVtZW50KQorCQlyZXR1cm4gRV9GQUlMOwor
CisJRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisJbV9lbGVtZW50LT5zZXRBdHRyaWJ1dGVOUyhBdG9t
aWNTdHJpbmcobmFtZXNwYWNlVVJJKSwgQXRvbWljU3RyaW5nKHF1YWxpZmllZE5hbWUpLCBBdG9t
aWNTdHJpbmcodmFsdWUpLCBlYyk7CisgICAgcmV0dXJuIGVjID8gRV9GQUlMIDogU19PSzsKIH0K
ICAgICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6cmVtb3ZlQXR0cmli
dXRlTlMoIAotICAgICAgICAvKiBbaW5dICovIEJTVFIgLypuYW1lc3BhY2VVUkkqLywKLSAgICAg
ICAgLyogW2luXSAqLyBCU1RSIC8qbG9jYWxOYW1lKi8pCisgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBuYW1lc3BhY2VVUkksCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUpCiB7Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsKKyAgICBpZiAo
IW1fZWxlbWVudCkKKwkJcmV0dXJuIEVfRkFJTDsKKworCUV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
CW1fZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlTlMoU3RyaW5nKG5hbWVzcGFjZVVSSSksIFN0cmlu
Zyhsb2NhbE5hbWUpLCBlYyk7CisgICAgcmV0dXJuIGVjID8gRV9GQUlMIDogU19PSzsKIH0KICAg
ICAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Z2V0QXR0cmlidXRlTm9k
ZU5TKCAKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qbmFtZXNwYWNlVVJJKi8sCi0gICAgICAg
IC8qIFtpbl0gKi8gQlNUUiAvKmxvY2FsTmFtZSovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01BdHRyKiogLypyZXN1bHQqLykKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVz
cGFjZVVSSSwKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0cioqIHJlc3VsdCkKIHsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gRV9OT1RJTVBMOworCWlmICghcmVzdWx0KQorCQlyZXR1cm4g
RV9QT0lOVEVSOworCisJaWYgKCFtX2VsZW1lbnQpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVz
dWx0ID0gRE9NQXR0cjo6Y3JlYXRlSW5zdGFuY2UobV9lbGVtZW50LT5nZXRBdHRyaWJ1dGVOb2Rl
TlMoU3RyaW5nKG5hbWVzcGFjZVVSSSksIFN0cmluZyhsb2NhbE5hbWUpKS5nZXQoKSk7CisJcmV0
dXJuICpyZXN1bHQgPyBTX09LIDogRV9GQUlMOwogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01FbGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlTlMoIAotICAgICAgICAvKiBbaW5d
ICovIElET01BdHRyKiAvKm5ld0F0dHIqLywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NQXR0cioqIC8qcmVzdWx0Ki8pCisgICAgICAgIC8qIFtpbl0gKi8gSURPTUF0dHIqIG5ld0F0
dHIsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIqKiByZXN1bHQpCiB7Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9USU1QTDsKKwlpZiAoIXJl
c3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9lbGVtZW50KQorCQlyZXR1cm4g
RV9GQUlMOworCisJQ09NUHRyPERPTUF0dHI+IGRvbU5ld0F0dHIoUXVlcnksIG5ld0F0dHIpOwor
CWlmICghZG9tTmV3QXR0cikKKwkJcmV0dXJuIEVfRkFJTDsKKworCUV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworCSpyZXN1bHQgPSBET01BdHRyOjpjcmVhdGVJbnN0YW5jZShtX2VsZW1lbnQtPnNldEF0
dHJpYnV0ZU5vZGVOUyhkb21OZXdBdHRyLT5hdHRyKCksIGVjKS5nZXQoKSk7CisJcmV0dXJuICpy
ZXN1bHQgPyBTX09LIDogRV9GQUlMOwogfQogICAgIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01FbGVtZW50OjpnZXRFbGVtZW50c0J5VGFnTmFtZU5TKCAKLSAgICAgICAgLyogW2luXSAq
LyBCU1RSIC8qbmFtZXNwYWNlVVJJKi8sCi0gICAgICAgIC8qIFtpbl0gKi8gQlNUUiAvKmxvY2Fs
TmFtZSovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCoqIC8qcmVz
dWx0Ki8pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEVfTk9USU1Q
TDsKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKKyAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGxvY2FsTmFtZSwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9k
ZUxpc3QqKiByZXN1bHQpCit7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisK
KwlpZiAoIW1fZWxlbWVudCkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBET01Ob2Rl
TGlzdDo6Y3JlYXRlSW5zdGFuY2UobV9lbGVtZW50LT5nZXRFbGVtZW50c0J5VGFnTmFtZU5TKAor
CQlBdG9taWNTdHJpbmcobmFtZXNwYWNlVVJJKSwgU3RyaW5nKGxvY2FsTmFtZSkpLmdldCgpKTsK
KwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAgICAgCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIERPTUVsZW1lbnQ6Omhhc0F0dHJpYnV0ZSggCi0gICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiAvKm5hbWUqLywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiAvKnJl
c3VsdCovKQorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKKyAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIEVfTk9USU1QTDsKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsK
KworCWlmICghbV9lbGVtZW50KQorCQlyZXR1cm4gRV9GQUlMOworCisJKnJlc3VsdCA9IG1fZWxl
bWVudC0+aGFzQXR0cmlidXRlKFN0cmluZyhuYW1lKSk7CisJcmV0dXJuIFNfT0s7CiB9CiAgICAg
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6Omhhc0F0dHJpYnV0ZU5TKCAK
LSAgICAgICAgLyogW2luXSAqLyBCU1RSIC8qbmFtZXNwYWNlVVJJKi8sCi0gICAgICAgIC8qIFtp
bl0gKi8gQlNUUiAvKmxvY2FsTmFtZSovLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wqIC8qcmVzdWx0Ki8pCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCisg
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCogcmVzdWx0KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBFX05PVElNUEw7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisKKwlp
ZiAoIW1fZWxlbWVudCkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBtX2VsZW1lbnQt
Pmhhc0F0dHJpYnV0ZU5TKFN0cmluZyhuYW1lc3BhY2VVUkkpLCBTdHJpbmcobG9jYWxOYW1lKSk7
CisJcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVu
dDo6Zm9jdXMoIHZvaWQpCkBAIC0xMDQxLDcgKzE0MTIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUVsZW1lbnQ6OmJsCiAKIC8vIElET01FbGVtZW50UHJpdmF0ZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSFJFU1VM
VCBET01FbGVtZW50Ojpjb3JlRWxlbWVudCh2b2lkICoqZWxlbWVudCkKK0hSRVNVTFQgRE9NRWxl
bWVudDo6Y29yZUVsZW1lbnQodm9pZCoqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX2VsZW1lbnQp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xMDUwLDggKzE0MjEsOCBAQCBIUkVTVUxUIERP
TUVsZW1lbnQ6OmNvcmVFbGVtZW50KHZvaWQgKiplCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NRWxlbWVudDo6aXNFcXVhbCggCi0gICAgLyogW2luXSAqLyBJRE9NRWxlbWVudCAq
b3RoZXIsCi0gICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpCisgICAgLyogW2lu
XSAqLyBJRE9NRWxlbWVudCogb3RoZXIsCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBy
ZXN1bHQpCiB7CiAgICAgKnJlc3VsdCA9IEZBTFNFOwogCkBAIC0xMDc0LDggKzE0NDUsMTEgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjppcwogfQogCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OmlzRm9jdXNlZCggCi0gICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MICpyZXN1bHQpCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1
bHQpCiB7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisKICAgICBpZiAoIW1f
ZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtMTE3Miw2ICsxNTQ2LDggQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpzdAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01FbGVtZW50OjpvZmZzZXRMZWZ0KCAKICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIGludCogcmVzdWx0KQogeworCWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOwog
ICAgIGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC0xMTgyLDcg
KzE1NTgsOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6Om9mCiBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6Om9mZnNldFRvcCggCiAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCkKIHsKLSAgICBpZiAoIW1fZWxlbWVudCkKKwlpZiAo
IXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKwlpZiAoIW1fZWxlbWVudCkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAogICAgICpyZXN1bHQgPSBtX2VsZW1lbnQtPm9mZnNldFRvcCgpOwpA
QCAtMTE5Miw2ICsxNTcwLDggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50
OjpvZgogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpvZmZzZXRXaWR0aCgg
CiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCkKIHsKKwlpZiAoIXJlc3VsdCkK
KwkJcmV0dXJuIEVfUE9JTlRFUjsKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIApAQCAtMTIwMiw2ICsxNTgyLDggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01FbGVtZW50OjpvZgogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50Ojpv
ZmZzZXRIZWlnaHQoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiByZXN1bHQpCiB7CisJ
aWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTEyMTAsMTYgKzE1OTIsMjMgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBET01FbGVtZW50OjpvZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUVsZW1lbnQ6Om9mZnNldFBhcmVudCggCi0gICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NRWxlbWVudCoqIC8qcmVzdWx0Ki8pCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
RWxlbWVudCoqIHJlc3VsdCkKIHsKLSAgICAvLyBGSVhNRQotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisgICAgaWYgKCFyZXN1bHQpCisJCXJldHVybiBF
X1BPSU5URVI7CisKKwlpZiAoIW1fZWxlbWVudCkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1
bHQgPSBET01FbGVtZW50OjpjcmVhdGVJbnN0YW5jZShtX2VsZW1lbnQtPm9mZnNldFBhcmVudCgp
KTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7CiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Y2xpZW50V2lkdGgoIAogICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gaW50KiByZXN1bHQpCiB7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7
CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTEyMzAs
NiArMTYxOSw4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Y2wKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6Y2xpZW50SGVpZ2h0KCAKICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0KQogeworCWlmICghcmVzdWx0KQorCQlyZXR1
cm4gRV9QT0lOVEVSOwogICAgIGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCkBAIC0xMjQwLDYgKzE2MzEsOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVs
ZW1lbnQ6OmNsCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNjcm9sbExl
ZnQoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiByZXN1bHQpCiB7CisJaWYgKCFyZXN1
bHQpCisJCXJldHVybiBFX1BPSU5URVI7CiAgICAgaWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKQEAgLTEyNDgsMTYgKzE2NDEsMjAgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01FbGVtZW50OjpzYwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TUVsZW1lbnQ6OnNldFNjcm9sbExlZnQoIAotICAgIC8qIFtpbl0gKi8gaW50IC8qbmV3U2Nyb2xs
TGVmdCovKQorICAgIC8qIFtpbl0gKi8gaW50IG5ld1Njcm9sbExlZnQpCiB7Ci0gICAgLy8gRklY
TUUKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRV9OT1RJTVBMOworICAg
IGlmICghbV9lbGVtZW50KQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisJbV9lbGVtZW50LT5z
ZXRTY3JvbGxMZWZ0KG5ld1Njcm9sbExlZnQpOworCXJldHVybiBTX09LOwogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNjcm9sbFRvcCggCiAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBpbnQqIHJlc3VsdCkKIHsKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9J
TlRFUjsKICAgICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAt
MTI2NiwxNiArMTY2MywyMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6
OnNjCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVudDo6c2V0U2Nyb2xs
VG9wKCAKLSAgICAvKiBbaW5dICovIGludCAvKm5ld1Njcm9sbFRvcCovKQorICAgIC8qIFtpbl0g
Ki8gaW50IG5ld1Njcm9sbFRvcCkKIHsKLSAgICAvLyBGSVhNRQotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBFX05PVElNUEw7CisgICAgaWYgKCFtX2VsZW1lbnQpCisgICAg
ICAgIHJldHVybiBFX0ZBSUw7CisKKwltX2VsZW1lbnQtPnNldFNjcm9sbFRvcChuZXdTY3JvbGxU
b3ApOworCXJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVs
ZW1lbnQ6OnNjcm9sbFdpZHRoKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0
KQogeworCWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOwogICAgIGlmICghbV9lbGVt
ZW50KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC0xMjg2LDYgKzE2ODcsOCBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnNjCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERPTUVsZW1lbnQ6OnNjcm9sbEhlaWdodCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBpbnQqIHJlc3VsdCkKIHsKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKICAg
ICBpZiAoIW1fZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtMTM2NCwzICsx
NzY3LDk4OCBAQCBJRE9NRWxlbWVudCogRE9NRWxlbWVudDo6Y3JlYXRlSW5zdGFuY2UoCiAKICAg
ICByZXR1cm4gZG9tRWxlbWVudDsKIH0KKworCisvLyBET01DaGFyYWN0ZXJEYXRhIC0gSVVua25v
d24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NQ2hhcmFjdGVyRGF0YTo6UXVlcnlJbnRlcmZhY2Uo
UkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCit7CisgICAgKnBwdk9iamVjdCA9IDA7Cisg
ICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JRE9NQ2hhcmFjdGVyRGF0YSkpCisgICAgICAg
ICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9NQ2hhcmFjdGVyRGF0YSo+KHRoaXMpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIERPTU5vZGU6OlF1ZXJ5SW50ZXJmYWNlKHJpaWQsIHBwdk9i
amVjdCk7CisKKyAgICBBZGRSZWYoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworLy8gRE9NQ2hh
cmFjdGVyRGF0YSAtIElET01DaGFyYWN0ZXJEYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUNoYXJhY3RlckRh
dGE6OmRhdGEoIAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQoreworCWlm
ICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX2NoYXJhY3RlckRhdGEp
CisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gQlN0cmluZyhtX2NoYXJhY3RlckRhdGEt
PmRhdGEoKSkucmVsZWFzZSgpOworCXJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKK30K
KworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01DaGFyYWN0ZXJEYXRhOjpzZXREYXRhKCAK
KwkvKiBbaW5dICovIEJTVFIgZGF0YSkKK3sKKwlpZiAoIW1fY2hhcmFjdGVyRGF0YSkKKwkJcmV0
dXJuIEVfRkFJTDsKKworCUV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCW1fY2hhcmFjdGVyRGF0YS0+
c2V0RGF0YShTdHJpbmcoZGF0YSksIGVjKTsKKyAgICByZXR1cm4gZWMgPyBFX0ZBSUwgOiBTX09L
OworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUNoYXJhY3RlckRhdGE6Omxlbmd0
aCggCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBVSU5UKiByZXN1bHQpCit7CisJaWYgKCFyZXN1
bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisKKwlpZiAoIW1fY2hhcmFjdGVyRGF0YSkKKwkJcmV0
dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBtX2NoYXJhY3RlckRhdGEtPmxlbmd0aCgpOworCXJl
dHVybiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUNoYXJhY3RlckRh
dGE6OnN1YnN0cmluZ0RhdGEoIAorICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisgICAgLyog
W2luXSAqLyBVSU5UIGNvdW50LAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0
KQoreworCWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX2NoYXJh
Y3RlckRhdGEpCisJCXJldHVybiBFX0ZBSUw7CisKKwlFeGNlcHRpb25Db2RlIGVjID0gMDsKKwkq
cmVzdWx0ID0gQlN0cmluZyhtX2NoYXJhY3RlckRhdGEtPnN1YnN0cmluZ0RhdGEob2Zmc2V0LCBj
b3VudCwgZWMpKS5yZWxlYXNlKCk7CisJcmV0dXJuICpyZXN1bHQgPyBTX09LIDogRV9GQUlMOwor
fQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUNoYXJhY3RlckRhdGE6OmFwcGVuZERh
dGEoIAorICAgIC8qIFtpbl0gKi8gQlNUUiBhcmcpCit7CisJaWYgKCFtX2NoYXJhY3RlckRhdGEp
CisJCXJldHVybiBFX0ZBSUw7CisKKwlFeGNlcHRpb25Db2RlIGVjID0gMDsKKwltX2NoYXJhY3Rl
ckRhdGEtPmFwcGVuZERhdGEoU3RyaW5nKGFyZyksIGVjKTsKKyAgICByZXR1cm4gZWMgPyBFX0ZB
SUwgOiBTX09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUNoYXJhY3RlckRh
dGE6Omluc2VydERhdGEoIAorICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisgICAgLyogW2lu
XSAqLyBCU1RSIGFyZykKK3sKKwlpZiAoIW1fY2hhcmFjdGVyRGF0YSkKKwkJcmV0dXJuIEVfRkFJ
TDsKKworCUV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCW1fY2hhcmFjdGVyRGF0YS0+aW5zZXJ0RGF0
YShvZmZzZXQsIFN0cmluZyhhcmcpLCBlYyk7CisgICAgcmV0dXJuIGVjID8gRV9GQUlMIDogU19P
SzsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01DaGFyYWN0ZXJEYXRhOjpkZWxl
dGVEYXRhKCAKKyAgICAvKiBbaW5dICovIFVJTlQgb2Zmc2V0LAorICAgIC8qIFtpbl0gKi8gVUlO
VCBjb3VudCkKK3sKKwlpZiAoIW1fY2hhcmFjdGVyRGF0YSkKKwkJcmV0dXJuIEVfRkFJTDsKKwor
CUV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCW1fY2hhcmFjdGVyRGF0YS0+ZGVsZXRlRGF0YShvZmZz
ZXQsIGNvdW50LCBlYyk7CisgICAgcmV0dXJuIGVjID8gRV9GQUlMIDogU19PSzsKK30KKworSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01DaGFyYWN0ZXJEYXRhOjpyZXBsYWNlRGF0YSggCisg
ICAgLyogW2luXSAqLyBVSU5UIG9mZnNldCwKKyAgICAvKiBbaW5dICovIFVJTlQgY291bnQsCisg
ICAgLyogW2luXSAqLyBCU1RSIGFyZykKK3sKKwlpZiAoIW1fY2hhcmFjdGVyRGF0YSkKKwkJcmV0
dXJuIEVfRkFJTDsKKworCUV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCW1fY2hhcmFjdGVyRGF0YS0+
cmVwbGFjZURhdGEob2Zmc2V0LCBjb3VudCwgU3RyaW5nKGFyZyksIGVjKTsKKyAgICByZXR1cm4g
ZWMgPyBFX0ZBSUwgOiBTX09LOworfQorCisvLyBET01DaGFyYWN0ZXJEYXRhIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUNo
YXJhY3RlckRhdGE6OkRPTUNoYXJhY3RlckRhdGEoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSogZGF0
YSkKKzogRE9NTm9kZShyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihkYXRhKSkKKywg
bV9jaGFyYWN0ZXJEYXRhKGRhdGEpCit7Cit9CisKK0RPTUNoYXJhY3RlckRhdGE6On5ET01DaGFy
YWN0ZXJEYXRhKCkKK3sKK30KKworSURPTUNoYXJhY3RlckRhdGEqIERPTUNoYXJhY3RlckRhdGE6
OmNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkNoYXJhY3RlckRhdGEqIGRhdGEpCit7CisJaWYgKCFk
YXRhKQorCQlyZXR1cm4gMDsKKworCUhSRVNVTFQgaHI7CisJSURPTUNoYXJhY3RlckRhdGEqIGRv
bUNoYXJhY3RlckRhdGEgPSAwOworCURPTUNoYXJhY3RlckRhdGEqIG5ld0NoYXJhY3RlckRhdGEg
PSBuZXcgRE9NQ2hhcmFjdGVyRGF0YShkYXRhKTsKKwlociA9IG5ld0NoYXJhY3RlckRhdGEtPlF1
ZXJ5SW50ZXJmYWNlKElJRF9JRE9NQ2hhcmFjdGVyRGF0YSwgKHZvaWQqKikmZG9tQ2hhcmFjdGVy
RGF0YSk7CisKKwlpZiAoRkFJTEVEKGhyKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gZG9tQ2hh
cmFjdGVyRGF0YTsKK30KKworCisvLyBET01UZXh0IC0gSVVua25vd24gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgRE9NVGV4dDo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQq
KiBwcHZPYmplY3QpCit7CisgICAgKnBwdk9iamVjdCA9IDA7CisgICAgaWYgKElzRXF1YWxHVUlE
KHJpaWQsIElJRF9JRE9NVGV4dCkpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJ
RE9NVGV4dCo+KHRoaXMpOworICAgIGVsc2UKKwkJcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OlF1
ZXJ5SW50ZXJmYWNlKHJpaWQsIHBwdk9iamVjdCk7CisKKyAgICBBZGRSZWYoKTsKKyAgICByZXR1
cm4gU19PSzsKK30KKworLy8gRE9NVGV4dCAtIElET01UZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERPTVRleHQ6OnNwbGl0VGV4dCggCisgICAgLyogW2luXSAqLyBVSU5UIG9mZnNl
dCwKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01UZXh0KiogcmVzdWx0KQoreworCWlmICgh
cmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX3RleHQpCisJCXJldHVybiBF
X0ZBSUw7CisKKwlFeGNlcHRpb25Db2RlIGVjID0gMDsKKwkqcmVzdWx0ID0gRE9NVGV4dDo6Y3Jl
YXRlSW5zdGFuY2UobV90ZXh0LT5zcGxpdFRleHQob2Zmc2V0LCBlYykuZ2V0KCkpOworCXJldHVy
biAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKK30KKyAgICAKKy8vIERPTVRleHQgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworRE9NVGV4dDo6RE9NVGV4dChXZWJDb3JlOjpUZXh0KiB0ZXh0KQorOiBET01DaGFyYWN0
ZXJEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSo+KHRleHQpKQor
LCBtX3RleHQodGV4dCkKK3sKK30KKworRE9NVGV4dDo6fkRPTVRleHQoKQoreworfQorCitJRE9N
VGV4dCAqIERPTVRleHQ6OmNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OlRleHQqIHRleHQpCit7CisJ
aWYgKCF0ZXh0KQorCQlyZXR1cm4gMDsKKworCUhSRVNVTFQgaHI7CisJSURPTVRleHQqIGRvbVRl
eHQgPSAwOworCURPTVRleHQqIG5ld1RleHQgPSBuZXcgRE9NVGV4dCh0ZXh0KTsKKwlociA9IG5l
d1RleHQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NVGV4dCwgKHZvaWQqKikmZG9tVGV4dCk7CisK
KwlpZiAoRkFJTEVEKGhyKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gZG9tVGV4dDsKK30KKwor
CisvLyBET01OYW1lZE5vZGVNYXAgLSBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
TmFtZWROb2RlTWFwOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVj
dCkKK3sKKyAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlE
X0lET01OYW1lZE5vZGVNYXApKQorICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SURP
TU5hbWVkTm9kZU1hcCo+KHRoaXMpOworICAgIGVsc2UKKwkJcmV0dXJuIERPTU9iamVjdDo6UXVl
cnlJbnRlcmZhY2UocmlpZCwgcHB2T2JqZWN0KTsKKworICAgIEFkZFJlZigpOworICAgIHJldHVy
biBTX09LOworfQorCisvLyBET01OYW1lZE5vZGVNYXAgLSBJRE9NTmFtZWROb2RlTWFwIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgRE9NTmFtZWROb2RlTWFwOjpnZXROYW1lZEl0ZW0oIAorLyogW2luXSAqLyBCU1RS
IG5hbWUsCisvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KQoreworCWlmICgh
cmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCQorCWlmICghbV9uYW1lZE5vZGVNYXApCisJ
CXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gRE9NTm9kZTo6Y3JlYXRlSW5zdGFuY2UobV9u
YW1lZE5vZGVNYXAtPmdldE5hbWVkSXRlbShTdHJpbmcobmFtZSkpLmdldCgpKTsKKwlyZXR1cm4g
KnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NTmFtZWROb2RlTWFwOjpzZXROYW1lZEl0ZW0oIAorICAgIC8qIFtpbl0gKi8gSURPTU5vZGUq
IGFyZywKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KQoreworCWlm
ICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCQorCSpyZXN1bHQgPSAwOworCisJaWYg
KCFtX25hbWVkTm9kZU1hcCkKKwkJcmV0dXJuIEVfRkFJTDsKKworCUNPTVB0cjxET01Ob2RlPiBk
b21Ob2RlKFF1ZXJ5LCBhcmcpOworCWlmICghZG9tTm9kZSkKKwkJcmV0dXJuIEVfRkFJTDsKKwor
CUV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCSpyZXN1bHQgPSBET01Ob2RlOjpjcmVhdGVJbnN0YW5j
ZShtX25hbWVkTm9kZU1hcC0+c2V0TmFtZWRJdGVtKGRvbU5vZGUtPm5vZGUoKSwgZWMpLmdldCgp
KTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7Cit9CisKK0hSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRE9NTmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0oIAorICAgIC8qIFtp
bl0gKi8gQlNUUiBuYW1lLAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1
bHQpCit7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisJCisJKnJlc3VsdCA9
IDA7CisKKwlpZiAoIW1fbmFtZWROb2RlTWFwKQorCQlyZXR1cm4gRV9GQUlMOworCisJRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisJKnJlc3VsdCA9IERPTU5vZGU6OmNyZWF0ZUluc3RhbmNlKG1fbmFt
ZWROb2RlTWFwLT5yZW1vdmVOYW1lZEl0ZW0oU3RyaW5nKG5hbWUpLCBlYykuZ2V0KCkpOworCXJl
dHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBET01OYW1lZE5vZGVNYXA6Oml0ZW0oIAorICAgIC8qIFtpbl0gKi8gVUlOVCBpbmRleCwK
KyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KQoreworCWlmICghcmVz
dWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCQorCSpyZXN1bHQgPSAwOworCisJaWYgKCFtX25h
bWVkTm9kZU1hcCkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBET01Ob2RlOjpjcmVh
dGVJbnN0YW5jZShtX25hbWVkTm9kZU1hcC0+aXRlbShpbmRleCkuZ2V0KCkpOworCXJldHVybiAq
cmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBE
T01OYW1lZE5vZGVNYXA6Omxlbmd0aCggCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBVSU5UKiBy
ZXN1bHQpCit7CisJaWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisJCisJKnJlc3Vs
dCA9IDA7CisKKwlpZiAoIW1fbmFtZWROb2RlTWFwKQorCQlyZXR1cm4gRV9GQUlMOworCisJKnJl
c3VsdCA9IG1fbmFtZWROb2RlTWFwLT5sZW5ndGgoKTsKKwlyZXR1cm4gU19PSzsKK30KKworSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01OYW1lZE5vZGVNYXA6OmdldE5hbWVkSXRlbU5TKCAK
KyAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAorICAgIC8qIFtpbl0gKi8gQlNUUiBs
b2NhbE5hbWUsCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkKK3sK
KwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKwkKKwkqcmVzdWx0ID0gMDsKKwor
CWlmICghbV9uYW1lZE5vZGVNYXApCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gRE9N
Tm9kZTo6Y3JlYXRlSW5zdGFuY2UobV9uYW1lZE5vZGVNYXAtPmdldE5hbWVkSXRlbU5TKAorCQlT
dHJpbmcobmFtZXNwYWNlVVJJKSwgU3RyaW5nKGxvY2FsTmFtZSkpLmdldCgpKTsKKwlyZXR1cm4g
KnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NTmFtZWROb2RlTWFwOjpzZXROYW1lZEl0ZW1OUyggCisgICAgLyogW2luXSAqLyBJRE9NTm9k
ZSogYXJnLAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpCit7CisJ
aWYgKCFyZXN1bHQpCisJCXJldHVybiBFX1BPSU5URVI7CisJCisJKnJlc3VsdCA9IDA7CisKKwlp
ZiAoIW1fbmFtZWROb2RlTWFwKQorCQlyZXR1cm4gRV9GQUlMOworCisJQ09NUHRyPERPTU5vZGU+
IGRvbU5vZGUoUXVlcnksIGFyZyk7CisJaWYgKCFkb21Ob2RlKQorCQlyZXR1cm4gRV9GQUlMOwor
CisJRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisJKnJlc3VsdCA9IERPTU5vZGU6OmNyZWF0ZUluc3Rh
bmNlKG1fbmFtZWROb2RlTWFwLT5zZXROYW1lZEl0ZW1OUyhkb21Ob2RlLT5ub2RlKCksIGVjKS5n
ZXQoKSk7CisJcmV0dXJuICpyZXN1bHQgPyBTX09LIDogRV9GQUlMOworfQorCitIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERPTU5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtTlMoIAorICAg
IC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCisgICAgLyogW2luXSAqLyBCU1RSIGxvY2Fs
TmFtZSwKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KQoreworCWlm
ICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCQorCSpyZXN1bHQgPSAwOworCisJaWYg
KCFtX25hbWVkTm9kZU1hcCkKKwkJcmV0dXJuIEVfRkFJTDsKKworCUV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworCSpyZXN1bHQgPSBET01Ob2RlOjpjcmVhdGVJbnN0YW5jZShtX25hbWVkTm9kZU1hcC0+
cmVtb3ZlTmFtZWRJdGVtTlMoCisJCVN0cmluZyhuYW1lc3BhY2VVUkkpLCBTdHJpbmcobG9jYWxO
YW1lKSwgZWMpLmdldCgpKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7Cit9CisK
Ky8vIERPTU5hbWVkTm9kZU1hcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NTmFtZWROb2RlTWFwOjpET01OYW1lZE5vZGVN
YXAoV2ViQ29yZTo6TmFtZWROb2RlTWFwKiBuYW1lZE5vZGVNYXApCis6IG1fbmFtZWROb2RlTWFw
KG5hbWVkTm9kZU1hcCkKK3sKK30KKworRE9NTmFtZWROb2RlTWFwOjp+RE9NTmFtZWROb2RlTWFw
KCkKK3sKK30KKworSURPTU5hbWVkTm9kZU1hcCogRE9NTmFtZWROb2RlTWFwOjpjcmVhdGVJbnN0
YW5jZShXZWJDb3JlOjpOYW1lZE5vZGVNYXAqIG5hbWVkTm9kZU1hcCkKK3sKKwlpZiAoIW5hbWVk
Tm9kZU1hcCkKKwkJcmV0dXJuIDA7CisKKwlIUkVTVUxUIGhyOworCUlET01OYW1lZE5vZGVNYXAq
IGRvbU5hbWVkTm9kZU1hcCA9IDA7CisJRE9NTmFtZWROb2RlTWFwKiBuZXdOYW1lZE5vZGVNYXAg
PSBuZXcgRE9NTmFtZWROb2RlTWFwKG5hbWVkTm9kZU1hcCk7CisJaHIgPSBuZXdOYW1lZE5vZGVN
YXAtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NTmFtZWROb2RlTWFwLCAodm9pZCoqKSAmZG9tTmFt
ZWROb2RlTWFwKTsKKworCWlmIChGQUlMRUQoaHIpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBk
b21OYW1lZE5vZGVNYXA7Cit9CisKKworCisvLyBET01JbXBsZW1lbnRhdGlvbiAtIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSW1wbGVtZW50YXRpb246OlF1ZXJ5SW50ZXJmYWNlKFJF
RklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQoreworICAgICpwcHZPYmplY3QgPSAwOworICAg
IGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSURPTUltcGxlbWVudGF0aW9uKSkKKyAgICAgICAg
KnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElET01JbXBsZW1lbnRhdGlvbio+KHRoaXMpOworICAg
IGVsc2UKKwkJcmV0dXJuIERPTU9iamVjdDo6UXVlcnlJbnRlcmZhY2UocmlpZCwgcHB2T2JqZWN0
KTsKKworICAgIEFkZFJlZigpOworICAgIHJldHVybiBTX09LOworfQorCisvLyBET01JbXBsZW1l
bnRhdGlvbiAtIElET01JbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisgCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUltcGxlbWVudGF0aW9u
OjpoYXNGZWF0dXJlKCAKKwkvKiBbaW5dICovIEJTVFIgZmVhdHVyZSwKKwkvKiBbaW5dICovIEJT
VFIgdmVyc2lvbiwKKwkvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK3sKKwlpZiAo
IXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9pbXBsZW1lbnRhdGlvbikK
KwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBtX2ltcGxlbWVudGF0aW9uLT5oYXNGZWF0
dXJlKFN0cmluZyhmZWF0dXJlKSwgU3RyaW5nKHZlcnNpb24pKTsKKworCXJldHVybiBTX09LOwor
fQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVE
b2N1bWVudFR5cGUoIAorICAgIC8qIFtpbl0gKi8gQlNUUiBxdWFsaWZpZWROYW1lLAorICAgIC8q
IFtpbl0gKi8gQlNUUiBwdWJsaWNJZCwKKyAgICAvKiBbaW5dICovIEJTVFIgc3lzdGVtSWQsCisg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnRUeXBlKiogcmVzdWx0KQoreworCWlm
ICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX2ltcGxlbWVudGF0aW9u
KQorCQlyZXR1cm4gRV9GQUlMOworCisJRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisJKnJlc3VsdCA9
IERPTURvY3VtZW50VHlwZTo6Y3JlYXRlSW5zdGFuY2UobV9pbXBsZW1lbnRhdGlvbi0+Y3JlYXRl
RG9jdW1lbnRUeXBlKFN0cmluZyhxdWFsaWZpZWROYW1lKSwKKwkJU3RyaW5nKHB1YmxpY0lkKSwg
U3RyaW5nKHN5c3RlbUlkKSwgZWMpLmdldCgpKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBF
X0ZBSUw7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KCAKKyAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAorICAg
IC8qIFtpbl0gKi8gQlNUUiBxdWFsaWZpZWROYW1lLAorICAgIC8qIFtpbl0gKi8gSURPTURvY3Vt
ZW50VHlwZSogZG9jdHlwZSwKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCoq
IHJlc3VsdCkKK3sKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICgh
bV9pbXBsZW1lbnRhdGlvbikKKwkJcmV0dXJuIEVfRkFJTDsKKworCUNPTVB0cjxET01Eb2N1bWVu
dFR5cGU+IG5ld0RvY1R5cGUoUXVlcnksIGRvY3R5cGUpOworCisJRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CisJKnJlc3VsdCA9IERPTURvY3VtZW50OjpjcmVhdGVJbnN0YW5jZShtX2ltcGxlbWVudGF0
aW9uLT5jcmVhdGVEb2N1bWVudChTdHJpbmcobmFtZXNwYWNlVVJJKSwKKwkJU3RyaW5nKHF1YWxp
ZmllZE5hbWUpLCBuZXdEb2NUeXBlID8gbmV3RG9jVHlwZS0+ZG9jdW1lbnRUeXBlKCkgOiAwLCBl
YykuZ2V0KCkpOworCXJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKK30KKworLy8gRE9N
SW1wbGVtZW50YXRpb24gLSBET01JbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorCitET01JbXBsZW1lbnRhdGlvbjo6RE9NSW1wbGVtZW50YXRpb24o
V2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb24qIGltcGxlbWVudGF0aW9uKQorOiBtX2ltcGxlbWVu
dGF0aW9uKGltcGxlbWVudGF0aW9uKQoreworfQorCitET01JbXBsZW1lbnRhdGlvbjo6fkRPTUlt
cGxlbWVudGF0aW9uKCkKK3sKK30KKworSURPTUltcGxlbWVudGF0aW9uKiBET01JbXBsZW1lbnRh
dGlvbjo6Y3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6RE9NSW1wbGVtZW50YXRpb24qIGltcGxlbWVu
dGF0aW9uKQoreworCWlmICghaW1wbGVtZW50YXRpb24pCisJCXJldHVybiAwOworCisJSFJFU1VM
VCBocjsKKwlJRE9NSW1wbGVtZW50YXRpb24qIGRvbUltcGxlbWVudGF0aW9uID0gMDsKKwlET01J
bXBsZW1lbnRhdGlvbiogbmV3SW1wbGVtZW50YXRpb24gPSBuZXcgRE9NSW1wbGVtZW50YXRpb24o
aW1wbGVtZW50YXRpb24pOworCWhyID0gbmV3SW1wbGVtZW50YXRpb24tPlF1ZXJ5SW50ZXJmYWNl
KElJRF9JRE9NSW1wbGVtZW50YXRpb24sICh2b2lkICoqKSAmZG9tSW1wbGVtZW50YXRpb24pOwor
CisJaWYgKEZBSUxFRChocikpCisJCXJldHVybiAwOworCisJcmV0dXJuIGRvbUltcGxlbWVudGF0
aW9uOworfQorCisKKy8vIERPTUF0dHIgLSBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBET01BdHRyOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9i
amVjdCkKK3sKKyAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwg
SUlEX0lET01BdHRyKSkKKyAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElET01BdHRy
Kj4odGhpcyk7CisJZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0RPTUF0dHIpKQorCQkq
cHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8RE9NQXR0cio+KHRoaXMpOworICAgIGVsc2UKKwkJcmV0
dXJuIERPTU5vZGU6OlF1ZXJ5SW50ZXJmYWNlKHJpaWQsIHBwdk9iamVjdCk7CisKKyAgICBBZGRS
ZWYoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworLy8gRE9NQXR0ciAtIElET01BdHRyIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01BdHRyOjpuYW1lKCAKKyAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK3sKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9J
TlRFUjsKKworCWlmICghbV9hdHRyKQorCQlyZXR1cm4gRV9GQUlMOworCisJKnJlc3VsdCA9IEJT
dHJpbmcobV9hdHRyLT5uYW1lKCkpLnJlbGVhc2UoKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sg
OiBFX0ZBSUw7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NQXR0cjo6c3BlY2lm
aWVkKCAKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkKK3sKKwlpZiAoIXJl
c3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9hdHRyKQorCQlyZXR1cm4gRV9G
QUlMOworCisJKnJlc3VsdCA9IG1fYXR0ci0+c3BlY2lmaWVkKCk7CisJcmV0dXJuIFNfT0s7Cit9
CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NQXR0cjo6dmFsdWUoIAorICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogdmFsdWUpCit7CisJaWYgKCF2YWx1ZSkKKwkJcmV0dXJuIEVf
UE9JTlRFUjsKKworCWlmICghbV9hdHRyKQorCQlyZXR1cm4gRV9GQUlMOworCisJKnZhbHVlID0g
QlN0cmluZyhtX2F0dHItPnZhbHVlKCkpLnJlbGVhc2UoKTsKKwlyZXR1cm4gKnZhbHVlID8gU19P
SyA6IEVfRkFJTDsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01BdHRyOjpzZXRW
YWx1ZSggCisgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKQoreworCWlmICghbV9hdHRyKQorCQly
ZXR1cm4gRV9GQUlMOworCisJRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisJbV9hdHRyLT5zZXRWYWx1
ZShBdG9taWNTdHJpbmcodmFsdWUpLCBlYyk7CisKKyAgICByZXR1cm4gZWMgPyBFX0ZBSUwgOiBT
X09LOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUF0dHI6Om93bmVyRWxlbWVu
dCggCisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVudCoqIHJlc3VsdCkKK3sKKwlp
ZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9hdHRyKQorCQlyZXR1
cm4gRV9GQUlMOworCisJKnJlc3VsdCA9IERPTUVsZW1lbnQ6OmNyZWF0ZUluc3RhbmNlKG1fYXR0
ci0+b3duZXJFbGVtZW50KCkpOworCXJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKK30K
KworLy8gRE9NQXR0ciAtIERPTUF0dHIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01BdHRyOjpET01BdHRyKFdlYkNvcmU6OkF0
dHIqIGF0dHIpCis6IERPTU5vZGUocmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oYXR0
cikpCissIG1fYXR0cihhdHRyKQoreworfQorCitET01BdHRyOjp+RE9NQXR0cigpCit7Cit9CisK
K0lET01BdHRyKiBET01BdHRyOjpjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpBdHRyKiBhdHRyKQor
eworCWlmICghYXR0cikKKwkJcmV0dXJuIDA7CisKKwlIUkVTVUxUIGhyOworCUlET01BdHRyKiBk
b21BdHRyID0gMDsKKwlET01BdHRyKiBuZXdBdHRyID0gbmV3IERPTUF0dHIoYXR0cik7CisJaHIg
PSBuZXdBdHRyLT5RdWVyeUludGVyZmFjZShJSURfSURPTUF0dHIsICh2b2lkICoqKSAmZG9tQXR0
cik7CisJCisJaWYgKEZBSUxFRChocikpCisJCXJldHVybiAwOworCisJcmV0dXJuIGRvbUF0dHI7
Cit9CisKKworLy8gRE9NQ29tbWVudCAtIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIERPTUNvbW1lbnQ6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2Jq
ZWN0KQoreworICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJ
SURfSURPTUNvbW1lbnQpKQorICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SURPTUNv
bW1lbnQqPih0aGlzKTsKKyAgICBlbHNlCisJCXJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpRdWVy
eUludGVyZmFjZShyaWlkLCBwcHZPYmplY3QpOworCisgICAgQWRkUmVmKCk7CisgICAgcmV0dXJu
IFNfT0s7Cit9CisgICAgCisvLyBET01Db21tZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUNvbW1lbnQ6OkRP
TUNvbW1lbnQoV2ViQ29yZTo6Q29tbWVudCogY29tbWVudCkKKzogRE9NQ2hhcmFjdGVyRGF0YShy
ZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNvbW1lbnQqPihjb21tZW50KSkKKywgbV9jb21tZW50
KGNvbW1lbnQpCit7Cit9CisKK0RPTUNvbW1lbnQ6On5ET01Db21tZW50KCkKK3sKK30KKworSURP
TUNvbW1lbnQqIERPTUNvbW1lbnQ6OmNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkNvbW1lbnQqIGNv
bW1lbnQpCit7CisJaWYgKCFjb21tZW50KQorCQlyZXR1cm4gMDsKKworCUhSRVNVTFQgaHI7CisJ
SURPTUNvbW1lbnQqIGRvbUNvbW1lbnQgPSAwOworCURPTUNvbW1lbnQqIG5ld0NvbW1lbnQgPSBu
ZXcgRE9NQ29tbWVudChjb21tZW50KTsKKwlociA9IG5ld0NvbW1lbnQtPlF1ZXJ5SW50ZXJmYWNl
KElJRF9JRE9NQ29tbWVudCwgKHZvaWQqKikmZG9tQ29tbWVudCk7CisKKwlpZiAoRkFJTEVEKGhy
KSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gZG9tQ29tbWVudDsKK30KKworLy8gRE9NQ0RBVEFT
ZWN0aW9uIC0gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUNEQVRBU2VjdGlvbjo6
UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCit7CisgICAgKnBw
dk9iamVjdCA9IDA7CisgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JRE9NQ0RBVEFTZWN0
aW9uKSkKKyAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElET01DREFUQVNlY3Rpb24q
Pih0aGlzKTsKKyAgICBlbHNlCisJCXJldHVybiBET01UZXh0OjpRdWVyeUludGVyZmFjZShyaWlk
LCBwcHZPYmplY3QpOworCisgICAgQWRkUmVmKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKKy8v
IERPTUNEQVRBU2VjdGlvbiAtIERPTUNEQVRBU2VjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE9NQ0RBVEFTZWN0aW9uOjpET01DREFUQVNlY3Rpb24o
V2ViQ29yZTo6Q0RBVEFTZWN0aW9uKiBjZGF0YVNlY3Rpb24pCis6IERPTVRleHQocmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpUZXh0Kj4oY2RhdGFTZWN0aW9uKSkKKywgbV9jZGF0YVNlY3Rpb24o
Y2RhdGFTZWN0aW9uKQoreworfQorCitET01DREFUQVNlY3Rpb246On5ET01DREFUQVNlY3Rpb24o
KQoreworfQorCitJRE9NQ0RBVEFTZWN0aW9uKiBET01DREFUQVNlY3Rpb246OmNyZWF0ZUluc3Rh
bmNlKFdlYkNvcmU6OkNEQVRBU2VjdGlvbiogY2RhdGFTZWN0aW9uKQoreworCWlmICghY2RhdGFT
ZWN0aW9uKQorCQlyZXR1cm4gMDsKKworCUhSRVNVTFQgaHI7CisJSURPTUNEQVRBU2VjdGlvbiog
ZG9tQ0RBVEFTZWN0aW9uID0gMDsKKwlET01DREFUQVNlY3Rpb24qIG5ld0NEQVRBU2VjdGlvbiA9
IG5ldyBET01DREFUQVNlY3Rpb24oY2RhdGFTZWN0aW9uKTsKKwlociA9IG5ld0NEQVRBU2VjdGlv
bi0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01DREFUQVNlY3Rpb24sICh2b2lkKiopICZkb21DREFU
QVNlY3Rpb24pOworCisJaWYgKEZBSUxFRChocikpCisJCXJldHVybiAwOworCisJcmV0dXJuIGRv
bUNEQVRBU2VjdGlvbjsKK30KKworCisvLyBET01Eb2N1bWVudEZyYWdtZW50IC0gSVVua25vd24g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnRGcmFnbWVudDo6UXVlcnlJbnRlcmZhY2UoUkVG
SUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCit7CisgICAgKnBwdk9iamVjdCA9IDA7CisgICAg
aWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JRE9NRG9jdW1lbnRGcmFnbWVudCkpCisgICAgICAg
ICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9NRG9jdW1lbnRGcmFnbWVudCo+KHRoaXMpOwor
ICAgIGVsc2UKKwkJcmV0dXJuIERPTU5vZGU6OlF1ZXJ5SW50ZXJmYWNlKHJpaWQsIHBwdk9iamVj
dCk7CisKKyAgICBBZGRSZWYoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworLy8gRE9NRG9jdW1l
bnRGcmFnbWVudCAtIERPTURvY3VtZW50RnJhZ21lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitET01Eb2N1bWVudEZyYWdtZW50OjpET01Eb2N1bWVudEZyYWdtZW50KFdl
YkNvcmU6OkRvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50RnJhZ21lbnQpCis6IERPTU5vZGUocmVp
bnRlcnByZXRfY2FzdDxXZWJDb3JlOjpOb2RlKj4oZG9jdW1lbnRGcmFnbWVudCkpCissIG1fZG9j
dW1lbnRGcmFnbWVudChkb2N1bWVudEZyYWdtZW50KQoreworfQorCitET01Eb2N1bWVudEZyYWdt
ZW50Ojp+RE9NRG9jdW1lbnRGcmFnbWVudCgpCit7Cit9CisKK0lET01Eb2N1bWVudEZyYWdtZW50
KiBET01Eb2N1bWVudEZyYWdtZW50OjpjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpEb2N1bWVudEZy
YWdtZW50KiBkb2N1bWVudEZyYWdtZW50KQoreworCWlmICghZG9jdW1lbnRGcmFnbWVudCkKKwkJ
cmV0dXJuIDA7CisKKwlIUkVTVUxUIGhyOworCUlET01Eb2N1bWVudEZyYWdtZW50KiBkb21Eb2N1
bWVudEZyYWdtZW50ID0gMDsKKwlET01Eb2N1bWVudEZyYWdtZW50KiBuZXdEb2N1bWVudEZyYWdt
ZW50ID0gbmV3IERPTURvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnRGcmFnbWVudCk7CisJaHIgPSBu
ZXdEb2N1bWVudEZyYWdtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTURvY3VtZW50RnJhZ21l
bnQsICh2b2lkKiopICZkb21Eb2N1bWVudEZyYWdtZW50KTsKKworCWlmIChGQUlMRUQoaHIpKQor
CQlyZXR1cm4gMDsKKworCXJldHVybiBkb21Eb2N1bWVudEZyYWdtZW50OworfQorCisKKy8vIERP
TURvY3VtZW50VHlwZSAtIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVu
dFR5cGU6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQorewor
ICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSURPTURv
Y3VtZW50VHlwZSkpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9NRG9jdW1l
bnRUeXBlKj4odGhpcyk7CisJZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0RPTURvY3Vt
ZW50VHlwZSkpCisJCSpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxET01Eb2N1bWVudFR5cGUqPih0
aGlzKTsKKyAgICBlbHNlCisJCXJldHVybiBET01Ob2RlOjpRdWVyeUludGVyZmFjZShyaWlkLCBw
cHZPYmplY3QpOworCisgICAgQWRkUmVmKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKKy8vIERP
TURvY3VtZW50VHlwZSAtIElET01Eb2N1bWVudFR5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1bWVu
dFR5cGU6Om5hbWUoIAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KQorewor
CWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX2RvY3VtZW50VHlw
ZSkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBCU3RyaW5nKG1fZG9jdW1lbnRUeXBl
LT5uYW1lKCkpLnJlbGVhc2UoKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNfT0sgOiBFX0ZBSUw7Cit9
CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1lbnRUeXBlOjplbnRpdGllcygg
CisgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwKiogcmVzdWx0KQorewor
CWlmICghcmVzdWx0KQorCQlyZXR1cm4gRV9QT0lOVEVSOworCisJaWYgKCFtX2RvY3VtZW50VHlw
ZSkKKwkJcmV0dXJuIEVfRkFJTDsKKworCSpyZXN1bHQgPSBET01OYW1lZE5vZGVNYXA6OmNyZWF0
ZUluc3RhbmNlKG1fZG9jdW1lbnRUeXBlLT5lbnRpdGllcygpKTsKKwlyZXR1cm4gKnJlc3VsdCA/
IFNfT0sgOiBFX0ZBSUw7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRG9jdW1l
bnRUeXBlOjpub3RhdGlvbnMoIAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5hbWVkTm9k
ZU1hcCoqIHJlc3VsdCkKK3sKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKwor
CWlmICghbV9kb2N1bWVudFR5cGUpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gRE9N
TmFtZWROb2RlTWFwOjpjcmVhdGVJbnN0YW5jZShtX2RvY3VtZW50VHlwZS0+bm90YXRpb25zKCkp
OworCXJldHVybiAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKK30KKworSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBET01Eb2N1bWVudFR5cGU6OnB1YmxpY0lkKCAKKyAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHJlc3VsdCkKK3sKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRF
UjsKKworCWlmICghbV9kb2N1bWVudFR5cGUpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0
ID0gQlN0cmluZyhtX2RvY3VtZW50VHlwZS0+cHVibGljSWQoKSkucmVsZWFzZSgpOworCXJldHVy
biAqcmVzdWx0ID8gU19PSyA6IEVfRkFJTDsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBET01Eb2N1bWVudFR5cGU6OnN5c3RlbUlkKCAKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIqIHJlc3VsdCkKK3sKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlm
ICghbV9kb2N1bWVudFR5cGUpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gQlN0cmlu
ZyhtX2RvY3VtZW50VHlwZS0+c3lzdGVtSWQoKSkucmVsZWFzZSgpOworCXJldHVybiAqcmVzdWx0
ID8gU19PSyA6IEVfRkFJTDsKK30KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01Eb2N1
bWVudFR5cGU6OmludGVybmFsU3Vic2V0KCAKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIq
IHJlc3VsdCkKK3sKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICgh
bV9kb2N1bWVudFR5cGUpCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gQlN0cmluZyht
X2RvY3VtZW50VHlwZS0+aW50ZXJuYWxTdWJzZXQoKSkucmVsZWFzZSgpOworCXJldHVybiAqcmVz
dWx0ID8gU19PSyA6IEVfRkFJTDsKK30KKworLy8gRE9NRG9jdW1lbnRUeXBlIC0gRE9NRG9jdW1l
bnRUeXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01E
b2N1bWVudFR5cGU6OkRPTURvY3VtZW50VHlwZShXZWJDb3JlOjpEb2N1bWVudFR5cGUqIGRvY3Vt
ZW50VHlwZSkKKzogRE9NTm9kZShyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihkb2N1
bWVudFR5cGUpKQorLCBtX2RvY3VtZW50VHlwZShkb2N1bWVudFR5cGUpCit7Cit9CisKK0RPTURv
Y3VtZW50VHlwZTo6fkRPTURvY3VtZW50VHlwZSgpCit7Cit9CisKK0lET01Eb2N1bWVudFR5cGUq
IERPTURvY3VtZW50VHlwZTo6Y3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6RG9jdW1lbnRUeXBlKiBk
b2N1bWVudFR5cGUpCit7CisJaWYgKCFkb2N1bWVudFR5cGUpCisJCXJldHVybiAwOworCisJSFJF
U1VMVCBocjsKKwlJRE9NRG9jdW1lbnRUeXBlKiBkb21Eb2N1bWVudFR5cGUgPSAwOworCURPTURv
Y3VtZW50VHlwZSogbmV3RG9jdW1lbnRUeXBlID0gbmV3IERPTURvY3VtZW50VHlwZShkb2N1bWVu
dFR5cGUpOworCWhyID0gbmV3RG9jdW1lbnRUeXBlLT5RdWVyeUludGVyZmFjZShJSURfSURPTURv
Y3VtZW50VHlwZSwgKHZvaWQqKikgJmRvbURvY3VtZW50VHlwZSk7CisKKwlpZiAoRkFJTEVEKGhy
KSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gZG9tRG9jdW1lbnRUeXBlOworfQorCisKKy8vIERP
TUVudGl0eVJlZmVyZW5jZSAtIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBET01FbnRpdHlS
ZWZlcmVuY2U6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQor
eworICAgICpwcHZPYmplY3QgPSAwOworICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSURP
TUVudGl0eVJlZmVyZW5jZSkpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJRE9N
RW50aXR5UmVmZXJlbmNlKj4odGhpcyk7CisgICAgZWxzZQorCQlyZXR1cm4gRE9NTm9kZTo6UXVl
cnlJbnRlcmZhY2UocmlpZCwgcHB2T2JqZWN0KTsKKworICAgIEFkZFJlZigpOworICAgIHJldHVy
biBTX09LOworfQorCisvLyBET01FbnRpdHlSZWZlcmVuY2UgLSBET01FbnRpdHlSZWZlcmVuY2Ug
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RPTUVudGl0eVJlZmVyZW5j
ZTo6RE9NRW50aXR5UmVmZXJlbmNlKFdlYkNvcmU6OkVudGl0eVJlZmVyZW5jZSogZW50aXR5UmVm
ZXJlbmNlKQorOiBET01Ob2RlKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Tm9kZSo+KGVudGl0
eVJlZmVyZW5jZSkpCissIG1fZW50aXR5UmVmZXJlbmNlKGVudGl0eVJlZmVyZW5jZSkKK3sKK30K
KworRE9NRW50aXR5UmVmZXJlbmNlOjp+RE9NRW50aXR5UmVmZXJlbmNlKCkKK3sKK30KKworSURP
TUVudGl0eVJlZmVyZW5jZSogRE9NRW50aXR5UmVmZXJlbmNlOjpjcmVhdGVJbnN0YW5jZShXZWJD
b3JlOjpFbnRpdHlSZWZlcmVuY2UqIGVudGl0eVJlZmVyZW5jZSkKK3sKKwlpZiAoIWVudGl0eVJl
ZmVyZW5jZSkKKwkJcmV0dXJuIDA7CisKKwlIUkVTVUxUIGhyOworCUlET01FbnRpdHlSZWZlcmVu
Y2UqIGRvbUVudGl0eVJlZmVyZW5jZSA9IDA7CisJRE9NRW50aXR5UmVmZXJlbmNlKiBuZXdFbnRp
dHlSZWZlcmVuY2UgPSBuZXcgRE9NRW50aXR5UmVmZXJlbmNlKGVudGl0eVJlZmVyZW5jZSk7CisJ
aHIgPSBuZXdFbnRpdHlSZWZlcmVuY2UtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRW50aXR5UmVm
ZXJlbmNlLCAodm9pZCoqKSAmZG9tRW50aXR5UmVmZXJlbmNlKTsKKworCWlmIChGQUlMRUQoaHIp
KQorCQlyZXR1cm4gMDsKKworCXJldHVybiBkb21FbnRpdHlSZWZlcmVuY2U7Cit9CisKKworCisv
LyBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gLSBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBw
dk9iamVjdCkKK3sKKyAgICAqcHB2T2JqZWN0ID0gMDsKKyAgICBpZiAoSXNFcXVhbEdVSUQocmlp
ZCwgSUlEX0lET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pKQorICAgICAgICAqcHB2T2JqZWN0ID0g
c3RhdGljX2Nhc3Q8SURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbio+KHRoaXMpOworICAgIGVsc2UK
KwkJcmV0dXJuIERPTU5vZGU6OlF1ZXJ5SW50ZXJmYWNlKHJpaWQsIHBwdk9iamVjdCk7CisKKyAg
ICBBZGRSZWYoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworLy8gRE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uIC0gSURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
dGFyZ2V0KCAKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKK3sKKwlpZiAo
IXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9wcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24pCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gQlN0cmluZyhtX3Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi0+dGFyZ2V0KCkpLnJlbGVhc2UoKTsKKwlyZXR1cm4gKnJlc3VsdCA/IFNf
T0sgOiBFX0ZBSUw7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NUHJvY2Vzc2lu
Z0luc3RydWN0aW9uOjpkYXRhKCAKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3Vs
dCkKK3sKKwlpZiAoIXJlc3VsdCkKKwkJcmV0dXJuIEVfUE9JTlRFUjsKKworCWlmICghbV9wcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24pCisJCXJldHVybiBFX0ZBSUw7CisKKwkqcmVzdWx0ID0gQlN0cmlu
ZyhtX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbi0+ZGF0YSgpKS5yZWxlYXNlKCk7CisJcmV0dXJuICpy
ZXN1bHQgPyBTX09LIDogRV9GQUlMOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0RGF0YSggCisgICAgLyogW2luXSAqLyBCU1RSIGRh
dGEpCit7CisJaWYgKCFtX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbikKKwkJcmV0dXJuIEVfRkFJTDsK
KworCUV4Y2VwdGlvbkNvZGUgZWMgPSAwOworCW1fcHJvY2Vzc2luZ0luc3RydWN0aW9uLT5zZXRE
YXRhKFN0cmluZyhkYXRhKSwgZWMpOworCisgICAgcmV0dXJuIGVjID8gRV9GQUlMIDogU19PSzsK
K30KKworLy8gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uIC0gRE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb246
OkRPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbihXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
IHByb2Nlc3NpbmdJbnN0cnVjdGlvbikKKzogRE9NTm9kZShyZWludGVycHJldF9jYXN0PFdlYkNv
cmU6Ok5vZGUqPihwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pKQorLCBtX3Byb2Nlc3NpbmdJbnN0cnVj
dGlvbihwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCit7Cit9CisKK0RPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbjo6fkRPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbigpCit7Cit9CisKK0lET01Qcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24qIERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6Y3JlYXRlSW5zdGFuY2UoV2Vi
Q29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uKiBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCit7CisJ
aWYgKCFwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCisJCXJldHVybiAwOworCisJSFJFU1VMVCBocjsK
KwlJRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKiBkb21Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSAw
OworCURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiogbmV3UHJvY2Vzc2luZ0luc3RydWN0aW9uID0g
bmV3IERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbihwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOworCWhy
ID0gbmV3UHJvY2Vzc2luZ0luc3RydWN0aW9uLT5RdWVyeUludGVyZmFjZShJSURfSURPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbiwgKHZvaWQqKikgJmRvbVByb2Nlc3NpbmdJbnN0cnVjdGlvbik7CisK
KwlpZiAoRkFJTEVEKGhyKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gZG9tUHJvY2Vzc2luZ0lu
c3RydWN0aW9uOworfQorCisKKworCkluZGV4OiBXZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5oCShyZXZpc2lvbiA1Njgz
NikKKysrIFdlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MTAgKzMwLDIxIEBACiAjaW5jbHVkZSAiV2ViU2NyaXB0T2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKKwljbGFzcyBBdHRyOworCWNsYXNzIENEQVRBU2VjdGlvbjsKKwljbGFzcyBDaGFy
YWN0ZXJEYXRhOworCWNsYXNzIENvbW1lbnQ7CiAgICAgY2xhc3MgRWxlbWVudDsKKwljbGFzcyBF
bnRpdHlSZWZlcmVuY2U7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CisJY2xhc3MgRG9jdW1lbnRGcmFn
bWVudDsKKwljbGFzcyBEb2N1bWVudFR5cGU7CisJY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CisJ
Y2xhc3MgTmFtZWROb2RlTWFwOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgTm9kZUxpc3Q7
CisJY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uOworCWNsYXNzIFRleHQ7CiB9CiAKIGNsYXNz
IERPTU9iamVjdCA6IHB1YmxpYyBXZWJTY3JpcHRPYmplY3QsIHB1YmxpYyBJRE9NT2JqZWN0CkBA
IC04MzcsNCArODQ4LDE3MTEgQEAgcHJvdGVjdGVkOgogICAgIFdlYkNvcmU6OkVsZW1lbnQqIG1f
ZWxlbWVudDsKIH07CiAKKworY2xhc3MgRE9NQ2hhcmFjdGVyRGF0YSA6IHB1YmxpYyBET01Ob2Rl
LCBwdWJsaWMgSURPTUNoYXJhY3RlckRhdGEKK3sKK3Byb3RlY3RlZDoKKwlET01DaGFyYWN0ZXJE
YXRhKFdlYkNvcmU6OkNoYXJhY3RlckRhdGEgKiBkYXRhKTsKKwl+RE9NQ2hhcmFjdGVyRGF0YSgp
OworCitwdWJsaWM6CisJc3RhdGljIElET01DaGFyYWN0ZXJEYXRhICogY3JlYXRlSW5zdGFuY2Uo
V2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSAqIGRhdGEpOworCisgICAgLy8gSVVua25vd24KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJp
aWQsIHZvaWQqKiBwcHZPYmplY3QpOworCXZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUg
QWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6OkFkZFJlZigpOyB9CisgICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6OlJl
bGVhc2UoKTsgfQorCisgICAgLy8gSVdlYlNjcmlwdE9iamVjdAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCisgICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBleGNlcHRpb25NZXNzYWdlLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
KnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2Fn
ZSwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBjYWxsV2ViU2NyaXB0TWV0aG9kKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCisg
ICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3QgVkFSSUFOVCBhcmdzWyAgXSwKKyAgICAg
ICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFS
SUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUs
IGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RS
IHNjcmlwdCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsg
cmV0dXJuIERPTU5vZGU6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRL
ZXkoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NTm9kZTo6cmVt
b3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKCAKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikgeyByZXR1cm4gRE9NTm9kZTo6c3Ry
aW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24pOyB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCggCisg
ICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6d2ViU2NyaXB0VmFs
dWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCisgICAgICAgIC8qIFtp
bl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFs
KSB7IHJldHVybiBET01Ob2RlOjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0
aW9uKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01O
b2RlOjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CisKKyAgICAvLyBJRE9NTm9kZQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFtZSggCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpub2RlTmFt
ZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG5vZGVWYWx1ZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7
IHJldHVybiBET01Ob2RlOjpub2RlVmFsdWUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROb2RlVmFsdWUoIAorICAgICAgICAvKiBbaW5d
ICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTU5vZGU6OnNldE5vZGVWYWx1ZSh2YWx1ZSk7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoIAor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0ICpyZXN1bHQpIHsgcmV0
dXJuIERPTU5vZGU6Om5vZGVUeXBlKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnBhcmVudE5vZGUocmVz
dWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGls
ZE5vZGVzKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QgKipyZXN1
bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNoaWxkTm9kZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxkKCAKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Zmly
c3RDaGlsZChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGxhc3RDaGlsZCggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUg
KipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omxhc3RDaGlsZChyZXN1bHQpOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZyggCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6OnByZXZpb3VzU2libGluZyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKCAKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bmV4dFNpYmxpbmco
cmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBh
dHRyaWJ1dGVzKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFw
ICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjphdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVudCggCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50ICoqcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjpvd25lckRvY3VtZW50KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKCAKKyAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSAqbmV3Q2hpbGQsCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKnJlZkNo
aWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJl
dHVybiBET01Ob2RlOjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQpOyB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VDaGls
ZCggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm5ld0NoaWxkLAorICAgICAgICAvKiBb
aW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cmVwbGFjZUNoaWxkKG5ld0NoaWxk
LCBvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZW1vdmVDaGlsZCggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9s
ZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7
IHJldHVybiBET01Ob2RlOjpyZW1vdmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCggCisgICAg
ICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjphcHBlbmRDaGlsZChv
bGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBoYXNDaGlsZE5vZGVzKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
ICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZU5vZGUoIAorICAg
ICAgICAvKiBbaW5dICovIEJPT0wgZGVlcCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2xvbmVOb2RlKGRlZXAsIHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFs
aXplKCB2b2lkKSB7IHJldHVybiBET01Ob2RlOjpub3JtYWxpemUoKTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZCggCisgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBmZWF0dXJlLAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6OmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNpb24sIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZXNwYWNlVVJJKCAKKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5hbWVz
cGFjZVVSSShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHByZWZpeCggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0
KSB7IHJldHVybiBET01Ob2RlOjpwcmVmaXgocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmaXgoIAorICAgICAgICAvKiBbaW5dICov
IEJTVFIgcHJlZml4KSB7IHJldHVybiBET01Ob2RlOjpzZXRQcmVmaXgocHJlZml4KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsb2NhbE5hbWUoIAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6
bG9jYWxOYW1lKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaGFzQXR0cmlidXRlcyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1NhbWVOb2RlKCAKKyAgICAg
ICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc1NhbWVOb2RlKG90aGVyLCByZXN1
bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRXF1
YWxOb2RlKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc0VxdWFs
Tm9kZShvdGhlciwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB0ZXh0Q29udGVudCggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjp0ZXh0Q29udGVudChyZXN1bHQpOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRDb250ZW50KCAK
KyAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpIHsgcmV0dXJuIERPTU5vZGU6OnNldFRleHRD
b250ZW50KHRleHQpOyB9CisKKwkvLyBJRE9NQ2hhcmFjdGVyRGF0YQorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkYXRhKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCU1RSICpyZXN1bHQpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXREYXRhKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGRhdGEpOworICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsZW5ndGgoIAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIFVJTlQgKnJlc3VsdCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHN1YnN0cmluZ0RhdGEoIAorICAgICAgICAvKiBbaW5dICovIFVJ
TlQgb2Zmc2V0LAorICAgICAgICAvKiBbaW5dICovIFVJTlQgY291bnQsCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgYXBwZW5kRGF0YSggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBh
cmcpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnRE
YXRhKCAKKyAgICAgICAgLyogW2luXSAqLyBVSU5UIG9mZnNldCwKKyAgICAgICAgLyogW2luXSAq
LyBCU1RSIGFyZyk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRlbGV0ZURhdGEoIAorICAgICAgICAvKiBbaW5dICovIFVJTlQgb2Zmc2V0LAorICAgICAgICAv
KiBbaW5dICovIFVJTlQgY291bnQpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZXBsYWNlRGF0YSggCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQs
CisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBjb3VudCwKKyAgICAgICAgLyogW2luXSAqLyBCU1RS
IGFyZyk7CisKKwkvLyBET01DaGFyYWN0ZXJEYXRhCisJV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YSAq
IGNoYXJhY3RlckRhdGEoKSB7IHJldHVybiBtX2NoYXJhY3RlckRhdGE7IH0KKworcHJvdGVjdGVk
OgorCVdlYkNvcmU6OkNoYXJhY3RlckRhdGEgKiBtX2NoYXJhY3RlckRhdGE7Cit9OworCisKK2Ns
YXNzIERPTVRleHQgOiBwdWJsaWMgRE9NQ2hhcmFjdGVyRGF0YSwgcHVibGljIElET01UZXh0Cit7
Citwcm90ZWN0ZWQ6CisJRE9NVGV4dChXZWJDb3JlOjpUZXh0ICogdGV4dCk7CisJfkRPTVRleHQo
KTsKKworcHVibGljOgorCXN0YXRpYyBJRE9NVGV4dCAqIGNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6
OlRleHQgKiB0ZXh0KTsKKworICAgIC8vIElVbmtub3duCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2Jq
ZWN0KTsKKwl2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKSB7IHJl
dHVybiBET01DaGFyYWN0ZXJEYXRhOjpBZGRSZWYoKTsgfQorICAgIHZpcnR1YWwgVUxPTkcgU1RE
TUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpS
ZWxlYXNlKCk7IH0KKworICAgIC8vIElXZWJTY3JpcHRPYmplY3QKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oIAorICAgICAgICAvKiBbaW5dICov
IEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwKKwkJLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1
bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1l
c3NhZ2UsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1l
LAorICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCisg
ICAgICAgIC8qIFtpbl0gKi8gaW50IGNBcmdzLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6Y2FsbFdlYlNjcmlw
dE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCisgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBzY3JpcHQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFO
VCAqcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpldmFsdWF0ZVdlYlNjcmlwdChz
Y3JpcHQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUp
IHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNl
bnRhdGlvbiggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogc3RyaW5nUmVwcmVz
ZW50YXRpb24pIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnN0cmluZ1JlcHJlc2VudGF0aW9u
KHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAorICAgICAgICAvKiBbaW5dICov
IHVuc2lnbmVkIGludCBpbmRleCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5U
ICpyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OndlYlNjcmlwdFZhbHVlQXRJbmRl
eChpbmRleCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAorICAgICAgICAvKiBbaW5dICovIHVu
c2lnbmVkIGludCBpbmRleCwKKyAgICAgICAgLyogW2luXSAqLyBWQVJJQU5UIHZhbCkgeyByZXR1
cm4gRE9NQ2hhcmFjdGVyRGF0YTo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwp
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2Vw
dGlvbiggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlvbikgeyByZXR1cm4gRE9N
Q2hhcmFjdGVyRGF0YTo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorCisgICAgLy8gSURP
TU5vZGUKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5hbWUoIAor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hh
cmFjdGVyRGF0YTo6bm9kZU5hbWUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVmFsdWUoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6bm9kZVZhbHVlKHJl
c3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
Tm9kZVZhbHVlKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01D
aGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFsdWUodmFsdWUpOyB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVUeXBlKCAKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyB1bnNpZ25lZCBzaG9ydCAqcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRh
Ojpub2RlVHlwZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHBhcmVudE5vZGUoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlICoqcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpwYXJlbnROb2RlKHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGRO
b2RlcyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0ICoqcmVzdWx0
KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpjaGlsZE5vZGVzKHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RDaGlsZCggCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUNo
YXJhY3RlckRhdGE6OmZpcnN0Q2hpbGQocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoIAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpsYXN0
Q2hpbGQocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBwcmV2aW91c1NpYmxpbmcoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlICoqcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpwcmV2aW91c1NpYmxpbmco
cmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBu
ZXh0U2libGluZyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1
bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Om5leHRTaWJsaW5nKHJlc3VsdCk7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmlidXRlcyggCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6YXR0cmlidXRlcyhyZXN1bHQpOyB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG93bmVyRG9jdW1lbnQoIAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCAqKnJlc3VsdCkgeyByZXR1cm4gRE9N
Q2hhcmFjdGVyRGF0YTo6b3duZXJEb2N1bWVudChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluc2VydEJlZm9yZSggCisgICAgICAgIC8qIFtp
bl0gKi8gSURPTU5vZGUgKm5ld0NoaWxkLAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpy
ZWZDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkg
eyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGls
ZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZXBsYWNlQ2hpbGQoIAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpuZXdDaGlsZCwK
KyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6
OnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQ2hpbGQoIAorICAgICAgICAv
KiBbaW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6cmVtb3ZlQ2hp
bGQob2xkQ2hpbGQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgYXBwZW5kQ2hpbGQoIAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpv
bGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkg
eyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ2hpbGRO
b2RlcyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVy
biBET01DaGFyYWN0ZXJEYXRhOjpoYXNDaGlsZE5vZGVzKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xvbmVOb2RlKCAKKyAgICAgICAgLyog
W2luXSAqLyBCT09MIGRlZXAsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUg
KipyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OmNsb25lTm9kZShkZWVwLCByZXN1
bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vcm1h
bGl6ZSggdm9pZCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6bm9ybWFsaXplKCk7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoIAor
ICAgICAgICAvKiBbaW5dICovIEJTVFIgZmVhdHVyZSwKKyAgICAgICAgLyogW2luXSAqLyBCU1RS
IHZlcnNpb24sCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJl
dHVybiBET01DaGFyYWN0ZXJEYXRhOjppc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uLCByZXN1
bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVz
cGFjZVVSSSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJl
dHVybiBET01DaGFyYWN0ZXJEYXRhOjpuYW1lc3BhY2VVUkkocmVzdWx0KTsgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmVmaXgoIAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6
cHJlZml4KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0UHJlZml4KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHByZWZpeCkgeyByZXR1
cm4gRE9NQ2hhcmFjdGVyRGF0YTo6c2V0UHJlZml4KHByZWZpeCk7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKCAKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Omxv
Y2FsTmFtZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGhhc0F0dHJpYnV0ZXMoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
KnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6aGFzQXR0cmlidXRlcyhyZXN1bHQp
OyB9CisKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTYW1lTm9kZSgg
CisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6aXNTYW1l
Tm9kZShvdGhlciwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpc0VxdWFsTm9kZSggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90
aGVyLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4g
RE9NQ2hhcmFjdGVyRGF0YTo6aXNFcXVhbE5vZGUob3RoZXIsIHJlc3VsdCk7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGV4dENvbnRlbnQoIAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVy
RGF0YTo6dGV4dENvbnRlbnQocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB0ZXh0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpzZXRUZXh0Q29udGVudCh0ZXh0KTsg
fQorICAgIAorCS8vIElET01DaGFyYWN0ZXJEYXRhCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRhdGEoIAorCQkvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkg
eyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6ZGF0YShyZXN1bHQpOyB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERhdGEoIAorCQkvKiBbaW5dICovIEJT
VFIgZGF0YSkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YShkYXRhKTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsZW5ndGgoIAorCQkvKiBb
cmV0dmFsXVtvdXRdICovIFVJTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6
bGVuZ3RoKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc3Vic3RyaW5nRGF0YSggCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisg
ICAgICAgIC8qIFtpbl0gKi8gVUlOVCBjb3VudCwKKwkJLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
ICpyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnN1YnN0cmluZ0RhdGEob2Zmc2V0
LCBjb3VudCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhcHBlbmREYXRhKCAKKwkJLyogW2luXSAqLyBCU1RSIGFyZykgeyByZXR1cm4gRE9N
Q2hhcmFjdGVyRGF0YTo6YXBwZW5kRGF0YShhcmcpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGluc2VydERhdGEoIAorICAgICAgICAvKiBbaW5dICovIFVJ
TlQgb2Zmc2V0LAorCQkvKiBbaW5dICovIEJTVFIgYXJnKSB7IHJldHVybiBET01DaGFyYWN0ZXJE
YXRhOjppbnNlcnREYXRhKG9mZnNldCwgYXJnKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBkZWxldGVEYXRhKCAKKyAgICAgICAgLyogW2luXSAqLyBVSU5U
IG9mZnNldCwKKwkJLyogW2luXSAqLyBVSU5UIGNvdW50KSB7IHJldHVybiBET01DaGFyYWN0ZXJE
YXRhOjpkZWxldGVEYXRhKG9mZnNldCwgY291bnQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VEYXRhKCAKKyAgICAgICAgLyogW2luXSAqLyBV
SU5UIG9mZnNldCwKKyAgICAgICAgLyogW2luXSAqLyBVSU5UIGNvdW50LAorCQkvKiBbaW5dICov
IEJTVFIgYXJnKSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpyZXBsYWNlRGF0YShvZmZzZXQs
IGNvdW50LCBhcmcpOyB9CisKKwkvLyBJRE9NVGV4dAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzcGxpdFRleHQoIAorICAgICAgICAvKiBbaW5dICovIFVJTlQgb2Zmc2V0
LAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01UZXh0ICoqcmVzdWx0KTsKKyAgICAK
KwkvLyBET01UZXh0CisJV2ViQ29yZTo6VGV4dCAqIHRleHQoKSB7IHJldHVybiBtX3RleHQ7IH0K
K3Byb3RlY3RlZDoKKwlXZWJDb3JlOjpUZXh0ICogbV90ZXh0OworfTsKKworCitjbGFzcyBET01O
YW1lZE5vZGVNYXAgOiBwdWJsaWMgRE9NT2JqZWN0LCBwdWJsaWMgSURPTU5hbWVkTm9kZU1hcAor
eworcHJvdGVjdGVkOgorCURPTU5hbWVkTm9kZU1hcChXZWJDb3JlOjpOYW1lZE5vZGVNYXAgKiBu
YW1lZE5vZGVNYXApOworCX5ET01OYW1lZE5vZGVNYXAoKTsKKworcHVibGljOgorCXN0YXRpYyBJ
RE9NTmFtZWROb2RlTWFwICogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6TmFtZWROb2RlTWFwICog
bmFtZWROb2RlTWFwKTsKKworICAgIC8vIElVbmtub3duCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2Jq
ZWN0KTsKKwl2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lkKSB7IHJl
dHVybiBET01PYmplY3Q6OkFkZFJlZigpOyB9CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU9iamVjdDo6UmVsZWFzZSgpOyB9CisK
KwkvLyBJV2ViU2NyaXB0T2JqZWN0CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRocm93RXhjZXB0aW9uKCAKKyAgICAvKiBbaW5dICovIEJTVFIgZXhjZXB0aW9uTWVzc2Fn
ZSwKKwkvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0
Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoIAor
ICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKKyAgICAgICAgLyogW3NpemVfaXNdW2luXSAq
LyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAorICAgICAgICAvKiBbaW5dICovIGludCBjQXJncywK
KwkJLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU9iamVj
dDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlw
dCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3JpcHQsCisJCS8qIFtyZXR2YWxdW291dF0g
Ki8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0
KHNjcmlwdCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoIAorCQkvKiBbaW5dICovIEJTVFIgbmFtZSkgeyBy
ZXR1cm4gRE9NT2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oIAor
CQkvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVy
biBET01PYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRW
YWx1ZUF0SW5kZXgoIAorICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU9i
amVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRl
eCggCisgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBb
aW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVl
QXRJbmRleChpbmRleCwgdmFsKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3Jp
cHRpb24pIHsgcmV0dXJuIERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQor
CisJLy8gSURPTU5hbWVkTm9kZU1hcAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBnZXROYW1lZEl0ZW0oIAorCQkvKiBbaW5dICovIEJTVFIgbmFtZSwKKwkJLyogW3JldHZh
bF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldE5hbWVkSXRlbSggCisgICAgICAgIC8qIFtpbl0gKi8gSURP
TU5vZGUgKmFyZywKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3Vs
dCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZU5h
bWVkSXRlbSggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KTsKKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaXRlbSggCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBpbmRl
eCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCk7CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxlbmd0aCggCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCAqcmVzdWx0KTsKKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0TmFtZWRJdGVtTlMoIAorICAgICAgICAvKiBbaW5d
ICovIEJTVFIgbmFtZXNwYWNlVVJJLAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1l
LAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KTsKKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0TmFtZWRJdGVtTlMoIAor
ICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICphcmcsCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZW1vdmVOYW1lZEl0ZW1OUyggCisgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBuYW1lc3BhY2VVUkksCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpOworCisJLy8gRE9NTmFt
ZWROb2RlTWFwCisJV2ViQ29yZTo6TmFtZWROb2RlTWFwICogbmFtZWROb2RlTWFwKCkgeyByZXR1
cm4gbV9uYW1lZE5vZGVNYXA7IH0KKworcHJvdGVjdGVkOgorCVdlYkNvcmU6Ok5hbWVkTm9kZU1h
cCAqIG1fbmFtZWROb2RlTWFwOworfTsKKworCitjbGFzcyBET01JbXBsZW1lbnRhdGlvbiA6IHB1
YmxpYyBET01PYmplY3QsIHB1YmxpYyBJRE9NSW1wbGVtZW50YXRpb24KK3sKK3Byb3RlY3RlZDoK
KwlET01JbXBsZW1lbnRhdGlvbihXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbiAqIGltcGxlbWVu
dGF0aW9uKTsKKwl+RE9NSW1wbGVtZW50YXRpb24oKTsKKworcHVibGljOgorCXN0YXRpYyBJRE9N
SW1wbGVtZW50YXRpb24gKiBjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlv
biAqIGltcGxlbWVudGF0aW9uKTsKKworICAgIC8vIElVbmtub3duCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiog
cHB2T2JqZWN0KTsKKwl2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lk
KSB7IHJldHVybiBET01PYmplY3Q6OkFkZFJlZigpOyB9CisgICAgdmlydHVhbCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU9iamVjdDo6UmVsZWFzZSgp
OyB9CisKKwkvLyBJV2ViU2NyaXB0T2JqZWN0CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHRocm93RXhjZXB0aW9uKCAKKyAgICAvKiBbaW5dICovIEJTVFIgZXhjZXB0aW9u
TWVzc2FnZSwKKwkvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9N
T2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRo
b2QoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKKyAgICAgICAgLyogW3NpemVfaXNd
W2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAorICAgICAgICAvKiBbaW5dICovIGludCBj
QXJncywKKwkJLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERP
TU9iamVjdDo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdl
YlNjcmlwdCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3JpcHQsCisJCS8qIFtyZXR2YWxd
W291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmV2YWx1YXRlV2Vi
U2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoIAorCQkvKiBbaW5dICovIEJTVFIgbmFt
ZSkgeyByZXR1cm4gRE9NT2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRp
b24oIAorCQkvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnN0cmluZ1JlcHJlc2VudGF0aW9uKSB7
IHJldHVybiBET01PYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0
aW9uKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJT
Y3JpcHRWYWx1ZUF0SW5kZXgoIAorICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRl
eCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJu
IERPTU9iamVjdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVl
QXRJbmRleCggCisgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAg
ICAvKiBbaW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlw
dFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAorICAgICAgICAvKiBbaW5dICovIEJTVFIg
ZGVzY3JpcHRpb24pIHsgcmV0dXJuIERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9u
KTsgfQorCisJLy8gSURPTUltcGxlbWVudGF0aW9uCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGhhc0ZlYXR1cmUoIAorCQkvKiBbaW5dICovIEJTVFIgZmVhdHVyZSwKKwkJ
LyogW2luXSAqLyBCU1RSIHZlcnNpb24sCisJCS8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVz
dWx0KTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVEb2N1
bWVudFR5cGUoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgcXVhbGlmaWVkTmFtZSwKKyAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHB1YmxpY0lkLAorICAgICAgICAvKiBbaW5dICovIEJTVFIgc3lz
dGVtSWQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50VHlwZSAqKnJl
c3VsdCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0
ZURvY3VtZW50KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKKyAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHF1YWxpZmllZE5hbWUsCisgICAgICAgIC8qIFtpbl0gKi8gSURP
TURvY3VtZW50VHlwZSAqZG9jdHlwZSwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
RG9jdW1lbnQgKipyZXN1bHQpOworICAgIAorCS8vIERPTUltcGxlbWVudGF0aW9uCisJV2ViQ29y
ZTo6RE9NSW1wbGVtZW50YXRpb24gKiBpbXBsZW1lbnRhdGlvbigpIHsgcmV0dXJuIG1faW1wbGVt
ZW50YXRpb247IH0KKworcHJvdGVjdGVkOgorCVdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uICog
bV9pbXBsZW1lbnRhdGlvbjsKK307CisKKworY2xhc3MgREVDTFNQRUNfVVVJRCgiRkEyMDYyRjIt
MzNFRS00ODlDLTg4MDMtMjRFNERFNzlCOENEIikgRE9NQXR0ciA6IHB1YmxpYyBET01Ob2RlLCBw
dWJsaWMgSURPTUF0dHIKK3sKK3Byb3RlY3RlZDoKKwlET01BdHRyKFdlYkNvcmU6OkF0dHIgKiBh
dHRyKTsKKwl+RE9NQXR0cigpOworCitwdWJsaWM6CisJc3RhdGljIElET01BdHRyICogY3JlYXRl
SW5zdGFuY2UoV2ViQ29yZTo6QXR0ciAqIGF0dHIpOworCisgICAgLy8gSVVua25vd24KKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJp
aWQsIHZvaWQqKiBwcHZPYmplY3QpOworCXZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUg
QWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6OkFkZFJlZigpOyB9CisgICAgdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6OlJl
bGVhc2UoKTsgfQorCisgICAgLy8gSVdlYlNjcmlwdE9iamVjdAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCisgICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBleGNlcHRpb25NZXNzYWdlLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
KnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2Fn
ZSwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBjYWxsV2ViU2NyaXB0TWV0aG9kKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCisg
ICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3QgVkFSSUFOVCBhcmdzWyAgXSwKKyAgICAg
ICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFS
SUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUs
IGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RS
IHNjcmlwdCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsg
cmV0dXJuIERPTU5vZGU6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRL
ZXkoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NTm9kZTo6cmVt
b3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKCAKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikgeyByZXR1cm4gRE9NTm9kZTo6c3Ry
aW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24pOyB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCggCisg
ICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6d2ViU2NyaXB0VmFs
dWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCisgICAgICAgIC8qIFtp
bl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFs
KSB7IHJldHVybiBET01Ob2RlOjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0
aW9uKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01O
b2RlOjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CisKKyAgICAvLyBJRE9NTm9kZQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFtZSggCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpub2RlTmFt
ZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG5vZGVWYWx1ZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7
IHJldHVybiBET01Ob2RlOjpub2RlVmFsdWUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROb2RlVmFsdWUoIAorICAgICAgICAvKiBbaW5d
ICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTU5vZGU6OnNldE5vZGVWYWx1ZSh2YWx1ZSk7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoIAor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0ICpyZXN1bHQpIHsgcmV0
dXJuIERPTU5vZGU6Om5vZGVUeXBlKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnBhcmVudE5vZGUocmVz
dWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGls
ZE5vZGVzKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QgKipyZXN1
bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNoaWxkTm9kZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxkKCAKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Zmly
c3RDaGlsZChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGxhc3RDaGlsZCggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUg
KipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omxhc3RDaGlsZChyZXN1bHQpOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZyggCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6OnByZXZpb3VzU2libGluZyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKCAKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bmV4dFNpYmxpbmco
cmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBh
dHRyaWJ1dGVzKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFw
ICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjphdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVudCggCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50ICoqcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjpvd25lckRvY3VtZW50KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKCAKKyAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSAqbmV3Q2hpbGQsCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKnJlZkNo
aWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJl
dHVybiBET01Ob2RlOjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQpOyB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VDaGls
ZCggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm5ld0NoaWxkLAorICAgICAgICAvKiBb
aW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cmVwbGFjZUNoaWxkKG5ld0NoaWxk
LCBvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZW1vdmVDaGlsZCggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9s
ZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7
IHJldHVybiBET01Ob2RlOjpyZW1vdmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCggCisgICAg
ICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjphcHBlbmRDaGlsZChv
bGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBoYXNDaGlsZE5vZGVzKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09M
ICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZU5vZGUoIAorICAg
ICAgICAvKiBbaW5dICovIEJPT0wgZGVlcCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2xvbmVOb2RlKGRlZXAsIHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFs
aXplKCB2b2lkKSB7IHJldHVybiBET01Ob2RlOjpub3JtYWxpemUoKTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZCggCisgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBmZWF0dXJlLAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6OmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNpb24sIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZXNwYWNlVVJJKCAKKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5hbWVz
cGFjZVVSSShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHByZWZpeCggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0
KSB7IHJldHVybiBET01Ob2RlOjpwcmVmaXgocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmaXgoIAorICAgICAgICAvKiBbaW5dICov
IEJTVFIgcHJlZml4KSB7IHJldHVybiBET01Ob2RlOjpzZXRQcmVmaXgocHJlZml4KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsb2NhbE5hbWUoIAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6
bG9jYWxOYW1lKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgaGFzQXR0cmlidXRlcyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1NhbWVOb2RlKCAKKyAgICAg
ICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc1NhbWVOb2RlKG90aGVyLCByZXN1
bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRXF1
YWxOb2RlKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc0VxdWFs
Tm9kZShvdGhlciwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSB0ZXh0Q29udGVudCggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjp0ZXh0Q29udGVudChyZXN1bHQpOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRDb250ZW50KCAK
KyAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpIHsgcmV0dXJuIERPTU5vZGU6OnNldFRleHRD
b250ZW50KHRleHQpOyB9CisKKwkvLyBJRE9NQXR0cgorCXZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBuYW1lKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1
bHQpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzcGVjaWZp
ZWQoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHZhbHVlKCAKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSICp2YWx1ZSk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFZhbHVlKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHZh
bHVlKTsKKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3duZXJF
bGVtZW50KCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVudCAqKnJlc3Vs
dCk7CisgICAgCisJLy8gRE9NQXR0cgorCVdlYkNvcmU6OkF0dHIgKiBhdHRyKCkgeyByZXR1cm4g
bV9hdHRyOyB9CisKK3Byb3RlY3RlZDoKKwlXZWJDb3JlOjpBdHRyICogbV9hdHRyOworfTsKKwor
CitjbGFzcyBET01Db21tZW50IDogcHVibGljIERPTUNoYXJhY3RlckRhdGEsIHB1YmxpYyBJRE9N
Q29tbWVudAoreworcHJvdGVjdGVkOgorCURPTUNvbW1lbnQoV2ViQ29yZTo6Q29tbWVudCAqIGNv
bW1lbnQpOworCX5ET01Db21tZW50KCk7CisKK3B1YmxpYzoKKwlzdGF0aWMgSURPTUNvbW1lbnQg
KiBjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpDb21tZW50ICogY29tbWVudCk7CisKKyAgICAvLyBJ
VW5rbm93bgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVy
ZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7CisJdmlydHVhbCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6QWRk
UmVmKCk7IH0KKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9p
ZCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6UmVsZWFzZSgpOyB9CisKKyAgICAvLyBJV2Vi
U2NyaXB0T2JqZWN0CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93
RXhjZXB0aW9uKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCisJ
CS8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJE
YXRhOjp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2Qo
IAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKKyAgICAgICAgLyogW3NpemVfaXNdW2lu
XSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAorICAgICAgICAvKiBbaW5dICovIGludCBjQXJn
cywKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJu
IERPTUNoYXJhY3RlckRhdGE6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3Ms
IHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZXZhbHVhdGVXZWJTY3JpcHQoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NyaXB0LAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hh
cmFjdGVyRGF0YTo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSgg
CisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRh
OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oIAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01DaGFy
YWN0ZXJEYXRhOjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFs
dWVBdEluZGV4KCAKKyAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01DaGFy
YWN0ZXJEYXRhOjp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVB
dEluZGV4KCAKKyAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCisgICAgICAg
IC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnNldFdl
YlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAorICAgICAgICAvKiBbaW5dICov
IEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnNldEV4Y2VwdGlv
bihkZXNjcmlwdGlvbik7IH0KKworICAgIC8vIElET01Ob2RlCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG5vZGVOYW1lKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Om5vZGVOYW1lKHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVZh
bHVlKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJu
IERPTUNoYXJhY3RlckRhdGE6Om5vZGVWYWx1ZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZSggCisgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiB2YWx1ZSkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6c2V0Tm9kZVZhbHVl
KHZhbHVlKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBu
b2RlVHlwZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQgKnJl
c3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6bm9kZVR5cGUocmVzdWx0KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXJlbnROb2RlKCAKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9N
Q2hhcmFjdGVyRGF0YTo6cGFyZW50Tm9kZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoaWxkTm9kZXMoIAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0
YTo6Y2hpbGROb2RlcyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGZpcnN0Q2hpbGQoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpmaXJzdENoaWxkKHJl
c3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFz
dENoaWxkKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkg
eyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6bGFzdENoaWxkKHJlc3VsdCk7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNTaWJsaW5nKCAKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9N
Q2hhcmFjdGVyRGF0YTo6cHJldmlvdXNTaWJsaW5nKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmV4dFNpYmxpbmcoIAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJE
YXRhOjpuZXh0U2libGluZyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01OYW1lZE5vZGVNYXAgKipyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OmF0
dHJpYnV0ZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBvd25lckRvY3VtZW50KCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
RG9jdW1lbnQgKipyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Om93bmVyRG9jdW1l
bnQocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBpbnNlcnRCZWZvcmUoIAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpuZXdDaGlsZCwK
KyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqcmVmQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6
Omluc2VydEJlZm9yZShuZXdDaGlsZCwgcmVmQ2hpbGQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVwbGFjZUNoaWxkKCAKKyAgICAgICAg
LyogW2luXSAqLyBJRE9NTm9kZSAqbmV3Q2hpbGQsCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUgKm9sZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVz
dWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpyZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9s
ZENoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlbW92ZUNoaWxkKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hp
bGQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0
dXJuIERPTUNoYXJhY3RlckRhdGE6OnJlbW92ZUNoaWxkKG9sZENoaWxkLCByZXN1bHQpOyB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFwcGVuZENoaWxkKCAK
KyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6
OmFwcGVuZENoaWxkKG9sZENoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0NoaWxkTm9kZXMoIAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6aGFzQ2hp
bGROb2RlcyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNsb25lTm9kZSggCisgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBkZWVwLAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01DaGFy
YWN0ZXJEYXRhOjpjbG9uZU5vZGUoZGVlcCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3JtYWxpemUoIHZvaWQpIHsgcmV0dXJuIERPTUNo
YXJhY3RlckRhdGE6Om5vcm1hbGl6ZSgpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGlzU3VwcG9ydGVkKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGZl
YXR1cmUsCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2ZXJzaW9uLAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6aXNT
dXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkkoIAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6bmFt
ZXNwYWNlVVJJKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcHJlZml4KCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1
bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnByZWZpeChyZXN1bHQpOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZpeCggCisgICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBwcmVmaXgpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnNldFBy
ZWZpeChwcmVmaXgpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGxvY2FsTmFtZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0
KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpsb2NhbE5hbWUocmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVzKCAKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJh
Y3RlckRhdGE6Omhhc0F0dHJpYnV0ZXMocmVzdWx0KTsgfQorCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoIAorICAgICAgICAvKiBbaW5dICovIElET01O
b2RlKiBvdGhlciwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsg
cmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoIAor
ICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OmlzRXF1YWxO
b2RlKG90aGVyLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHRleHRDb250ZW50KCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RS
KiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnRleHRDb250ZW50KHJlc3VsdCk7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGV4dENv
bnRlbnQoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdGV4dCkgeyByZXR1cm4gRE9NQ2hhcmFj
dGVyRGF0YTo6c2V0VGV4dENvbnRlbnQodGV4dCk7IH0KKyAgICAKKwkvLyBJRE9NQ2hhcmFjdGVy
RGF0YQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkYXRhKCAKKwkJLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6
OmRhdGEocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXREYXRhKCAKKwkJLyogW2luXSAqLyBCU1RSIGRhdGEpIHsgcmV0dXJuIERPTUNoYXJh
Y3RlckRhdGE6OnNldERhdGEoZGF0YSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbGVuZ3RoKCAKKwkJLyogW3JldHZhbF1bb3V0XSAqLyBVSU5UICpyZXN1
bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Omxlbmd0aChyZXN1bHQpOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN1YnN0cmluZ0RhdGEoIAorICAg
ICAgICAvKiBbaW5dICovIFVJTlQgb2Zmc2V0LAorICAgICAgICAvKiBbaW5dICovIFVJTlQgY291
bnQsCisJCS8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01DaGFy
YWN0ZXJEYXRhOjpzdWJzdHJpbmdEYXRhKG9mZnNldCwgY291bnQsIHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwZW5kRGF0YSggCisJCS8q
IFtpbl0gKi8gQlNUUiBhcmcpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OmFwcGVuZERhdGEo
YXJnKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNl
cnREYXRhKCAKKyAgICAgICAgLyogW2luXSAqLyBVSU5UIG9mZnNldCwKKwkJLyogW2luXSAqLyBC
U1RSIGFyZykgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6aW5zZXJ0RGF0YShvZmZzZXQsIGFy
Zyk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVsZXRl
RGF0YSggCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisJCS8qIFtpbl0gKi8gVUlO
VCBjb3VudCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6ZGVsZXRlRGF0YShvZmZzZXQsIGNv
dW50KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBs
YWNlRGF0YSggCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisgICAgICAgIC8qIFtp
bl0gKi8gVUlOVCBjb3VudCwKKwkJLyogW2luXSAqLyBCU1RSIGFyZykgeyByZXR1cm4gRE9NQ2hh
cmFjdGVyRGF0YTo6cmVwbGFjZURhdGEob2Zmc2V0LCBjb3VudCwgYXJnKTsgfQorCisJLy8gRE9N
Q29tbWVudAorCVdlYkNvcmU6OkNvbW1lbnQgKiBjb21tZW50KCkgeyByZXR1cm4gbV9jb21tZW50
OyB9CisKK3Byb3RlY3RlZDoKKwlXZWJDb3JlOjpDb21tZW50ICogbV9jb21tZW50OworfTsKKwor
CitjbGFzcyBET01DREFUQVNlY3Rpb24gOiBwdWJsaWMgRE9NVGV4dCwgcHVibGljIElET01DREFU
QVNlY3Rpb24KK3sKK3Byb3RlY3RlZDoKKwlET01DREFUQVNlY3Rpb24oV2ViQ29yZTo6Q0RBVEFT
ZWN0aW9uICogY2RhdGFTZWN0aW9uKTsKKwl+RE9NQ0RBVEFTZWN0aW9uKCk7CisKK3B1YmxpYzoK
KwlzdGF0aWMgSURPTUNEQVRBU2VjdGlvbiAqIGNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkNEQVRB
U2VjdGlvbiAqIGNkYXRhU2VjdGlvbik7CisKKyAgICAvLyBJVW5rbm93bgorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9p
ZCoqIHBwdk9iamVjdCk7CisJdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYo
dm9pZCkgeyByZXR1cm4gRE9NVGV4dDo6QWRkUmVmKCk7IH0KKyAgICB2aXJ0dWFsIFVMT05HIFNU
RE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCkgeyByZXR1cm4gRE9NVGV4dDo6UmVsZWFzZSgp
OyB9CisKKyAgICAvLyBJV2ViU2NyaXB0T2JqZWN0CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4
Y2VwdGlvbk1lc3NhZ2UsCisJCS8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJl
dHVybiBET01UZXh0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3Jp
cHRNZXRob2QoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKKyAgICAgICAgLyogW3Np
emVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAorICAgICAgICAvKiBbaW5dICov
IGludCBjQXJncywKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQp
IHsgcmV0dXJuIERPTVRleHQ6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3Ms
IHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
ZXZhbHVhdGVXZWJTY3JpcHQoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NyaXB0LAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NVGV4
dDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSggCisgICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7IHJldHVybiBET01UZXh0OjpyZW1vdmVXZWJTY3JpcHRL
ZXkobmFtZSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c3RyaW5nUmVwcmVzZW50YXRpb24oIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIq
IHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01UZXh0OjpzdHJpbmdSZXByZXNlbnRh
dGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKKyAgICAgICAgLyogW2lu
XSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFS
SUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01UZXh0Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5k
ZXgsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKKyAgICAgICAgLyogW2luXSAqLyB1bnNpZ25l
ZCBpbnQgaW5kZXgsCisgICAgICAgIC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0dXJuIERP
TVRleHQ6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAorICAgICAg
ICAvKiBbaW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJuIERPTVRleHQ6OnNldEV4Y2Vw
dGlvbihkZXNjcmlwdGlvbik7IH0KKworICAgIC8vIElET01Ob2RlCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVOYW1lKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTVRleHQ6Om5vZGVOYW1lKHJlc3VsdCk7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVZhbHVlKCAK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTVRl
eHQ6Om5vZGVWYWx1ZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZSggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1
ZSkgeyByZXR1cm4gRE9NVGV4dDo6c2V0Tm9kZVZhbHVlKHZhbHVlKTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVHlwZSggCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQgKnJlc3VsdCkgeyByZXR1cm4gRE9NVGV4dDo6
bm9kZVR5cGUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBwYXJlbnROb2RlKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9k
ZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NVGV4dDo6cGFyZW50Tm9kZShyZXN1bHQpOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNoaWxkTm9kZXMoIAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCkgeyByZXR1cm4g
RE9NVGV4dDo6Y2hpbGROb2RlcyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGZpcnN0Q2hpbGQoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01UZXh0OjpmaXJzdENoaWxkKHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFzdENo
aWxkKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NVGV4dDo6bGFzdENoaWxkKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNTaWJsaW5nKCAKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NVGV4dDo6cHJldmlv
dXNTaWJsaW5nKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbmV4dFNpYmxpbmcoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlICoqcmVzdWx0KSB7IHJldHVybiBET01UZXh0OjpuZXh0U2libGluZyhyZXN1bHQpOyB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoIAor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01OYW1lZE5vZGVNYXAgKipyZXN1bHQpIHsg
cmV0dXJuIERPTVRleHQ6OmF0dHJpYnV0ZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25lckRvY3VtZW50KCAKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnQgKipyZXN1bHQpIHsgcmV0dXJuIERPTVRleHQ6Om93
bmVyRG9jdW1lbnQocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpbnNlcnRCZWZvcmUoIAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpu
ZXdDaGlsZCwKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqcmVmQ2hpbGQsCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTVRleHQ6
Omluc2VydEJlZm9yZShuZXdDaGlsZCwgcmVmQ2hpbGQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVwbGFjZUNoaWxkKCAKKyAgICAgICAg
LyogW2luXSAqLyBJRE9NTm9kZSAqbmV3Q2hpbGQsCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUgKm9sZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVz
dWx0KSB7IHJldHVybiBET01UZXh0OjpyZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCBy
ZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJl
bW92ZUNoaWxkKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQsCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTVRl
eHQ6OnJlbW92ZUNoaWxkKG9sZENoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFwcGVuZENoaWxkKCAKKyAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSAqb2xkQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTVRleHQ6OmFwcGVuZENoaWxkKG9sZENoaWxkLCByZXN1
bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0No
aWxkTm9kZXMoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NVGV4dDo6aGFzQ2hpbGROb2RlcyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25lTm9kZSggCisgICAgICAgIC8qIFtpbl0g
Ki8gQk9PTCBkZWVwLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVz
dWx0KSB7IHJldHVybiBET01UZXh0OjpjbG9uZU5vZGUoZGVlcCwgcmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3JtYWxpemUoIHZvaWQpIHsg
cmV0dXJuIERPTVRleHQ6Om5vcm1hbGl6ZSgpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGlzU3VwcG9ydGVkKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RS
IGZlYXR1cmUsCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2ZXJzaW9uLAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NVGV4dDo6aXNTdXBwb3J0
ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkkoIAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NVGV4dDo6bmFtZXNwYWNlVVJJKHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJlZml4
KCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERP
TVRleHQ6OnByZWZpeChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldFByZWZpeCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwcmVmaXgp
IHsgcmV0dXJuIERPTVRleHQ6OnNldFByZWZpeChwcmVmaXgpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxvY2FsTmFtZSggCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01UZXh0Ojpsb2NhbE5hbWUocmVz
dWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNB
dHRyaWJ1dGVzKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsg
cmV0dXJuIERPTVRleHQ6Omhhc0F0dHJpYnV0ZXMocmVzdWx0KTsgfQorCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoIAorICAgICAgICAvKiBbaW5dICov
IElET01Ob2RlKiBvdGhlciwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1
bHQpIHsgcmV0dXJuIERPTVRleHQ6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoIAorICAg
ICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTVRleHQ6OmlzRXF1YWxOb2RlKG90aGVyLCBy
ZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRl
eHRDb250ZW50KCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsg
cmV0dXJuIERPTVRleHQ6OnRleHRDb250ZW50KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGV4dENvbnRlbnQoIAorICAgICAgICAvKiBb
aW5dICovIEJTVFIgdGV4dCkgeyByZXR1cm4gRE9NVGV4dDo6c2V0VGV4dENvbnRlbnQodGV4dCk7
IH0KKyAgICAKKwkvLyBJRE9NVGV4dAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBkYXRhKCAKKwkJLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJu
IERPTVRleHQ6OmRhdGEocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXREYXRhKCAKKwkJLyogW2luXSAqLyBCU1RSIGRhdGEpIHsgcmV0dXJu
IERPTVRleHQ6OnNldERhdGEoZGF0YSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbGVuZ3RoKCAKKwkJLyogW3JldHZhbF1bb3V0XSAqLyBVSU5UICpyZXN1
bHQpIHsgcmV0dXJuIERPTVRleHQ6Omxlbmd0aChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN1YnN0cmluZ0RhdGEoIAorICAgICAgICAvKiBb
aW5dICovIFVJTlQgb2Zmc2V0LAorICAgICAgICAvKiBbaW5dICovIFVJTlQgY291bnQsCisJCS8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01UZXh0OjpzdWJzdHJp
bmdEYXRhKG9mZnNldCwgY291bnQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwZW5kRGF0YSggCisJCS8qIFtpbl0gKi8gQlNUUiBhcmcp
IHsgcmV0dXJuIERPTVRleHQ6OmFwcGVuZERhdGEoYXJnKTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnREYXRhKCAKKyAgICAgICAgLyogW2luXSAq
LyBVSU5UIG9mZnNldCwKKwkJLyogW2luXSAqLyBCU1RSIGFyZykgeyByZXR1cm4gRE9NVGV4dDo6
aW5zZXJ0RGF0YShvZmZzZXQsIGFyZyk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGVsZXRlRGF0YSggCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZz
ZXQsCisJCS8qIFtpbl0gKi8gVUlOVCBjb3VudCkgeyByZXR1cm4gRE9NVGV4dDo6ZGVsZXRlRGF0
YShvZmZzZXQsIGNvdW50KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSByZXBsYWNlRGF0YSggCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisg
ICAgICAgIC8qIFtpbl0gKi8gVUlOVCBjb3VudCwKKwkJLyogW2luXSAqLyBCU1RSIGFyZykgeyBy
ZXR1cm4gRE9NVGV4dDo6cmVwbGFjZURhdGEob2Zmc2V0LCBjb3VudCwgYXJnKTsgfQorCisJLy8g
SURPTVRleHQKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3BsaXRUZXh0
KCAKKyAgICAgICAgLyogW2luXSAqLyBVSU5UIG9mZnNldCwKKwkJLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NVGV4dCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NVGV4dDo6c3BsaXRUZXh0KG9mZnNldCwg
cmVzdWx0KTsgfQorCisJLy8gRE9NQ0RBVEFTZWN0aW9uCisJV2ViQ29yZTo6Q0RBVEFTZWN0aW9u
ICogY2RhdGFTZWN0aW9uKCkgeyByZXR1cm4gbV9jZGF0YVNlY3Rpb247IH0KKworcHJvdGVjdGVk
OgorCVdlYkNvcmU6OkNEQVRBU2VjdGlvbiAqIG1fY2RhdGFTZWN0aW9uOworfTsKKworCitjbGFz
cyBET01Eb2N1bWVudEZyYWdtZW50IDogcHVibGljIERPTU5vZGUsIHB1YmxpYyBJRE9NRG9jdW1l
bnRGcmFnbWVudAoreworcHJvdGVjdGVkOgorCURPTURvY3VtZW50RnJhZ21lbnQoV2ViQ29yZTo6
RG9jdW1lbnRGcmFnbWVudCAqIGRvY3VtZW50RnJhZ21lbnQpOworCX5ET01Eb2N1bWVudEZyYWdt
ZW50KCk7CisKK3B1YmxpYzoKKwlzdGF0aWMgSURPTURvY3VtZW50RnJhZ21lbnQgKiBjcmVhdGVJ
bnN0YW5jZShXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50ICogZG9jdW1lbnRGcmFnbWVudCk7CisK
KyAgICAvLyBJVW5rbm93bgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBR
dWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7CisJdmlydHVhbCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gRE9NTm9kZTo6QWRk
UmVmKCk7IH0KKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9p
ZCkgeyByZXR1cm4gRE9NTm9kZTo6UmVsZWFzZSgpOyB9CisKKyAgICAvLyBJV2ViU2NyaXB0T2Jq
ZWN0CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9u
KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjp0aHJvd0V4
Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoIAorICAgICAgICAv
KiBbaW5dICovIEJTVFIgbmFtZSwKKyAgICAgICAgLyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBW
QVJJQU5UIGFyZ3NbICBdLAorICAgICAgICAvKiBbaW5dICovIGludCBjQXJncywKKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNh
bGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoIAor
ICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NyaXB0LAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6ZXZhbHVhdGVXZWJTY3JpcHQo
c2NyaXB0LCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1l
KSB7IHJldHVybiBET01Ob2RlOjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24o
IAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9u
KSB7IHJldHVybiBET01Ob2RlOjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRh
dGlvbik7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2Vi
U2NyaXB0VmFsdWVBdEluZGV4KCAKKyAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5k
ZXgsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVB
dEluZGV4KCAKKyAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCisgICAgICAg
IC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0dXJuIERPTU5vZGU6OnNldFdlYlNjcmlwdFZh
bHVlQXRJbmRleChpbmRleCwgdmFsKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVz
Y3JpcHRpb24pIHsgcmV0dXJuIERPTU5vZGU6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7IH0K
KworICAgIC8vIElET01Ob2RlCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG5vZGVOYW1lKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsg
cmV0dXJuIERPTU5vZGU6Om5vZGVOYW1lKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVZhbHVlKCAKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVWYWx1ZShyZXN1bHQp
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVW
YWx1ZSggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2YWx1ZSkgeyByZXR1cm4gRE9NTm9kZTo6
c2V0Tm9kZVZhbHVlKHZhbHVlKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBub2RlVHlwZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gdW5zaWdu
ZWQgc2hvcnQgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bm9kZVR5cGUocmVzdWx0KTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXJlbnROb2RlKCAK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4g
RE9NTm9kZTo6cGFyZW50Tm9kZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNoaWxkTm9kZXMoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2hpbGROb2Rlcyhy
ZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZp
cnN0Q2hpbGQoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0
KSB7IHJldHVybiBET01Ob2RlOjpmaXJzdENoaWxkKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGFzdENoaWxkKCAKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bGFzdENo
aWxkKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcHJldmlvdXNTaWJsaW5nKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9k
ZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cHJldmlvdXNTaWJsaW5nKHJlc3VsdCk7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmV4dFNpYmxpbmco
IAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjpuZXh0U2libGluZyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoIAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01OYW1lZE5vZGVNYXAgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmF0dHJp
YnV0ZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBvd25lckRvY3VtZW50KCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9j
dW1lbnQgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om93bmVyRG9jdW1lbnQocmVzdWx0KTsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnRCZWZv
cmUoIAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpuZXdDaGlsZCwKKyAgICAgICAgLyog
W2luXSAqLyBJRE9NTm9kZSAqcmVmQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omluc2VydEJlZm9yZShuZXdDaGls
ZCwgcmVmQ2hpbGQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgcmVwbGFjZUNoaWxkKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAq
bmV3Q2hpbGQsCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2Rl
OjpyZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUNoaWxkKCAKKyAgICAgICAg
LyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnJlbW92ZUNoaWxkKG9sZENo
aWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGFwcGVuZENoaWxkKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQs
CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJu
IERPTU5vZGU6OmFwcGVuZENoaWxkKG9sZENoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0NoaWxkTm9kZXMoIAorICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aGFzQ2hp
bGROb2RlcyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNsb25lTm9kZSggCisgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBkZWVwLAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2Rl
OjpjbG9uZU5vZGUoZGVlcCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBub3JtYWxpemUoIHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6Om5vcm1h
bGl6ZSgpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlz
U3VwcG9ydGVkKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGZlYXR1cmUsCisgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiB2ZXJzaW9uLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wg
KnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwg
cmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBu
YW1lc3BhY2VVUkkoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkg
eyByZXR1cm4gRE9NTm9kZTo6bmFtZXNwYWNlVVJJKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJlZml4KCAKKyAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnByZWZpeChyZXN1bHQp
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZp
eCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwcmVmaXgpIHsgcmV0dXJuIERPTU5vZGU6OnNl
dFByZWZpeChwcmVmaXgpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGxvY2FsTmFtZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVz
dWx0KSB7IHJldHVybiBET01Ob2RlOjpsb2NhbE5hbWUocmVzdWx0KTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVzKCAKKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omhhc0F0
dHJpYnV0ZXMocmVzdWx0KTsgfQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGlzU2FtZU5vZGUoIAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6
OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoIAorICAgICAgICAvKiBbaW5dICovIElET01O
b2RlKiBvdGhlciwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsg
cmV0dXJuIERPTU5vZGU6OmlzRXF1YWxOb2RlKG90aGVyLCByZXN1bHQpOyB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRleHRDb250ZW50KCAKKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnRleHRD
b250ZW50KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0VGV4dENvbnRlbnQoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdGV4dCkgeyBy
ZXR1cm4gRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQodGV4dCk7IH0KKworCS8vIERPTURvY3VtZW50
RnJhZ21lbnQKKwlXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50ICogZG9jdW1lbnRGcmFnbWVudCgp
IHsgcmV0dXJuIG1fZG9jdW1lbnRGcmFnbWVudDsgfQorCitwcm90ZWN0ZWQ6CisJV2ViQ29yZTo6
RG9jdW1lbnRGcmFnbWVudCAqIG1fZG9jdW1lbnRGcmFnbWVudDsKK307CisKKworY2xhc3MgREVD
TFNQRUNfVVVJRCgiMjdGQjVBMjktNjk3RC00OTQ4LTlBRUMtOEVBRThERTMxMDA3IikgRE9NRG9j
dW1lbnRUeXBlIDogcHVibGljIERPTU5vZGUsIHB1YmxpYyBJRE9NRG9jdW1lbnRUeXBlCit7Citw
cm90ZWN0ZWQ6CisJRE9NRG9jdW1lbnRUeXBlKFdlYkNvcmU6OkRvY3VtZW50VHlwZSAqIGRvY3Vt
ZW50VHlwZSk7CisJfkRPTURvY3VtZW50VHlwZSgpOworCitwdWJsaWM6CisJc3RhdGljIElET01E
b2N1bWVudFR5cGUgKiBjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpEb2N1bWVudFR5cGUgKiBkb2N1
bWVudFR5cGUpOworCisgICAgLy8gSVVua25vd24KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgUXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3Qp
OworCXZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJu
IERPTU5vZGU6OkFkZFJlZigpOyB9CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQ
RSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6OlJlbGVhc2UoKTsgfQorCisgICAgLy8g
SVdlYlNjcmlwdE9iamVjdAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0
aHJvd0V4Y2VwdGlvbiggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdl
LAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9k
KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCisgICAgICAgIC8qIFtzaXplX2lzXVtp
bl0gKi8gY29uc3QgVkFSSUFOVCBhcmdzWyAgXSwKKyAgICAgICAgLyogW2luXSAqLyBpbnQgY0Fy
Z3MsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQp
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRl
V2ViU2NyaXB0KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHNjcmlwdCwKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmV2YWx1
YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoIAorICAgICAgICAvKiBbaW5d
ICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NTm9kZTo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUp
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1Jl
cHJlc2VudGF0aW9uKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBzdHJpbmdS
ZXByZXNlbnRhdGlvbikgeyByZXR1cm4gRE9NTm9kZTo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3Ry
aW5nUmVwcmVzZW50YXRpb24pOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCggCisgICAgICAgIC8qIFtpbl0gKi8gdW5z
aWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJl
c3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1
bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdl
YlNjcmlwdFZhbHVlQXRJbmRleCggCisgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGlu
ZGV4LAorICAgICAgICAvKiBbaW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01Ob2RlOjpz
ZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKCAKKyAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01Ob2RlOjpzZXRFeGNlcHRpb24oZGVz
Y3JpcHRpb24pOyB9CisKKyAgICAvLyBJRE9NTm9kZQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBub2RlTmFtZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpub2RlTmFtZShyZXN1bHQpOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVWYWx1ZSggCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpub2Rl
VmFsdWUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXROb2RlVmFsdWUoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpIHsgcmV0
dXJuIERPTU5vZGU6OnNldE5vZGVWYWx1ZSh2YWx1ZSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoIAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIHVuc2lnbmVkIHNob3J0ICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVUeXBl
KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cGFyZW50Tm9kZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1
bHQpIHsgcmV0dXJuIERPTU5vZGU6OnBhcmVudE5vZGUocmVzdWx0KTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGlsZE5vZGVzKCAKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6
OmNoaWxkTm9kZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBmaXJzdENoaWxkKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Zmlyc3RDaGlsZChyZXN1bHQpOyB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZCggCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6Omxhc3RDaGlsZChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZyggCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnByZXZpb3VzU2libGlu
ZyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG5leHRTaWJsaW5nKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJl
c3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bmV4dFNpYmxpbmcocmVzdWx0KTsgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhdHRyaWJ1dGVzKCAKKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwICoqcmVzdWx0KSB7IHJldHVybiBE
T01Ob2RlOjphdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVudCggCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTURvY3VtZW50ICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpvd25lckRvY3Vt
ZW50KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaW5zZXJ0QmVmb3JlKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqbmV3Q2hpbGQs
CisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKnJlZkNoaWxkLAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppbnNlcnRC
ZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VDaGlsZCggCisgICAgICAgIC8qIFtpbl0g
Ki8gSURPTU5vZGUgKm5ld0NoaWxkLAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpvbGRD
aGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVzdWx0KTsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGls
ZCggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpyZW1v
dmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUgKm9sZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVz
dWx0KSB7IHJldHVybiBET01Ob2RlOjphcHBlbmRDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5vZGVz
KCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZU5vZGUoIAorICAgICAgICAvKiBbaW5dICovIEJPT0wg
ZGVlcCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFsaXplKCB2b2lkKSB7IHJldHVybiBE
T01Ob2RlOjpub3JtYWxpemUoKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpc1N1cHBvcnRlZCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBmZWF0dXJl
LAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmlzU3VwcG9ydGVkKGZlYXR1
cmUsIHZlcnNpb24sIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbmFtZXNwYWNlVVJJKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
U1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5hbWVzcGFjZVVSSShyZXN1bHQpOyB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeCggCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpw
cmVmaXgocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRQcmVmaXgoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgcHJlZml4KSB7IHJldHVy
biBET01Ob2RlOjpzZXRQcmVmaXgocHJlZml4KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBsb2NhbE5hbWUoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bG9jYWxOYW1lKHJlc3VsdCk7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRl
cyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBE
T01Ob2RlOjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpc1NhbWVOb2RlKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9k
ZSogb3RoZXIsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJl
dHVybiBET01Ob2RlOjppc1NhbWVOb2RlKG90aGVyLCByZXN1bHQpOyB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRXF1YWxOb2RlKCAKKyAgICAgICAgLyog
W2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc0VxdWFsTm9kZShvdGhlciwgcmVzdWx0KTsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVu
dCggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBE
T01Ob2RlOjp0ZXh0Q29udGVudChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFRleHRDb250ZW50KCAKKyAgICAgICAgLyogW2luXSAqLyBC
U1RSIHRleHQpIHsgcmV0dXJuIERPTU5vZGU6OnNldFRleHRDb250ZW50KHRleHQpOyB9CisKKwkv
LyBJRE9NRG9jdW1lbnRUeXBlCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG5hbWUoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGVudGl0aWVzKCAKKyAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwICoqcmVzdWx0KTsKKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm90YXRpb25zKCAKKyAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwICoqcmVzdWx0KTsKKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHVibGljSWQoIAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCk7CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN5c3RlbUlkKCAKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSICpyZXN1bHQpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBpbnRlcm5hbFN1YnNldCggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiAqcmVzdWx0KTsKKworCS8vIERPTURvY3VtZW50VHlwZQorCVdlYkNvcmU6OkRvY3VtZW50
VHlwZSAqIGRvY3VtZW50VHlwZSgpIHsgcmV0dXJuIG1fZG9jdW1lbnRUeXBlOyB9CisKK3Byb3Rl
Y3RlZDoKKwlXZWJDb3JlOjpEb2N1bWVudFR5cGUgKiBtX2RvY3VtZW50VHlwZTsKK307CisKKwor
Y2xhc3MgRE9NRW50aXR5UmVmZXJlbmNlIDogcHVibGljIERPTU5vZGUsIHB1YmxpYyBJRE9NRW50
aXR5UmVmZXJlbmNlCit7Citwcm90ZWN0ZWQ6CisJRE9NRW50aXR5UmVmZXJlbmNlKFdlYkNvcmU6
OkVudGl0eVJlZmVyZW5jZSAqIGVudGl0eVJlZmVyZW5jZSk7CisJfkRPTUVudGl0eVJlZmVyZW5j
ZSgpOworCitwdWJsaWM6CisJc3RhdGljIElET01FbnRpdHlSZWZlcmVuY2UgKiBjcmVhdGVJbnN0
YW5jZShXZWJDb3JlOjpFbnRpdHlSZWZlcmVuY2UgKiBlbnRpdHlSZWZlcmVuY2UpOworCisgICAg
Ly8gSVVua25vd24KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlJ
bnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOworCXZpcnR1YWwgVUxPTkcg
U1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6OkFkZFJlZigp
OyB9CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsg
cmV0dXJuIERPTU5vZGU6OlJlbGVhc2UoKTsgfQorCisgICAgLy8gSVdlYlNjcmlwdE9iamVjdAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCisg
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6dGhyb3dFeGNlcHRp
b24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKCAKKyAgICAgICAgLyogW2lu
XSAqLyBCU1RSIG5hbWUsCisgICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3QgVkFSSUFO
VCBhcmdzWyAgXSwKKyAgICAgICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpjYWxsV2Vi
U2NyaXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KCAKKyAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHNjcmlwdCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBW
QVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlw
dCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZW1vdmVXZWJTY3JpcHRLZXkoIAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyBy
ZXR1cm4gRE9NTm9kZTo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKCAKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBzdHJpbmdSZXByZXNlbnRhdGlvbikgeyBy
ZXR1cm4gRE9NTm9kZTo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24p
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlw
dFZhbHVlQXRJbmRleCggCisgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRl
eCggCisgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBb
aW5dICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01Ob2RlOjpzZXRXZWJTY3JpcHRWYWx1ZUF0
SW5kZXgoaW5kZXgsIHZhbCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgc2V0RXhjZXB0aW9uKCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0
aW9uKSB7IHJldHVybiBET01Ob2RlOjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CisKKyAg
ICAvLyBJRE9NTm9kZQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2Rl
TmFtZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjpub2RlTmFtZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG5vZGVWYWx1ZSggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpub2RlVmFsdWUocmVzdWx0KTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROb2RlVmFsdWUo
IAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTU5vZGU6OnNldE5v
ZGVWYWx1ZSh2YWx1ZSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbm9kZVR5cGUoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNo
b3J0ICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVUeXBlKHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZSggCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6OnBhcmVudE5vZGUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjaGlsZE5vZGVzKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NTm9kZUxpc3QgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNoaWxkTm9kZXMocmVzdWx0
KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENo
aWxkKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6Zmlyc3RDaGlsZChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZCggCisgICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omxhc3RDaGlsZChy
ZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBy
ZXZpb3VzU2libGluZyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipy
ZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnByZXZpb3VzU2libGluZyhyZXN1bHQpOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKCAKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6bmV4dFNpYmxpbmcocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBhdHRyaWJ1dGVzKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTmFtZWROb2RlTWFwICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjphdHRyaWJ1dGVz
KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
b3duZXJEb2N1bWVudCggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50
ICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpvd25lckRvY3VtZW50KHJlc3VsdCk7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKCAK
KyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAqbmV3Q2hpbGQsCisgICAgICAgIC8qIFtpbl0g
Ki8gSURPTU5vZGUgKnJlZkNoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJl
ZkNoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlcGxhY2VDaGlsZCggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm5ld0No
aWxkLAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cmVw
bGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGlsZCggCisgICAgICAgIC8qIFtp
bl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpyZW1vdmVDaGlsZChvbGRDaGlsZCwg
cmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBh
cHBlbmRDaGlsZCggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01O
b2RlOjphcHBlbmRDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNDaGlsZE5vZGVzKCAKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omhhc0NoaWxkTm9k
ZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBjbG9uZU5vZGUoIAorICAgICAgICAvKiBbaW5dICovIEJPT0wgZGVlcCwKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2xv
bmVOb2RlKGRlZXAsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbm9ybWFsaXplKCB2b2lkKSB7IHJldHVybiBET01Ob2RlOjpub3JtYWxpemUo
KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBv
cnRlZCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBmZWF0dXJlLAorICAgICAgICAvKiBbaW5d
ICovIEJTVFIgdmVyc2lvbiwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1
bHQpIHsgcmV0dXJuIERPTU5vZGU6OmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNpb24sIHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZXNw
YWNlVVJJKCAKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0
dXJuIERPTU5vZGU6Om5hbWVzcGFjZVVSSShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeCggCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpwcmVmaXgocmVzdWx0KTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmaXgoIAor
ICAgICAgICAvKiBbaW5dICovIEJTVFIgcHJlZml4KSB7IHJldHVybiBET01Ob2RlOjpzZXRQcmVm
aXgocHJlZml4KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBsb2NhbE5hbWUoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkg
eyByZXR1cm4gRE9NTm9kZTo6bG9jYWxOYW1lKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcyggCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpoYXNBdHRyaWJ1
dGVzKHJlc3VsdCk7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBp
c1NhbWVOb2RlKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc1Nh
bWVOb2RlKG90aGVyLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGlzRXF1YWxOb2RlKCAKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSog
b3RoZXIsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjppc0VxdWFsTm9kZShvdGhlciwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudCggCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjp0ZXh0Q29udGVu
dChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFRleHRDb250ZW50KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHRleHQpIHsgcmV0dXJu
IERPTU5vZGU6OnNldFRleHRDb250ZW50KHRleHQpOyB9CisKKwkvLyBET01FbnRpdHlSZWZlcmVu
Y2UKKwlXZWJDb3JlOjpFbnRpdHlSZWZlcmVuY2UgKiBlbnRpdHlSZWZlcmVuY2UoKSB7IHJldHVy
biBtX2VudGl0eVJlZmVyZW5jZTsgfQorCitwcm90ZWN0ZWQ6CisJV2ViQ29yZTo6RW50aXR5UmVm
ZXJlbmNlICogbV9lbnRpdHlSZWZlcmVuY2U7Cit9OworCisKK2NsYXNzIERPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiA6IHB1YmxpYyBET01Ob2RlLCBwdWJsaWMgSURPTVByb2Nlc3NpbmdJbnN0cnVj
dGlvbgoreworcHJvdGVjdGVkOgorCURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbihXZWJDb3JlOjpQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKiBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOworCX5ET01Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24oKTsKKworcHVibGljOgorCXN0YXRpYyBJRE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uICogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9u
ICogcHJvY2Vzc2luZ0luc3RydWN0aW9uKTsKKworICAgIC8vIElVbmtub3duCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2
b2lkKiogcHB2T2JqZWN0KTsKKwl2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJl
Zih2b2lkKSB7IHJldHVybiBET01Ob2RlOjpBZGRSZWYoKTsgfQorICAgIHZpcnR1YWwgVUxPTkcg
U1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVybiBET01Ob2RlOjpSZWxlYXNl
KCk7IH0KKworICAgIC8vIElXZWJTY3JpcHRPYmplY3QKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oIAorICAgICAgICAvKiBbaW5dICovIEJTVFIg
ZXhjZXB0aW9uTWVzc2FnZSwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1
bHQpIHsgcmV0dXJuIERPTU5vZGU6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJl
c3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2Fs
bFdlYlNjcmlwdE1ldGhvZCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAorICAgICAg
ICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCisgICAgICAgIC8q
IFtpbl0gKi8gaW50IGNBcmdzLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQg
KnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdz
LCBjQXJncywgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3Jp
cHQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVy
biBET01Ob2RlOjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KCAK
KyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUpIHsgcmV0dXJuIERPTU5vZGU6OnJlbW92ZVdl
YlNjcmlwdEtleShuYW1lKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbiggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pIHsgcmV0dXJuIERPTU5vZGU6OnN0cmluZ1Jl
cHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQorICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAorICAgICAg
ICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OndlYlNjcmlwdFZhbHVlQXRJ
bmRleChpbmRleCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAorICAgICAgICAvKiBbaW5dICov
IHVuc2lnbmVkIGludCBpbmRleCwKKyAgICAgICAgLyogW2luXSAqLyBWQVJJQU5UIHZhbCkgeyBy
ZXR1cm4gRE9NTm9kZTo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOyB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbigg
CisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlvbikgeyByZXR1cm4gRE9NTm9kZTo6
c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorCisgICAgLy8gSURPTU5vZGUKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5hbWUoIAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bm9kZU5hbWUocmVz
dWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2Rl
VmFsdWUoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1
cm4gRE9NTm9kZTo6bm9kZVZhbHVlKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Tm9kZVZhbHVlKCAKKyAgICAgICAgLyogW2luXSAqLyBC
U1RSIHZhbHVlKSB7IHJldHVybiBET01Ob2RlOjpzZXROb2RlVmFsdWUodmFsdWUpOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVUeXBlKCAKKyAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBzaG9ydCAqcmVzdWx0KSB7IHJldHVybiBE
T01Ob2RlOjpub2RlVHlwZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHBhcmVudE5vZGUoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpwYXJlbnROb2RlKHJlc3VsdCk7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGROb2Rl
cyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0ICoqcmVzdWx0KSB7
IHJldHVybiBET01Ob2RlOjpjaGlsZE5vZGVzKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RDaGlsZCggCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmZpcnN0Q2hp
bGQocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBsYXN0Q2hpbGQoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVz
dWx0KSB7IHJldHVybiBET01Ob2RlOjpsYXN0Q2hpbGQocmVzdWx0KTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmV2aW91c1NpYmxpbmcoIAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2Rl
OjpwcmV2aW91c1NpYmxpbmcocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBuZXh0U2libGluZyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5leHRTaWJsaW5nKHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmli
dXRlcyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCAqKnJl
c3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6YXR0cmlidXRlcyhyZXN1bHQpOyB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG93bmVyRG9jdW1lbnQoIAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCAqKnJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6b3duZXJEb2N1bWVudChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGluc2VydEJlZm9yZSggCisgICAgICAgIC8qIFtpbl0gKi8gSURP
TU5vZGUgKm5ld0NoaWxkLAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpyZWZDaGlsZCwK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4g
RE9NTm9kZTo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgcmVzdWx0KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoIAor
ICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpuZXdDaGlsZCwKKyAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSAqb2xkQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xk
Q2hpbGQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgcmVtb3ZlQ2hpbGQoIAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpvbGRDaGls
ZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1
cm4gRE9NTm9kZTo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwZW5kQ2hpbGQoIAorICAgICAgICAv
KiBbaW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6YXBwZW5kQ2hpbGQob2xkQ2hp
bGQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgaGFzQ2hpbGROb2RlcyggCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVz
dWx0KSB7IHJldHVybiBET01Ob2RlOjpoYXNDaGlsZE5vZGVzKHJlc3VsdCk7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2xvbmVOb2RlKCAKKyAgICAgICAg
LyogW2luXSAqLyBCT09MIGRlZXAsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNsb25lTm9kZShkZWVwLCByZXN1bHQpOyB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vcm1hbGl6ZSgg
dm9pZCkgeyByZXR1cm4gRE9NTm9kZTo6bm9ybWFsaXplKCk7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoIAorICAgICAgICAvKiBbaW5d
ICovIEJTVFIgZmVhdHVyZSwKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHZlcnNpb24sCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpp
c1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVSSSggCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpuYW1lc3BhY2VV
UkkocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBwcmVmaXgoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6cHJlZml4KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KCAKKyAgICAgICAgLyogW2luXSAqLyBCU1RS
IHByZWZpeCkgeyByZXR1cm4gRE9NTm9kZTo6c2V0UHJlZml4KHByZWZpeCk7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKCAKKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmxvY2Fs
TmFtZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGhhc0F0dHJpYnV0ZXMoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJl
c3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aGFzQXR0cmlidXRlcyhyZXN1bHQpOyB9CisKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTYW1lTm9kZSggCisgICAgICAgIC8q
IFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJP
T0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aXNTYW1lTm9kZShvdGhlciwgcmVzdWx0KTsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsTm9k
ZSggCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aXNFcXVhbE5vZGUo
b3RoZXIsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdGV4dENvbnRlbnQoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJl
c3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6dGV4dENvbnRlbnQocmVzdWx0KTsgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudCggCisgICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiB0ZXh0KSB7IHJldHVybiBET01Ob2RlOjpzZXRUZXh0Q29udGVu
dCh0ZXh0KTsgfQorCisJLy8gSURPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YXJnZXQoIAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIgKnJlc3VsdCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRhdGEoIAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3Vs
dCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERhdGEo
IAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZGF0YSk7CisKKwkvLyBET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24KKwlXZWJDb3JlOjpQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gKiBwcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24oKSB7IHJldHVybiBtX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbjsgfQorCitwcm90ZWN0
ZWQ6CisJV2ViQ29yZTo6UHJvY2Vzc2luZ0luc3RydWN0aW9uICogbV9wcm9jZXNzaW5nSW5zdHJ1
Y3Rpb247Cit9OworCisKICNlbmRpZgo=
</data>
<flag name="review"
          id="35605"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52424</attachid>
            <date>2010-04-02 11:00:05 -0700</date>
            <delta_ts>2010-06-20 10:36:32 -0700</delta_ts>
            <desc>Patch part #1 - Fixes existing style errors in DOMCoreClasses.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>57087</size>
            <attacher name="Peter Nelson">charn.opcode</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NzAwMykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTAwIEBACisyMDEwLTA0LTAyICBQZXRlciBOZWxzb24gIDxjaGFy
bi5vcGNvZGVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZpeGVkIHN0eWxlIGVycm9ycyBpbiBET01Db3JlQ2xhc3Nlcy5oIHRvIGJy
aW5nIGl0IHVwIHRvIHNjcmF0Y2gKKyAgICAgICAgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNDk3OS4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmg6Cisg
ICAgICAgIChET01PYmplY3Q6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTU9iamVjdDo6
Y2FsbFdlYlNjcmlwdE1ldGhvZCk6CisgICAgICAgIChET01PYmplY3Q6OmV2YWx1YXRlV2ViU2Ny
aXB0KToKKyAgICAgICAgKERPTU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAg
KERPTU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoRE9NT2JqZWN0Ojp3
ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NT2JqZWN0OjpzZXRXZWJTY3JpcHRW
YWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NT2JqZWN0OjpzZXRFeGNlcHRpb24pOgorICAgICAg
ICAoRE9NTm9kZUxpc3Q6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKERPTU5vZGVMaXN0Ojpj
YWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTU5vZGVMaXN0OjpldmFsdWF0ZVdlYlNj
cmlwdCk6CisgICAgICAgIChET01Ob2RlTGlzdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAg
ICAgKERPTU5vZGVMaXN0OjpzdHJpbmdSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChET01Ob2Rl
TGlzdDo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTU5vZGVMaXN0OjpzZXRX
ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NTm9kZUxpc3Q6OnNldEV4Y2VwdGlv
bik6CisgICAgICAgIChET01Eb2N1bWVudDo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAoRE9N
RG9jdW1lbnQ6OmNhbGxXZWJTY3JpcHRNZXRob2QpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmV2
YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAgKERPTURvY3VtZW50OjpyZW1vdmVXZWJTY3JpcHRL
ZXkpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OnN0cmluZ1JlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKERPTURvY3VtZW50Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NRG9j
dW1lbnQ6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01Eb2N1bWVudDo6
c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTURvY3VtZW50Ojpub2RlTmFtZSk6CisgICAgICAg
IChET01Eb2N1bWVudDo6bm9kZVZhbHVlKToKKyAgICAgICAgKERPTURvY3VtZW50OjpzZXROb2Rl
VmFsdWUpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6Om5vZGVUeXBlKToKKyAgICAgICAgKERPTURv
Y3VtZW50OjpwYXJlbnROb2RlKToKKyAgICAgICAgKERPTURvY3VtZW50OjpjaGlsZE5vZGVzKToK
KyAgICAgICAgKERPTURvY3VtZW50OjpmaXJzdENoaWxkKToKKyAgICAgICAgKERPTURvY3VtZW50
OjpsYXN0Q2hpbGQpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OnByZXZpb3VzU2libGluZyk6Cisg
ICAgICAgIChET01Eb2N1bWVudDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6
OmF0dHJpYnV0ZXMpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6Om93bmVyRG9jdW1lbnQpOgorICAg
ICAgICAoRE9NRG9jdW1lbnQ6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6
cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKERPTURvY3VtZW50OjpyZW1vdmVDaGlsZCk6CisgICAg
ICAgIChET01Eb2N1bWVudDo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6Omhh
c0NoaWxkTm9kZXMpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmNsb25lTm9kZSk6CisgICAgICAg
IChET01Eb2N1bWVudDo6aXNTdXBwb3J0ZWQpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6Om5hbWVz
cGFjZVVSSSk6CisgICAgICAgIChET01Eb2N1bWVudDo6cHJlZml4KToKKyAgICAgICAgKERPTURv
Y3VtZW50OjpzZXRQcmVmaXgpOgorICAgICAgICAoRE9NRG9jdW1lbnQ6OmxvY2FsTmFtZSk6Cisg
ICAgICAgIChET01Eb2N1bWVudDo6aGFzQXR0cmlidXRlcyk6CisgICAgICAgIChET01Eb2N1bWVu
dDo6aXNTYW1lTm9kZSk6CisgICAgICAgIChET01Eb2N1bWVudDo6aXNFcXVhbE5vZGUpOgorICAg
ICAgICAoRE9NRG9jdW1lbnQ6OnRleHRDb250ZW50KToKKyAgICAgICAgKERPTURvY3VtZW50Ojpz
ZXRUZXh0Q29udGVudCk6CisgICAgICAgIChET01FbGVtZW50Ojp0aHJvd0V4Y2VwdGlvbik6Cisg
ICAgICAgIChET01FbGVtZW50OjpjYWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTUVs
ZW1lbnQ6OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbW92ZVdl
YlNjcmlwdEtleSk6CisgICAgICAgIChET01FbGVtZW50OjpzdHJpbmdSZXByZXNlbnRhdGlvbik6
CisgICAgICAgIChET01FbGVtZW50Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAo
RE9NRWxlbWVudDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTUVsZW1l
bnQ6OnNldEV4Y2VwdGlvbik6CisgICAgICAgIChET01FbGVtZW50Ojpub2RlTmFtZSk6CisgICAg
ICAgIChET01FbGVtZW50Ojpub2RlVmFsdWUpOgorICAgICAgICAoRE9NRWxlbWVudDo6c2V0Tm9k
ZVZhbHVlKToKKyAgICAgICAgKERPTUVsZW1lbnQ6Om5vZGVUeXBlKToKKyAgICAgICAgKERPTUVs
ZW1lbnQ6OnBhcmVudE5vZGUpOgorICAgICAgICAoRE9NRWxlbWVudDo6Y2hpbGROb2Rlcyk6Cisg
ICAgICAgIChET01FbGVtZW50OjpmaXJzdENoaWxkKToKKyAgICAgICAgKERPTUVsZW1lbnQ6Omxh
c3RDaGlsZCk6CisgICAgICAgIChET01FbGVtZW50OjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAg
ICAoRE9NRWxlbWVudDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoRE9NRWxlbWVudDo6YXR0cmli
dXRlcyk6CisgICAgICAgIChET01FbGVtZW50Ojpvd25lckRvY3VtZW50KToKKyAgICAgICAgKERP
TUVsZW1lbnQ6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChET01FbGVtZW50OjpyZXBsYWNlQ2hp
bGQpOgorICAgICAgICAoRE9NRWxlbWVudDo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoRE9NRWxl
bWVudDo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoRE9NRWxlbWVudDo6aGFzQ2hpbGROb2Rlcyk6
CisgICAgICAgIChET01FbGVtZW50OjpjbG9uZU5vZGUpOgorICAgICAgICAoRE9NRWxlbWVudDo6
aXNTdXBwb3J0ZWQpOgorICAgICAgICAoRE9NRWxlbWVudDo6bmFtZXNwYWNlVVJJKToKKyAgICAg
ICAgKERPTUVsZW1lbnQ6OnByZWZpeCk6CisgICAgICAgIChET01FbGVtZW50OjpzZXRQcmVmaXgp
OgorICAgICAgICAoRE9NRWxlbWVudDo6bG9jYWxOYW1lKToKKyAgICAgICAgKERPTUVsZW1lbnQ6
Omhhc0F0dHJpYnV0ZXMpOgorICAgICAgICAoRE9NRWxlbWVudDo6aXNTYW1lTm9kZSk6CisgICAg
ICAgIChET01FbGVtZW50Ojppc0VxdWFsTm9kZSk6CisgICAgICAgIChET01FbGVtZW50Ojp0ZXh0
Q29udGVudCk6CisgICAgICAgIChET01FbGVtZW50OjpzZXRUZXh0Q29udGVudCk6CisKIDIwMTAt
MDQtMDEgIENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmgJKHJldmlzaW9uIDU3MDAw
KQorKysgV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwx
NCArMzAsMTQgQEAKICNpbmNsdWRlICJXZWJTY3JpcHRPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotICAgIGNsYXNzIEVsZW1lbnQ7Ci0gICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xh
c3MgTm9kZTsKLSAgICBjbGFzcyBOb2RlTGlzdDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBEb2N1
bWVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBOb2RlTGlzdDsKIH0KIAotY2xhc3MgRE9NT2JqZWN0
IDogcHVibGljIFdlYlNjcmlwdE9iamVjdCwgcHVibGljIElET01PYmplY3QKLXsKKworY2xhc3Mg
RE9NT2JqZWN0IDogcHVibGljIFdlYlNjcmlwdE9iamVjdCwgcHVibGljIElET01PYmplY3Qgewog
cHVibGljOgogICAgIC8vIElVbmtub3duCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKQEAg
LTQ1LDQwICs0NSwzOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxM
VFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIFdlYlNjcmlwdE9iamVjdDo6UmVsZWFzZSgpOyB9
CiAKICAgICAvLyBJV2ViU2NyaXB0T2JqZWN0Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHRocm93RXhjZXB0aW9uKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRp
b25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCkgeyBy
ZXR1cm4gV2ViU2NyaXB0T2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCBy
ZXN1bHQpOyB9CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJl
dHVybiBXZWJTY3JpcHRPYmplY3Q6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJl
c3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2Fs
bFdlYlNjcmlwdE1ldGhvZCggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNhbGxXZWJTY3JpcHRNZXRob2QoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAogICAg
ICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCiAgICAgICAg
IC8qIFtpbl0gKi8gaW50IGNBcmdzLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklB
TlQgKnJlc3VsdCkgeyByZXR1cm4gV2ViU2NyaXB0T2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0aG9k
KG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBXZWJTY3JpcHRPYmplY3Q6OmNhbGxXZWJTY3Jp
cHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCgKICAgICAgICAg
LyogW2luXSAqLyBCU1RSIHNjcmlwdCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJ
QU5UICpyZXN1bHQpIHsgcmV0dXJuIFdlYlNjcmlwdE9iamVjdDo6ZXZhbHVhdGVXZWJTY3JpcHQo
c2NyaXB0LCByZXN1bHQpOyB9CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCog
cmVzdWx0KSB7IHJldHVybiBXZWJTY3JpcHRPYmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlw
dCwgcmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZW1vdmVXZWJTY3JpcHRLZXkoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7
IHJldHVybiBXZWJTY3JpcHRPYmplY3Q6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsgfQogICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRh
dGlvbiggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJl
c2VudGF0aW9uKAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHN0cmluZ1JlcHJl
c2VudGF0aW9uKSB7IHJldHVybiBXZWJTY3JpcHRPYmplY3Q6OnN0cmluZ1JlcHJlc2VudGF0aW9u
KHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoCiAgICAgICAgIC8qIFtp
bl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZB
UklBTlQgKnJlc3VsdCkgeyByZXR1cm4gV2ViU2NyaXB0T2JqZWN0Ojp3ZWJTY3JpcHRWYWx1ZUF0
SW5kZXgoaW5kZXgsIHJlc3VsdCk7IH0KKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJ
QU5UKiByZXN1bHQpIHsgcmV0dXJuIFdlYlNjcmlwdE9iamVjdDo6d2ViU2NyaXB0VmFsdWVBdElu
ZGV4KGluZGV4LCByZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCgKICAgICAgICAgLyog
W2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCiAgICAgICAgIC8qIFtpbl0gKi8gVkFSSUFOVCB2
YWwpIHsgcmV0dXJuIFdlYlNjcmlwdE9iamVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGlu
ZGV4LCB2YWwpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldEV4Y2VwdGlvbiggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEV4Y2VwdGlvbigKICAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVy
biBXZWJTY3JpcHRPYmplY3Q6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7IH0KIH07CiAKLWNs
YXNzIERFQ0xTUEVDX1VVSUQoIjA2MkFFRUUzLTlFNDItNDREQy1BOEE5LTIzNkIyMTZGRTAxMSIp
IERPTU5vZGUgOiBwdWJsaWMgRE9NT2JqZWN0LCBwdWJsaWMgSURPTU5vZGUsIHB1YmxpYyBJRE9N
RXZlbnRUYXJnZXQKLXsKK2NsYXNzIERFQ0xTUEVDX1VVSUQoIjA2MkFFRUUzLTlFNDItNDREQy1B
OEE5LTIzNkIyMTZGRTAxMSIpIERPTU5vZGUgOiBwdWJsaWMgRE9NT2JqZWN0LCBwdWJsaWMgSURP
TU5vZGUsIHB1YmxpYyBJRE9NRXZlbnRUYXJnZXQgewogcHJvdGVjdGVkOgogICAgIERPTU5vZGUo
V2ViQ29yZTo6Tm9kZSogbik7CiAgICAgfkRPTU5vZGUoKTsKQEAgLTkzLDE0OSArOTIsMTQ5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9p
ZCkgeyByZXR1cm4gRE9NT2JqZWN0OjpSZWxlYXNlKCk7IH0KIAogICAgIC8vIElXZWJTY3JpcHRP
YmplY3QKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRp
b24oIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlv
bigKICAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OnRocm93
RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3VsdCk7IH0KKyAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6dGhyb3dFeGNlcHRp
b24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKCAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZCgKICAgICAgICAgLyog
W2luXSAqLyBCU1RSIG5hbWUsCiAgICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3QgVkFS
SUFOVCBhcmdzWyAgXSwKICAgICAgICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmNh
bGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6
Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQogICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCgg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0
KAogICAgICAgICAvKiBbaW5dICovIEJTVFIgc2NyaXB0LAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0OjpldmFsdWF0ZVdlYlNj
cmlwdChzY3JpcHQsIHJlc3VsdCk7IH0KKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJ
QU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0
LCByZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHJlbW92ZVdlYlNjcmlwdEtleSggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHJlbW92ZVdlYlNjcmlwdEtleSgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUpIHsg
cmV0dXJuIERPTU9iamVjdDo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9CiAgICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKCAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRp
b24oCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogc3RyaW5nUmVwcmVzZW50YXRp
b24pIHsgcmV0dXJuIERPTU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVz
ZW50YXRpb24pOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHdlYlNjcmlwdFZhbHVlQXRJbmRleCggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCgKICAgICAgICAgLyogW2luXSAqLyB1bnNpZ25l
ZCBpbnQgaW5kZXgsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCAqcmVzdWx0
KSB7IHJldHVybiBET01PYmplY3Q6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0
KTsgfQorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1
cm4gRE9NT2JqZWN0Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7IH0KICAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFs
dWVBdEluZGV4KCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0V2Vi
U2NyaXB0VmFsdWVBdEluZGV4KAogICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRl
eCwKICAgICAgICAgLyogW2luXSAqLyBWQVJJQU5UIHZhbCkgeyByZXR1cm4gRE9NT2JqZWN0Ojpz
ZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7IH0KICAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKCAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKAogICAgICAgICAvKiBbaW5dICov
IEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJuIERPTU9iamVjdDo6c2V0RXhjZXB0aW9uKGRlc2Ny
aXB0aW9uKTsgfQogCiAgICAgLy8gSURPTU5vZGUKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbm9kZU5hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIg
KnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVOYW1l
KAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAgICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVWYWx1ZSggCi0gICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbm9kZVZhbHVlKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldE5vZGVWYWx1ZSggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dE5vZGVWYWx1ZSgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKTsKICAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoIAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0ICpyZXN1bHQpOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVHlwZSgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTU5vZGUgKipyZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBwYXJlbnROb2RlKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiog
cmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hp
bGROb2RlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0ICoqcmVz
dWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGROb2RlcygK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpOwogICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxkKCAKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZpcnN0Q2hpbGQoCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlICoqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbGFzdENoaWxkKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiog
cmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJl
dmlvdXNTaWJsaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJl
c3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2li
bGluZygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCk7CiAg
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmlidXRlcyggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCAqKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTU5hbWVkTm9kZU1hcCoqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG93bmVyRG9jdW1lbnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Eb2N1bWVudCAqKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIG93bmVyRG9jdW1lbnQoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTURvY3VtZW50KiogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAq
bmV3Q2hpbGQsCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKnJlZkNoaWxkLAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKAorICAgICAgICAvKiBbaW5dICov
IElET01Ob2RlKiBuZXdDaGlsZCwKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogcmVmQ2hp
bGQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOwogICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoIAot
ICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpuZXdDaGlsZCwKLSAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSAqb2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGUgKipyZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBs
YWNlQ2hpbGQoCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG5ld0NoaWxkLAorICAgICAg
ICAvKiBbaW5dICovIElET01Ob2RlKiBvbGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlbW92ZUNoaWxkKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSAq
b2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGlsZCgKKyAg
ICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb2xkQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUgKm9sZENoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVz
dWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwZW5kQ2hpbGQo
CisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG9sZENoaWxkLAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ2hpbGROb2RlcyggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCAqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaGFzQ2hpbGROb2RlcygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBy
ZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9u
ZU5vZGUoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZU5vZGUo
CiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBkZWVwLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlICoqcmVzdWx0KTsKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZSoqIHJlc3VsdCk7CiAgICAgCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIG5vcm1hbGl6ZSggdm9pZCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGlzU3VwcG9ydGVkKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaXNTdXBwb3J0ZWQoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBmZWF0dXJlLAogICAg
ICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCT09MICpyZXN1bHQpOworICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3Vs
dCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFj
ZVVSSSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZXNwYWNlVVJJKAorICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiAqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
cHJlZml4KAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAgICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZpeCggCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFByZWZpeCgKICAgICAgICAgLyog
W2luXSAqLyBCU1RSIHByZWZpeCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGxvY2FsTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAq
cmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1l
KAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAgICAgCi0gICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZXMoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZXMoCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCogcmVzdWx0KTsKIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBpc1NhbWVOb2RlKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aXNTYW1lTm9kZSgKICAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCiAgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsTm9kZSgKICAgICAgICAgLyogW2luXSAqLyBJRE9N
Tm9kZSogb3RoZXIsCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsK
ICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGV4dENvbnRlbnQo
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudCgKICAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudCggCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRDb250ZW50KAogICAgICAgICAvKiBb
aW5dICovIEJTVFIgdGV4dCk7CiAKICAgICAvLyBJRE9NRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWRkRXZlbnRMaXN0ZW5lciggCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFkZEV2ZW50TGlzdGVuZXIoCiAgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiB0eXBlLAogICAgICAgICAvKiBbaW5dICovIElET01FdmVudExpc3RlbmVy
ICpsaXN0ZW5lciwKICAgICAgICAgLyogW2luXSAqLyBCT09MIHVzZUNhcHR1cmUpOwogICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVFdmVudExpc3RlbmVy
KCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlRXZlbnRMaXN0
ZW5lcigKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHR5cGUsCiAgICAgICAgIC8qIFtpbl0gKi8g
SURPTUV2ZW50TGlzdGVuZXIgKmxpc3RlbmVyLAogICAgICAgICAvKiBbaW5dICovIEJPT0wgdXNl
Q2FwdHVyZSk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRp
c3BhdGNoRXZlbnQoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaXNw
YXRjaEV2ZW50KAogICAgICAgICAvKiBbaW5dICovIElET01FdmVudCAqZXZ0LAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7CisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQk9PTCogcmVzdWx0KTsKIAogICAgIC8vIERPTU5vZGUKICAgICBXZWJDb3JlOjpOb2Rl
KiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9CkBAIC0yNDQsOCArMjQzLDcgQEAgcHJv
dGVjdGVkOgogICAgIFdlYkNvcmU6Ok5vZGUqIG1fbm9kZTsKIH07CiAKLWNsYXNzIERPTU5vZGVM
aXN0IDogcHVibGljIERPTU9iamVjdCwgcHVibGljIElET01Ob2RlTGlzdAoteworY2xhc3MgRE9N
Tm9kZUxpc3QgOiBwdWJsaWMgRE9NT2JqZWN0LCBwdWJsaWMgSURPTU5vZGVMaXN0IHsKIHByb3Rl
Y3RlZDoKICAgICBET01Ob2RlTGlzdChXZWJDb3JlOjpOb2RlTGlzdCogbCk7CiAgICAgfkRPTU5v
ZGVMaXN0KCk7CkBAIC0yNjAsNTEgKzI1OCw1MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBVTE9O
RyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU9iamVjdDo6UmVs
ZWFzZSgpOyB9CiAKICAgICAvLyBJV2ViU2NyaXB0T2JqZWN0Ci0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oCiAgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBleGNlcHRpb25NZXNzYWdlLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJl
c3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdl
LCByZXN1bHQpOyB9CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7
IHJldHVybiBET01PYmplY3Q6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJlc3Vs
dCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2FsbFdl
YlNjcmlwdE1ldGhvZCggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNh
bGxXZWJTY3JpcHRNZXRob2QoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAogICAgICAg
ICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCiAgICAgICAgIC8q
IFtpbl0gKi8gaW50IGNBcmdzLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQg
KnJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0aG9kKG5hbWUsIGFy
Z3MsIGNBcmdzLCByZXN1bHQpOyB9CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFO
VCogcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwg
YXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCgKICAgICAgICAgLyogW2luXSAqLyBCU1RS
IHNjcmlwdCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsg
cmV0dXJuIERPTU9iamVjdDo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9Cisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBET01P
YmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQogICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoCiAg
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7IHJldHVybiBET01PYmplY3Q6OnJlbW92ZVdl
YlNjcmlwdEtleShuYW1lKTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbiggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKAogICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01PYmplY3Q6OnN0
cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQogICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5k
ZXgoCiAgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp3ZWJT
Y3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgsIHJlc3VsdCk7IH0KKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6d2ViU2NyaXB0VmFs
dWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCgKICAgICAg
ICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCiAgICAgICAgIC8qIFtpbl0gKi8gVkFS
SUFOVCB2YWwpIHsgcmV0dXJuIERPTU9iamVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGlu
ZGV4LCB2YWwpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldEV4Y2VwdGlvbiggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEV4Y2VwdGlvbigKICAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVy
biBET01PYmplY3Q6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7IH0KIAogICAgIC8vIElET01O
b2RlTGlzdAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpdGVtKCAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXRlbSgKICAgICAgICAgLyogW2lu
XSAqLyBVSU5UIGluZGV4LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoq
cmVzdWx0KTsKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCk7
CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxlbmd0aCggCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCAqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGVuZ3RoKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIFVJTlQqIHJlc3VsdCk7CiAKIHByb3RlY3RlZDoKICAgICBXZWJDb3JlOjpOb2RlTGlzdCog
bV9ub2RlTGlzdDsKIH07CiAKLWNsYXNzIERPTURvY3VtZW50IDogcHVibGljIERPTU5vZGUsIHB1
YmxpYyBJRE9NRG9jdW1lbnQsIHB1YmxpYyBJRE9NVmlld0NTUywgcHVibGljIElET01Eb2N1bWVu
dEV2ZW50Ci17CitjbGFzcyBET01Eb2N1bWVudCA6IHB1YmxpYyBET01Ob2RlLCBwdWJsaWMgSURP
TURvY3VtZW50LCBwdWJsaWMgSURPTVZpZXdDU1MsIHB1YmxpYyBJRE9NRG9jdW1lbnRFdmVudCB7
CiBwcm90ZWN0ZWQ6CiAgICAgRE9NRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQqIGQpOwogICAg
IH5ET01Eb2N1bWVudCgpOwpAQCAtMzE5LDIxNSArMzE2LDIxNSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU5v
ZGU6OlJlbGVhc2UoKTsgfQogCiAgICAgLy8gSVdlYlNjcmlwdE9iamVjdAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbiggCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKAogICAgICAgICAvKiBbaW5d
ICovIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1l
c3NhZ2UsIHJlc3VsdCk7IH0KKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1
bHQpIHsgcmV0dXJuIERPTU5vZGU6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3NhZ2UsIHJl
c3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2Fs
bFdlYlNjcmlwdE1ldGhvZCggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGNhbGxXZWJTY3JpcHRNZXRob2QoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAogICAg
ICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0sCiAgICAgICAg
IC8qIFtpbl0gKi8gaW50IGNBcmdzLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklB
TlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBh
cmdzLCBjQXJncywgcmVzdWx0KTsgfQorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklB
TlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2FsbFdlYlNjcmlwdE1ldGhvZChuYW1lLCBh
cmdzLCBjQXJncywgcmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KAogICAgICAgICAvKiBbaW5dICovIEJTVFIg
c2NyaXB0LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9CisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBET01Ob2Rl
OjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KCAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KAogICAgICAg
ICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NTm9kZTo6cmVtb3ZlV2ViU2NyaXB0
S2V5KG5hbWUpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHN0cmluZ1JlcHJlc2VudGF0aW9uKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pIHsgcmV0dXJuIERPTU5vZGU6OnN0cmluZ1JlcHJl
c2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9uKTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoCiAgICAg
ICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIFZBUklBTlQgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6d2ViU2NyaXB0VmFsdWVB
dEluZGV4KGluZGV4LCByZXN1bHQpOyB9CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFS
SUFOVCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5k
ZXgsIHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KAogICAgICAgICAvKiBbaW5dICov
IHVuc2lnbmVkIGludCBpbmRleCwKICAgICAgICAgLyogW2luXSAqLyBWQVJJQU5UIHZhbCkgeyBy
ZXR1cm4gRE9NTm9kZTo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOyB9CiAg
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbigg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlvbigKICAg
ICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01Ob2RlOjpzZXRF
eGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CiAKICAgICAvLyBJRE9NTm9kZQotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpub2RlTmFtZShyZXN1bHQp
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVOYW1lKAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6
bm9kZU5hbWUocmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBub2RlVmFsdWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJl
c3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bm9kZVZhbHVlKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVZhbHVlKAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bm9kZVZhbHVlKHJlc3Vs
dCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Tm9k
ZVZhbHVlKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Tm9kZVZh
bHVlKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTU5vZGU6OnNl
dE5vZGVWYWx1ZSh2YWx1ZSk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgbm9kZVR5cGUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVk
IHNob3J0ICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVUeXBlKHJlc3VsdCk7IH0KKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gdW5zaWduZWQgc2hvcnQqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9k
ZTo6bm9kZVR5cGUocmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBwYXJlbnROb2RlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cGFyZW50Tm9kZShyZXN1bHQpOyB9Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhcmVudE5vZGUoCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6
OnBhcmVudE5vZGUocmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjaGlsZE5vZGVzKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZUxpc3QgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNoaWxkTm9kZXMocmVzdWx0KTsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGlsZE5vZGVzKAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCoqIHJlc3VsdCkgeyByZXR1cm4g
RE9NTm9kZTo6Y2hpbGROb2RlcyhyZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGZpcnN0Q2hpbGQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpmaXJzdENoaWxkKHJlc3Vs
dCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RDaGlsZCgK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4g
RE9NTm9kZTo6Zmlyc3RDaGlsZChyZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omxhc3RDaGlsZChyZXN1bHQp
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZCgKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6bGFzdENoaWxkKHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNTaWJsaW5nKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cHJldmlvdXNTaWJsaW5n
KHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmlv
dXNTaWJsaW5nKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0
KSB7IHJldHVybiBET01Ob2RlOjpwcmV2aW91c1NpYmxpbmcocmVzdWx0KTsgfQogICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuZXh0U2libGluZyggCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6
Om5leHRTaWJsaW5nKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbmV4dFNpYmxpbmcoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUq
KiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5leHRTaWJsaW5nKHJlc3VsdCk7IH0KICAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmlidXRlcyggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCAqKnJlc3VsdCkgeyByZXR1
cm4gRE9NTm9kZTo6YXR0cmlidXRlcyhyZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTU5hbWVkTm9kZU1hcCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6YXR0cmlidXRlcyhy
ZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG93
bmVyRG9jdW1lbnQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCAq
KnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6b3duZXJEb2N1bWVudChyZXN1bHQpOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG93bmVyRG9jdW1lbnQoCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50KiogcmVzdWx0KSB7IHJldHVybiBET01O
b2RlOjpvd25lckRvY3VtZW50KHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9N
Tm9kZSAqbmV3Q2hpbGQsCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKnJlZkNoaWxkLAot
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBE
T01Ob2RlOjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQpOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluc2VydEJlZm9yZSgKKyAgICAgICAg
LyogW2luXSAqLyBJRE9NTm9kZSogbmV3Q2hpbGQsCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUqIHJlZkNoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVz
dWx0KSB7IHJldHVybiBET01Ob2RlOjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCBy
ZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJl
cGxhY2VDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUgKm5ld0NoaWxkLAotICAg
ICAgICAvKiBbaW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cmVwbGFjZUNoaWxk
KG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUq
IG5ld0NoaWxkLAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvbGRDaGlsZCwKKyAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9k
ZTo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVzdWx0KTsgfQogICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGlsZCggCi0gICAgICAg
IC8qIFtpbl0gKi8gSURPTU5vZGUgKm9sZENoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpyZW1vdmVDaGlsZChvbGRD
aGlsZCwgcmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBy
ZW1vdmVDaGlsZCgKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb2xkQ2hpbGQsCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6OnJlbW92ZUNoaWxkKG9sZENoaWxkLCByZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFwcGVuZENoaWxkKCAKLSAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSAqb2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmFwcGVuZENoaWxkKG9sZENoaWxkLCByZXN1
bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFwcGVuZENoaWxk
KAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvbGRDaGlsZCwKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6YXBwZW5k
Q2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgaGFzQ2hpbGROb2RlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpoYXNDaGlsZE5vZGVzKHJlc3VsdCk7
IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQ2hpbGROb2RlcygK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBjbG9uZU5vZGUoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjbG9uZU5vZGUoCiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBkZWVwLAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01O
b2RlOjpjbG9uZU5vZGUoZGVlcCwgcmVzdWx0KTsgfQorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpjbG9uZU5vZGUoZGVlcCwg
cmVzdWx0KTsgfQogICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBu
b3JtYWxpemUoIHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6Om5vcm1hbGl6ZSgpOyB9CiAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU3VwcG9ydGVkKCAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoCiAgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBmZWF0dXJlLAogICAgICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6OmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNpb24sIHJlc3VsdCk7IH0KKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmlzU3VwcG9y
dGVkKGZlYXR1cmUsIHZlcnNpb24sIHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZXNwYWNlVVJJKCAKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5hbWVzcGFjZVVSSShyZXN1
bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVS
SSgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6Om5hbWVzcGFjZVVSSShyZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHByZWZpeCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
QlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpwcmVmaXgocmVzdWx0KTsgfQorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmVmaXgoCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpwcmVmaXgocmVzdWx0
KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVm
aXgoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmaXgoCiAg
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwcmVmaXgpIHsgcmV0dXJuIERPTU5vZGU6OnNldFByZWZp
eChwcmVmaXgpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGxvY2FsTmFtZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KSB7
IHJldHVybiBET01Ob2RlOjpsb2NhbE5hbWUocmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBsb2NhbE5hbWUoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpsb2NhbE5hbWUocmVzdWx0KTsgfQog
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVz
KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6Omhhc0F0dHJpYnV0ZXMocmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVzKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aGFzQXR0cmlidXRlcyhyZXN1bHQpOyB9
CiAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTYW1lTm9kZSggCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoCiAgICAgICAg
IC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aXNTYW1lTm9kZShvdGhlciwgcmVzdWx0
KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFs
Tm9kZSggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRXF1YWxOb2Rl
KAogICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKICAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmlzRXF1YWxOb2RlKG90
aGVyLCByZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHRleHRDb250ZW50KCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
dGV4dENvbnRlbnQoCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7
IHJldHVybiBET01Ob2RlOjp0ZXh0Q29udGVudChyZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRDb250ZW50KCAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0VGV4dENvbnRlbnQoCiAgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiB0ZXh0KSB7IHJldHVybiBET01Ob2RlOjpzZXRUZXh0Q29udGVudCh0ZXh0KTsg
fQogICAgIAogICAgIC8vIElET01Eb2N1bWVudAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBkb2N0eXBlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9j
dW1lbnRUeXBlICoqcmVzdWx0KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZG9jdHlwZSgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnRUeXBl
KiogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
aW1wbGVtZW50YXRpb24oIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01JbXBsZW1l
bnRhdGlvbiAqKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGltcGxlbWVudGF0aW9uKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01JbXBsZW1l
bnRhdGlvbioqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRvY3VtZW50RWxlbWVudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TUVsZW1lbnQgKipyZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBkb2N1bWVudEVsZW1lbnQoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1l
bnQqKiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBjcmVhdGVFbGVtZW50KCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Y3JlYXRlRWxlbWVudCgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRhZ05hbWUsCi0gICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQgKipyZXN1bHQpOworICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIElET01FbGVtZW50KiogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlRG9jdW1lbnRGcmFnbWVudCggCi0gICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURvY3VtZW50RnJhZ21lbnQgKipyZXN1bHQpOwor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVEb2N1bWVudEZyYWdt
ZW50KAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudEZyYWdtZW50Kiog
cmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3Jl
YXRlVGV4dE5vZGUoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVh
dGVUZXh0Tm9kZSgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIGRhdGEsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTVRleHQgKipyZXN1bHQpOworICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01UZXh0KiogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgY3JlYXRlQ29tbWVudCggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGNyZWF0ZUNvbW1lbnQoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkYXRh
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Db21tZW50ICoqcmVzdWx0KTsKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQ29tbWVudCoqIHJlc3VsdCk7CiAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUNEQVRBU2VjdGlvbigg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUNEQVRBU2VjdGlv
bigKICAgICAgICAgLyogW2luXSAqLyBCU1RSIGRhdGEsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTUNEQVRBU2VjdGlvbiAqKnJlc3VsdCk7CisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTUNEQVRBU2VjdGlvbioqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbiggCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVj
dGlvbigKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRhcmdldCwKICAgICAgICAgLyogW2luXSAq
LyBCU1RSIGRhdGEsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiAqKnJlc3VsdCk7CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTVBy
b2Nlc3NpbmdJbnN0cnVjdGlvbioqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUF0dHJpYnV0ZSggCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUF0dHJpYnV0ZSgKICAgICAgICAgLyogW2luXSAqLyBC
U1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipyZXN1bHQp
OworICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyKiogcmVzdWx0KTsKICAgICAK
LSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlRW50aXR5UmVmZXJl
bmNlKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlRW50aXR5
UmVmZXJlbmNlKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKLSAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NRW50aXR5UmVmZXJlbmNlICoqcmVzdWx0KTsKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NRW50aXR5UmVmZXJlbmNlKiogcmVzdWx0KTsKICAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeVRhZ05hbWUo
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRFbGVtZW50c0J5VGFn
TmFtZSgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRhZ05hbWUsCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGVMaXN0ICoqcmVzdWx0KTsKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBpbXBvcnROb2RlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9N
Tm9kZSAqaW1wb3J0ZWROb2RlLAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBpbXBvcnROb2RlKAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBpbXBvcnRlZE5vZGUs
CiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBkZWVwLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlICoqcmVzdWx0KTsKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZSoqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNyZWF0ZUVsZW1lbnROUyggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGNyZWF0ZUVsZW1lbnROUygKICAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVS
SSwKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHF1YWxpZmllZE5hbWUsCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTUVsZW1lbnQgKipyZXN1bHQpOworICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01FbGVtZW50KiogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlQXR0cmlidXRlTlMoIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVBdHRyaWJ1dGVOUygKICAgICAgICAgLyogW2lu
XSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHF1YWxpZmll
ZE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIgKipyZXN1bHQpOwor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyKiogcmVzdWx0KTsKICAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxlbWVudHNCeVRhZ05hbWVO
UyggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1lbnRzQnlU
YWdOYW1lTlMoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCiAgICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTU5vZGVMaXN0ICoqcmVzdWx0KTsKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZUxpc3QqKiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBnZXRFbGVtZW50QnlJZCggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldEVsZW1lbnRCeUlkKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgZWxlbWVudElk
LAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01FbGVtZW50ICoqcmVzdWx0KTsKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRWxlbWVudCoqIHJlc3VsdCk7CiAKICAgICAv
LyBJRE9NVmlld0NTUwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRD
b21wdXRlZFN0eWxlKCAKLSAgICAgICAgLyogW2luXSAqLyBJRE9NRWxlbWVudCAqZWx0LAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRDb21wdXRlZFN0eWxlKAorICAg
ICAgICAvKiBbaW5dICovIElET01FbGVtZW50KiBlbHQsCiAgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBwc2V1ZG9FbHQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUNTU1N0eWxlRGVj
bGFyYXRpb24gKipyZXN1bHQpOworICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01DU1NT
dHlsZURlY2xhcmF0aW9uKiogcmVzdWx0KTsKIAogICAgIC8vIElET01Eb2N1bWVudEV2ZW50Ci0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNyZWF0ZUV2ZW50KCAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRlRXZlbnQoCiAgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBldmVudFR5cGUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TUV2ZW50ICoqcmVzdWx0KTsKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRXZlbnQq
KiByZXN1bHQpOwogCiAgICAgLy8gRE9NRG9jdW1lbnQKICAgICBXZWJDb3JlOjpEb2N1bWVudCog
ZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50OyB9CkBAIC01MzYsOCArNTMzLDcgQEAgcHJv
dGVjdGVkOgogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBtX2RvY3VtZW50OwogfTsKIAotY2xhc3Mg
RE9NRWxlbWVudCA6IHB1YmxpYyBET01Ob2RlLCBwdWJsaWMgSURPTUVsZW1lbnQsIHB1YmxpYyBJ
RE9NRWxlbWVudFByaXZhdGUsIHB1YmxpYyBJRE9NTm9kZUV4dGVuc2lvbnMsIHB1YmxpYyBJRE9N
RWxlbWVudENTU0lubGluZVN0eWxlLCBwdWJsaWMgSURPTUVsZW1lbnRFeHRlbnNpb25zCi17Citj
bGFzcyBET01FbGVtZW50IDogcHVibGljIERPTU5vZGUsIHB1YmxpYyBJRE9NRWxlbWVudCwgcHVi
bGljIElET01FbGVtZW50UHJpdmF0ZSwgcHVibGljIElET01Ob2RlRXh0ZW5zaW9ucywgcHVibGlj
IElET01FbGVtZW50Q1NTSW5saW5lU3R5bGUsIHB1YmxpYyBJRE9NRWxlbWVudEV4dGVuc2lvbnMg
ewogcHJvdGVjdGVkOgogICAgIERPTUVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCogZSk7CiAgICAg
fkRPTUVsZW1lbnQoKTsKQEAgLTU1MSwyMjUgKzU0NywyMjUgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVybiBET01Ob2Rl
OjpSZWxlYXNlKCk7IH0KIAogICAgIC8vIElXZWJTY3JpcHRPYmplY3QKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbigKICAgICAgICAgLyogW2luXSAq
LyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNz
YWdlLCByZXN1bHQpOyB9CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0
KSB7IHJldHVybiBET01Ob2RlOjp0aHJvd0V4Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1
bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxX
ZWJTY3JpcHRNZXRob2QoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBj
YWxsV2ViU2NyaXB0TWV0aG9kKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKICAgICAg
ICAgLyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAogICAgICAgICAv
KiBbaW5dICovIGludCBjQXJncywKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5U
ICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJn
cywgY0FyZ3MsIHJlc3VsdCk7IH0KKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5U
KiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJn
cywgY0FyZ3MsIHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHNj
cmlwdCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0
dXJuIERPTU5vZGU6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6
ZXZhbHVhdGVXZWJTY3JpcHQoc2NyaXB0LCByZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSggCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSgKICAgICAgICAg
LyogW2luXSAqLyBCU1RSIG5hbWUpIHsgcmV0dXJuIERPTU5vZGU6OnJlbW92ZVdlYlNjcmlwdEtl
eShuYW1lKTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
dHJpbmdSZXByZXNlbnRhdGlvbiggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01Ob2RlOjpzdHJpbmdSZXByZXNl
bnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KCAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4KAogICAgICAg
ICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBWQVJJQU5UICpyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OndlYlNjcmlwdFZhbHVlQXRJ
bmRleChpbmRleCwgcmVzdWx0KTsgfQorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklB
TlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4
LCByZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCgKICAgICAgICAgLyogW2luXSAqLyB1
bnNpZ25lZCBpbnQgaW5kZXgsCiAgICAgICAgIC8qIFtpbl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0
dXJuIERPTU5vZGU6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgdmFsKTsgfQogICAg
IAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRFeGNlcHRpb24oCiAgICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlvbikgeyByZXR1cm4gRE9NTm9kZTo6c2V0RXhj
ZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQogCiAgICAgLy8gSURPTU5vZGUKLSAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bm9kZU5hbWUocmVzdWx0KTsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFtZSgKKyAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5v
ZGVOYW1lKHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgbm9kZVZhbHVlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1
bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVWYWx1ZShyZXN1bHQpOyB9CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVWYWx1ZSgKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVWYWx1ZShyZXN1bHQp
OyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVW
YWx1ZSggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVWYWx1
ZSgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01Ob2RlOjpzZXRO
b2RlVmFsdWUodmFsdWUpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIG5vZGVUeXBlKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBz
aG9ydCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpub2RlVHlwZShyZXN1bHQpOyB9CisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVUeXBlKAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0KiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6
Om5vZGVUeXBlKHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcGFyZW50Tm9kZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnBhcmVudE5vZGUocmVzdWx0KTsgfQorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwYXJlbnROb2RlKAorICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpw
YXJlbnROb2RlKHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY2hpbGROb2RlcyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGVMaXN0ICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpjaGlsZE5vZGVzKHJlc3VsdCk7IH0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGROb2RlcygKKyAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6OmNoaWxkTm9kZXMocmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxkKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Zmlyc3RDaGlsZChyZXN1bHQp
OyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZpcnN0Q2hpbGQoCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6OmZpcnN0Q2hpbGQocmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpsYXN0Q2hpbGQocmVzdWx0KTsg
fQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6Omxhc3RDaGlsZChyZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZyggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnByZXZpb3VzU2libGluZyhy
ZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3Vz
U2libGluZygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkg
eyByZXR1cm4gRE9NTm9kZTo6cHJldmlvdXNTaWJsaW5nKHJlc3VsdCk7IH0KICAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmV4dFNpYmxpbmcoIAotICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpu
ZXh0U2libGluZyhyZXN1bHQpOyB9CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIG5leHRTaWJsaW5nKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiog
cmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpuZXh0U2libGluZyhyZXN1bHQpOyB9CiAgICAgCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoIAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01OYW1lZE5vZGVNYXAgKipyZXN1bHQpIHsgcmV0dXJu
IERPTU5vZGU6OmF0dHJpYnV0ZXMocmVzdWx0KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBhdHRyaWJ1dGVzKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElE
T01OYW1lZE5vZGVNYXAqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmF0dHJpYnV0ZXMocmVz
dWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25l
ckRvY3VtZW50KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnQgKipy
ZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om93bmVyRG9jdW1lbnQocmVzdWx0KTsgfQorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25lckRvY3VtZW50KAorICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9k
ZTo6b3duZXJEb2N1bWVudChyZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGluc2VydEJlZm9yZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUgKm5ld0NoaWxkLAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpyZWZDaGlsZCwKLSAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgcmVzdWx0KTsgfQorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnRCZWZvcmUoCisgICAgICAgIC8q
IFtpbl0gKi8gSURPTU5vZGUqIG5ld0NoaWxkLAorICAgICAgICAvKiBbaW5dICovIElET01Ob2Rl
KiByZWZDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3Vs
dCkgeyByZXR1cm4gRE9NTm9kZTo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgcmVz
dWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBs
YWNlQ2hpbGQoIAotICAgICAgICAvKiBbaW5dICovIElET01Ob2RlICpuZXdDaGlsZCwKLSAgICAg
ICAgLyogW2luXSAqLyBJRE9NTm9kZSAqb2xkQ2hpbGQsCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTU5vZGUgKipyZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnJlcGxhY2VDaGlsZChu
ZXdDaGlsZCwgb2xkQ2hpbGQsIHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgcmVwbGFjZUNoaWxkKAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBu
ZXdDaGlsZCwKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb2xkQ2hpbGQsCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6
OnJlcGxhY2VDaGlsZChuZXdDaGlsZCwgb2xkQ2hpbGQsIHJlc3VsdCk7IH0KICAgICAKLSAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQ2hpbGQoIAotICAgICAgICAv
KiBbaW5dICovIElET01Ob2RlICpvbGRDaGlsZCwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cmVtb3ZlQ2hpbGQob2xkQ2hp
bGQsIHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVt
b3ZlQ2hpbGQoCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG9sZENoaWxkLAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01Ob2Rl
OjpyZW1vdmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCggCi0gICAgICAgIC8qIFtpbl0gKi8g
SURPTU5vZGUgKm9sZENoaWxkLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2Rl
ICoqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjphcHBlbmRDaGlsZChvbGRDaGlsZCwgcmVzdWx0
KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRDaGlsZCgK
KyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb2xkQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmFwcGVuZENo
aWxkKG9sZENoaWxkLCByZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGhhc0NoaWxkTm9kZXMoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aGFzQ2hpbGROb2RlcyhyZXN1bHQpOyB9
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0NoaWxkTm9kZXMoCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2Rl
OjpoYXNDaGlsZE5vZGVzKHJlc3VsdCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgY2xvbmVOb2RlKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY2xvbmVOb2RlKAogICAgICAgICAvKiBbaW5dICovIEJPT0wgZGVlcCwKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSAqKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9k
ZTo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7IH0KKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2xvbmVOb2RlKGRlZXAsIHJl
c3VsdCk7IH0KICAgICAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9y
bWFsaXplKCB2b2lkKSB7IHJldHVybiBET01Ob2RlOjpub3JtYWxpemUoKTsgfQogICAgIAotICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZCggCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU3VwcG9ydGVkKAogICAgICAgICAvKiBb
aW5dICovIEJTVFIgZmVhdHVyZSwKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHZlcnNpb24sCi0g
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01Ob2Rl
Ojppc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uLCByZXN1bHQpOyB9CisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc1N1cHBvcnRl
ZChmZWF0dXJlLCB2ZXJzaW9uLCByZXN1bHQpOyB9CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVSSSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gQlNUUiAqcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpuYW1lc3BhY2VVUkkocmVzdWx0
KTsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkko
CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01O
b2RlOjpuYW1lc3BhY2VVUkkocmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBwcmVmaXgoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIgKnJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cHJlZml4KHJlc3VsdCk7IH0KKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJlZml4KAorICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cHJlZml4KHJlc3VsdCk7
IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4
KCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KAogICAg
ICAgICAvKiBbaW5dICovIEJTVFIgcHJlZml4KSB7IHJldHVybiBET01Ob2RlOjpzZXRQcmVmaXgo
cHJlZml4KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBs
b2NhbE5hbWUoIAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIgKnJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6bG9jYWxOYW1lKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bG9jYWxOYW1lKHJlc3VsdCk7IH0KICAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcygg
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KSB7IHJldHVybiBET01O
b2RlOjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaGFzQXR0cmlidXRlcygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omhhc0F0dHJpYnV0ZXMocmVzdWx0KTsgfQog
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1NhbWVOb2RlKAogICAgICAgICAv
KiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKICAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
T09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7
IH0KICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5v
ZGUoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsTm9kZSgK
ICAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCiAgICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc0VxdWFsTm9kZShvdGhl
ciwgcmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSB0ZXh0Q29udGVudCggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRl
eHRDb250ZW50KAogICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6dGV4dENvbnRlbnQocmVzdWx0KTsgfQogICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudCggCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRDb250ZW50KAogICAgICAgICAvKiBbaW5d
ICovIEJTVFIgdGV4dCkgeyByZXR1cm4gRE9NTm9kZTo6c2V0VGV4dENvbnRlbnQodGV4dCk7IH0K
ICAgICAKICAgICAvLyBJRE9NRWxlbWVudAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSB0YWdOYW1lKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1
bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0YWdOYW1lKAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZSggCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZSgKICAgICAgICAgLyogW2luXSAq
LyBCU1RSIG5hbWUsCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiAqcmVzdWx0KTsK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOwogICAgIAotICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGUoIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGUoCiAgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBuYW1lLAogICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpOwogICAgIAot
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGUoIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGUoCiAg
ICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTm9kZSggCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGdldEF0dHJpYnV0ZU5vZGUoCiAgICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBuYW1lLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRyICoqcmVzdWx0
KTsKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0cioqIHJlc3VsdCk7CiAgICAg
Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGUo
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBdHRyaWJ1dGVOb2Rl
KAogICAgICAgICAvKiBbaW5dICovIElET01BdHRyICpuZXdBdHRyLAotICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01BdHRyICoqcmVzdWx0KTsKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBJRE9NQXR0cioqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5vZGUoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGVOb2RlKAogICAgICAgICAvKiBbaW5dICov
IElET01BdHRyICpvbGRBdHRyLAotICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01BdHRy
ICoqcmVzdWx0KTsKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0cioqIHJlc3Vs
dCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldEVsZW1l
bnRzQnlUYWdOYW1lKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0
RWxlbWVudHNCeVRhZ05hbWUoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lLAotICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCAqKnJlc3VsdCk7CisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVMaXN0KiogcmVzdWx0KTsKICAgICAKLSAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0QXR0cmlidXRlTlMoIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRBdHRyaWJ1dGVOUygKICAgICAgICAgLyog
W2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwKICAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2Fs
TmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSICpyZXN1bHQpOworICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5TKCAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QXR0cmlidXRlTlMoCiAgICAgICAgIC8qIFtpbl0g
Ki8gQlNUUiBuYW1lc3BhY2VVUkksCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBxdWFsaWZpZWRO
YW1lLAogICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpOwogICAgIAotICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVBdHRyaWJ1dGVOUyggCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlbW92ZUF0dHJpYnV0ZU5TKAogICAgICAgICAv
KiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJLAogICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9j
YWxOYW1lKTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0
QXR0cmlidXRlTm9kZU5TKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
Z2V0QXR0cmlidXRlTm9kZU5TKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZXNwYWNlVVJJ
LAogICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lLAotICAgICAgICAvKiBbcmV0dmFs
XVtvdXRdICovIElET01BdHRyICoqcmVzdWx0KTsKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBJRE9NQXR0cioqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGVOUyggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHNldEF0dHJpYnV0ZU5vZGVOUygKICAgICAgICAgLyogW2luXSAqLyBJRE9N
QXR0ciAqbmV3QXR0ciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQXR0ciAqKnJl
c3VsdCk7CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUF0dHIqKiByZXN1bHQpOwog
ICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRFbGVtZW50c0J5
VGFnTmFtZU5TKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0RWxl
bWVudHNCeVRhZ05hbWVOUygKICAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWVzcGFjZVVSSSwK
ICAgICAgICAgLyogW2luXSAqLyBCU1RSIGxvY2FsTmFtZSwKLSAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZUxpc3QgKipyZXN1bHQpOworICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIElET01Ob2RlTGlzdCoqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZSggCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZSgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUs
Ci0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0KTsKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBoYXNBdHRyaWJ1dGVOUyggCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZU5TKAogICAgICAgICAvKiBbaW5dICovIEJT
VFIgbmFtZXNwYWNlVVJJLAogICAgICAgICAvKiBbaW5dICovIEJTVFIgbG9jYWxOYW1lLAotICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wgKnJlc3VsdCk7CisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBmb2N1cyggdm9pZCk7CiAgICAgCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGJsdXIoIHZvaWQpOwogCiAgICAgLy8gSURPTU5vZGVFeHRlbnNpb25zCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGJvdW5kaW5nQm94KCAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYm91bmRpbmdCb3goCiAgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gTFBSRUNUIHJlY3QpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBsaW5lQm94UmVjdHMoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBsaW5lQm94UmVjdHMoCiAgICAgICAgIC8qIFtzaXplX2lzXVtpbl0g
Ki8gUkVDVCogcmVjdHMsCiAgICAgICAgIC8qIFtpbl0gKi8gaW50IGNSZWN0cyk7CiAKICAgICAv
LyBJRE9NRWxlbWVudFByaXZhdGUKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY29yZUVsZW1lbnQoIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBj
b3JlRWxlbWVudCgKICAgICAgICAgdm9pZCoqIGVsZW1lbnQpOwogCi0gICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGlzRXF1YWwoIAotICAgICAgICAvKiBbaW5dICovIElET01F
bGVtZW50ICpvdGhlciwKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MICpyZXN1bHQp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsKAorICAgICAg
ICAvKiBbaW5dICovIElET01FbGVtZW50KiBvdGhlciwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCT09MKiByZXN1bHQpOwogCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGlzRm9jdXNlZCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCAqcmVzdWx0
KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNGb2N1c2VkKAorICAg
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCk7CiAKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5uZXJUZXh0KAogICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHJlc3VsdCk7CkBAIC03ODEsNTMgKzc3Nyw1MyBAQCBwdWJsaWM6CiAgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSEJJVE1BUCogaW1hZ2UpOwogCiAgICAgLy8gSURPTUVs
ZW1lbnRDU1NJbmxpbmVTdHlsZQotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBzdHlsZSggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUNTU1N0eWxlRGVjbGFy
YXRpb24gKipyZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
dHlsZSgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NQ1NTU3R5bGVEZWNsYXJhdGlv
bioqIHJlc3VsdCk7CiAKICAgICAvLyBJRE9NRWxlbWVudEV4dGVuc2lvbnMKLSAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb2Zmc2V0TGVmdCggCi0gICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gaW50ICpyZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBvZmZzZXRMZWZ0KAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogcmVz
dWx0KTsKICAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb2Zmc2V0
VG9wKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQgKnJlc3VsdCk7CisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9mZnNldFRvcCgKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIG9mZnNldFdpZHRoKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBpbnQgKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9m
ZnNldFdpZHRoKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0KTsKICAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb2Zmc2V0SGVpZ2h0KCAK
LSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQgKnJlc3VsdCk7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG9mZnNldEhlaWdodCgKKyAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBpbnQqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIG9mZnNldFBhcmVudCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
SURPTUVsZW1lbnQgKipyZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBvZmZzZXRQYXJlbnQoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTUVsZW1l
bnQqKiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBjbGllbnRXaWR0aCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50ICpyZXN1bHQp
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbGllbnRXaWR0aCgKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsaWVudEhlaWdodCggCi0gICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gaW50ICpyZXN1bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjbGllbnRIZWlnaHQoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50
KiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
Y3JvbGxMZWZ0KCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQgKnJlc3VsdCk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNjcm9sbExlZnQoCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTY3JvbGxMZWZ0KCAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0U2Nyb2xsTGVmdCgKICAgICAgICAgLyogW2luXSAqLyBp
bnQgbmV3U2Nyb2xsTGVmdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNjcm9sbFRvcCggCi0gICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50ICpyZXN1
bHQpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JvbGxUb3AoCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gaW50KiByZXN1bHQpOwogICAgIAotICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTY3JvbGxUb3AoIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRTY3JvbGxUb3AoCiAgICAgICAgIC8qIFtpbl0g
Ki8gaW50IG5ld1Njcm9sbFRvcCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNjcm9sbFdpZHRoKCAKLSAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQg
KnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNjcm9sbFdp
ZHRoKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIGludCogcmVzdWx0KTsKICAgICAKLSAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2Nyb2xsSGVpZ2h0KCAKLSAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBpbnQgKnJlc3VsdCk7CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHNjcm9sbEhlaWdodCgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBpbnQqIHJlc3VsdCk7CiAgICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNjcm9sbEludG9WaWV3KCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2Nyb2xsSW50b1ZpZXcoCiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBhbGlnbldpdGhU
b3ApOwogICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzY3JvbGxJ
bnRvVmlld0lmTmVlZGVkKCAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgKICAgICAgICAgLyogW2luXSAqLyBCT09MIGNlbnRlcklm
TmVlZGVkKTsKIAogICAgIC8vIERPTUVsZW1lbnQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53790</attachid>
            <date>2010-04-20 02:46:17 -0700</date>
            <delta_ts>2010-06-20 10:37:52 -0700</delta_ts>
            <desc>Patch part #2 - Class declarations for a number missing DOM objects in DOMCoreClasses.h</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>46477</size>
            <attacher name="Peter Nelson">charn.opcode</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1Nzg1NykKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcxIEBACisyMDEwLTA0LTE5ICBQZXRlciBOZWxzb24gIDxjaGFy
bi5vcGNvZGVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGNsYXNzIGRlY2xhcmF0aW9ucyBmb3IgRE9NQ2hhcmFjdGVyRGF0
YSwgRE9NVGV4dCwKKyAgICAgICAgRE9NTmFtZWROb2RlTWFwLCBET01JbXBsZW1lbnRhdGlvbiBh
bmQgRE9NQ29tbWVudAorICAgICAgICBvYmplY3RzIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzQ5NzkuCisKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5oOgor
ICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6QWRkUmVmKToKKyAgICAgICAgKERPTUNoYXJhY3Rl
ckRhdGE6OlJlbGVhc2UpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6dGhyb3dFeGNlcHRp
b24pOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6Y2FsbFdlYlNjcmlwdE1ldGhvZCk6Cisg
ICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpldmFsdWF0ZVdlYlNjcmlwdCk6CisgICAgICAgIChE
T01DaGFyYWN0ZXJEYXRhOjpyZW1vdmVXZWJTY3JpcHRLZXkpOgorICAgICAgICAoRE9NQ2hhcmFj
dGVyRGF0YTo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0
YTo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OnNl
dFdlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpzZXRF
eGNlcHRpb24pOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6bm9kZU5hbWUpOgorICAgICAg
ICAoRE9NQ2hhcmFjdGVyRGF0YTo6bm9kZVZhbHVlKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRh
dGE6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpub2RlVHlwZSk6
CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpwYXJlbnROb2RlKToKKyAgICAgICAgKERPTUNo
YXJhY3RlckRhdGE6OmNoaWxkTm9kZXMpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6Zmly
c3RDaGlsZCk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjpsYXN0Q2hpbGQpOgorICAgICAg
ICAoRE9NQ2hhcmFjdGVyRGF0YTo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAgKERPTUNoYXJh
Y3RlckRhdGE6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OmF0dHJp
YnV0ZXMpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0YTo6b3duZXJEb2N1bWVudCk6CisgICAg
ICAgIChET01DaGFyYWN0ZXJEYXRhOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoRE9NQ2hhcmFj
dGVyRGF0YTo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OnJlbW92
ZUNoaWxkKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OmFwcGVuZENoaWxkKToKKyAgICAg
ICAgKERPTUNoYXJhY3RlckRhdGE6Omhhc0NoaWxkTm9kZXMpOgorICAgICAgICAoRE9NQ2hhcmFj
dGVyRGF0YTo6Y2xvbmVOb2RlKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6Om5vcm1hbGl6
ZSk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjppc1N1cHBvcnRlZCk6CisgICAgICAgIChE
T01DaGFyYWN0ZXJEYXRhOjpuYW1lc3BhY2VVUkkpOgorICAgICAgICAoRE9NQ2hhcmFjdGVyRGF0
YTo6cHJlZml4KToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OnNldFByZWZpeCk6CisgICAg
ICAgIChET01DaGFyYWN0ZXJEYXRhOjpsb2NhbE5hbWUpOgorICAgICAgICAoRE9NQ2hhcmFjdGVy
RGF0YTo6aGFzQXR0cmlidXRlcyk6CisgICAgICAgIChET01DaGFyYWN0ZXJEYXRhOjppc1NhbWVO
b2RlKToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OmlzRXF1YWxOb2RlKToKKyAgICAgICAg
KERPTUNoYXJhY3RlckRhdGE6OnRleHRDb250ZW50KToKKyAgICAgICAgKERPTUNoYXJhY3RlckRh
dGE6OnNldFRleHRDb250ZW50KToKKyAgICAgICAgKERPTUNoYXJhY3RlckRhdGE6OmNoYXJhY3Rl
ckRhdGEpOgorICAgICAgICAoRE9NVGV4dDo6QWRkUmVmKToKKyAgICAgICAgKERPTVRleHQ6OlJl
bGVhc2UpOgorICAgICAgICAoRE9NVGV4dDo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAoRE9N
VGV4dDo6Y2FsbFdlYlNjcmlwdE1ldGhvZCk6CisgICAgICAgIChET01UZXh0OjpldmFsdWF0ZVdl
YlNjcmlwdCk6CisgICAgICAgIChET01UZXh0OjpyZW1vdmVXZWJTY3JpcHRLZXkpOgorICAgICAg
ICAoRE9NVGV4dDo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoRE9NVGV4dDo6d2Vi
U2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTVRleHQ6OnNldFdlYlNjcmlwdFZhbHVl
QXRJbmRleCk6CisgICAgICAgIChET01UZXh0OjpzZXRFeGNlcHRpb24pOgorICAgICAgICAoRE9N
VGV4dDo6bm9kZU5hbWUpOgorICAgICAgICAoRE9NVGV4dDo6bm9kZVZhbHVlKToKKyAgICAgICAg
KERPTVRleHQ6OnNldE5vZGVWYWx1ZSk6CisgICAgICAgIChET01UZXh0Ojpub2RlVHlwZSk6Cisg
ICAgICAgIChET01UZXh0OjpwYXJlbnROb2RlKToKKyAgICAgICAgKERPTVRleHQ6OmNoaWxkTm9k
ZXMpOgorICAgICAgICAoRE9NVGV4dDo6Zmlyc3RDaGlsZCk6CisgICAgICAgIChET01UZXh0Ojps
YXN0Q2hpbGQpOgorICAgICAgICAoRE9NVGV4dDo6cHJldmlvdXNTaWJsaW5nKToKKyAgICAgICAg
KERPTVRleHQ6Om5leHRTaWJsaW5nKToKKyAgICAgICAgKERPTVRleHQ6OmF0dHJpYnV0ZXMpOgor
ICAgICAgICAoRE9NVGV4dDo6b3duZXJEb2N1bWVudCk6CisgICAgICAgIChET01UZXh0OjppbnNl
cnRCZWZvcmUpOgorICAgICAgICAoRE9NVGV4dDo6cmVwbGFjZUNoaWxkKToKKyAgICAgICAgKERP
TVRleHQ6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKERPTVRleHQ6OmFwcGVuZENoaWxkKToKKyAg
ICAgICAgKERPTVRleHQ6Omhhc0NoaWxkTm9kZXMpOgorICAgICAgICAoRE9NVGV4dDo6Y2xvbmVO
b2RlKToKKyAgICAgICAgKERPTVRleHQ6Om5vcm1hbGl6ZSk6CisgICAgICAgIChET01UZXh0Ojpp
c1N1cHBvcnRlZCk6CisgICAgICAgIChET01UZXh0OjpuYW1lc3BhY2VVUkkpOgorICAgICAgICAo
RE9NVGV4dDo6cHJlZml4KToKKyAgICAgICAgKERPTVRleHQ6OnNldFByZWZpeCk6CisgICAgICAg
IChET01UZXh0Ojpsb2NhbE5hbWUpOgorICAgICAgICAoRE9NVGV4dDo6aGFzQXR0cmlidXRlcyk6
CisgICAgICAgIChET01UZXh0Ojppc1NhbWVOb2RlKToKKyAgICAgICAgKERPTVRleHQ6OmlzRXF1
YWxOb2RlKToKKyAgICAgICAgKERPTVRleHQ6OnRleHRDb250ZW50KToKKyAgICAgICAgKERPTVRl
eHQ6OnNldFRleHRDb250ZW50KToKKyAgICAgICAgKERPTVRleHQ6OmRhdGEpOgorICAgICAgICAo
RE9NVGV4dDo6c2V0RGF0YSk6CisgICAgICAgIChET01UZXh0OjpsZW5ndGgpOgorICAgICAgICAo
RE9NVGV4dDo6c3Vic3RyaW5nRGF0YSk6CisgICAgICAgIChET01UZXh0OjphcHBlbmREYXRhKToK
KyAgICAgICAgKERPTVRleHQ6Omluc2VydERhdGEpOgorICAgICAgICAoRE9NVGV4dDo6ZGVsZXRl
RGF0YSk6CisgICAgICAgIChET01UZXh0OjpyZXBsYWNlRGF0YSk6CisgICAgICAgIChET01UZXh0
Ojp0ZXh0KToKKyAgICAgICAgKERPTU5hbWVkTm9kZU1hcDo6QWRkUmVmKToKKyAgICAgICAgKERP
TU5hbWVkTm9kZU1hcDo6UmVsZWFzZSk6CisgICAgICAgIChET01OYW1lZE5vZGVNYXA6OnRocm93
RXhjZXB0aW9uKToKKyAgICAgICAgKERPTU5hbWVkTm9kZU1hcDo6Y2FsbFdlYlNjcmlwdE1ldGhv
ZCk6CisgICAgICAgIChET01OYW1lZE5vZGVNYXA6OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAg
ICAgKERPTU5hbWVkTm9kZU1hcDo6cmVtb3ZlV2ViU2NyaXB0S2V5KToKKyAgICAgICAgKERPTU5h
bWVkTm9kZU1hcDo6c3RyaW5nUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoRE9NTmFtZWROb2Rl
TWFwOjp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NTmFtZWROb2RlTWFwOjpz
ZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NTmFtZWROb2RlTWFwOjpzZXRF
eGNlcHRpb24pOgorICAgICAgICAoRE9NTmFtZWROb2RlTWFwOjpuYW1lZE5vZGVNYXApOgorICAg
ICAgICAoRE9NSW1wbGVtZW50YXRpb246OkFkZFJlZik6CisgICAgICAgIChET01JbXBsZW1lbnRh
dGlvbjo6UmVsZWFzZSk6CisgICAgICAgIChET01JbXBsZW1lbnRhdGlvbjo6dGhyb3dFeGNlcHRp
b24pOgorICAgICAgICAoRE9NSW1wbGVtZW50YXRpb246OmNhbGxXZWJTY3JpcHRNZXRob2QpOgor
ICAgICAgICAoRE9NSW1wbGVtZW50YXRpb246OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAg
KERPTUltcGxlbWVudGF0aW9uOjpyZW1vdmVXZWJTY3JpcHRLZXkpOgorICAgICAgICAoRE9NSW1w
bGVtZW50YXRpb246OnN0cmluZ1JlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKERPTUltcGxlbWVu
dGF0aW9uOjp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9NSW1wbGVtZW50YXRp
b246OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCk6CisgICAgICAgIChET01JbXBsZW1lbnRhdGlv
bjo6c2V0RXhjZXB0aW9uKToKKyAgICAgICAgKERPTUltcGxlbWVudGF0aW9uOjppbXBsZW1lbnRh
dGlvbik6CisgICAgICAgIChET01Db21tZW50OjpBZGRSZWYpOgorICAgICAgICAoRE9NQ29tbWVu
dDo6UmVsZWFzZSk6CisgICAgICAgIChET01Db21tZW50Ojp0aHJvd0V4Y2VwdGlvbik6CisgICAg
ICAgIChET01Db21tZW50OjpjYWxsV2ViU2NyaXB0TWV0aG9kKToKKyAgICAgICAgKERPTUNvbW1l
bnQ6OmV2YWx1YXRlV2ViU2NyaXB0KToKKyAgICAgICAgKERPTUNvbW1lbnQ6OnJlbW92ZVdlYlNj
cmlwdEtleSk6CisgICAgICAgIChET01Db21tZW50OjpzdHJpbmdSZXByZXNlbnRhdGlvbik6Cisg
ICAgICAgIChET01Db21tZW50Ojp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgpOgorICAgICAgICAoRE9N
Q29tbWVudDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KToKKyAgICAgICAgKERPTUNvbW1lbnQ6
OnNldEV4Y2VwdGlvbik6CisgICAgICAgIChET01Db21tZW50Ojpub2RlTmFtZSk6CisgICAgICAg
IChET01Db21tZW50Ojpub2RlVmFsdWUpOgorICAgICAgICAoRE9NQ29tbWVudDo6c2V0Tm9kZVZh
bHVlKToKKyAgICAgICAgKERPTUNvbW1lbnQ6Om5vZGVUeXBlKToKKyAgICAgICAgKERPTUNvbW1l
bnQ6OnBhcmVudE5vZGUpOgorICAgICAgICAoRE9NQ29tbWVudDo6Y2hpbGROb2Rlcyk6CisgICAg
ICAgIChET01Db21tZW50OjpmaXJzdENoaWxkKToKKyAgICAgICAgKERPTUNvbW1lbnQ6Omxhc3RD
aGlsZCk6CisgICAgICAgIChET01Db21tZW50OjpwcmV2aW91c1NpYmxpbmcpOgorICAgICAgICAo
RE9NQ29tbWVudDo6bmV4dFNpYmxpbmcpOgorICAgICAgICAoRE9NQ29tbWVudDo6YXR0cmlidXRl
cyk6CisgICAgICAgIChET01Db21tZW50Ojpvd25lckRvY3VtZW50KToKKyAgICAgICAgKERPTUNv
bW1lbnQ6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChET01Db21tZW50OjpyZXBsYWNlQ2hpbGQp
OgorICAgICAgICAoRE9NQ29tbWVudDo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoRE9NQ29tbWVu
dDo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAoRE9NQ29tbWVudDo6aGFzQ2hpbGROb2Rlcyk6Cisg
ICAgICAgIChET01Db21tZW50OjpjbG9uZU5vZGUpOgorICAgICAgICAoRE9NQ29tbWVudDo6bm9y
bWFsaXplKToKKyAgICAgICAgKERPTUNvbW1lbnQ6OmlzU3VwcG9ydGVkKToKKyAgICAgICAgKERP
TUNvbW1lbnQ6Om5hbWVzcGFjZVVSSSk6CisgICAgICAgIChET01Db21tZW50OjpwcmVmaXgpOgor
ICAgICAgICAoRE9NQ29tbWVudDo6c2V0UHJlZml4KToKKyAgICAgICAgKERPTUNvbW1lbnQ6Omxv
Y2FsTmFtZSk6CisgICAgICAgIChET01Db21tZW50OjpoYXNBdHRyaWJ1dGVzKToKKyAgICAgICAg
KERPTUNvbW1lbnQ6OmlzU2FtZU5vZGUpOgorICAgICAgICAoRE9NQ29tbWVudDo6aXNFcXVhbE5v
ZGUpOgorICAgICAgICAoRE9NQ29tbWVudDo6dGV4dENvbnRlbnQpOgorICAgICAgICAoRE9NQ29t
bWVudDo6c2V0VGV4dENvbnRlbnQpOgorICAgICAgICAoRE9NQ29tbWVudDo6ZGF0YSk6CisgICAg
ICAgIChET01Db21tZW50OjpzZXREYXRhKToKKyAgICAgICAgKERPTUNvbW1lbnQ6Omxlbmd0aCk6
CisgICAgICAgIChET01Db21tZW50OjpzdWJzdHJpbmdEYXRhKToKKyAgICAgICAgKERPTUNvbW1l
bnQ6OmFwcGVuZERhdGEpOgorICAgICAgICAoRE9NQ29tbWVudDo6aW5zZXJ0RGF0YSk6CisgICAg
ICAgIChET01Db21tZW50OjpkZWxldGVEYXRhKToKKyAgICAgICAgKERPTUNvbW1lbnQ6OnJlcGxh
Y2VEYXRhKToKKyAgICAgICAgKERPTUNvbW1lbnQ6OmNvbW1lbnQpOgorCiAyMDEwLTA0LTE2ICBH
YXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKFdpbmRvd3MgYnVpbGQgZml4KS4KSW5kZXg6IFdlYktpdC93aW4vRE9N
Q29yZUNsYXNzZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmgJ
KHJldmlzaW9uIDU3ODI2KQorKysgV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxMyArMzAsMjMgQEAKICNpbmNsdWRlICJXZWJTY3JpcHRPYmplY3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXR0cjsKK2NsYXNzIENEQVRBU2VjdGlvbjsK
K2NsYXNzIENoYXJhY3RlckRhdGE7CitjbGFzcyBDb21tZW50OwogY2xhc3MgRWxlbWVudDsKK2Ns
YXNzIEVudGl0eVJlZmVyZW5jZTsKIGNsYXNzIERvY3VtZW50OworY2xhc3MgRG9jdW1lbnRGcmFn
bWVudDsKK2NsYXNzIERvY3VtZW50VHlwZTsKK2NsYXNzIERPTUltcGxlbWVudGF0aW9uOworY2xh
c3MgTmFtZWROb2RlTWFwOwogY2xhc3MgTm9kZTsKIGNsYXNzIE5vZGVMaXN0OworY2xhc3MgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOworY2xhc3MgVGV4dDsKIH0KIAotCiBjbGFzcyBET01PYmplY3Qg
OiBwdWJsaWMgV2ViU2NyaXB0T2JqZWN0LCBwdWJsaWMgSURPTU9iamVjdCB7CiBwdWJsaWM6CiAg
ICAgLy8gSVVua25vd24KQEAgLTgzMyw0ICs4NDMsODgwIEBAIHByb3RlY3RlZDoKICAgICBXZWJD
b3JlOjpFbGVtZW50KiBtX2VsZW1lbnQ7CiB9OwogCisKK2NsYXNzIERPTUNoYXJhY3RlckRhdGEg
OiBwdWJsaWMgRE9NTm9kZSwgcHVibGljIElET01DaGFyYWN0ZXJEYXRhIHsKK3Byb3RlY3RlZDoK
KyAgICBET01DaGFyYWN0ZXJEYXRhKFdlYkNvcmU6OkNoYXJhY3RlckRhdGEqIGRhdGEpOworICAg
IH5ET01DaGFyYWN0ZXJEYXRhKCk7CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgSURPTUNoYXJhY3Rl
ckRhdGEqIGNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkNoYXJhY3RlckRhdGEqIGRhdGEpOworCisg
ICAgLy8gSVVua25vd24KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVl
cnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpOworICAgIHZpcnR1YWwg
VUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuIERPTU5vZGU6OkFk
ZFJlZigpOyB9CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZv
aWQpIHsgcmV0dXJuIERPTU5vZGU6OlJlbGVhc2UoKTsgfQorCisgICAgLy8gSVdlYlNjcmlwdE9i
amVjdAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlv
bigKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGV4Y2VwdGlvbk1lc3NhZ2UsCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjp0aHJvd0V4
Y2VwdGlvbihleGNlcHRpb25NZXNzYWdlLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoCisgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBuYW1lLAorICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZB
UklBTlQgYXJnc1sgIF0sCisgICAgICAgIC8qIFtpbl0gKi8gaW50IGNBcmdzLAorICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6Y2Fs
bFdlYlNjcmlwdE1ldGhvZChuYW1lLCBhcmdzLCBjQXJncywgcmVzdWx0KTsgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBldmFsdWF0ZVdlYlNjcmlwdCgKKyAg
ICAgICAgLyogW2luXSAqLyBCU1RSIHNjcmlwdCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmV2YWx1YXRlV2ViU2NyaXB0KHNj
cmlwdCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSByZW1vdmVXZWJTY3JpcHRLZXkoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7
IHJldHVybiBET01Ob2RlOjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogc3RyaW5nUmVwcmVzZW50YXRpb24pIHsg
cmV0dXJuIERPTU5vZGU6OnN0cmluZ1JlcHJlc2VudGF0aW9uKHN0cmluZ1JlcHJlc2VudGF0aW9u
KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3ZWJTY3Jp
cHRWYWx1ZUF0SW5kZXgoCisgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6d2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRl
eCgKKyAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCisgICAgICAgIC8qIFtp
bl0gKi8gVkFSSUFOVCB2YWwpIHsgcmV0dXJuIERPTU5vZGU6OnNldFdlYlNjcmlwdFZhbHVlQXRJ
bmRleChpbmRleCwgdmFsKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBzZXRFeGNlcHRpb24oCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlv
bikgeyByZXR1cm4gRE9NTm9kZTo6c2V0RXhjZXB0aW9uKGRlc2NyaXB0aW9uKTsgfQorCisgICAg
Ly8gSURPTU5vZGUKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9kZU5h
bWUoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBE
T01Ob2RlOjpub2RlTmFtZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIG5vZGVWYWx1ZSgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBC
U1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVWYWx1ZShyZXN1bHQpOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldE5vZGVWYWx1ZSgKKyAg
ICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKSB7IHJldHVybiBET01Ob2RlOjpzZXROb2RlVmFs
dWUodmFsdWUpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IG5vZGVUeXBlKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIHVuc2lnbmVkIHNob3J0KiBy
ZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5vZGVUeXBlKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcGFyZW50Tm9kZSgKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cGFy
ZW50Tm9kZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGNoaWxkTm9kZXMoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGVM
aXN0KiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpjaGlsZE5vZGVzKHJlc3VsdCk7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZmlyc3RDaGlsZCgKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6Zmlyc3RDaGlsZChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGxhc3RDaGlsZCgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJ
RE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bGFzdENoaWxkKHJlc3VsdCk7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcHJldmlvdXNTaWJs
aW5nKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJl
dHVybiBET01Ob2RlOjpwcmV2aW91c1NpYmxpbmcocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuZXh0U2libGluZygKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bmV4dFNp
YmxpbmcocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBhdHRyaWJ1dGVzKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01OYW1lZE5v
ZGVNYXAqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmF0dHJpYnV0ZXMocmVzdWx0KTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBvd25lckRvY3VtZW50
KAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Eb2N1bWVudCoqIHJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6b3duZXJEb2N1bWVudChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGluc2VydEJlZm9yZSgKKyAgICAgICAgLyogW2lu
XSAqLyBJRE9NTm9kZSogbmV3Q2hpbGQsCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIHJl
ZkNoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7
IHJldHVybiBET01Ob2RlOjppbnNlcnRCZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCByZXN1bHQp
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VD
aGlsZCgKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogbmV3Q2hpbGQsCisgICAgICAgIC8q
IFtpbl0gKi8gSURPTU5vZGUqIG9sZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICov
IElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpyZXBsYWNlQ2hpbGQobmV3Q2hp
bGQsIG9sZENoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHJlbW92ZUNoaWxkKAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBv
bGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkg
eyByZXR1cm4gRE9NTm9kZTo6cmVtb3ZlQ2hpbGQob2xkQ2hpbGQsIHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXBwZW5kQ2hpbGQoCisgICAg
ICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG9sZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjphcHBlbmRDaGlsZChv
bGRDaGlsZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBoYXNDaGlsZE5vZGVzKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wq
IHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6aGFzQ2hpbGROb2RlcyhyZXN1bHQpOyB9CisgICAg
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGNsb25lTm9kZSgKKyAgICAg
ICAgLyogW2luXSAqLyBCT09MIGRlZXAsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNsb25lTm9kZShkZWVwLCByZXN1bHQp
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vcm1hbGl6
ZSggdm9pZCkgeyByZXR1cm4gRE9NTm9kZTo6bm9ybWFsaXplKCk7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTdXBwb3J0ZWQoCisgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBmZWF0dXJlLAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdmVyc2lvbiwKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6
OmlzU3VwcG9ydGVkKGZlYXR1cmUsIHZlcnNpb24sIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZXNwYWNlVVJJKAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bmFtZXNwYWNl
VVJJKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgcHJlZml4KAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6cHJlZml4KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0UHJlZml4KAorICAgICAgICAvKiBbaW5dICovIEJTVFIg
cHJlZml4KSB7IHJldHVybiBET01Ob2RlOjpzZXRQcmVmaXgocHJlZml4KTsgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsb2NhbE5hbWUoCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpsb2NhbE5h
bWUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBoYXNBdHRyaWJ1dGVzKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3Vs
dCkgeyByZXR1cm4gRE9NTm9kZTo6aGFzQXR0cmlidXRlcyhyZXN1bHQpOyB9CisKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNTYW1lTm9kZSgKKyAgICAgICAgLyogW2lu
XSAqLyBJRE9NTm9kZSogb3RoZXIsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCog
cmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc1NhbWVOb2RlKG90aGVyLCByZXN1bHQpOyB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzRXF1YWxOb2RlKAor
ICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvdGhlciwKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmlzRXF1YWxOb2RlKG90aGVy
LCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IHRleHRDb250ZW50KAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkg
eyByZXR1cm4gRE9NTm9kZTo6dGV4dENvbnRlbnQocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRUZXh0Q29udGVudCgKKyAgICAgICAgLyog
W2luXSAqLyBCU1RSIHRleHQpIHsgcmV0dXJuIERPTU5vZGU6OnNldFRleHRDb250ZW50KHRleHQp
OyB9CisKKyAgICAvLyBJRE9NQ2hhcmFjdGVyRGF0YQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBkYXRhKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJl
c3VsdCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldERh
dGEoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkYXRhKTsKKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGVuZ3RoKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIFVJTlQqIHJlc3VsdCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHN1YnN0cmluZ0RhdGEoCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisg
ICAgICAgIC8qIFtpbl0gKi8gVUlOVCBjb3VudCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBCU1RSKiByZXN1bHQpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBhcHBlbmREYXRhKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgYXJnKTsKKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0RGF0YSgKKyAgICAgICAg
LyogW2luXSAqLyBVSU5UIG9mZnNldCwKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGFyZyk7Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRlbGV0ZURhdGEoCisg
ICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBj
b3VudCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxh
Y2VEYXRhKAorICAgICAgICAvKiBbaW5dICovIFVJTlQgb2Zmc2V0LAorICAgICAgICAvKiBbaW5d
ICovIFVJTlQgY291bnQsCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBhcmcpOworCisgICAgLy8g
RE9NQ2hhcmFjdGVyRGF0YQorICAgIFdlYkNvcmU6OkNoYXJhY3RlckRhdGEqIGNoYXJhY3RlckRh
dGEoKSB7IHJldHVybiBtX2NoYXJhY3RlckRhdGE7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYkNv
cmU6OkNoYXJhY3RlckRhdGEqIG1fY2hhcmFjdGVyRGF0YTsKK307CisKKworY2xhc3MgRE9NVGV4
dCA6IHB1YmxpYyBET01DaGFyYWN0ZXJEYXRhLCBwdWJsaWMgSURPTVRleHQgeworcHJvdGVjdGVk
OgorICAgIERPTVRleHQoV2ViQ29yZTo6VGV4dCogdGV4dCk7CisgICAgfkRPTVRleHQoKTsKKwor
cHVibGljOgorICAgIHN0YXRpYyBJRE9NVGV4dCogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6VGV4
dCogdGV4dCk7CisKKyAgICAvLyBJVW5rbm93bgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7
CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1
cm4gRE9NQ2hhcmFjdGVyRGF0YTo6QWRkUmVmKCk7IH0KKyAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6UmVs
ZWFzZSgpOyB9CisKKyAgICAvLyBJV2ViU2NyaXB0T2JqZWN0CisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKAorICAgICAgICAvKiBbaW5dICovIEJT
VFIgZXhjZXB0aW9uTWVzc2FnZSwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBy
ZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlv
bk1lc3NhZ2UsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgY2FsbFdlYlNjcmlwdE1ldGhvZCgKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5h
bWUsCisgICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3QgVkFSSUFOVCBhcmdzWyAgXSwK
KyAgICAgICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpjYWxsV2ViU2Ny
aXB0TWV0aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KAorICAgICAgICAv
KiBbaW5dICovIEJTVFIgc2NyaXB0LAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklB
TlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6ZXZhbHVhdGVXZWJTY3JpcHQo
c2NyaXB0LCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHJlbW92ZVdlYlNjcmlwdEtleSgKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUp
IHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNl
bnRhdGlvbigKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiBzdHJpbmdSZXByZXNl
bnRhdGlvbikgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6c3RyaW5nUmVwcmVzZW50YXRpb24o
c3RyaW5nUmVwcmVzZW50YXRpb24pOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVlQXRJbmRleCgKKyAgICAgICAgLyogW2luXSAqLyB1
bnNpZ25lZCBpbnQgaW5kZXgsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCog
cmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjp3ZWJTY3JpcHRWYWx1ZUF0SW5kZXgo
aW5kZXgsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgc2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KAorICAgICAgICAvKiBbaW5dICovIHVuc2ln
bmVkIGludCBpbmRleCwKKyAgICAgICAgLyogW2luXSAqLyBWQVJJQU5UIHZhbCkgeyByZXR1cm4g
RE9NQ2hhcmFjdGVyRGF0YTo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4LCB2YWwpOyB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEV4Y2VwdGlv
bigKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVybiBET01DaGFy
YWN0ZXJEYXRhOjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CisKKyAgICAvLyBJRE9NTm9k
ZQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlTmFtZSgKKyAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3Rl
ckRhdGE6Om5vZGVOYW1lKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgbm9kZVZhbHVlKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJT
VFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6bm9kZVZhbHVlKHJlc3VsdCk7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0Tm9kZVZh
bHVlKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdmFsdWUpIHsgcmV0dXJuIERPTUNoYXJhY3Rl
ckRhdGE6OnNldE5vZGVWYWx1ZSh2YWx1ZSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgbm9kZVR5cGUoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8g
dW5zaWduZWQgc2hvcnQqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6bm9kZVR5
cGUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBwYXJlbnROb2RlKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVz
dWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpwYXJlbnROb2RlKHJlc3VsdCk7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY2hpbGROb2RlcygKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZUxpc3QqKiByZXN1bHQpIHsgcmV0dXJu
IERPTUNoYXJhY3RlckRhdGE6OmNoaWxkTm9kZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBmaXJzdENoaWxkKAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRh
OjpmaXJzdENoaWxkKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbGFzdENoaWxkKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlKiogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpsYXN0Q2hpbGQocmVzdWx0
KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwcmV2aW91
c1NpYmxpbmcoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQp
IHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnByZXZpb3VzU2libGluZyhyZXN1bHQpOyB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5leHRTaWJsaW5nKAor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0KSB7IHJldHVybiBE
T01DaGFyYWN0ZXJEYXRhOjpuZXh0U2libGluZyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGF0dHJpYnV0ZXMoCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5hbWVkTm9kZU1hcCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFj
dGVyRGF0YTo6YXR0cmlidXRlcyhyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG93bmVyRG9jdW1lbnQoCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTURvY3VtZW50KiogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpv
d25lckRvY3VtZW50KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgaW5zZXJ0QmVmb3JlKAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBu
ZXdDaGlsZCwKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogcmVmQ2hpbGQsCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJh
Y3RlckRhdGE6Omluc2VydEJlZm9yZShuZXdDaGlsZCwgcmVmQ2hpbGQsIHJlc3VsdCk7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVwbGFjZUNoaWxkKAor
ICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBuZXdDaGlsZCwKKyAgICAgICAgLyogW2luXSAq
LyBJRE9NTm9kZSogb2xkQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5v
ZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnJlcGxhY2VDaGlsZChuZXdD
aGlsZCwgb2xkQ2hpbGQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQ2hpbGQoCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUq
IG9sZENoaWxkLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVzdWx0
KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpyZW1vdmVDaGlsZChvbGRDaGlsZCwgcmVzdWx0
KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhcHBlbmRD
aGlsZCgKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb2xkQ2hpbGQsCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3Rl
ckRhdGE6OmFwcGVuZENoaWxkKG9sZENoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0NoaWxkTm9kZXMoCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpo
YXNDaGlsZE5vZGVzKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgY2xvbmVOb2RlKAorICAgICAgICAvKiBbaW5dICovIEJPT0wgZGVlcCwKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9N
Q2hhcmFjdGVyRGF0YTo6Y2xvbmVOb2RlKGRlZXAsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbm9ybWFsaXplKCB2b2lkKSB7IHJldHVybiBE
T01DaGFyYWN0ZXJEYXRhOjpub3JtYWxpemUoKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBpc1N1cHBvcnRlZCgKKyAgICAgICAgLyogW2luXSAqLyBCU1RS
IGZlYXR1cmUsCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2ZXJzaW9uLAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6
aXNTdXBwb3J0ZWQoZmVhdHVyZSwgdmVyc2lvbiwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBuYW1lc3BhY2VVUkkoCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpu
YW1lc3BhY2VVUkkocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBwcmVmaXgoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVz
dWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpwcmVmaXgocmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRQcmVmaXgoCisgICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBwcmVmaXgpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnNldFBy
ZWZpeChwcmVmaXgpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGxvY2FsTmFtZSgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQp
IHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OmxvY2FsTmFtZShyZXN1bHQpOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGhhc0F0dHJpYnV0ZXMoCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0
ZXJEYXRhOjpoYXNBdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpc1NhbWVOb2RlKAorICAgICAgICAvKiBbaW5dICovIElET01Ob2Rl
KiBvdGhlciwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0
dXJuIERPTUNoYXJhY3RlckRhdGE6OmlzU2FtZU5vZGUob3RoZXIsIHJlc3VsdCk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaXNFcXVhbE5vZGUoCisgICAg
ICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6aXNFcXVhbE5vZGUo
b3RoZXIsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdGV4dENvbnRlbnQoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVz
dWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjp0ZXh0Q29udGVudChyZXN1bHQpOyB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldFRleHRDb250ZW50
KAorICAgICAgICAvKiBbaW5dICovIEJTVFIgdGV4dCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0
YTo6c2V0VGV4dENvbnRlbnQodGV4dCk7IH0KKyAgICAKKyAgICAvLyBJRE9NQ2hhcmFjdGVyRGF0
YQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkYXRhKAorICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0
YTo6ZGF0YShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldERhdGEoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkYXRhKSB7IHJldHVybiBE
T01DaGFyYWN0ZXJEYXRhOjpzZXREYXRhKGRhdGEpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGxlbmd0aCgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBVSU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Omxlbmd0aChyZXN1bHQp
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHN1YnN0cmlu
Z0RhdGEoCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisgICAgICAgIC8qIFtpbl0g
Ki8gVUlOVCBjb3VudCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQp
IHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnN1YnN0cmluZ0RhdGEob2Zmc2V0LCBjb3VudCwg
cmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBh
cHBlbmREYXRhKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgYXJnKSB7IHJldHVybiBET01DaGFy
YWN0ZXJEYXRhOjphcHBlbmREYXRhKGFyZyk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaW5zZXJ0RGF0YSgKKyAgICAgICAgLyogW2luXSAqLyBVSU5UIG9m
ZnNldCwKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGFyZykgeyByZXR1cm4gRE9NQ2hhcmFjdGVy
RGF0YTo6aW5zZXJ0RGF0YShvZmZzZXQsIGFyZyk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGVsZXRlRGF0YSgKKyAgICAgICAgLyogW2luXSAqLyBVSU5U
IG9mZnNldCwKKyAgICAgICAgLyogW2luXSAqLyBVSU5UIGNvdW50KSB7IHJldHVybiBET01DaGFy
YWN0ZXJEYXRhOjpkZWxldGVEYXRhKG9mZnNldCwgY291bnQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJlcGxhY2VEYXRhKAorICAgICAgICAvKiBbaW5d
ICovIFVJTlQgb2Zmc2V0LAorICAgICAgICAvKiBbaW5dICovIFVJTlQgY291bnQsCisgICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBhcmcpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnJlcGxhY2VE
YXRhKG9mZnNldCwgY291bnQsIGFyZyk7IH0KKworICAgIC8vIElET01UZXh0CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNwbGl0VGV4dCgKKyAgICAgICAgLyogW2luXSAq
LyBVSU5UIG9mZnNldCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NVGV4dCoqIHJl
c3VsdCk7CisgICAgCisgICAgLy8gRE9NVGV4dAorICAgIFdlYkNvcmU6OlRleHQqIHRleHQoKSB7
IHJldHVybiBtX3RleHQ7IH0KK3Byb3RlY3RlZDoKKyAgICBXZWJDb3JlOjpUZXh0KiBtX3RleHQ7
Cit9OworCisKK2NsYXNzIERPTU5hbWVkTm9kZU1hcCA6IHB1YmxpYyBET01PYmplY3QsIHB1Ymxp
YyBJRE9NTmFtZWROb2RlTWFwIHsKK3Byb3RlY3RlZDoKKyAgICBET01OYW1lZE5vZGVNYXAoV2Vi
Q29yZTo6TmFtZWROb2RlTWFwKiBuYW1lZE5vZGVNYXApOworICAgIH5ET01OYW1lZE5vZGVNYXAo
KTsKKworcHVibGljOgorICAgIHN0YXRpYyBJRE9NTmFtZWROb2RlTWFwKiBjcmVhdGVJbnN0YW5j
ZShXZWJDb3JlOjpOYW1lZE5vZGVNYXAqIG5hbWVkTm9kZU1hcCk7CisKKyAgICAvLyBJVW5rbm93
bgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShS
RUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7CisgICAgdmlydHVhbCBVTE9ORyBTVERNRVRI
T0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gRE9NT2JqZWN0OjpBZGRSZWYoKTsgfQor
ICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVy
biBET01PYmplY3Q6OlJlbGVhc2UoKTsgfQorCisgICAgLy8gSVdlYlNjcmlwdE9iamVjdAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0aHJvd0V4Y2VwdGlvbigKKyAgICAv
KiBbaW5dICovIEJTVFIgZXhjZXB0aW9uTWVzc2FnZSwKKyAgICAvKiBbcmV0dmFsXVtvdXRdICov
IEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0Ojp0aHJvd0V4Y2VwdGlvbihleGNlcHRp
b25NZXNzYWdlLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGNhbGxXZWJTY3JpcHRNZXRob2QoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBu
YW1lLAorICAgICAgICAvKiBbc2l6ZV9pc11baW5dICovIGNvbnN0IFZBUklBTlQgYXJnc1sgIF0s
CisgICAgICAgIC8qIFtpbl0gKi8gaW50IGNBcmdzLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIFZBUklBTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0OjpjYWxsV2ViU2NyaXB0TWV0
aG9kKG5hbWUsIGFyZ3MsIGNBcmdzLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGV2YWx1YXRlV2ViU2NyaXB0KAorICAgICAgICAvKiBbaW5d
ICovIEJTVFIgc2NyaXB0LAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFZBUklBTlQqIHJl
c3VsdCkgeyByZXR1cm4gRE9NT2JqZWN0OjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3Zl
V2ViU2NyaXB0S2V5KAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9N
T2JqZWN0OjpyZW1vdmVXZWJTY3JpcHRLZXkobmFtZSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc3RyaW5nUmVwcmVzZW50YXRpb24oCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gQlNUUiAqc3RyaW5nUmVwcmVzZW50YXRpb24pIHsgcmV0dXJuIERP
TU9iamVjdDo6c3RyaW5nUmVwcmVzZW50YXRpb24oc3RyaW5nUmVwcmVzZW50YXRpb24pOyB9Cisg
ICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHdlYlNjcmlwdFZhbHVl
QXRJbmRleCgKKyAgICAgICAgLyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6
OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoCisg
ICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBbaW5dICov
IFZBUklBTlQgdmFsKSB7IHJldHVybiBET01PYmplY3Q6OnNldFdlYlNjcmlwdFZhbHVlQXRJbmRl
eChpbmRleCwgdmFsKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBzZXRFeGNlcHRpb24oCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBkZXNjcmlwdGlvbikg
eyByZXR1cm4gRE9NT2JqZWN0OjpzZXRFeGNlcHRpb24oZGVzY3JpcHRpb24pOyB9CisKKyAgICAv
LyBJRE9NTmFtZWROb2RlTWFwCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGdldE5hbWVkSXRlbSgKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOworICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROYW1lZEl0ZW0oCisgICAgICAgIC8qIFtpbl0g
Ki8gSURPTU5vZGUqIGFyZywKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoq
IHJlc3VsdCk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHJl
bW92ZU5hbWVkSXRlbSgKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCisgICAgICAgIC8q
IFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOworICAgIAorICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpdGVtKAorICAgICAgICAvKiBbaW5dICovIFVJTlQg
aW5kZXgsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOwor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsZW5ndGgoCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVUlOVCogcmVzdWx0KTsKKyAgICAKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0TmFtZWRJdGVtTlMoCisgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5h
bWUsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOworICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROYW1lZEl0ZW1OUygK
KyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogYXJnLAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIElET01Ob2RlKiogcmVzdWx0KTsKKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcmVtb3ZlTmFtZWRJdGVtTlMoCisgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBuYW1lc3BhY2VVUkksCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBsb2NhbE5hbWUsCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpOworCisgICAgLy8gRE9N
TmFtZWROb2RlTWFwCisgICAgV2ViQ29yZTo6TmFtZWROb2RlTWFwKiBuYW1lZE5vZGVNYXAoKSB7
IHJldHVybiBtX25hbWVkTm9kZU1hcDsgfQorCitwcm90ZWN0ZWQ6CisgICAgV2ViQ29yZTo6TmFt
ZWROb2RlTWFwKiBtX25hbWVkTm9kZU1hcDsKK307CisKKworY2xhc3MgRE9NSW1wbGVtZW50YXRp
b24gOiBwdWJsaWMgRE9NT2JqZWN0LCBwdWJsaWMgSURPTUltcGxlbWVudGF0aW9uIHsKK3Byb3Rl
Y3RlZDoKKyAgICBET01JbXBsZW1lbnRhdGlvbihXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbiog
aW1wbGVtZW50YXRpb24pOworICAgIH5ET01JbXBsZW1lbnRhdGlvbigpOworCitwdWJsaWM6Cisg
ICAgc3RhdGljIElET01JbXBsZW1lbnRhdGlvbiogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6RE9N
SW1wbGVtZW50YXRpb24qIGltcGxlbWVudGF0aW9uKTsKKworICAgIC8vIElVbmtub3duCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBy
aWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExU
WVBFIEFkZFJlZih2b2lkKSB7IHJldHVybiBET01PYmplY3Q6OkFkZFJlZigpOyB9CisgICAgdmly
dHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNlKHZvaWQpIHsgcmV0dXJuIERPTU9i
amVjdDo6UmVsZWFzZSgpOyB9CisKKyAgICAvLyBJV2ViU2NyaXB0T2JqZWN0CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHRocm93RXhjZXB0aW9uKAorICAgIC8qIFtpbl0g
Ki8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCog
cmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OnRocm93RXhjZXB0aW9uKGV4Y2VwdGlvbk1lc3Nh
Z2UsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgY2FsbFdlYlNjcmlwdE1ldGhvZCgKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIG5hbWUsCisg
ICAgICAgIC8qIFtzaXplX2lzXVtpbl0gKi8gY29uc3QgVkFSSUFOVCBhcmdzWyAgXSwKKyAgICAg
ICAgLyogW2luXSAqLyBpbnQgY0FyZ3MsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFS
SUFOVCogcmVzdWx0KSB7IHJldHVybiBET01PYmplY3Q6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFt
ZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoCisgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiBzY3JpcHQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7
IHJldHVybiBET01PYmplY3Q6OmV2YWx1YXRlV2ViU2NyaXB0KHNjcmlwdCwgcmVzdWx0KTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVXZWJTY3Jp
cHRLZXkoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lKSB7IHJldHVybiBET01PYmplY3Q6
OnJlbW92ZVdlYlNjcmlwdEtleShuYW1lKTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzdHJpbmdSZXByZXNlbnRhdGlvbigKKyAgICAgICAgLyogW3JldHZh
bF1bb3V0XSAqLyBCU1RSICpzdHJpbmdSZXByZXNlbnRhdGlvbikgeyByZXR1cm4gRE9NT2JqZWN0
OjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7IH0KKyAgICAKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdEluZGV4
KAorICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKKyAgICAgICAgLyogW3Jl
dHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU9iamVjdDo6d2ViU2Ny
aXB0VmFsdWVBdEluZGV4KGluZGV4LCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHNldFdlYlNjcmlwdFZhbHVlQXRJbmRleCgKKyAgICAgICAg
LyogW2luXSAqLyB1bnNpZ25lZCBpbnQgaW5kZXgsCisgICAgICAgIC8qIFtpbl0gKi8gVkFSSUFO
VCB2YWwpIHsgcmV0dXJuIERPTU9iamVjdDo6c2V0V2ViU2NyaXB0VmFsdWVBdEluZGV4KGluZGV4
LCB2YWwpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNl
dEV4Y2VwdGlvbigKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGRlc2NyaXB0aW9uKSB7IHJldHVy
biBET01PYmplY3Q6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7IH0KKworICAgIC8vIElET01J
bXBsZW1lbnRhdGlvbgorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBoYXNG
ZWF0dXJlKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZmVhdHVyZSwKKyAgICAgICAgLyogW2lu
XSAqLyBCU1RSIHZlcnNpb24sCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVz
dWx0KTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjcmVhdGVEb2N1
bWVudFR5cGUoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBxdWFsaWZpZWROYW1lLAorICAgICAg
ICAvKiBbaW5dICovIEJTVFIgcHVibGljSWQsCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzeXN0
ZW1JZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnRUeXBlKiogcmVz
dWx0KTsKKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgY3JlYXRl
RG9jdW1lbnQoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBuYW1lc3BhY2VVUkksCisgICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBxdWFsaWZpZWROYW1lLAorICAgICAgICAvKiBbaW5dICovIElET01E
b2N1bWVudFR5cGUgKmRvY3R5cGUsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTURv
Y3VtZW50KiogcmVzdWx0KTsKKyAgICAKKyAgICAvLyBET01JbXBsZW1lbnRhdGlvbgorICAgIFdl
YkNvcmU6OkRPTUltcGxlbWVudGF0aW9uKiBpbXBsZW1lbnRhdGlvbigpIHsgcmV0dXJuIG1faW1w
bGVtZW50YXRpb247IH0KKworcHJvdGVjdGVkOgorICAgIFdlYkNvcmU6OkRPTUltcGxlbWVudGF0
aW9uKiBtX2ltcGxlbWVudGF0aW9uOworfTsKKworCitjbGFzcyBERUNMU1BFQ19VVUlEKCJGQTIw
NjJGMi0zM0VFLTQ4OUMtODgwMy0yNEU0REU3OUI4Q0QiKSBET01BdHRyIDogcHVibGljIERPTU5v
ZGUsIHB1YmxpYyBJRE9NQXR0ciB7Citwcm90ZWN0ZWQ6CisgICAgRE9NQXR0cihXZWJDb3JlOjpB
dHRyKiBhdHRyKTsKKyAgICB+RE9NQXR0cigpOworCitwdWJsaWM6CisgICAgc3RhdGljIElET01B
dHRyKiBjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpBdHRyKiBhdHRyKTsKKworICAgIC8vIElVbmtu
b3duCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNl
KFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIEFkZFJlZih2b2lkKSB7IHJldHVybiBET01Ob2RlOjpBZGRSZWYoKTsgfQor
ICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJldHVy
biBET01Ob2RlOjpSZWxlYXNlKCk7IH0KKworICAgIC8vIElXZWJTY3JpcHRPYmplY3QKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRpb24oCisgICAgICAg
IC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6dGhyb3dFeGNlcHRpb24oZXhj
ZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKAorICAgICAgICAvKiBbaW5dICovIEJT
VFIgbmFtZSwKKyAgICAgICAgLyogW3NpemVfaXNdW2luXSAqLyBjb25zdCBWQVJJQU5UIGFyZ3Nb
ICBdLAorICAgICAgICAvKiBbaW5dICovIGludCBjQXJncywKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmNhbGxXZWJTY3JpcHRN
ZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZhbHVhdGVXZWJTY3JpcHQoCisgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBzY3JpcHQsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCog
cmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3Zl
V2ViU2NyaXB0S2V5KAorICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9N
Tm9kZTo6cmVtb3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01O
b2RlOjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdElu
ZGV4KAorICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OndlYlNj
cmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoCisgICAgICAg
IC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBbaW5dICovIFZBUklB
TlQgdmFsKSB7IHJldHVybiBET01Ob2RlOjpzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgoaW5kZXgs
IHZhbCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0
RXhjZXB0aW9uKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVzY3JpcHRpb24pIHsgcmV0dXJu
IERPTU5vZGU6OnNldEV4Y2VwdGlvbihkZXNjcmlwdGlvbik7IH0KKworICAgIC8vIElET01Ob2Rl
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5vZGVOYW1lKAorICAgICAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bm9k
ZU5hbWUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBub2RlVmFsdWUoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0
KSB7IHJldHVybiBET01Ob2RlOjpub2RlVmFsdWUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXROb2RlVmFsdWUoCisgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiB2YWx1ZSkgeyByZXR1cm4gRE9NTm9kZTo6c2V0Tm9kZVZhbHVlKHZhbHVlKTsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVHlwZSgK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KSB7IHJl
dHVybiBET01Ob2RlOjpub2RlVHlwZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIHBhcmVudE5vZGUoCisgICAgICAgIC8qIFtyZXR2YWxdW291
dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OnBhcmVudE5vZGUocmVz
dWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjaGls
ZE5vZGVzKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlTGlzdCoqIHJlc3Vs
dCkgeyByZXR1cm4gRE9NTm9kZTo6Y2hpbGROb2RlcyhyZXN1bHQpOyB9CisgICAgCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZpcnN0Q2hpbGQoCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6OmZpcnN0
Q2hpbGQocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBsYXN0Q2hpbGQoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiBy
ZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Omxhc3RDaGlsZChyZXN1bHQpOyB9CisgICAgCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZygKKyAgICAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9k
ZTo6cHJldmlvdXNTaWJsaW5nKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgbmV4dFNpYmxpbmcoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5leHRTaWJsaW5nKHJlc3Vs
dCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmli
dXRlcygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwKiogcmVz
dWx0KSB7IHJldHVybiBET01Ob2RlOjphdHRyaWJ1dGVzKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVudCgKKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnQqKiByZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6Om93bmVyRG9jdW1lbnQocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBpbnNlcnRCZWZvcmUoCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUqIG5ld0NoaWxkLAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiByZWZDaGlsZCwKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9N
Tm9kZTo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCByZWZDaGlsZCwgcmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoCisgICAg
ICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG5ld0NoaWxkLAorICAgICAgICAvKiBbaW5dICovIElE
T01Ob2RlKiBvbGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoq
IHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGls
ZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSByZW1vdmVDaGlsZCgKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb2xkQ2hpbGQsCisg
ICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6OnJlbW92ZUNoaWxkKG9sZENoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFwcGVuZENoaWxkKAorICAgICAgICAvKiBbaW5d
ICovIElET01Ob2RlKiBvbGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9N
Tm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJl
c3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFz
Q2hpbGROb2RlcygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsg
cmV0dXJuIERPTU5vZGU6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZU5vZGUoCisgICAgICAgIC8qIFtpbl0g
Ki8gQk9PTCBkZWVwLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01Ob2RlKiogcmVz
dWx0KSB7IHJldHVybiBET01Ob2RlOjpjbG9uZU5vZGUoZGVlcCwgcmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub3JtYWxpemUoIHZvaWQpIHsg
cmV0dXJuIERPTU5vZGU6Om5vcm1hbGl6ZSgpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGlzU3VwcG9ydGVkKAorICAgICAgICAvKiBbaW5dICovIEJTVFIg
ZmVhdHVyZSwKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHZlcnNpb24sCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc1N1cHBvcnRl
ZChmZWF0dXJlLCB2ZXJzaW9uLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIG5hbWVzcGFjZVVSSSgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0
XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTU5vZGU6Om5hbWVzcGFjZVVSSShyZXN1bHQp
OyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeCgK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTU5v
ZGU6OnByZWZpeChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNldFByZWZpeCgKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHByZWZpeCkgeyBy
ZXR1cm4gRE9NTm9kZTo6c2V0UHJlZml4KHByZWZpeCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NTm9kZTo6bG9jYWxOYW1lKHJlc3VsdCk7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFzQXR0cmli
dXRlcygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsgcmV0dXJu
IERPTU5vZGU6Omhhc0F0dHJpYnV0ZXMocmVzdWx0KTsgfQorCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5v
ZGUqIG90aGVyLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyBy
ZXR1cm4gRE9NTm9kZTo6aXNTYW1lTm9kZShvdGhlciwgcmVzdWx0KTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc0VxdWFsTm9kZSgKKyAgICAgICAgLyog
W2luXSAqLyBJRE9NTm9kZSogb3RoZXIsCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9P
TCogcmVzdWx0KSB7IHJldHVybiBET01Ob2RlOjppc0VxdWFsTm9kZShvdGhlciwgcmVzdWx0KTsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVu
dCgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERP
TU5vZGU6OnRleHRDb250ZW50KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2V0VGV4dENvbnRlbnQoCisgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB0ZXh0KSB7IHJldHVybiBET01Ob2RlOjpzZXRUZXh0Q29udGVudCh0ZXh0KTsgfQorCisgICAg
Ly8gSURPTUF0dHIKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbmFtZSgK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpOworICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzcGVjaWZpZWQoCisgICAgICAgIC8qIFty
ZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KTsKKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgdmFsdWUoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNU
UiAqdmFsdWUpOworICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBz
ZXRWYWx1ZSgKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHZhbHVlKTsKKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3duZXJFbGVtZW50KAorICAgICAgICAvKiBb
cmV0dmFsXVtvdXRdICovIElET01FbGVtZW50KiogcmVzdWx0KTsKKyAgICAKKyAgICAvLyBET01B
dHRyCisgICAgV2ViQ29yZTo6QXR0ciogYXR0cigpIHsgcmV0dXJuIG1fYXR0cjsgfQorCitwcm90
ZWN0ZWQ6CisgICAgV2ViQ29yZTo6QXR0ciogbV9hdHRyOworfTsKKworCitjbGFzcyBET01Db21t
ZW50IDogcHVibGljIERPTUNoYXJhY3RlckRhdGEsIHB1YmxpYyBJRE9NQ29tbWVudCB7Citwcm90
ZWN0ZWQ6CisgICAgRE9NQ29tbWVudChXZWJDb3JlOjpDb21tZW50KiBjb21tZW50KTsKKyAgICB+
RE9NQ29tbWVudCgpOworCitwdWJsaWM6CisgICAgc3RhdGljIElET01Db21tZW50KiBjcmVhdGVJ
bnN0YW5jZShXZWJDb3JlOjpDb21tZW50KiBjb21tZW50KTsKKworICAgIC8vIElVbmtub3duCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJ
RCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENB
TExUWVBFIEFkZFJlZih2b2lkKSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpBZGRSZWYoKTsg
fQorICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSh2b2lkKSB7IHJl
dHVybiBET01DaGFyYWN0ZXJEYXRhOjpSZWxlYXNlKCk7IH0KKworICAgIC8vIElXZWJTY3JpcHRP
YmplY3QKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgdGhyb3dFeGNlcHRp
b24oCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBleGNlcHRpb25NZXNzYWdlLAorICAgICAgICAv
KiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0
YTo6dGhyb3dFeGNlcHRpb24oZXhjZXB0aW9uTWVzc2FnZSwgcmVzdWx0KTsgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjYWxsV2ViU2NyaXB0TWV0aG9kKAor
ICAgICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSwKKyAgICAgICAgLyogW3NpemVfaXNdW2luXSAq
LyBjb25zdCBWQVJJQU5UIGFyZ3NbICBdLAorICAgICAgICAvKiBbaW5dICovIGludCBjQXJncywK
KyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERP
TUNoYXJhY3RlckRhdGE6OmNhbGxXZWJTY3JpcHRNZXRob2QobmFtZSwgYXJncywgY0FyZ3MsIHJl
c3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZXZh
bHVhdGVXZWJTY3JpcHQoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBzY3JpcHQsCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gVkFSSUFOVCogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0
ZXJEYXRhOjpldmFsdWF0ZVdlYlNjcmlwdChzY3JpcHQsIHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVtb3ZlV2ViU2NyaXB0S2V5KAorICAg
ICAgICAvKiBbaW5dICovIEJTVFIgbmFtZSkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6cmVt
b3ZlV2ViU2NyaXB0S2V5KG5hbWUpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHN0cmluZ1JlcHJlc2VudGF0aW9uKAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJTVFIqIHN0cmluZ1JlcHJlc2VudGF0aW9uKSB7IHJldHVybiBET01DaGFyYWN0ZXJE
YXRhOjpzdHJpbmdSZXByZXNlbnRhdGlvbihzdHJpbmdSZXByZXNlbnRhdGlvbik7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2ViU2NyaXB0VmFsdWVBdElu
ZGV4KAorICAgICAgICAvKiBbaW5dICovIHVuc2lnbmVkIGludCBpbmRleCwKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBWQVJJQU5UKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRh
dGE6OndlYlNjcmlwdFZhbHVlQXRJbmRleChpbmRleCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRXZWJTY3JpcHRWYWx1ZUF0SW5kZXgo
CisgICAgICAgIC8qIFtpbl0gKi8gdW5zaWduZWQgaW50IGluZGV4LAorICAgICAgICAvKiBbaW5d
ICovIFZBUklBTlQgdmFsKSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpzZXRXZWJTY3JpcHRW
YWx1ZUF0SW5kZXgoaW5kZXgsIHZhbCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgc2V0RXhjZXB0aW9uKAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZGVz
Y3JpcHRpb24pIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnNldEV4Y2VwdGlvbihkZXNjcmlw
dGlvbik7IH0KKworICAgIC8vIElET01Ob2RlCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIG5vZGVOYW1lKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJl
c3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6bm9kZU5hbWUocmVzdWx0KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVmFsdWUoCisgICAg
ICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0
ZXJEYXRhOjpub2RlVmFsdWUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzZXROb2RlVmFsdWUoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB2
YWx1ZSkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6c2V0Tm9kZVZhbHVlKHZhbHVlKTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBub2RlVHlwZSgKKyAg
ICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyB1bnNpZ25lZCBzaG9ydCogcmVzdWx0KSB7IHJldHVy
biBET01DaGFyYWN0ZXJEYXRhOjpub2RlVHlwZShyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHBhcmVudE5vZGUoCisgICAgICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6
OnBhcmVudE5vZGUocmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBjaGlsZE5vZGVzKAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlTGlzdCoqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6Y2hpbGROb2Rlcyhy
ZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGZp
cnN0Q2hpbGQoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQp
IHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OmZpcnN0Q2hpbGQocmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBsYXN0Q2hpbGQoCisgICAgICAg
IC8qIFtyZXR2YWxdW291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJh
Y3RlckRhdGE6Omxhc3RDaGlsZChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHByZXZpb3VzU2libGluZygKKyAgICAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6cHJl
dmlvdXNTaWJsaW5nKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgbmV4dFNpYmxpbmcoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gSURP
TU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Om5leHRTaWJsaW5nKHJl
c3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0
cmlidXRlcygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTmFtZWROb2RlTWFwKiog
cmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjphdHRyaWJ1dGVzKHJlc3VsdCk7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgb3duZXJEb2N1bWVu
dCgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NRG9jdW1lbnQqKiByZXN1bHQpIHsg
cmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Om93bmVyRG9jdW1lbnQocmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnRCZWZvcmUoCisgICAg
ICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG5ld0NoaWxkLAorICAgICAgICAvKiBbaW5dICovIElE
T01Ob2RlKiByZWZDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoq
IHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6aW5zZXJ0QmVmb3JlKG5ld0NoaWxk
LCByZWZDaGlsZCwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSByZXBsYWNlQ2hpbGQoCisgICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG5l
d0NoaWxkLAorICAgICAgICAvKiBbaW5dICovIElET01Ob2RlKiBvbGRDaGlsZCwKKyAgICAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFj
dGVyRGF0YTo6cmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCwgcmVzdWx0KTsgfQorICAg
IAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByZW1vdmVDaGlsZCgKKyAg
ICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb2xkQ2hpbGQsCisgICAgICAgIC8qIFtyZXR2YWxd
W291dF0gKi8gSURPTU5vZGUqKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnJl
bW92ZUNoaWxkKG9sZENoaWxkLCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGFwcGVuZENoaWxkKAorICAgICAgICAvKiBbaW5dICovIElET01O
b2RlKiBvbGRDaGlsZCwKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBJRE9NTm9kZSoqIHJl
c3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6YXBwZW5kQ2hpbGQob2xkQ2hpbGQsIHJl
c3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgaGFz
Q2hpbGROb2RlcygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiByZXN1bHQpIHsg
cmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Omhhc0NoaWxkTm9kZXMocmVzdWx0KTsgfQorICAgIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBjbG9uZU5vZGUoCisgICAgICAg
IC8qIFtpbl0gKi8gQk9PTCBkZWVwLAorICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIElET01O
b2RlKiogcmVzdWx0KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpjbG9uZU5vZGUoZGVlcCwg
cmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBu
b3JtYWxpemUoIHZvaWQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Om5vcm1hbGl6ZSgpOyB9
CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU3VwcG9ydGVk
KAorICAgICAgICAvKiBbaW5dICovIEJTVFIgZmVhdHVyZSwKKyAgICAgICAgLyogW2luXSAqLyBC
U1RSIHZlcnNpb24sCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7
IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjppc1N1cHBvcnRlZChmZWF0dXJlLCB2ZXJzaW9uLCBy
ZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIG5h
bWVzcGFjZVVSSSgKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsg
cmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Om5hbWVzcGFjZVVSSShyZXN1bHQpOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHByZWZpeCgKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6
OnByZWZpeChyZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIHNldFByZWZpeCgKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIHByZWZpeCkgeyByZXR1
cm4gRE9NQ2hhcmFjdGVyRGF0YTo6c2V0UHJlZml4KHByZWZpeCk7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbG9jYWxOYW1lKAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6bG9j
YWxOYW1lKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgaGFzQXR0cmlidXRlcygKKyAgICAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBy
ZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6Omhhc0F0dHJpYnV0ZXMocmVzdWx0KTsg
fQorCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU5vZGUoCisg
ICAgICAgIC8qIFtpbl0gKi8gSURPTU5vZGUqIG90aGVyLAorICAgICAgICAvKiBbcmV0dmFsXVtv
dXRdICovIEJPT0wqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6aXNTYW1lTm9k
ZShvdGhlciwgcmVzdWx0KTsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBpc0VxdWFsTm9kZSgKKyAgICAgICAgLyogW2luXSAqLyBJRE9NTm9kZSogb3RoZXIs
CisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogcmVzdWx0KSB7IHJldHVybiBET01D
aGFyYWN0ZXJEYXRhOjppc0VxdWFsTm9kZShvdGhlciwgcmVzdWx0KTsgfQorICAgIAorICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB0ZXh0Q29udGVudCgKKyAgICAgICAgLyog
W3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6
OnRleHRDb250ZW50KHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgc2V0VGV4dENvbnRlbnQoCisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0ZXh0
KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpzZXRUZXh0Q29udGVudCh0ZXh0KTsgfQorICAg
IAorICAgIC8vIElET01DaGFyYWN0ZXJEYXRhCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRhdGEoCisgICAgICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogcmVzdWx0
KSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjpkYXRhKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0RGF0YSgKKyAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGRhdGEpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OnNldERhdGEoZGF0YSk7
IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgbGVuZ3RoKAor
ICAgICAgICAvKiBbcmV0dmFsXVtvdXRdICovIFVJTlQqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hh
cmFjdGVyRGF0YTo6bGVuZ3RoKHJlc3VsdCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc3Vic3RyaW5nRGF0YSgKKyAgICAgICAgLyogW2luXSAqLyBVSU5U
IG9mZnNldCwKKyAgICAgICAgLyogW2luXSAqLyBVSU5UIGNvdW50LAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkgeyByZXR1cm4gRE9NQ2hhcmFjdGVyRGF0YTo6c3Vi
c3RyaW5nRGF0YShvZmZzZXQsIGNvdW50LCByZXN1bHQpOyB9CisgICAgCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFwcGVuZERhdGEoCisgICAgICAgIC8qIFtpbl0gKi8g
QlNUUiBhcmcpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OmFwcGVuZERhdGEoYXJnKTsgfQor
ICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpbnNlcnREYXRhKAor
ICAgICAgICAvKiBbaW5dICovIFVJTlQgb2Zmc2V0LAorICAgICAgICAvKiBbaW5dICovIEJTVFIg
YXJnKSB7IHJldHVybiBET01DaGFyYWN0ZXJEYXRhOjppbnNlcnREYXRhKG9mZnNldCwgYXJnKTsg
fQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkZWxldGVEYXRh
KAorICAgICAgICAvKiBbaW5dICovIFVJTlQgb2Zmc2V0LAorICAgICAgICAvKiBbaW5dICovIFVJ
TlQgY291bnQpIHsgcmV0dXJuIERPTUNoYXJhY3RlckRhdGE6OmRlbGV0ZURhdGEob2Zmc2V0LCBj
b3VudCk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcmVw
bGFjZURhdGEoCisgICAgICAgIC8qIFtpbl0gKi8gVUlOVCBvZmZzZXQsCisgICAgICAgIC8qIFtp
bl0gKi8gVUlOVCBjb3VudCwKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGFyZykgeyByZXR1cm4g
RE9NQ2hhcmFjdGVyRGF0YTo6cmVwbGFjZURhdGEob2Zmc2V0LCBjb3VudCwgYXJnKTsgfQorCisg
ICAgLy8gRE9NQ29tbWVudAorICAgIFdlYkNvcmU6OkNvbW1lbnQqIGNvbW1lbnQoKSB7IHJldHVy
biBtX2NvbW1lbnQ7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYkNvcmU6OkNvbW1lbnQqIG1fY29t
bWVudDsKK307CisKKwogI2VuZGlmCg==
</data>
<flag name="review"
          id="37584"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>