<?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>20207</bug_id>
          
          <creation_ts>2008-07-28 22:31:57 -0700</creation_ts>
          <short_desc>Enhanced editing support for Qt WebKit w/ Spell checking on Mac OS X.</short_desc>
          <delta_ts>2010-03-09 06:56:03 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Erik L. Bunce">elbunce</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>vestbo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>87243</commentid>
    <comment_count>0</comment_count>
    <who name="Erik L. Bunce">elbunce</who>
    <bug_when>2008-07-28 22:31:57 -0700</bug_when>
    <thetext>Add spelling / grammar support for Qt on Mac OS X.
Add Align{Center,Justified,Left,Right} web actions.
Add Subscript, Superscript, InsertOrderedList, InsertUnorderedList, Indent, and Outdent web actions.
Include Writing Direction sub-menu and strikthrough in Qt context menus.
Make sure edit actions get updated when the contents change.
Add updateAction() support to ToggleBold, ToggleItalic, and ToggleUnderline.
Add QWebPage::contentsChanged() signal so the client can know when the contents get changed.
Add lookup table for mapping web actions to editor commands.
Add basic support for dispatching non-WebAction based context menu items.
Add simple editing abilities to QtLauncher.
Add Strikethrough context menu item.
Add localized strings used by the Qt build.
Implemented GraphicsContext::drawLineForMisspellingOrBadGrammar().
Include Mac string support to Qt build to allow calling of native Carbon / Cocoa API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87244</commentid>
    <comment_count>1</comment_count>
      <attachid>22533</attachid>
    <who name="Erik L. Bunce">elbunce</who>
    <bug_when>2008-07-28 22:34:21 -0700</bug_when>
    <thetext>Created attachment 22533
Implements enhanced editing w/ spell check

Implements the features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87276</commentid>
    <comment_count>2</comment_count>
      <attachid>22533</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-07-29 10:26:58 -0700</bug_when>
    <thetext>Comment on attachment 22533
Implements enhanced editing w/ spell check

This will be much easier to review if you break this patch up.  There is a lot going on in here and small chunks will help us out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87361</commentid>
    <comment_count>3</comment_count>
    <who name="Erik L. Bunce">elbunce</who>
    <bug_when>2008-07-29 22:14:59 -0700</bug_when>
    <thetext>Breaking this into multiple bugs/patches as requested... Starting with bugs 20220, 20221, 20222, 20223, and 20224.  Many many more to follow...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22533</attachid>
            <date>2008-07-28 22:34:21 -0700</date>
            <delta_ts>2008-07-29 10:26:58 -0700</delta_ts>
            <desc>Implements enhanced editing w/ spell check</desc>
            <filename>editing_spelling.patch.txt</filename>
            <type>text/plain</type>
            <size>56260</size>
            <attacher name="Erik L. Bunce">elbunce</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTQxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMDgtMDctMjggIEVyaWsgQnVuY2UgIDxlbGJ1bmNlQHRoZWhpdmUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBTdHJpa2V0aHJvdWdoIGNvbnRleHQgbWVudSBpdGVtLgorICAgICAgICBBZGQgbG9jYWxpemVk
IHN0cmluZ3MgdXNlZCBieSB0aGUgUXQgYnVpbGQuCisgICAgICAgIEltcGxlbWVudGVkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsbGluZ09yQmFkR3JhbW1hcigpLgorICAgICAg
ICBJbmNsdWRlIE1hYyBzdHJpbmcgc3VwcG9ydCB0byBRdCBidWlsZCB0byBhbGxvdyBjYWxsaW5n
IG9mIG5hdGl2ZSBDYXJib24gLyBDb2NvYSBBUEkuCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVBbmRBcHBlbmRGb250U3ViTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudTo6
cG9wdWxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OmNoZWNrT3JFbmFibGVJ
Zk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmg6CisgICAgICAg
IChXZWJDb3JlOjopOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yTWlzc3BlbGxpbmdPckJh
ZEdyYW1tYXIpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0xvY2FsaXphdGlvbnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRleHRNZW51SXRlbVRhZ1N0cmlrZXRocm91Z2gpOgorICAgICAgICAoV2ViQ29yZTo6
d2ViQWN0aW9uU3Vic2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OndlYkFjdGlvblN1cGVyc2Ny
aXB0KToKKyAgICAgICAgKFdlYkNvcmU6OndlYkFjdGlvbkluc2VydFVub3JkZXJlZExpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6d2ViQWN0aW9uSW5zZXJ0T3JkZXJlZExpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6d2ViQWN0aW9uSW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6OndlYkFjdGlvbk91
dGRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6d2ViQWN0aW9uQWxpZ25DZW50ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6d2ViQWN0aW9uQWxpZ25KdXN0aWZpZWQpOgorICAgICAgICAoV2ViQ29yZTo6
d2ViQWN0aW9uQWxpZ25MZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OndlYkFjdGlvbkFsaWduUmln
aHQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1N0cmluZ01hYy5tbToKKwogMjAwOC0w
Ny0yOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtldmluIERlY2tlci4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMzU0MTQpCisrKyBXZWJDb3Jl
L1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAwLDYgKzEwMDAsMTIgQEAgU09VUkNF
UyArPSBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHAgXAog
ICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmZhY3RvcnkuY3BwCiAKKyAgICBtYWM6IHsK
KyAgICAgICAgT0JKRUNUSVZFX1NPVVJDRVMgKz0gLi4vV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0X21hYy5tbSBcCisgICAgICAgICAgICBwbGF0Zm9ybS90ZXh0L21hYy9T
dHJpbmdNYWMubW0gXAorICAgICAgICAgICAgcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1h
Yy5tbSAKKyAgICB9CisKICAgICB3aW4zMi0qOiBTT1VSQ0VTICs9IHBsYXRmb3JtL3dpbi9TeXN0
ZW1UaW1lV2luLmNwcAogICAgIGVsc2U6IFNPVVJDRVMgKz0gcGxhdGZvcm0vcXQvU3lzdGVtVGlt
ZVF0LmNwcAogCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMzU0MTQpCisrKyBXZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM0LDYgKzIzNCwxMSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJv
bGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAgICAgICAvLyBXZSBhY3R1YWxseSBuZXZlciBlbmFi
bGUgdGhpcyBiZWNhdXNlIENTUyBkb2VzIG5vdCBoYXZlIGEgd2F5IHRvIHNwZWNpZnkgYW4gb3V0
bGluZSBmb250LAogICAgICAgICAgICAgLy8gd2hpY2ggbWF5IG1ha2UgdGhpcyBkaWZmaWN1bHQg
dG8gaW1wbGVtZW50LiBNYXliZSBhIHNwZWNpYWwgY2FzZSBvZiB0ZXh0LXNoYWRvdz8KICAgICAg
ICAgICAgIGJyZWFrOworI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1N0cmlrZXRocm91Z2g6CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIlN0cmlrZXRocm91Z2giKS5leGVjdXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRp
ZgogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmc6IHsKICAgICAg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVj
dGVkUmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnRvUmFuZ2UoKTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Q29udGV4dE1lbnUuY3BwCShyZXZpc2lvbiAzNTQxNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ29u
dGV4dE1lbnUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3Nyw5IEBAIHN0YXRpYyB2b2lk
IGNyZWF0ZUFuZEFwcGVuZEZvbnRTdWJNZW51KGMKICAgICBDb250ZXh0TWVudUl0ZW0gaXRhbGlj
KENoZWNrYWJsZUFjdGlvblR5cGUsIENvbnRleHRNZW51SXRlbVRhZ0l0YWxpYywgY29udGV4dE1l
bnVJdGVtVGFnSXRhbGljKCkpOwogICAgIENvbnRleHRNZW51SXRlbSB1bmRlcmxpbmUoQ2hlY2th
YmxlQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lLCBjb250ZXh0TWVudUl0
ZW1UYWdVbmRlcmxpbmUoKSk7CiAgICAgQ29udGV4dE1lbnVJdGVtIG91dGxpbmUoQWN0aW9uVHlw
ZSwgQ29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSwgY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgp
KTsKKyNpZiBQTEFURk9STShRVCkKKyAgICBDb250ZXh0TWVudUl0ZW0gc3RyaWtldGhyb3VnaChD
aGVja2FibGVBY3Rpb25UeXBlLCBDb250ZXh0TWVudUl0ZW1UYWdTdHJpa2V0aHJvdWdoLCBjb250
ZXh0TWVudUl0ZW1UYWdTdHJpa2V0aHJvdWdoKCkpOworI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIENvbnRleHRNZW51SXRlbSBzdHlsZXMoQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVt
VGFnU3R5bGVzLCBjb250ZXh0TWVudUl0ZW1UYWdTdHlsZXMoKSk7CiAgICAgQ29udGV4dE1lbnVJ
dGVtIHNob3dDb2xvcnMoQWN0aW9uVHlwZSwgQ29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycywg
Y29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpKTsKQEAgLTg4LDYgKzkxLDkgQEAgc3RhdGlj
IHZvaWQgY3JlYXRlQW5kQXBwZW5kRm9udFN1Yk1lbnUoYwogICAgIGZvbnRNZW51LmFwcGVuZEl0
ZW0oYm9sZCk7CiAgICAgZm9udE1lbnUuYXBwZW5kSXRlbShpdGFsaWMpOwogICAgIGZvbnRNZW51
LmFwcGVuZEl0ZW0odW5kZXJsaW5lKTsKKyNpZiBQTEFURk9STShRVCkKKyAgICBmb250TWVudS5h
cHBlbmRJdGVtKHN0cmlrZXRocm91Z2gpOworI2VuZGlmCiAgICAgZm9udE1lbnUuYXBwZW5kSXRl
bShvdXRsaW5lKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgZm9udE1lbnUuYXBwZW5kSXRlbShz
dHlsZXMpOwpAQCAtMTUzLDcgKzE1OSw5IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUFuZEFwcGVuZFNw
ZWVjaFN1Yk1lbnUKIAogICAgIHNwZWVjaE1lbnVJdGVtLnNldFN1Yk1lbnUoJnNwZWVjaE1lbnUp
OwogfQorI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogc3RhdGlj
IHZvaWQgY3JlYXRlQW5kQXBwZW5kV3JpdGluZ0RpcmVjdGlvblN1Yk1lbnUoY29uc3QgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0LCBDb250ZXh0TWVudUl0ZW0mIHdyaXRpbmdEaXJlY3Rpb25NZW51SXRl
bSkKIHsKICAgICBDb250ZXh0TWVudSB3cml0aW5nRGlyZWN0aW9uTWVudShyZXN1bHQpOwpAQCAt
NDAwLDYgKzQwOCw4IEBAIHZvaWQgQ29udGV4dE1lbnU6OnBvcHVsYXRlKCkKICAgICAgICAgICAg
ICAgICBjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCkpOwogICAgICAgICAgICAgY3JlYXRl
QW5kQXBwZW5kU3BlZWNoU3ViTWVudShtX2hpdFRlc3RSZXN1bHQsIFNwZWVjaE1lbnVJdGVtKTsK
ICAgICAgICAgICAgIGFwcGVuZEl0ZW0oU3BlZWNoTWVudUl0ZW0pOworI2VuZGlmCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShRVCkKICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBX
cml0aW5nRGlyZWN0aW9uTWVudUl0ZW0oU3VibWVudVR5cGUsIENvbnRleHRNZW51SXRlbVRhZ1dy
aXRpbmdEaXJlY3Rpb25NZW51LCAKICAgICAgICAgICAgICAgICBjb250ZXh0TWVudUl0ZW1UYWdX
cml0aW5nRGlyZWN0aW9uTWVudSgpKTsKICAgICAgICAgICAgIGNyZWF0ZUFuZEFwcGVuZFdyaXRp
bmdEaXJlY3Rpb25TdWJNZW51KG1faGl0VGVzdFJlc3VsdCwgV3JpdGluZ0RpcmVjdGlvbk1lbnVJ
dGVtKTsKQEAgLTQ5Miw2ICs1MDIsMTYgQEAgdm9pZCBDb250ZXh0TWVudTo6Y2hlY2tPckVuYWJs
ZUlmTmVlZGVkKAogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLT5j
YW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorI2lmIFBMQVRG
T1JNKFFUKQorICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1N0cmlrZXRocm91Z2g6IHsK
KyAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAgUmVmUHRyPENT
U1N0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gZnJhbWUtPmRvY3VtZW50KCktPmNyZWF0ZUNTU1N0
eWxlRGVjbGFyYXRpb24oKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIiwgZmFsc2Us
IGVjKTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLT5zZWxlY3Rp
b25IYXNTdHlsZShzdHlsZS5nZXQoKSkgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNo
b3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS0+Y2FuRWRpdFJpY2hseSgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ0xvb2tVcEluRGljdGlvbmFyeToKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1l
LT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vQ29udGV4dE1lbnVJdGVtLmgJKHJldmlzaW9uIDM1NDE0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnSXRhbGljLAog
ICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUsCiAgICAgICAgIENvbnRleHRNZW51
SXRlbVRhZ091dGxpbmUsCisjaWYgUExBVEZPUk0oUVQpCisgICAgICAgIENvbnRleHRNZW51SXRl
bVRhZ1N0cmlrZXRocm91Z2gsCisjZW5kaWYKICAgICAgICAgQ29udGV4dE1lbnVJdGVtVGFnU3R5
bGVzLAogICAgICAgICBDb250ZXh0TWVudUl0ZW1UYWdTaG93Q29sb3JzLAogICAgICAgICBDb250
ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51LCAvLyBTcGVlY2ggc3ViLW1lbnUKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCShyZXZpc2lvbiAzNTQxNCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSXRhbGlj
KCk7CiAgICAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpOwogICAgIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCk7CisjaWYgUExBVEZPUk0oUVQpCisgICAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0cmlrZXRocm91Z2goKTsKKyNlbmRpZgogICAgIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpOwogICAgIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCk7CiAgICAgU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KCk7CkBAIC0xMDcsNiArMTEwLDE5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBTdHJpbmcgQVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKTsKICAg
ICBTdHJpbmcgQVhMaW5rQWN0aW9uVmVyYigpOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgU3Ry
aW5nIHdlYkFjdGlvblN1YnNjcmlwdCgpOworICAgIFN0cmluZyB3ZWJBY3Rpb25TdXBlcnNjcmlw
dCgpOworICAgIFN0cmluZyB3ZWJBY3Rpb25JbnNlcnRVbm9yZGVyZWRMaXN0KCk7CisgICAgU3Ry
aW5nIHdlYkFjdGlvbkluc2VydE9yZGVyZWRMaXN0KCk7CisgICAgU3RyaW5nIHdlYkFjdGlvbklu
ZGVudCgpOworICAgIFN0cmluZyB3ZWJBY3Rpb25PdXRkZW50KCk7CisgICAgU3RyaW5nIHdlYkFj
dGlvbkFsaWduQ2VudGVyKCk7CisgICAgU3RyaW5nIHdlYkFjdGlvbkFsaWduSnVzdGlmaWVkKCk7
CisgICAgU3RyaW5nIHdlYkFjdGlvbkFsaWduTGVmdCgpOworICAgIFN0cmluZyB3ZWJBY3Rpb25B
bGlnblJpZ2h0KCk7CisjZW5kaWYKKwogICAgIFN0cmluZyB1bmtub3duRmlsZVNpemVUZXh0KCk7
CiAKICNpZiBQTEFURk9STShXSU4pCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkocmV2aXNpb24gMzU0MTQpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjEyLDEzICs2MTIsMjkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5l
Rm9yVGV4dChjbwogICAgIGRyYXdMaW5lKG9yaWdpbiwgZW5kUG9pbnQpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihjb25zdCBJ
bnRQb2ludCYsCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JNaXNzcGVsbGluZ09y
QmFkR3JhbW1hcihjb25zdCBJbnRQb2ludCYgcG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGJvb2wgZ3JhbW1h
cikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CisgICAg
CisgICAgLy8gVGhlc2UgYXJlIHRoZSBzYW1lIGZvciBtaXNzcGVsbGluZyBvciBiYWQgZ3JhbW1h
cgorICAgIGludCBwYXR0ZXJuSGVpZ2h0ID0gY01pc3NwZWxsaW5nTGluZVRoaWNrbmVzczsKIAot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgUVBhaW50ZXIgKnAgPSBtX2RhdGEtPnAoKTsKKyAg
ICBjb25zdCBRUGVuIG9sZFBlbiA9IHAtPnBlbigpOworICAgIGNvbnN0IGJvb2wgYW50aUFsaWFz
ID0gcC0+dGVzdFJlbmRlckhpbnQoUVBhaW50ZXI6OkFudGlhbGlhc2luZyk7CisKKyAgICBRUmVj
dCByZWN0KHBvaW50LngoKSwgcG9pbnQueSgpLCB3aWR0aCwgMCk7CisgICAgUVBlbiBwZW4oIWdy
YW1tYXIgPyBRdDo6cmVkIDogUXQ6OmdyZWVuLCAyLCBRdDo6RG90TGluZSwgUXQ6OlJvdW5kQ2Fw
LCBRdDo6Um91bmRKb2luKTsKKyAgICBwLT5zZXRQZW4ocGVuKTsKKyAgICBwLT5zZXRSZW5kZXJI
aW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcsIG1fZGF0YS0+YW50aUFsaWFzaW5nRm9yUmVjdHNB
bmRMaW5lcyk7CisKKyAgICBpbnQgeSA9IHBvaW50LnkoKSArIDE7CisgICAgcC0+ZHJhd0xpbmUo
cG9pbnQueCgpLCB5LCBwb2ludC54KCkgKyB3aWR0aCwgeSk7CisKKyAgICBwLT5zZXRQZW4ob2xk
UGVuKTsKKyAgICBwLT5zZXRSZW5kZXJIaW50KFFQYWludGVyOjpBbnRpYWxpYXNpbmcsIGFudGlB
bGlhcyk7CiB9CiAKIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhl
bHMoY29uc3QgRmxvYXRSZWN0JiBmcmVjdCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvTG9j
YWxpemF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9Mb2NhbGl6
YXRpb25zLmNwcAkocmV2aXNpb24gMzU0MTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0xvY2Fs
aXphdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksMTIgKzE0OSwxMiBAQCBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoCiAKIFN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdJZ25vcmVTcGVsbGluZygpCiB7Ci0gICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRy
YW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSWdub3JlIiwgIklnbm9yZSBTcGVsbGluZyBjb250ZXh0IG1l
bnUgaXRlbSIpOworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQ
YWdlIiwgIklnbm9yZSBTcGVsbGluZyIsICJJZ25vcmUgU3BlbGxpbmcgY29udGV4dCBtZW51IGl0
ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKQogewot
ICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkFkZCBU
byBEaWN0aW9uYXJ5IiwgIkxlYXJuIFNwZWxsaW5nIGNvbnRleHQgbWVudSBpdGVtIik7CisgICAg
cmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiTGVhcm4gU3Bl
bGxpbmciLCAiTGVhcm4gU3BlbGxpbmcgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpCkBAIC0xNzQsNyArMTc0LDcgQEAgU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCkKIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0lnbm9yZUdyYW1tYXIoKQogewotICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh
dGUoIlFXZWJQYWdlIiwgIklnbm9yZSIsICJJZ25vcmUgR3JhbW1hciBjb250ZXh0IG1lbnUgaXRl
bSIpOworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwg
Iklnbm9yZSBHcmFtbWFyIiwgIklnbm9yZSBHcmFtbWFyIGNvbnRleHQgbWVudSBpdGVtIik7CiB9
CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKQpAQCAtMjI4LDYgKzIy
OCwxMSBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpCiAgICAgcmV0dXJuIFFD
b3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiT3V0bGluZSIsICJPdXRsaW5l
IGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdHJp
a2V0aHJvdWdoKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJR
V2ViUGFnZSIsICJTdHJpa2V0aHJvdWdoIiwgIlN0cmlrZXRocm91Z2ggY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKwogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51
KCkKIHsKICAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIs
ICJEaXJlY3Rpb24iLCAiV3JpdGluZyBkaXJlY3Rpb24gY29udGV4dCBzdWItbWVudSBpdGVtIik7
CkBAIC0zMjMsNiArMzI4LDU2IEBAIFN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCkKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyB3ZWJBY3Rpb25TdWJzY3JpcHQoKQoreworICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlN1YnNjcmlwdCIs
ICJTdWJzY3JpcHQgd2ViIGFjdGlvbiIpOworfQorCitTdHJpbmcgd2ViQWN0aW9uU3VwZXJzY3Jp
cHQoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdl
IiwgIlN1cGVyc2NyaXB0IiwgIlN1cGVyc2NyaXB0IHdlYiBhY3Rpb24iKTsKK30KKworU3RyaW5n
IHdlYkFjdGlvbkluc2VydFVub3JkZXJlZExpc3QoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkluc2VydCBCdWxsZXRlZCBMaXN0IiwgIklu
c2VydFVub3JkZXJlZExpc3Qgd2ViIGFjdGlvbiIpOworfQorCitTdHJpbmcgd2ViQWN0aW9uSW5z
ZXJ0T3JkZXJlZExpc3QoKQoreworICAgIHJldHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh
dGUoIlFXZWJQYWdlIiwgIkluc2VydCBOdW1iZXJlZCBMaXN0IiwgIkluc2VydE9yZGVyZWRMaXN0
IHdlYiBhY3Rpb24iKTsKK30KKworU3RyaW5nIHdlYkFjdGlvbkluZGVudCgpCit7CisgICAgcmV0
dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiSW5jcmVhc2UgTGlz
dCBMZXZlbCIsICJJbmRlbnQgd2ViIGFjdGlvbiIpOworfQorCitTdHJpbmcgd2ViQWN0aW9uT3V0
ZGVudCgpCit7CisgICAgcmV0dXJuIFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBh
Z2UiLCAiRGVjcmVhc2UgTGlzdCBMZXZlbCIsICJPdXRkZW50IHdlYiBhY3Rpb24iKTsKK30KKwor
U3RyaW5nIHdlYkFjdGlvbkFsaWduQ2VudGVyKCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNh
dGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJDZW50ZXIiLCAiQWxpZ25DZW50ZXIgd2ViIGFj
dGlvbiIpOworfQorCitTdHJpbmcgd2ViQWN0aW9uQWxpZ25KdXN0aWZpZWQoKQoreworICAgIHJl
dHVybiBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIkp1c3RpZnkiLCAi
QWxpZ25KdXN0aWZpZWQgd2ViIGFjdGlvbiIpOworfQorCitTdHJpbmcgd2ViQWN0aW9uQWxpZ25M
ZWZ0KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFn
ZSIsICJBbGlnbiBMZWZ0IiwgIkFsaWduTGVmdCB3ZWIgYWN0aW9uIik7Cit9CisKK1N0cmluZyB3
ZWJBY3Rpb25BbGlnblJpZ2h0KCkKK3sKKyAgICByZXR1cm4gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJBbGlnbiBSaWdodCIsICJBbGlnblJpZ2h0IHdlYiBhY3Rpb24i
KTsKK30KKwogU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQogewogICAgIHJldHVybiBRQ29y
ZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIlVua25vd24iLCAiVW5rbm93biBm
aWxlc2l6ZSBGVFAgZGlyZWN0b3J5IGxpc3RpbmcgaXRlbSIpOwpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9TdHJpbmdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L21hYy9TdHJpbmdNYWMubW0JKHJldmlzaW9uIDM1NDE0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9TdHJpbmdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDgg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8Rm91bmRhdGlvbi9OU1N0
cmluZy5oPgorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+CiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViS2l0L3F0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAz
NTQxNykKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2
MSBAQAorMjAwOC0wNy0yOCAgRXJpayBCdW5jZSAgPGVsYnVuY2VAdGhlaGl2ZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHNwZWxsaW5n
IC8gZ3JhbW1hciBzdXBwb3J0IGZvciBRdCBvbiBNYWMgT1MgWC4KKyAgICAgICAgQWRkIEFsaWdu
e0NlbnRlcixKdXN0aWZpZWQsTGVmdCxSaWdodH0gd2ViIGFjdGlvbnMuCisgICAgICAgIEFkZCBT
dWJzY3JpcHQsIFN1cGVyc2NyaXB0LCBJbnNlcnRPcmRlcmVkTGlzdCwgSW5zZXJ0VW5vcmRlcmVk
TGlzdCwgSW5kZW50LCBhbmQgT3V0ZGVudCB3ZWIgYWN0aW9ucy4KKyAgICAgICAgSW5jbHVkZSBX
cml0aW5nIERpcmVjdGlvbiBzdWItbWVudSBhbmQgc3RyaWt0aHJvdWdoIGluIFF0IGNvbnRleHQg
bWVudXMuCisgICAgICAgIE1ha2Ugc3VyZSBlZGl0IGFjdGlvbnMgZ2V0IHVwZGF0ZWQgd2hlbiB0
aGUgY29udGVudHMgY2hhbmdlLgorICAgICAgICBBZGQgdXBkYXRlQWN0aW9uKCkgc3VwcG9ydCB0
byBUb2dnbGVCb2xkLCBUb2dnbGVJdGFsaWMsIGFuZCBUb2dnbGVVbmRlcmxpbmUuCisgICAgICAg
IEFkZCBRV2ViUGFnZTo6Y29udGVudHNDaGFuZ2VkKCkgc2lnbmFsIHNvIHRoZSBjbGllbnQgY2Fu
IGtub3cgd2hlbiB0aGUgY29udGVudHMgZ2V0IGNoYW5nZWQuCisgICAgICAgIEFkZCBsb29rdXAg
dGFibGUgZm9yIG1hcHBpbmcgd2ViIGFjdGlvbnMgdG8gZWRpdG9yIGNvbW1hbmRzLgorICAgICAg
ICBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgZGlzcGF0Y2hpbmcgbm9uLVdlYkFjdGlvbiBiYXNlZCBj
b250ZXh0IG1lbnUgaXRlbXMuCisgICAgICAgIEFkZCBzaW1wbGUgZWRpdGluZyBhYmlsaXRpZXMg
dG8gUXRMYXVuY2hlci4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChl
ZGl0b3JDb21tYW5kRm9yV2ViQWN0aW9ucyk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFX
ZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgICh3ZWJBY3Rpb25Gb3JDb250ZXh0TWVudUFjdGlvbik6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAg
KFFXZWJQYWdlUHJpdmF0ZTo6X3FfY29udGV4dEFjdGlvblRyaWdnZXJlZCk6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OnVwZGF0ZUFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
OnVwZGF0ZUVkaXRvckFjdGlvbnMpOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24p
OgorICAgICAgICAoUVdlYlBhZ2U6OmFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZTo6c2V0RWRp
dGFibGUpOgorICAgICAgICAoUVdlYlBhZ2U6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQpOgorICAgICAgICAoUVdlYlBhZ2U6OmlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCk6CisgICAg
ICAgIChRV2ViUGFnZTo6c2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZCk6CisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBRdExh
dW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6TWFpbldpbmRvdyk6CisgICAg
ICAgIChNYWluV2luZG93OjpzZXRFZGl0YWJsZSk6CisgICAgICAgIChNYWluV2luZG93OjpkdW1w
SHRtbCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojppc0dyYW1tYXJDaGVj
a2luZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlc3BvbmRU
b0NoYW5nZWRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6dG9n
Z2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50UXQ6OnRvZ2dsZUdyYW1tYXJDaGVja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRRdDo6RWRpdG9yQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OmluaXQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXRfbWFjLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0Ojppbml0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudFF0OjpzcGVsbENoZWNrZXJEb2N1bWVudFRhZyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6bGVhcm5Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvckNsaWVudFF0OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvckNsaWVudFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlz
c3BlbGxlZFdvcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnNob3dTcGVs
bGluZ1VJKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpzcGVsbGluZ1VJSXNT
aG93aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpnZXRHdWVzc2VzRm9y
V29yZCk6CisKIDIwMDgtMDctMjcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggUXQgYnVpbGQgZmFpbHVyZS4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZp
c2lvbiAzNTQxNCkKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw2ICs2Miw5IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
IldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1
ZGUgIlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCisjaW5jbHVkZSAibWFya3VwLmgiCisjaW5j
bHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCiAjaW5jbHVkZSA8UUFwcGxpY2F0aW9uPgogI2lu
Y2x1ZGUgPFFCYXNpY1RpbWVyPgpAQCAtODgsOSArOTEsMTA4IEBACiAjZWxzZQogI2luY2x1ZGUg
InF3ZWJuZXR3b3JraW50ZXJmYWNlLmgiCiAjZW5kaWYKKyNpbmNsdWRlIDxRdERlYnVnPgorCisj
aWZkZWYgUV9XU19NQUMKKyNkZWZpbmUgSEFTX1NQRUxMX0NIRUNLSU5HCisjaWYgTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gTUFDX09TX1hfVkVSU0lPTl8xMF81CisjZGVmaW5lIEhB
U19HUkFNTUFSX0NIRUNLSU5HIDEKKyNlbmRpZgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCitjb25zdCBjaGFyKiBlZGl0b3JDb21tYW5kV2ViQWN0aW9uc1tdID0gCit7Cisg
ICAgMCwgLy8gT3BlbkxpbmssCisKKyAgICAwLCAvLyBPcGVuTGlua0luTmV3V2luZG93LAorICAg
IDAsIC8vIE9wZW5GcmFtZUluTmV3V2luZG93LAorICAgIAorICAgIDAsIC8vIERvd25sb2FkTGlu
a1RvRGlzaywKKyAgICAwLCAvLyBDb3B5TGlua1RvQ2xpcGJvYXJkLAorICAgIAorICAgIDAsIC8v
IE9wZW5JbWFnZUluTmV3V2luZG93LAorICAgIDAsIC8vIERvd25sb2FkSW1hZ2VUb0Rpc2ssCisg
ICAgMCwgLy8gQ29weUltYWdlVG9DbGlwYm9hcmQsCisgICAgCisgICAgMCwgLy8gQmFjaywKKyAg
ICAwLCAvLyBGb3J3YXJkLAorICAgIDAsIC8vIFN0b3AsCisgICAgMCwgLy8gUmVsb2FkLAorICAg
IAorICAgICJDdXQiLCAvLyBDdXQsCisgICAgIkNvcHkiLCAvLyBDb3B5LAorICAgICJQYXN0ZSIs
IC8vIFBhc3RlLAorICAgIAorICAgICJVbmRvIiwgLy8gVW5kbywKKyAgICAiUmVkbyIsIC8vIFJl
ZG8sCisgICAgIk1vdmVGb3J3YXJkIiwgLy8gTW92ZVRvTmV4dENoYXIsCisgICAgIk1vdmVCYWNr
d2FyZCIsIC8vIE1vdmVUb1ByZXZpb3VzQ2hhciwKKyAgICAiTW92ZVdvcmRGb3J3YXJkIiwgLy8g
TW92ZVRvTmV4dFdvcmQsCisgICAgIk1vdmVXb3JkQmFja3dhcmQiLCAvLyBNb3ZlVG9QcmV2aW91
c1dvcmQsCisgICAgIk1vdmVEb3duIiwgLy8gTW92ZVRvTmV4dExpbmUsCisgICAgIk1vdmVVcCIs
IC8vIE1vdmVUb1ByZXZpb3VzTGluZSwKKyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgLy8g
TW92ZVRvU3RhcnRPZkxpbmUsCisgICAgIk1vdmVUb0VuZE9mTGluZSIsIC8vIE1vdmVUb0VuZE9m
TGluZSwKKyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgiLCAvLyBNb3ZlVG9TdGFydE9m
QmxvY2ssCisgICAgIk1vdmVUb0VuZE9mUGFyYWdyYXBoIiwgLy8gTW92ZVRvRW5kT2ZCbG9jaywK
KyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIsIC8vIE1vdmVUb1N0YXJ0T2ZEb2N1bWVu
dCwKKyAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIsIC8vIE1vdmVUb0VuZE9mRG9jdW1lbnQsCisg
ICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgLy8gU2VsZWN0TmV4dENoYXIsCisg
ICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsIC8vIFNlbGVjdFByZXZpb3VzQ2hh
ciwKKyAgICAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgLy8gU2VsZWN0TmV4
dFdvcmQsCisgICAgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCAvLyBTZWxl
Y3RQcmV2aW91c1dvcmQsCisgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiwgLy8gU2Vs
ZWN0TmV4dExpbmUsCisgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIsIC8vIFNlbGVjdFBy
ZXZpb3VzTGluZSwKKyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9u
IiwgLy8gU2VsZWN0U3RhcnRPZkxpbmUsCisgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNl
bGVjdGlvbiIsIC8vIFNlbGVjdEVuZE9mTGluZSwKKyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZQYXJh
Z3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24iLCAvLyBTZWxlY3RTdGFydE9mQmxvY2ssCisgICAgIk1v
dmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIiwgLy8gU2VsZWN0RW5kT2ZCbG9j
aywKKyAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIsIC8v
U2VsZWN0U3RhcnRPZkRvY3VtZW50LAorICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5
U2VsZWN0aW9uIiwgLy8gU2VsZWN0RW5kT2ZEb2N1bWVudCwKKyAgICAiRGVsZXRlV29yZEJhY2t3
YXJkIiwgLy8gRGVsZXRlU3RhcnRPZldvcmQsCisgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiwgLy8g
RGVsZXRlRW5kT2ZXb3JkLAorICAgIAorICAgIDAsIC8vIFNldFRleHREaXJlY3Rpb25EZWZhdWx0
LAorICAgIDAsIC8vIFNldFRleHREaXJlY3Rpb25MZWZ0VG9SaWdodCwKKyAgICAwLCAvLyBTZXRU
ZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQsCisgICAgCisgICAgIlRvZ2dsZUJvbGQiLCAvLyBUb2dn
bGVCb2xkLAorICAgICJUb2dnbGVJdGFsaWMiLCAvLyBUb2dnbGVJdGFsaWMsCisgICAgIlRvZ2ds
ZVVuZGVybGluZSIsIC8vIFRvZ2dsZVVuZGVybGluZSwKKyAgICAKKyAgICAwLCAvLyBJbnNwZWN0
RWxlbWVudCwKKworICAgICJTdHJpa2V0aHJvdWdoIiwgLy8gVG9nZ2xlU3RyaWtldGhyb3VnaCwK
KyAgICAiU3Vic2NyaXB0IiwgLy8gU3Vic2NyaXB0CisgICAgIlN1cGVyc2NyaXB0IiwgLy8gU3Vw
ZXJzY3JpcHQKKyAgICAiSW5zZXJ0VW5vcmRlcmVkTGlzdCIsIC8vIEluc2VydFVub3JkZXJlZExp
c3QKKyAgICAiSW5zZXJ0T3JkZXJlZExpc3QiLCAvLyBJbnNlcnRPcmRlcmVkTGlzdAorICAgICJJ
bmRlbnQiLCAvLyBJbmRlbnQKKyAgICAiT3V0ZGVudCIsIC8vIE91dGRlbnQsCisKKyAgICAiQWxp
Z25DZW50ZXIiLCAvLyBBbGlnbkNlbnRlciwKKyAgICAiQWxpZ25KdXN0aWZpZWQiLCAvLyBBbGln
bkp1c3RpZmllZCwKKyAgICAiQWxpZ25MZWZ0IiwgLy8gQWxpZ25MZWZ0LAorICAgICJBbGlnblJp
Z2h0IiwgLy8gQWxpZ25SaWdodCwKKyAgICAgICAgCisgICAgMCwgLy8gU2hvd1NwZWxsaW5nUGFu
ZWwsCisgICAgMCwgLy8gQ2hlY2tTcGVsbGluZywKKyAgICAwLCAvLyBDaGVja1NwZWxsaW5nV2hp
bGVUeXBpbmcsCisgICAgMCwgLy8gQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nLAorCisgICAgMCwg
Ly8gV2ViQWN0aW9uQ291bnQKK307CisKK3N0YXRpYyBjb25zdCBjaGFyKiBlZGl0b3JDb21tYW5k
Rm9yV2ViQWN0aW9ucyhRV2ViUGFnZTo6V2ViQWN0aW9uIGFjdGlvbikKK3sKKyAgICBpZiAoKGFj
dGlvbiA+IFFXZWJQYWdlOjpOb1dlYkFjdGlvbikgJiYgKGFjdGlvbiA8IGludChzaXplb2YoZWRp
dG9yQ29tbWFuZFdlYkFjdGlvbnMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKSkpKQorICAgICAgICBy
ZXR1cm4gZWRpdG9yQ29tbWFuZFdlYkFjdGlvbnNbYWN0aW9uXTsKKyAgICAKKyAgICByZXR1cm4g
MDsKK30KKwogI2lmbmRlZiBRVF9OT19DVVJTT1IKIFNldEN1cnNvckV2ZW50OjpTZXRDdXJzb3JF
dmVudChjb25zdCBRQ3Vyc29yJiBjdXJzb3IpCiAgICAgOiBRRXZlbnQoc3RhdGljX2Nhc3Q8UUV2
ZW50OjpUeXBlPihFdmVudFR5cGUpKQpAQCAtMTYwLDYgKzI2Miw4IEBAIFFXZWJQYWdlUHJpdmF0
ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWcKICAgICBpbnNpZGVPcGVuQ2FsbCA9IGZhbHNlOwog
ICAgIGZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQgPSBmYWxzZTsKICAgICBlZGl0YWJsZSA9IGZh
bHNlOworICAgIGNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCA9IHRydWU7CisgICAgZ3Jh
bW1hckNoZWNraW5nRW5hYmxlZCA9IGZhbHNlOwogICAgIGxpbmtQb2xpY3kgPSBRV2ViUGFnZTo6
RG9udERlbGVnYXRlTGlua3M7CiAgICAgY3VycmVudENvbnRleHRNZW51ID0gMDsKIApAQCAtMjMy
LDYgKzMzNiwxNyBAQCBzdGF0aWMgUVdlYlBhZ2U6OldlYkFjdGlvbiB3ZWJBY3Rpb25Gb3JDCiAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnSXRhbGljOiByZXR1cm4gUVdl
YlBhZ2U6OlRvZ2dsZUl0YWxpYzsKICAgICAgICAgY2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0
ZW1UYWdVbmRlcmxpbmU6IHJldHVybiBRV2ViUGFnZTo6VG9nZ2xlVW5kZXJsaW5lOwogICAgICAg
ICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50OiByZXR1cm4g
UVdlYlBhZ2U6Okluc3BlY3RFbGVtZW50OworCisgICAgICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4
dE1lbnVJdGVtVGFnU3RyaWtldGhyb3VnaDogcmV0dXJuIFFXZWJQYWdlOjpUb2dnbGVTdHJpa2V0
aHJvdWdoOworI2lmZGVmIEhBU19TUEVMTF9DSEVDS0lORworICAgICAgICBjYXNlIFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsOiByZXR1cm4gUVdlYlBhZ2U6OlNo
b3dTcGVsbGluZ1BhbmVsOworICAgICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRh
Z0NoZWNrU3BlbGxpbmc6IHJldHVybiBRV2ViUGFnZTo6Q2hlY2tTcGVsbGluZzsKKyAgICAgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmc6
IHJldHVybiBRV2ViUGFnZTo6Q2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nOworI2lmZGVmIEhBU19H
UkFNTUFSX0NIRUNLSU5HCisgICAgICAgIGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFn
Q2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nOiByZXR1cm4gUVdlYlBhZ2U6OkNoZWNrR3JhbW1hcldp
dGhTcGVsbGluZzsKKyNlbmRpZgorI2VuZGlmCisKICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAg
ICAgfQogICAgIHJldHVybiBRV2ViUGFnZTo6Tm9XZWJBY3Rpb247CkBAIC0yNTgsNiArMzczLDMz
IEBAIFFNZW51ICpRV2ViUGFnZVByaXZhdGU6OmNyZWF0ZUNvbnRleHRNZW4KIAogICAgICAgICAg
ICAgICAgICAgICBtZW51LT5hZGRBY3Rpb24oYSk7CiAgICAgICAgICAgICAgICAgICAgIHZpc2l0
ZWRXZWJBY3Rpb25zLT5zZXRCaXQoYWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2goaXRlbS5hY3Rpb24oKSkgeworICAgICAgICAgICAg
ICAgICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kOgor
ICAgICAgICAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0lnbm9y
ZVNwZWxsaW5nOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ0xlYXJuU3BlbGxpbmc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgV2ViQ29yZTo6
Q29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcjoKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzOiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXQoaXRlbSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB3ZWJjb3JlTWVudS0+Y2hlY2tPckVuYWJsZUlmTmVlZGVkKGl0KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiBkZXNjID0gaXQucmVs
ZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYSA9
IG5ldyBRQWN0aW9uKGl0ZW0udGl0bGUoKSwgbWVudSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhLT5zZXRFbmFibGVkKGRlc2MuZW5hYmxlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
LT5zZXRDaGVja2VkKGRlc2MuY2hlY2tlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhLT5z
ZXRDaGVja2FibGUoaXRlbS50eXBlKCkgPT0gV2ViQ29yZTo6Q2hlY2thYmxlQWN0aW9uVHlwZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhLT5zZXREYXRhKGl0ZW0uYWN0aW9uKCkpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBRT2JqZWN0Ojpjb25uZWN0KGEsIFNJR05BTCh0cmlnZ2Vy
ZWQoYm9vbCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxLCBT
TE9UKF9xX2NvbnRleHRBY3Rpb25UcmlnZ2VyZWQoYm9vbCkpKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgbWVudS0+YWRkQWN0aW9uKGEpOworCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OiAKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAjIyMjCisgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC0zMTUsNiArNDU3LDQ1IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjpfcV93
ZWJBY3Rpb25UcmlnZ2UKICAgICBxLT50cmlnZ2VyQWN0aW9uKGFjdGlvbiwgY2hlY2tlZCk7CiB9
CiAKK3ZvaWQgUVdlYlBhZ2VQcml2YXRlOjpfcV9jb250ZXh0QWN0aW9uVHJpZ2dlcmVkKGJvb2wg
Y2hlY2tlZCkKK3sKKyAgICBRQWN0aW9uICphID0gcW9iamVjdF9jYXN0PFFBY3Rpb24gKj4ocS0+
c2VuZGVyKCkpOworICAgIGlmICghYSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6
RnJhbWUgKmZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkNvcmU6OkNv
bnRleHRNZW51QWN0aW9uIGNtYSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvbnRleHRNZW51QWN0
aW9uPihhLT5kYXRhKCkudG9JbnQoKSk7CisKKyAgICBzd2l0Y2ggKGNtYSkKKyAgICB7CisgICAg
Y2FzZSBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZzoKKyAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5pZ25vcmVTcGVsbGluZygpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmc6CisgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+bGVhcm5TcGVsbGluZygpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXI6CisgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+dG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzczoKKyAgICAgICAg
QVNTRVJUKGZyYW1lLT5zZWxlY3RlZFRleHQoKS5sZW5ndGgoKSk7CisgICAgICAgIGlmIChmcmFt
ZS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQoYS0+dGV4dCgpLCBmcmFtZS0+c2VsZWN0aW9u
KCktPnRvUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkgeworICAgICAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgICAg
ICBSZWZQdHI8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ+IGNvbW1hbmQgPQorICAgICAgICAgICAg
ICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIGNyZWF0ZUZyYWdt
ZW50RnJvbU1hcmt1cChkb2N1bWVudCwgYS0+dGV4dCgpLCAiIiksIHRydWUsIGZhbHNlLCB0cnVl
KTsKKyAgICAgICAgICAgIGFwcGx5Q29tbWFuZChjb21tYW5kKTsKKyAgICAgICAgICAgIGZyYW1l
LT5yZXZlYWxTZWxlY3Rpb24oUmVuZGVyTGF5ZXI6OmdBbGlnblRvRWRnZUlmTmVlZGVkKTsKKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OkNvbnRleHRNZW51SXRl
bVRhZ05vR3Vlc3Nlc0ZvdW5kOgorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOyAKKyAgICB9
Cit9CisKIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjp1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OldlYkFj
dGlvbiBhY3Rpb24pCiB7CiAgICAgUUFjdGlvbiAqYSA9IGFjdGlvbnNbYWN0aW9uXTsKQEAgLTMy
NSw2ICs1MDYsNyBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6dXBkYXRlQWN0aW9uKFFXZWJQCiAg
ICAgV2ViQ29yZTo6RWRpdG9yICplZGl0b3IgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpOwogCiAgICAgYm9vbCBlbmFibGVkID0gYS0+aXNF
bmFibGVkKCk7CisgICAgYm9vbCBjaGVja2VkID0gYS0+aXNDaGVja2VkKCk7CiAKICAgICBzd2l0
Y2ggKGFjdGlvbikgewogICAgICAgICBjYXNlIFFXZWJQYWdlOjpCYWNrOgpAQCAtMzUyLDEwICs1
MzQsNTkgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OnVwZGF0ZUFjdGlvbihRV2ViUAogICAgICAg
ICBjYXNlIFFXZWJQYWdlOjpSZWRvOgogICAgICAgICAgICAgLy8gdGhvc2UgdHdvIGFyZSBoYW5k
bGVkIGJ5IFFVbmRvU3RhY2sKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFFXZWJQ
YWdlOjpUb2dnbGVCb2xkOgorICAgICAgICBjYXNlIFFXZWJQYWdlOjpUb2dnbGVJdGFsaWM6Cisg
ICAgICAgIGNhc2UgUVdlYlBhZ2U6OlRvZ2dsZVVuZGVybGluZToKKyAgICAgICAgY2FzZSBRV2Vi
UGFnZTo6VG9nZ2xlU3RyaWtldGhyb3VnaDoKKyAgICAgICAgY2FzZSBRV2ViUGFnZTo6U3Vic2Ny
aXB0OgorICAgICAgICBjYXNlIFFXZWJQYWdlOjpTdXBlcnNjcmlwdDoKKyAgICAgICAgY2FzZSBR
V2ViUGFnZTo6SW5zZXJ0VW5vcmRlcmVkTGlzdDoKKyAgICAgICAgY2FzZSBRV2ViUGFnZTo6SW5z
ZXJ0T3JkZXJlZExpc3Q6CisgICAgICAgICAgICBlbmFibGVkID0gZWRpdG9yLT5jYW5FZGl0Umlj
aGx5KCk7CisgICAgICAgICAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgICAgICAgICBjaGVja2Vk
ID0gZWRpdG9yLT5jb21tYW5kKGVkaXRvckNvbW1hbmRGb3JXZWJBY3Rpb25zKGFjdGlvbikpLnN0
YXRlKCkgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBjaGVja2VkID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBRV2Vi
UGFnZTo6SW5kZW50OgorICAgICAgICBjYXNlIFFXZWJQYWdlOjpPdXRkZW50OgorICAgICAgICBj
YXNlIFFXZWJQYWdlOjpBbGlnbkNlbnRlcjoKKyAgICAgICAgY2FzZSBRV2ViUGFnZTo6QWxpZ25K
dXN0aWZpZWQ6CisgICAgICAgIGNhc2UgUVdlYlBhZ2U6OkFsaWduTGVmdDoKKyAgICAgICAgY2Fz
ZSBRV2ViUGFnZTo6QWxpZ25SaWdodDoKKyAgICAgICAgICAgIGVuYWJsZWQgPSBlZGl0b3ItPmNh
bkVkaXRSaWNobHkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFFXZWJQYWdl
OjpTaG93U3BlbGxpbmdQYW5lbDoKKyAgICAgICAgY2FzZSBRV2ViUGFnZTo6Q2hlY2tTcGVsbGlu
ZzoKKyNpZmRlZiBIQVNfU1BFTExfQ0hFQ0tJTkcKKyAgICAgICAgICAgIGVuYWJsZWQgPSBlZGl0
b3ItPmNhbkVkaXQoKTsKKyNlbHNlCisgICAgICAgICAgICBlbmFibGVkID0gZmFsc2U7CisjZW5k
aWYKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFFXZWJQYWdlOjpDaGVja1NwZWxs
aW5nV2hpbGVUeXBpbmc6CisjaWZkZWYgSEFTX1NQRUxMX0NIRUNLSU5HCisgICAgICAgICAgICBj
aGVja2VkID0gY29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOworI2Vsc2UKKyAgICAgICAg
ICAgIGVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGNoZWNrZWQgPSBmYWxzZTsKKyNlbmRp
ZgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUVdlYlBhZ2U6OkNoZWNrR3JhbW1h
cldpdGhTcGVsbGluZzoKKyNpZmRlZiBIQVNfR1JBTU1BUl9DSEVDS0lORworICAgICAgICAgICAg
Y2hlY2tlZCA9IGdyYW1tYXJDaGVja2luZ0VuYWJsZWQ7CisjZWxzZQorICAgICAgICAgICAgZW5h
YmxlZCA9IGZhbHNlOworICAgICAgICAgICAgY2hlY2tlZCA9IGZhbHNlOworI2VuZGlmCisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogCiAgICAgYS0+
c2V0RW5hYmxlZChlbmFibGVkKTsKKworICAgIGlmIChhLT5pc0NoZWNrYWJsZSgpKQorICAgICAg
ICBhLT5zZXRDaGVja2VkKGNoZWNrZWQpOwogfQogCiB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6dXBk
YXRlTmF2aWdhdGlvbkFjdGlvbnMoKQpAQCAtMzcxLDYgKzYwMiwyMiBAQCB2b2lkIFFXZWJQYWdl
UHJpdmF0ZTo6dXBkYXRlRWRpdG9yQWN0aW9uCiAgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpD
dXQpOwogICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6Q29weSk7CiAgICAgdXBkYXRlQWN0aW9u
KFFXZWJQYWdlOjpQYXN0ZSk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVCb2xk
KTsKKyAgICB1cGRhdGVBY3Rpb24oUVdlYlBhZ2U6OlRvZ2dsZUl0YWxpYyk7CisgICAgdXBkYXRl
QWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVVbmRlcmxpbmUpOworICAgIHVwZGF0ZUFjdGlvbihRV2Vi
UGFnZTo6VG9nZ2xlU3RyaWtldGhyb3VnaCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpT
dWJzY3JpcHQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6U3VwZXJzY3JpcHQpOworICAg
IHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6SW5zZXJ0VW5vcmRlcmVkTGlzdCk7CisgICAgdXBkYXRl
QWN0aW9uKFFXZWJQYWdlOjpJbnNlcnRPcmRlcmVkTGlzdCk7CisgICAgdXBkYXRlQWN0aW9uKFFX
ZWJQYWdlOjpJbmRlbnQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6T3V0ZGVudCk7Cisg
ICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpBbGlnbkNlbnRlcik7CisgICAgdXBkYXRlQWN0aW9u
KFFXZWJQYWdlOjpBbGlnbkp1c3RpZmllZCk7CisgICAgdXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpB
bGlnbkxlZnQpOworICAgIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6QWxpZ25SaWdodCk7CisgICAg
dXBkYXRlQWN0aW9uKFFXZWJQYWdlOjpTaG93U3BlbGxpbmdQYW5lbCk7CisgICAgdXBkYXRlQWN0
aW9uKFFXZWJQYWdlOjpDaGVja1NwZWxsaW5nKTsKIH0KIAogdm9pZCBRV2ViUGFnZVByaXZhdGU6
OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2KQpAQCAtOTQ2LDYgKzExOTMsMjEgQEAgUVZhcmlh
bnQgUVdlYlBhZ2U6OmlucHV0TWV0aG9kUXVlcnkoUXQ6OgogICAgIFx2YWx1ZSBUb2dnbGVJdGFs
aWMgVG9nZ2xlIHRoZSBmb3JtYXR0aW5nIGJldHdlZW4gaXRhbGljIGFuZCBub3JtYWwgc3R5bGUu
CiAgICAgXHZhbHVlIFRvZ2dsZVVuZGVybGluZSBUb2dnbGUgdW5kZXJsaW5pbmcuCiAgICAgXHZh
bHVlIEluc3BlY3RFbGVtZW50IFNob3cgdGhlIFdlYiBJbnNwZWN0b3Igd2l0aCB0aGUgY3VycmVu
dGx5IGhpZ2hsaWdodGVkIEhUTUwgZWxlbWVudC4KKyAgICBcdmFsdWUgVG9nZ2xlU3RyaWtldGhy
b3VnaCBUb2dnbGUgdGhlIGZvcm1hdHRpbmcgYmV0d2VlbiBzdHJpa2V0aHJvdWdoIGFuZCBub3Jt
YWwgc3R5bGUuCisgICAgXHZhbHVlIFN1YnNjcmlwdCBTZXRzIHRoZSBmb3JtYXR0aW5nIG9mIHRo
ZSBjdXJyZW50IHNlbGVjdGlvbiB0byBzdWJzY3JpcHQuIAorICAgIFx2YWx1ZSBTdXBlcnNjcmlw
dCBTZXRzIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiB0byBzdXBlcmNy
aXB0LgorICAgIFx2YWx1ZSBJbnNlcnRVbm9yZGVyZWRMaXN0IFRvZ2dsZXMgdGhlIHNlbGVjdGlv
biBiZXR3ZWVuIGFuIG9yZGVyZWQgbGlzdCBhbmQgYSBub3JtYWwgYmxvY2suCisgICAgXHZhbHVl
IEluc2VydE9yZGVyZWRMaXN0IFRvZ2dsZXMgdGhlIHNlbGVjdGlvbiBiZXR3ZWVuIGFuIG9yZGVy
ZWQgbGlzdCBhbmQgYSBub3JtYWwgYmxvY2suCisgICAgXHZhbHVlIEluZGVudCBJbmNyZWFzZXMg
dGhlIGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZm9ybWF0IGJsb2NrIGJ5
IG9uZSBpbmNyZW1lbnQuCisgICAgXHZhbHVlIE91dGRlbnQgRGVjcmVhc2VzIHRoZSBpbmRlbnRh
dGlvbiBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZvcm1hdCBibG9jayBieSBvbmUgaW5jcmVt
ZW50LgorICAgIFx2YWx1ZSBBbGlnbkNlbnRlciBBcHBsaWVzIGNlbnRlciBhbGlnbm1lbnQgdG8g
Y29udGVudC4KKyAgICBcdmFsdWUgQWxpZ25KdXN0aWZpZWQgQXBwbGllcyBmdWxsIGp1c3RpZmlj
YXRpb24gdG8gY29udGVudC4KKyAgICBcdmFsdWUgQWxpZ25MZWZ0IEFwcGxpZXMgbGVmdCBqdXN0
aWZpY2F0aW9uIHRvIGNvbnRlbnQuCisgICAgXHZhbHVlIEFsaWduUmlnaHQgQXBwbGllcyByaWdo
dCBqdXN0aWZpY2F0aW9uIHRvIGNvbnRlbnQuCisgICAgXHZhbHVlIFNob3dTcGVsbGluZ1BhbmVs
IFNob3dzIHRoZSBzcGVsbGluZyBwYW5lbC4KKyAgICBcdmFsdWUgQ2hlY2tTcGVsbGluZyBDaGVj
a3Mgc3BlbGxpbmcgd2l0aGluIHRoZSBjdXJyZW50IHRleHQuCisgICAgXHZhbHVlIENoZWNrU3Bl
bGxpbmdXaGlsZVR5cGluZyBUb2dnbGVzIGNoZWNraW5nIG9mIHNwZWxsaW5nIHdoaWxlIHR5cGlu
Zy4KKyAgICBcdmFsdWUgQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nIFRvZ2dsZXMgY2hlY2tpbmcg
Z3JhbW1hciB3aXRoIHNwZWxsaW5nLgogICAgIFxvbWl0dmFsdWUgV2ViQWN0aW9uQ291bnQKIAog
Ki8KQEAgLTEyNjQsMTAyICsxNTI2LDQxIEBAIHZvaWQgUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24o
V2ViQWN0aW9uIGEKICAgICAgICAgY2FzZSBSZWxvYWQ6CiAgICAgICAgICAgICBtYWluRnJhbWUo
KS0+ZC0+ZnJhbWUtPmxvYWRlcigpLT5yZWxvYWQoKTsKICAgICAgICAgICAgIGJyZWFrOworLyoK
ICAgICAgICAgY2FzZSBDdXQ6Ci0gICAgICAgICAgICBjb21tYW5kID0gIkN1dCI7Ci0gICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb3B5OgotICAgICAgICAgICAgY29tbWFuZCA9ICJD
b3B5IjsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhc3RlOgotICAgICAgICAg
ICAgY29tbWFuZCA9ICJQYXN0ZSI7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNl
IFVuZG86Ci0gICAgICAgICAgICBjb21tYW5kID0gIlVuZG8iOwotICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAgICAgIGNvbW1hbmQgPSAiUmVkbyI7Ci0gICAg
ICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNlIE1vdmVUb05leHRDaGFyOgotICAgICAgICAg
ICAgY29tbWFuZCA9ICJNb3ZlRm9yd2FyZCI7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBNb3ZlVG9QcmV2aW91c0NoYXI6Ci0gICAgICAgICAgICBjb21tYW5kID0gIk1vdmVCYWNr
d2FyZCI7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNb3ZlVG9OZXh0V29yZDoK
LSAgICAgICAgICAgIGNvbW1hbmQgPSAiTW92ZVdvcmRGb3J3YXJkIjsKLSAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE1vdmVUb1ByZXZpb3VzV29yZDoKLSAgICAgICAgICAgIGNvbW1h
bmQgPSAiTW92ZVdvcmRCYWNrd2FyZCI7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBNb3ZlVG9OZXh0TGluZToKLSAgICAgICAgICAgIGNvbW1hbmQgPSAiTW92ZURvd24iOwotICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTW92ZVRvUHJldmlvdXNMaW5lOgotICAgICAg
ICAgICAgY29tbWFuZCA9ICJNb3ZlVXAiOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgTW92ZVRvU3RhcnRPZkxpbmU6Ci0gICAgICAgICAgICBjb21tYW5kID0gIk1vdmVUb0JlZ2lu
bmluZ09mTGluZSI7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNb3ZlVG9FbmRP
ZkxpbmU6Ci0gICAgICAgICAgICBjb21tYW5kID0gIk1vdmVUb0VuZE9mTGluZSI7Ci0gICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBNb3ZlVG9TdGFydE9mQmxvY2s6Ci0gICAgICAgICAg
ICBjb21tYW5kID0gIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIjsKLSAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIE1vdmVUb0VuZE9mQmxvY2s6Ci0gICAgICAgICAgICBjb21tYW5k
ID0gIk1vdmVUb0VuZE9mUGFyYWdyYXBoIjsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE1vdmVUb1N0YXJ0T2ZEb2N1bWVudDoKLSAgICAgICAgICAgIGNvbW1hbmQgPSAiTW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudCI7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBN
b3ZlVG9FbmRPZkRvY3VtZW50OgotICAgICAgICAgICAgY29tbWFuZCA9ICJNb3ZlVG9FbmRPZkRv
Y3VtZW50IjsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNlbGVjdE5leHRDaGFy
OgotICAgICAgICAgICAgY29tbWFuZCA9ICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiI7
Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTZWxlY3RQcmV2aW91c0NoYXI6Ci0g
ICAgICAgICAgICBjb21tYW5kID0gIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiI7Ci0g
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTZWxlY3ROZXh0V29yZDoKLSAgICAgICAg
ICAgIGNvbW1hbmQgPSAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIjsKLSAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNlbGVjdFByZXZpb3VzV29yZDoKLSAgICAgICAg
ICAgIGNvbW1hbmQgPSAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiI7Ci0gICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTZWxlY3ROZXh0TGluZToKLSAgICAgICAgICAg
IGNvbW1hbmQgPSAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iOwotICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgU2VsZWN0UHJldmlvdXNMaW5lOgotICAgICAgICAgICAgY29tbWFu
ZCA9ICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iOwotICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgU2VsZWN0U3RhcnRPZkxpbmU6Ci0gICAgICAgICAgICBjb21tYW5kID0gIk1vdmVU
b0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiI7Ci0gICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBTZWxlY3RFbmRPZkxpbmU6Ci0gICAgICAgICAgICBjb21tYW5kID0gIk1v
dmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiI7Ci0gICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBTZWxlY3RTdGFydE9mQmxvY2s6Ci0gICAgICAgICAgICBjb21tYW5kID0gIk1v
dmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIjsKLSAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFNlbGVjdEVuZE9mQmxvY2s6Ci0gICAgICAgICAgICBjb21t
YW5kID0gIk1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIjsKLSAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNlbGVjdFN0YXJ0T2ZEb2N1bWVudDoKLSAgICAgICAg
ICAgIGNvbW1hbmQgPSAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlv
biI7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTZWxlY3RFbmRPZkRvY3VtZW50
OgotICAgICAgICAgICAgY29tbWFuZCA9ICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2Vs
ZWN0aW9uIjsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERlbGV0ZVN0YXJ0T2ZX
b3JkOgotICAgICAgICAgICAgY29tbWFuZCA9ICJEZWxldGVXb3JkQmFja3dhcmQiOwotICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGVsZXRlRW5kT2ZXb3JkOgotICAgICAgICAgICAg
Y29tbWFuZCA9ICJEZWxldGVXb3JkRm9yd2FyZCI7CisgICAgICAgICAgICBjb21tYW5kID0gZWRp
dG9yQ29tbWFuZEZvcldlYkFjdGlvbnMoYWN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwotCisq
LwogICAgICAgICBjYXNlIFNldFRleHREaXJlY3Rpb25EZWZhdWx0OgogICAgICAgICAgICAgZWRp
dG9yLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTEzNjksMjIgKzE1NzAsNDYgQEAgdm9pZCBRV2ViUGFnZTo6
dHJpZ2dlckFjdGlvbihXZWJBY3Rpb24gYQogICAgICAgICBjYXNlIFNldFRleHREaXJlY3Rpb25S
aWdodFRvTGVmdDoKICAgICAgICAgICAgIGVkaXRvci0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24o
UmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwotCisvKgog
ICAgICAgICBjYXNlIFRvZ2dsZUJvbGQ6Ci0gICAgICAgICAgICBjb21tYW5kID0gIlRvZ2dsZUJv
bGQiOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVG9nZ2xlSXRhbGljOgotICAg
ICAgICAgICAgY29tbWFuZCA9ICJUb2dnbGVJdGFsaWMiOwotICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgVG9nZ2xlVW5kZXJsaW5lOgotICAgICAgICAgICAgZWRpdG9yLT50b2dnbGVV
bmRlcmxpbmUoKTsKKyAgICAgICAgICAgIGNvbW1hbmQgPSBlZGl0b3JDb21tYW5kRm9yV2ViQWN0
aW9ucyhhY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7Ci0KKyovCiAgICAgICAgIGNhc2UgSW5z
cGVjdEVsZW1lbnQ6CiAgICAgICAgICAgICBkLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
Pmluc3BlY3QoZC0+aGl0VGVzdFJlc3VsdC5kLT5pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDogYnJlYWs7CisvKgorICAgICAg
ICBjYXNlIFRvZ2dsZVN0cmlrZXRocm91Z2g6CisgICAgICAgIGNhc2UgU3Vic2NyaXB0LAorICAg
ICAgICBjYXNlIFN1cGVyc2NyaXB0LAorICAgICAgICBjYXNlIEluc2VydFVub3JkZXJlZExpc3Qs
CisgICAgICAgIGNhc2UgSW5zZXJ0T3JkZXJlZExpc3QsCisgICAgICAgIGNhc2UgSW5kZW50LAor
ICAgICAgICBjYXNlIE91dGRlbnQsCisgICAgICAgIGNhc2UgQWxpZ25DZW50ZXI6CisgICAgICAg
IGNhc2UgQWxpZ25KdXN0aWZpZWQ6CisgICAgICAgIGNhc2UgQWxpZ25MZWZ0OgorICAgICAgICBj
YXNlIEFsaWduUmlnaHQ6CisgICAgICAgICAgICBjb21tYW5kID0gZWRpdG9yQ29tbWFuZEZvcldl
YkFjdGlvbnMoYWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworKi8KKyAgICAgICAgY2FzZSBT
aG93U3BlbGxpbmdQYW5lbDoKKyAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnNob3dTcGVs
bGluZ0d1ZXNzUGFuZWwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNr
U3BlbGxpbmc6CisgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tTcGVsbGlu
Z1doaWxlVHlwaW5nOgorICAgICAgICAgICAgc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCFpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENoZWNrR3JhbW1hcldpdGhTcGVsbGluZzoKKyAgICAgICAgICAg
IHNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQoIWlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29tbWFu
ZCA9IGVkaXRvckNvbW1hbmRGb3JXZWJBY3Rpb25zKGFjdGlvbik7CisgICAgICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICBpZiAoY29tbWFuZCkKQEAgLTE2MjIsNiArMTg0Nyw2MCBAQCBRQWN0
aW9uICpRV2ViUGFnZTo6YWN0aW9uKFdlYkFjdGlvbiBhY3RpCiAgICAgICAgICAgICB0ZXh0ID0g
Y29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwog
CisgICAgICAgIGNhc2UgVG9nZ2xlU3RyaWtldGhyb3VnaDoKKyAgICAgICAgICAgIHRleHQgPSBj
b250ZXh0TWVudUl0ZW1UYWdTdHJpa2V0aHJvdWdoKCk7CisgICAgICAgICAgICBjaGVja2FibGUg
PSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3Vic2NyaXB0OgorICAg
ICAgICAgICAgdGV4dCA9IHdlYkFjdGlvblN1YnNjcmlwdCgpOworICAgICAgICAgICAgY2hlY2th
YmxlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN1cGVyc2NyaXB0
OgorICAgICAgICAgICAgdGV4dCA9IHdlYkFjdGlvblN1cGVyc2NyaXB0KCk7CisgICAgICAgICAg
ICBjaGVja2FibGUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5z
ZXJ0VW5vcmRlcmVkTGlzdDoKKyAgICAgICAgICAgIHRleHQgPSB3ZWJBY3Rpb25JbnNlcnRVbm9y
ZGVyZWRMaXN0KCk7CisgICAgICAgICAgICBjaGVja2FibGUgPSB0cnVlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgSW5zZXJ0T3JkZXJlZExpc3Q6CisgICAgICAgICAgICB0ZXh0
ID0gd2ViQWN0aW9uSW5zZXJ0T3JkZXJlZExpc3QoKTsKKyAgICAgICAgICAgIGNoZWNrYWJsZSA9
IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbmRlbnQ6CisgICAgICAg
ICAgICB0ZXh0ID0gd2ViQWN0aW9uSW5kZW50KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBPdXRkZW50OgorICAgICAgICAgICAgdGV4dCA9IHdlYkFjdGlvbk91dGRlbnQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFsaWduQ2VudGVyOgorICAgICAgICAg
ICAgdGV4dCA9IHdlYkFjdGlvbkFsaWduQ2VudGVyKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBBbGlnbkp1c3RpZmllZDoKKyAgICAgICAgICAgIHRleHQgPSB3ZWJBY3Rpb25B
bGlnbkp1c3RpZmllZCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQWxpZ25M
ZWZ0OgorICAgICAgICAgICAgdGV4dCA9IHdlYkFjdGlvbkFsaWduTGVmdCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQWxpZ25SaWdodDoKKyAgICAgICAgICAgIHRleHQgPSB3
ZWJBY3Rpb25BbGlnblJpZ2h0KCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IFNob3dTcGVsbGluZ1BhbmVsOgorICAgICAgICAgICAgdGV4dCA9IGNvbnRleHRNZW51SXRlbVRh
Z1Nob3dTcGVsbGluZ1BhbmVsKHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ2hlY2tTcGVsbGluZzoKKyAgICAgICAgICAgIHRleHQgPSBjb250ZXh0TWVudUl0ZW1UYWdD
aGVja1NwZWxsaW5nKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja1Nw
ZWxsaW5nV2hpbGVUeXBpbmc6CisgICAgICAgICAgICB0ZXh0ID0gY29udGV4dE1lbnVJdGVtVGFn
Q2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCk7CisgICAgICAgICAgICBjaGVja2FibGUgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ2hlY2tHcmFtbWFyV2l0aFNwZWxs
aW5nOgorICAgICAgICAgICAgdGV4dCA9IGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldp
dGhTcGVsbGluZygpOworICAgICAgICAgICAgY2hlY2thYmxlID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworCiAgICAgICAgIGNhc2UgTm9XZWJBY3Rpb246CiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICB9CkBAIC0xNzc0LDYgKzIwNTMsOCBAQCB2b2lkIFFXZWJQYWdlOjpzZXRFZGl0YWJs
ZShib29sIGVkaXRhYmxlCiAgICAgICAgICAgICAgICAgZnJhbWUtPnJlbW92ZUVkaXRpbmdTdHls
ZUZyb21Cb2R5RWxlbWVudCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAg
ZC0+dXBkYXRlRWRpdG9yQWN0aW9ucygpOwogICAgIH0KIH0KIApAQCAtMTk1Niw2ICsyMjM3LDQ0
IEBAIGJvb2wgUVdlYlBhZ2U6OnN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVuc2kKIH0KIAogLyohCisg
ICAgXHByb3BlcnR5IFFXZWJQYWdlOjpjb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQKKyAg
ICBcYnJpZWYgd2hldGhlciBjb250aW51b3VzIHNwZWxsIGNoZWNraW5nIHNob3VsZCBiZSBwZXJm
b3JtZWQgb24gZW50ZXJlZCB0ZXh0LgorKi8KK2Jvb2wgUVdlYlBhZ2U6OmlzQ29udGludW91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKCkKK3sKKyNpZmRlZiBIQVNfU1BFTExfQ0hFQ0tJTkcKKyAgICBy
ZXR1cm4gZC0+Y29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBRV2ViUGFnZTo6c2V0Q29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBkLT5jb250aW51b3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQgPSBlbmFibGVkOworICAgIGQtPnVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6
Q2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKTsKK30KKworLyohCisgICAgXHByb3BlcnR5IFFXZWJQ
YWdlOjpncmFtbWFyQ2hlY2tpbmdFbmFibGVkCisgICAgXGJyaWVmIHdoZXRoZXIgZ3JhbW1hciBj
aGVja2luZyBzaG91bGQgYmUgcGVyZm9ybWVkIGFsb25nIHdpdGggc3BlbGwgY2hlY2tpbmcuCisq
LworYm9vbCBRV2ViUGFnZTo6aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkKK3sKKyNpZmRlZiBI
QVNfR1JBTU1BUl9DSEVDS0lORworICAgIHJldHVybiBkLT5ncmFtbWFyQ2hlY2tpbmdFbmFibGVk
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBRV2ViUGFnZTo6
c2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgZC0+Z3JhbW1h
ckNoZWNraW5nRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgZC0+dXBkYXRlQWN0aW9uKFFXZWJQYWdl
OjpDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcpOworfQorCisvKiEKICAgICBGaW5kcyB0aGUgbmV4
dCBvY2N1cnJlbmNlIG9mIHRoZSBzdHJpbmcsIFxhIHN1YlN0cmluZywgaW4gdGhlIHBhZ2UsIHVz
aW5nIHRoZSBnaXZlbiBcYSBvcHRpb25zLgogICAgIFJldHVybnMgdHJ1ZSBvZiBcYSBzdWJTdHJp
bmcgd2FzIGZvdW5kIGFuZCBzZWxlY3RzIHRoZSBtYXRjaCB2aXN1YWxseTsgb3RoZXJ3aXNlIHJl
dHVybnMgZmFsc2UuCiAqLwpAQCAtMjM1OCw2ICsyNjc3LDE0IEBAIHF1aW50NjQgUVdlYlBhZ2U6
OmJ5dGVzUmVjZWl2ZWQoKSBjb25zdCAKICovCiAKIC8qIQorICAgIFxmbiB2b2lkIFFXZWJQYWdl
Ojpjb250ZW50c0NoYW5nZWQoKQorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuZXZl
ciB0aGUgY29udGVudCBjaGFuZ2VzLgorCisgICAgXHNhIHNlbGVjdGVkVGV4dCgpCisqLworCisv
KiEKICAgICBcZm4gdm9pZCBRV2ViUGFnZTo6Z2VvbWV0cnlDaGFuZ2VSZXF1ZXN0ZWQoY29uc3Qg
UVJlY3QmIGdlb20pCiAKICAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW5ldmVyIHRoZSBk
b2N1bWVudCB3YW50cyB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uIGFuZCBzaXplIG9mIHRoZQpJbmRl
eDogV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuaAkocmV2aXNpb24gMzU0MTQpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDggQEAgY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdl
YlBhZ2UgOiBwdWJsaWMgUQogICAgIFFfUFJPUEVSVFkoTGlua0RlbGVnYXRpb25Qb2xpY3kgbGlu
a0RlbGVnYXRpb25Qb2xpY3kgUkVBRCBsaW5rRGVsZWdhdGlvblBvbGljeSBXUklURSBzZXRMaW5r
RGVsZWdhdGlvblBvbGljeSkKICAgICBRX1BST1BFUlRZKFFQYWxldHRlIHBhbGV0dGUgUkVBRCBw
YWxldHRlIFdSSVRFIHNldFBhbGV0dGUpCiAgICAgUV9QUk9QRVJUWShib29sIGVkaXRhYmxlIFJF
QUQgaXNFZGl0YWJsZSBXUklURSBzZXRFZGl0YWJsZSkKKyAgICBRX1BST1BFUlRZKGJvb2wgY29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkIFJFQUQgaXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQgV1JJVEUgc2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKQorICAgIFFf
UFJPUEVSVFkoYm9vbCBncmFtbWFyQ2hlY2tpbmdFbmFibGVkIFJFQUQgaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkIFdSSVRFIHNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQpCiAgICAgUV9FTlVNUyhM
aW5rRGVsZWdhdGlvblBvbGljeSBOYXZpZ2F0aW9uVHlwZSBXZWJBY3Rpb24pCiBwdWJsaWM6CiAg
ICAgZW51bSBOYXZpZ2F0aW9uVHlwZSB7CkBAIC0xNDIsNiArMTQ0LDI0IEBAIHB1YmxpYzoKIAog
ICAgICAgICBJbnNwZWN0RWxlbWVudCwKIAorICAgICAgICBUb2dnbGVTdHJpa2V0aHJvdWdoLAor
ICAgICAgICBTdWJzY3JpcHQsCisgICAgICAgIFN1cGVyc2NyaXB0LAorICAgICAgICBJbnNlcnRV
bm9yZGVyZWRMaXN0LAorICAgICAgICBJbnNlcnRPcmRlcmVkTGlzdCwKKyAgICAgICAgSW5kZW50
LAorICAgICAgICBPdXRkZW50LAorCisgICAgICAgIEFsaWduQ2VudGVyLAorICAgICAgICBBbGln
bkp1c3RpZmllZCwKKyAgICAgICAgQWxpZ25MZWZ0LAorICAgICAgICBBbGlnblJpZ2h0LAorICAg
ICAgICAgICAKKyAgICAgICAgU2hvd1NwZWxsaW5nUGFuZWwsCisgICAgICAgIENoZWNrU3BlbGxp
bmcsCisgICAgICAgIENoZWNrU3BlbGxpbmdXaGlsZVR5cGluZywKKyAgICAgICAgQ2hlY2tHcmFt
bWFyV2l0aFNwZWxsaW5nLAorCiAgICAgICAgIFdlYkFjdGlvbkNvdW50CiAgICAgfTsKIApAQCAt
MjQwLDYgKzI2MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGV4dGVuc2lvbihFeHRl
bnNpb24gZXh0ZW5zaW9uLCBjb25zdCBFeHRlbnNpb25PcHRpb24gKm9wdGlvbiA9IDAsIEV4dGVu
c2lvblJldHVybiAqb3V0cHV0ID0gMCk7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5z
aW9uKEV4dGVuc2lvbiBleHRlbnNpb24pIGNvbnN0OwogCisgICAgYm9vbCBpc0NvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCgpOworICAgIHZvaWQgc2V0Q29udGludW91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisgICAgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJs
ZWQoKTsKKyAgICB2b2lkIHNldEdyYW1tYXJDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKTsK
KyAgICAKIFFfU0lHTkFMUzoKICAgICB2b2lkIGxvYWRTdGFydGVkKCk7CiAgICAgdm9pZCBsb2Fk
UHJvZ3Jlc3MoaW50IHByb2dyZXNzKTsKQEAgLTI2Niw2ICsyOTEsNyBAQCBRX1NJR05BTFM6CiAj
ZW5kaWYKIAogICAgIHZvaWQgbWljcm9Gb2N1c0NoYW5nZWQoKTsKKyAgICB2b2lkIGNvbnRlbnRz
Q2hhbmdlZCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBRV2ViUGFnZSAqY3JlYXRlV2lu
ZG93KFdlYldpbmRvd1R5cGUgdHlwZSk7CkBAIC0yODcsNiArMzEzLDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX29uTG9hZFByb2dyZXNzQ2hh
bmdlZChpbnQpKQogICAgIFFfUFJJVkFURV9TTE9UKGQsIHZvaWQgX3Ffd2ViQWN0aW9uVHJpZ2dl
cmVkKGJvb2wgY2hlY2tlZCkpCisgICAgUV9QUklWQVRFX1NMT1QoZCwgdm9pZCBfcV9jb250ZXh0
QWN0aW9uVHJpZ2dlcmVkKGJvb2wgY2hlY2tlZCkpCiAgICAgUVdlYlBhZ2VQcml2YXRlICpkOwog
CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJGcmFtZTsKSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCShyZXZpc2lv
biAzNTQxNCkKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgX3Ffb25Mb2FkUHJvZ3Jlc3NDaGFu
Z2VkKGludCk7CiAgICAgdm9pZCBfcV93ZWJBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKTsK
KyAgICB2b2lkIF9xX2NvbnRleHRBY3Rpb25UcmlnZ2VyZWQoYm9vbCBjaGVja2VkKTsKICAgICB2
b2lkIHVwZGF0ZUFjdGlvbihRV2ViUGFnZTo6V2ViQWN0aW9uIGFjdGlvbik7CiAgICAgdm9pZCB1
cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpOwogICAgIHZvaWQgdXBkYXRlRWRpdG9yQWN0aW9ucygp
OwpAQCAtMTQ5LDYgKzE1MCw4IEBAIHB1YmxpYzoKICAgICBRV2ViU2V0dGluZ3MgKnNldHRpbmdz
OwogICAgIFFQYWxldHRlIHBhbGV0dGU7CiAgICAgYm9vbCBlZGl0YWJsZTsKKyAgICBib29sIGNv
bnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZDsKKyAgICBib29sIGdyYW1tYXJDaGVja2luZ0Vu
YWJsZWQ7CiAKICAgICBRQWN0aW9uICphY3Rpb25zW1FXZWJQYWdlOjpXZWJBY3Rpb25Db3VudF07
CiAKSW5kZXg6IFdlYktpdC9xdC9RdExhdW5jaGVyL21haW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9xdC9RdExhdW5jaGVyL21haW4uY3BwCShyZXZpc2lvbiAzNTQxNCkKKysrIFdlYktpdC9x
dC9RdExhdW5jaGVyL21haW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAj
ZW5kaWYKIAogI2luY2x1ZGUgPFF0VWlUb29scy9RVWlMb2FkZXI+CisjaW5jbHVkZSA8UXREZWJ1
Zz4KIAogCiBjbGFzcyBTZWFyY2hFZGl0OwpAQCAtMTg1LDE2ICsxODYsNzEgQEAgcHVibGljOgog
ICAgICAgICBiYXItPmFkZEFjdGlvbih2aWV3LT5wYWdlQWN0aW9uKFFXZWJQYWdlOjpVbmRvKSk7
CiAgICAgICAgIGJhci0+YWRkQWN0aW9uKHZpZXctPnBhZ2VBY3Rpb24oUVdlYlBhZ2U6OlJlZG8p
KTsKIAorICAgICAgICBiYXItPmFkZFNlcGFyYXRvcigpOworICAgICAgICBRQWN0aW9uKiBlZGl0
QWN0aW9uID0gCisgICAgICAgICAgICBiYXItPmFkZEFjdGlvbih0cigiRWRpdCIpLCB0aGlzLCBT
TE9UKHNldEVkaXRhYmxlKGJvb2wpKSk7CisgICAgICAgIGVkaXRBY3Rpb24tPnNldENoZWNrYWJs
ZSh0cnVlKTsKKyAgICAgICAgYmFyLT5hZGRBY3Rpb24odHIoIkR1bXAiKSwgdGhpcywgU0xPVChk
dW1wSHRtbCgpKSk7CiAjaWYgUVRfVkVSU0lPTiA+PSAweDA0MDQwMCAmJiAhZGVmaW5lZChRVF9O
T19QUklOVEVSKQogICAgICAgICBiYXItPmFkZFNlcGFyYXRvcigpOwotICAgICAgICBiYXItPmFk
ZEFjdGlvbih0cigiUHJpbnQiKSwgdGhpcywgU0xPVChwcmludCgpKSk7CisgICAgICAgIFFBY3Rp
b24qIHByaW50QWN0aW9uID0gYmFyLT5hZGRBY3Rpb24odHIoIlByaW50IiksIHRoaXMsIFNMT1Qo
cHJpbnQoKSkpOwogI2VuZGlmCiAKICAgICAgICAgYWRkVG9vbEJhckJyZWFrKCk7CisgICAgICAg
IGJhciA9IGFkZFRvb2xCYXIoIkVkaXRpbmciKTsKKyAgICAgICAgYmFyLT5hZGRBY3Rpb24odmll
dy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlQm9sZCkpOworICAgICAgICBiYXItPmFkZEFj
dGlvbih2aWV3LT5wYWdlQWN0aW9uKFFXZWJQYWdlOjpUb2dnbGVJdGFsaWMpKTsKKyAgICAgICAg
YmFyLT5hZGRBY3Rpb24odmlldy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlVW5kZXJsaW5l
KSk7CisgICAgICAgIGJhci0+YWRkQWN0aW9uKHZpZXctPnBhZ2VBY3Rpb24oUVdlYlBhZ2U6OlRv
Z2dsZVN0cmlrZXRocm91Z2gpKTsKKyAgICAgICAgYmFyLT5hZGRBY3Rpb24odmlldy0+cGFnZUFj
dGlvbihRV2ViUGFnZTo6U3Vic2NyaXB0KSk7CisgICAgICAgIGJhci0+YWRkQWN0aW9uKHZpZXct
PnBhZ2VBY3Rpb24oUVdlYlBhZ2U6OlN1cGVyc2NyaXB0KSk7CisKKyAgICAgICAgYWRkVG9vbEJh
ckJyZWFrKCk7CiAgICAgICAgIGJhciA9IGFkZFRvb2xCYXIoIkxvY2F0aW9uIik7CiAgICAgICAg
IGJhci0+YWRkV2lkZ2V0KG5ldyBRTGFiZWwodHIoIkxvY2F0aW9uOiIpKSk7CiAgICAgICAgIGJh
ci0+YWRkV2lkZ2V0KHVybEVkaXQpOwogCisjaWYgUVRfVkVSU0lPTiA+PSAweDA0MDQwMCAmJiAh
ZGVmaW5lZChRVF9OT19QUklOVEVSKQorICAgICAgICBRTWVudSogZmlsZU1lbnUgPSBtZW51QmFy
KCktPmFkZE1lbnUodHIoIkZpbGUiKSk7CisgICAgICAgIGZpbGVNZW51LT5hZGRBY3Rpb24ocHJp
bnRBY3Rpb24pOworI2VuZGlmCisgICAgICAgIFFNZW51KiBlZGl0TWVudSA9IG1lbnVCYXIoKS0+
YWRkTWVudSh0cigiRWRpdCIpKTsKKyAgICAgICAgZWRpdE1lbnUtPmFkZEFjdGlvbih2aWV3LT5w
YWdlQWN0aW9uKFFXZWJQYWdlOjpVbmRvKSk7CisgICAgICAgIGVkaXRNZW51LT5hZGRBY3Rpb24o
dmlldy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6UmVkbykpOworICAgICAgICBlZGl0TWVudS0+YWRk
U2VwYXJhdG9yKCk7CisgICAgICAgIGVkaXRNZW51LT5hZGRBY3Rpb24odmlldy0+cGFnZUFjdGlv
bihRV2ViUGFnZTo6Q3V0KSk7CisgICAgICAgIGVkaXRNZW51LT5hZGRBY3Rpb24odmlldy0+cGFn
ZUFjdGlvbihRV2ViUGFnZTo6Q29weSkpOworICAgICAgICBlZGl0TWVudS0+YWRkQWN0aW9uKHZp
ZXctPnBhZ2VBY3Rpb24oUVdlYlBhZ2U6OlBhc3RlKSk7CisgICAgICAgIGVkaXRNZW51LT5hZGRT
ZXBhcmF0b3IoKTsKKyAgICAgICAgUU1lbnUqIHNwZWxsTWVudSA9IGVkaXRNZW51LT5hZGRNZW51
KHRyKCJTcGVsbGluZyBhbmQgR3JhbW1hciIpKTsKKyAgICAgICAgc3BlbGxNZW51LT5hZGRBY3Rp
b24odmlldy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6U2hvd1NwZWxsaW5nUGFuZWwpKTsKKyAgICAg
ICAgc3BlbGxNZW51LT5hZGRBY3Rpb24odmlldy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6Q2hlY2tT
cGVsbGluZykpOworICAgICAgICBzcGVsbE1lbnUtPmFkZEFjdGlvbih2aWV3LT5wYWdlQWN0aW9u
KFFXZWJQYWdlOjpDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcpKTsKKyAgICAgICAgc3BlbGxNZW51
LT5hZGRBY3Rpb24odmlldy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6Q2hlY2tHcmFtbWFyV2l0aFNw
ZWxsaW5nKSk7CisgICAgICAgIAorICAgICAgICBRTWVudSogZm9ybWF0TWVudSA9IG1lbnVCYXIo
KS0+YWRkTWVudSh0cigiRm9ybWF0IikpOworICAgICAgICBmb3JtYXRNZW51LT5hZGRBY3Rpb24o
dmlldy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlQm9sZCkpOworICAgICAgICBmb3JtYXRN
ZW51LT5hZGRBY3Rpb24odmlldy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6VG9nZ2xlSXRhbGljKSk7
CisgICAgICAgIGZvcm1hdE1lbnUtPmFkZEFjdGlvbih2aWV3LT5wYWdlQWN0aW9uKFFXZWJQYWdl
OjpUb2dnbGVVbmRlcmxpbmUpKTsKKyAgICAgICAgZm9ybWF0TWVudS0+YWRkQWN0aW9uKHZpZXct
PnBhZ2VBY3Rpb24oUVdlYlBhZ2U6OlRvZ2dsZVN0cmlrZXRocm91Z2gpKTsKKyAgICAgICAgZm9y
bWF0TWVudS0+YWRkQWN0aW9uKHZpZXctPnBhZ2VBY3Rpb24oUVdlYlBhZ2U6OlN1YnNjcmlwdCkp
OworICAgICAgICBmb3JtYXRNZW51LT5hZGRBY3Rpb24odmlldy0+cGFnZUFjdGlvbihRV2ViUGFn
ZTo6U3VwZXJzY3JpcHQpKTsKKyAgICAgICAgUU1lbnUqIGxpc3RzTWVudSA9IGZvcm1hdE1lbnUt
PmFkZE1lbnUodHIoIkxpc3RzIikpOworICAgICAgICBsaXN0c01lbnUtPmFkZEFjdGlvbih2aWV3
LT5wYWdlQWN0aW9uKFFXZWJQYWdlOjpJbnNlcnRVbm9yZGVyZWRMaXN0KSk7CisgICAgICAgIGxp
c3RzTWVudS0+YWRkQWN0aW9uKHZpZXctPnBhZ2VBY3Rpb24oUVdlYlBhZ2U6Okluc2VydE9yZGVy
ZWRMaXN0KSk7CisgICAgICAgIGxpc3RzTWVudS0+YWRkU2VwYXJhdG9yKCk7CisgICAgICAgIGxp
c3RzTWVudS0+YWRkQWN0aW9uKHZpZXctPnBhZ2VBY3Rpb24oUVdlYlBhZ2U6OkluZGVudCkpOwor
ICAgICAgICBsaXN0c01lbnUtPmFkZEFjdGlvbih2aWV3LT5wYWdlQWN0aW9uKFFXZWJQYWdlOjpP
dXRkZW50KSk7CisgICAgICAgIFFNZW51KiB3cml0aW5nTWVudSA9IGZvcm1hdE1lbnUtPmFkZE1l
bnUodHIoIldyaXRpbmcgRGlyZWN0aW9uIikpOworICAgICAgICB3cml0aW5nTWVudS0+YWRkQWN0
aW9uKHZpZXctPnBhZ2VBY3Rpb24oUVdlYlBhZ2U6OlNldFRleHREaXJlY3Rpb25EZWZhdWx0KSk7
CisgICAgICAgIHdyaXRpbmdNZW51LT5hZGRBY3Rpb24odmlldy0+cGFnZUFjdGlvbihRV2ViUGFn
ZTo6U2V0VGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0KSk7CisgICAgICAgIHdyaXRpbmdNZW51LT5h
ZGRBY3Rpb24odmlldy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6U2V0VGV4dERpcmVjdGlvblJpZ2h0
VG9MZWZ0KSk7CisgICAgICAgIGZvcm1hdE1lbnUtPmFkZFNlcGFyYXRvcigpOworICAgICAgICBm
b3JtYXRNZW51LT5hZGRBY3Rpb24odmlldy0+cGFnZUFjdGlvbihRV2ViUGFnZTo6QWxpZ25MZWZ0
KSk7CisgICAgICAgIGZvcm1hdE1lbnUtPmFkZEFjdGlvbih2aWV3LT5wYWdlQWN0aW9uKFFXZWJQ
YWdlOjpBbGlnbkNlbnRlcikpOworICAgICAgICBmb3JtYXRNZW51LT5hZGRBY3Rpb24odmlldy0+
cGFnZUFjdGlvbihRV2ViUGFnZTo6QWxpZ25KdXN0aWZpZWQpKTsKKyAgICAgICAgZm9ybWF0TWVu
dS0+YWRkQWN0aW9uKHZpZXctPnBhZ2VBY3Rpb24oUVdlYlBhZ2U6OkFsaWduUmlnaHQpKTsKKwog
ICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHZpZXctPmxvYWQodXJsKTsK
ICAgICB9CkBAIC0yMTUsNiArMjcxLDE0IEBAIHByb3RlY3RlZCBzbG90czoKICAgICB7CiAgICAg
ICAgIHN0YXR1c0JhcigpLT5zaG93TWVzc2FnZShsaW5rKTsKICAgICB9CisgICAgdm9pZCBzZXRF
ZGl0YWJsZShib29sIG9uKQorICAgIHsKKyAgICAgICAgdmlldy0+cGFnZSgpLT5zZXRFZGl0YWJs
ZShvbik7CisgICAgfQorICAgIHZvaWQgZHVtcEh0bWwoKQorICAgIHsKKyAgICAgICAgcURlYnVn
KCkgPDwgIkhUTUw6ICIgPDwgdmlldy0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dG9IdG1sKCk7Cisg
ICAgfQogICAgIHZvaWQgcHJpbnQoKQogICAgIHsKICNpZiBRVF9WRVJTSU9OID49IDB4MDQwNDAw
ICYmICFkZWZpbmVkKFFUX05PX1BSSU5URVIpCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHJldmlzaW9uIDM1NDE0KQorKysgV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsMTEgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogCiAjaW5jbHVkZSA8UVVuZG9TdGFjaz4KKwor
I2lmZGVmIFFfV1NfTUFDCisjZGVmaW5lIEhBU19TUEVMTF9DSEVDS0lORworI2VuZGlmCisKICNk
ZWZpbmUgbWV0aG9kRGVidWcoKSBxRGVidWcoIkVkaXRvckNsaWVudFF0OiAlcyIsIF9fRlVOQ1RJ
T05fXyk7CiAKIHN0YXRpYyBib29sIGR1bXBFZGl0aW5nQ2FsbGJhY2tzID0gZmFsc2U7CkBAIC0x
MTYsMTggKzEyMSwyMCBAQCBib29sIEVkaXRvckNsaWVudFF0OjpzaG91bGRTaG93RGVsZXRlSW50
CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fcGFnZS0+aXNDb250aW51b3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoKTsKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNHcmFt
bWFyQ2hlY2tpbmdFbmFibGVkKCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1f
cGFnZS0+aXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCk7CiB9CiAKKyNpZm5kZWYgSEFTX1NQRUxM
X0NIRUNLSU5HCiBpbnQgRWRpdG9yQ2xpZW50UXQ6OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkK
IHsKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZgogCiBib29sIEVkaXRvckNsaWVudFF0OjpzaG91
bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqIHJhbmdlKQogewpAQCAtMjA1LDYgKzIxMiw5
IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlc3BvbmRUb0NoYW5nZWRDb24KICAgICBpZiAoZHVt
cEVkaXRpbmdDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uXG4iKTsKICAgICBtX3Bh
Z2UtPmQtPm1vZGlmaWVkID0gdHJ1ZTsKKworICAgIG1fcGFnZS0+ZC0+dXBkYXRlRWRpdG9yQWN0
aW9ucygpOworICAgIGVtaXQgbV9wYWdlLT5jb250ZW50c0NoYW5nZWQoKTsKIH0KIAogdm9pZCBF
ZGl0b3JDbGllbnRRdDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpCkBAIC0zMTcsMTIgKzMy
NywxMiBAQCBib29sIEVkaXRvckNsaWVudFF0OjpzbWFydEluc2VydERlbGV0ZUVuCiAKIHZvaWQg
RWRpdG9yQ2xpZW50UXQ6OnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKCFtX3BhZ2UtPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpOwogfQog
CiB2b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgbV9wYWdlLT5zZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCFt
X3BhZ2UtPmlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKTsKIH0KIAogdm9pZCBFZGl0b3JDbGll
bnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKQEAgLTQ2Niw5
ICs0NzYsMTcgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlSW5wdXRNZXRob2RLZQogfQog
CiBFZGl0b3JDbGllbnRRdDo6RWRpdG9yQ2xpZW50UXQoUVdlYlBhZ2UqIHBhZ2UpCi0gICAgOiBt
X3BhZ2UocGFnZSksIG1fZWRpdGluZyhmYWxzZSksIG1faW5VbmRvUmVkbyhmYWxzZSkKKyAgICA6
IG1fcGFnZShwYWdlKSwgbV9oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZyhmYWxzZSksIAorICAg
ICAgbV9lZGl0aW5nKGZhbHNlKSwgbV9pblVuZG9SZWRvKGZhbHNlKQoreworICAgIGluaXQoKTsK
K30KKworI2lmbmRlZiBRX1dTX01BQwordm9pZCBFZGl0b3JDbGllbnRRdDo6aW5pdCgpCiB7CiB9
CisjZW5kaWYKIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5n
KEVsZW1lbnQqKQogewpAQCAtNDk3LDYgKzUxNSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnRl
eHREaWRDaGFuZ2VJblRleHQKIHsKIH0KIAorI2lmbmRlZiBIQVNfU1BFTExfQ0hFQ0tJTkcKIHZv
aWQgRWRpdG9yQ2xpZW50UXQ6Omlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5n
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNTQyLDYgKzU2MSw3IEBAIHZvaWQgRWRp
dG9yQ2xpZW50UXQ6OmdldEd1ZXNzZXNGb3JXb3JkKGMKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQorI2VuZGlmCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmlzRWRpdGluZygpIGNvbnN0CiB7
CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAkocmV2aXNp
b24gMzU0MTQpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDkgKzEwNiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKIAogICAgIGJvb2wgaXNFZGl0
aW5nKCkgY29uc3Q7Citwcml2YXRlOgorICAgIHZvaWQgaW5pdCgpOwogCiBwcml2YXRlOgogICAg
IFFXZWJQYWdlKiBtX3BhZ2U7CisgICAgaW50IG1fc3BlbGxDaGVja2VyRG9jdW1lbnRUYWc7Cisg
ICAgYm9vbCBtX2hhc1NwZWxsQ2hlY2tlckRvY3VtZW50VGFnOwogICAgIGJvb2wgbV9lZGl0aW5n
OwogICAgIGJvb2wgbV9pblVuZG9SZWRvOyAvLyBvdXIgdW5kbyBzdGFjayB3b3JrcyBkaWZmZXJl
bnRseSAtIGRvbid0IHJlLWVudGVyIQogfTsKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRRdF9tYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0X21hYy5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdF9tYWMubW0JKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPiAKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6
YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4K
KyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCA8QXZhaWxhYmlsaXR5TWFjcm9zLmg+CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TT2Jq
ZWN0Lmg+CisjaW1wb3J0ICJFZGl0b3JDbGllbnRRdC5oIgorI2ltcG9ydCAicXdlYnBhZ2UuaCIK
KyNpbXBvcnQgInF3ZWJwYWdlX3AuaCIKKyNpbXBvcnQgPEFwcEtpdC9OU0FwcGxpY2F0aW9uLmg+
CisjaW1wb3J0IDxBcHBLaXQvTlNTcGVsbENoZWNrZXIuaD4KKworLy8gcmlnaHQgbm93IHdlIGFs
d2F5cyBkZWZpbmUgdGhpcworI2lmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IE1B
Q19PU19YX1ZFUlNJT05fMTBfNQorI2RlZmluZSBIQVNfR1JBTU1BUl9DSEVDS0lORyAxCisjZW5k
aWYKKworCisjaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPT0gTUFDX09TX1hfVkVS
U0lPTl8xMF80CitAaW50ZXJmYWNlIE5TU3BlbGxDaGVja2VyIChOb3RZZXRQdWJsaWNNZXRob2Rz
KQorLSAodm9pZClsZWFybldvcmQ6KE5TU3RyaW5nICopd29yZDsKK0BlbmQKKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OmluaXQoKQoreworICAg
IC8vIG1ha2Ugc3VyZSBDb2NvYSBpcyBpbml0aWFsaXplZAorICAgIE5TQXBwbGljYXRpb25Mb2Fk
KCk7Cit9CisKK2ludCBFZGl0b3JDbGllbnRRdDo6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKQor
eworICAgIGlmICghbV9oYXNTcGVsbENoZWNrZXJEb2N1bWVudFRhZykgeworICAgICAgICBtX3Nw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnID0gKGludClbTlNTcGVsbENoZWNrZXIgdW5pcXVlU3BlbGxE
b2N1bWVudFRhZ107CisgICAgICAgIG1faGFzU3BlbGxDaGVja2VyRG9jdW1lbnRUYWcgPSB0cnVl
OworICAgICAgICBOU1NwZWxsQ2hlY2tlciogc3NjID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNw
ZWxsQ2hlY2tlcl07CisgICAgfQorCisgICAgcmV0dXJuIG1fc3BlbGxDaGVja2VyRG9jdW1lbnRU
YWc7Cit9CisgCit2b2lkIEVkaXRvckNsaWVudFF0OjppZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50
KGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBbW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxs
Q2hlY2tlcl0gaWdub3JlV29yZDp0ZXh0IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
blNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCldOworfQorCit2
b2lkIEVkaXRvckNsaWVudFF0OjpsZWFybldvcmQoY29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAg
IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBsZWFybldvcmQ6dGV4dF07Cit9
CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hh
ciogdGV4dCwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3Nw
ZWxsaW5nTGVuZ3RoKQoreworICAgIE5TU3RyaW5nKiB0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhDaGFyYWN0ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBs
ZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107CisgICAgTlNSYW5nZSByYW5nZSA9IFtbTlNT
cGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBjaGVja1NwZWxsaW5nT2ZTdHJpbmc6dGV4
dFN0cmluZyBzdGFydGluZ0F0OjAgbGFuZ3VhZ2U6bmlsIHdyYXA6Tk8gaW5TcGVsbERvY3VtZW50
V2l0aFRhZzpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIHdvcmRDb3VudDpuaWxdOworICAgIFt0
ZXh0U3RyaW5nIHJlbGVhc2VdOworCisgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24pIHsKKyAg
ICAgICAgLy8gV2ViQ29yZSBleHBlY3RzIC0xIHRvIHJlcHJlc2VudCAibm90IGZvdW5kIgorICAg
ICAgICBpZiAocmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCkKKyAgICAgICAgICAgICptaXNz
cGVsbGluZ0xvY2F0aW9uID0gLTE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICptaXNzcGVs
bGluZ0xvY2F0aW9uID0gcmFuZ2UubG9jYXRpb247CisgICAgfQorICAgIAorICAgIGlmIChtaXNz
cGVsbGluZ0xlbmd0aCkKKyAgICAgICAgKm1pc3NwZWxsaW5nTGVuZ3RoID0gcmFuZ2UubGVuZ3Ro
OworfQorIAordm9pZCBFZGl0b3JDbGllbnRRdDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqIHRleHQsIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZGV0YWlscywg
aW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKK3sKKyNpZmRl
ZiBIQVNfR1JBTU1BUl9DSEVDS0lORworICAgIE5TQXJyYXkgKmdyYW1tYXJEZXRhaWxzOworICAg
IE5TU3RyaW5nKiB0ZXh0U3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhDaGFyYWN0
ZXJzTm9Db3B5OmNvbnN0X2Nhc3Q8VUNoYXIqPih0ZXh0KSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVu
RG9uZTpOT107CisgICAgTlNSYW5nZSByYW5nZSA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3Bl
bGxDaGVja2VyXSBjaGVja0dyYW1tYXJPZlN0cmluZzp0ZXh0U3RyaW5nIHN0YXJ0aW5nQXQ6MCBs
YW5ndWFnZTpuaWwgd3JhcDpOTyBpblNwZWxsRG9jdW1lbnRXaXRoVGFnOnNwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnKCkgZGV0YWlsczomZ3JhbW1hckRldGFpbHNdOworICAgIFt0ZXh0U3RyaW5nIHJl
bGVhc2VdOworICAgIGlmIChiYWRHcmFtbWFyTG9jYXRpb24pCisgICAgICAgIC8vIFdlYkNvcmUg
ZXhwZWN0cyAtMSB0byByZXByZXNlbnQgIm5vdCBmb3VuZCIKKyAgICAgICAgKmJhZEdyYW1tYXJM
b2NhdGlvbiA9IChyYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5kKSA/IC0xIDogcmFuZ2UubG9j
YXRpb247CisgICAgaWYgKGJhZEdyYW1tYXJMZW5ndGgpCisgICAgICAgICpiYWRHcmFtbWFyTGVu
Z3RoID0gcmFuZ2UubGVuZ3RoOworICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpkZXRhaWwgaW4gZ3Jh
bW1hckRldGFpbHMpIHsKKyAgICAgICAgQVNTRVJUKGRldGFpbCk7CisgICAgICAgIEdyYW1tYXJE
ZXRhaWwgZ3JhbW1hckRldGFpbDsKKyAgICAgICAgTlNWYWx1ZSAqZGV0YWlsUmFuZ2VBc05TVmFs
dWUgPSBbZGV0YWlsIG9iamVjdEZvcktleTpOU0dyYW1tYXJSYW5nZV07CisgICAgICAgIEFTU0VS
VChkZXRhaWxSYW5nZUFzTlNWYWx1ZSk7CisgICAgICAgIE5TUmFuZ2UgZGV0YWlsTlNSYW5nZSA9
IFtkZXRhaWxSYW5nZUFzTlNWYWx1ZSByYW5nZVZhbHVlXTsKKyAgICAgICAgQVNTRVJUKGRldGFp
bE5TUmFuZ2UubG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiBkZXRhaWxOU1JhbmdlLmxlbmd0aCA+
IDApOworICAgICAgICBncmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gZGV0YWlsTlNSYW5nZS5sb2Nh
dGlvbjsKKyAgICAgICAgZ3JhbW1hckRldGFpbC5sZW5ndGggPSBkZXRhaWxOU1JhbmdlLmxlbmd0
aDsKKyAgICAgICAgZ3JhbW1hckRldGFpbC51c2VyRGVzY3JpcHRpb24gPSBbZGV0YWlsIG9iamVj
dEZvcktleTpOU0dyYW1tYXJVc2VyRGVzY3JpcHRpb25dOworICAgICAgICBOU0FycmF5ICpndWVz
c2VzID0gW2RldGFpbCBvYmplY3RGb3JLZXk6TlNHcmFtbWFyQ29ycmVjdGlvbnNdOworICAgICAg
ICBmb3IgKE5TU3RyaW5nICpndWVzcyBpbiBndWVzc2VzKQorICAgICAgICAgICAgZ3JhbW1hckRl
dGFpbC5ndWVzc2VzLmFwcGVuZChTdHJpbmcoZ3Vlc3MpKTsKKyAgICAgICAgZGV0YWlscy5hcHBl
bmQoZ3JhbW1hckRldGFpbCk7CisgICAgfQorI2VuZGlmCit9CisgCit2b2lkIEVkaXRvckNsaWVu
dFF0Ojp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29u
c3QgR3JhbW1hckRldGFpbCYpCit7CisjaWZkZWYgSEFTX0dSQU1NQVJfQ0hFQ0tJTkcKKyAgICBO
U011dGFibGVBcnJheSogY29ycmVjdGlvbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgpOyBp
KyspIHsKKyAgICAgICAgTlNTdHJpbmcqIGd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2VzW2ld
OworICAgICAgICBbY29ycmVjdGlvbnMgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICB9CisgICAgTlNS
YW5nZSBncmFtbWFyUmFuZ2UgPSBOU01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBn
cmFtbWFyRGV0YWlsLmxlbmd0aCk7CisgICAgTlNTdHJpbmcqIGdyYW1tYXJVc2VyRGVzY3JpcHRp
b24gPSBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbjsKKyAgICBOU011dGFibGVEaWN0aW9u
YXJ5KiBncmFtbWFyRGV0YWlsRGljdCA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czpbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpncmFtbWFyUmFuZ2VdLCBOU0dyYW1t
YXJSYW5nZSwgZ3JhbW1hclVzZXJEZXNjcmlwdGlvbiwgTlNHcmFtbWFyVXNlckRlc2NyaXB0aW9u
LCBjb3JyZWN0aW9ucywgTlNHcmFtbWFyQ29ycmVjdGlvbnMsIG5pbF07CisgICAgCisgICAgW1tO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHVwZGF0ZVNwZWxsaW5nUGFuZWxXaXRo
R3JhbW1hclN0cmluZzpiYWRHcmFtbWFyUGhyYXNlIGRldGFpbDpncmFtbWFyRGV0YWlsRGljdF07
CisjZW5kaWYKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhN
aXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKQoreworICAgIFtbTlNT
cGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSB1cGRhdGVTcGVsbGluZ1BhbmVsV2l0aE1p
c3NwZWxsZWRXb3JkOm1pc3NwZWxsZWRXb3JkXTsKK30KKyAKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6
OnNob3dTcGVsbGluZ1VJKGJvb2wgc2hvdykKK3sKKyAgICBOU1BhbmVsICpzcGVsbGluZ1BhbmVs
ID0gW1tOU1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdIHNwZWxsaW5nUGFuZWxdOwor
ICAgIGlmIChzaG93KQorICAgICAgICBbc3BlbGxpbmdQYW5lbCBvcmRlckZyb250Om5pbF07Cisg
ICAgZWxzZQorICAgICAgICBbc3BlbGxpbmdQYW5lbCBvcmRlck91dDpuaWxdOworfQorIAorYm9v
bCBFZGl0b3JDbGllbnRRdDo6c3BlbGxpbmdVSUlzU2hvd2luZygpCit7CisgICAgcmV0dXJuIFtb
W05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl0gc3BlbGxpbmdQYW5lbF0gaXNWaXNp
YmxlXTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6Z2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3Qg
U3RyaW5nJiB3b3JkLCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKQoreworICAgIE5TQXJy
YXkqIHN0cmluZ3NBcnJheSA9IFtbTlNTcGVsbENoZWNrZXIgc2hhcmVkU3BlbGxDaGVja2VyXSBn
dWVzc2VzRm9yV29yZDp3b3JkXTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IFtzdHJpbmdzQXJyYXkg
Y291bnRdOworICAgIGd1ZXNzZXMuY2xlYXIoKTsKKyAgICBpZiAoY291bnQgPiAwKSB7CisgICAg
ICAgIE5TRW51bWVyYXRvciogZW51bWVyYXRvciA9IFtzdHJpbmdzQXJyYXkgb2JqZWN0RW51bWVy
YXRvcl07CisgICAgICAgIE5TU3RyaW5nKiBzdHJpbmc7CisgICAgICAgIHdoaWxlICgoc3RyaW5n
ID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF0pICE9IG5pbCkKKyAgICAgICAgICAgIGd1ZXNzZXMu
YXBwZW5kKHN0cmluZyk7CisgICAgfQorfQorIAorfQorCisvLyB2aW06IHRzPTQgc3c9NCBldAor
Cg==
</data>
<flag name="review"
          id="9939"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>