From owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org  Sun Mar 31 14:09:52 2013
Return-Path: <owner-sc22wg5+sc22wg5-dom8=www.open-std.org@open-std.org>
X-Original-To: sc22wg5-dom8
Delivered-To: sc22wg5-dom8@www.open-std.org
Received: by www.open-std.org (Postfix, from userid 521)
	id CD7083568E2; Sun, 31 Mar 2013 14:09:52 +0200 (CEST)
Delivered-To: sc22wg5@open-std.org
Received: from ppsw-41.csi.cam.ac.uk (ppsw-41.csi.cam.ac.uk [131.111.8.141])
	by www.open-std.org (Postfix) with ESMTP id 258573568E2
	for <sc22wg5@open-std.org>; Sun, 31 Mar 2013 14:09:49 +0200 (CEST)
X-Cam-AntiVirus: no malware found
X-Cam-SpamDetails: not scanned
X-Cam-ScannerInfo: http://www.ucs.cam.ac.uk/email/scanner/
Received: from hermes-1.csi.cam.ac.uk ([131.111.8.51]:39757)
	by ppsw-41.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.156]:25)
	with esmtpa (EXTERNAL:nmm1) id 1UMH53-0004F1-Rp (Exim 4.72)
	(return-path <nmm1@hermes.cam.ac.uk>); Sun, 31 Mar 2013 13:09:49 +0100
Received: from prayer by hermes-1.csi.cam.ac.uk (hermes.cam.ac.uk)
	with local (PRAYER:nmm1) id 1UMH53-0001cQ-JV (Exim 4.72)
	(return-path <nmm1@hermes.cam.ac.uk>); Sun, 31 Mar 2013 13:09:49 +0100
Received: from [87.112.86.124] by webmail.hermes.cam.ac.uk
	with HTTP (Prayer-1.3.5); 31 Mar 2013 13:09:49 +0100
Date: 31 Mar 2013 13:09:49 +0100
From: "N.M. Maclaren" <nmm1@cam.ac.uk>
To: WG5 <sc22wg5@open-std.org>
Subject: A possible collective and atomic data consistency model
Message-ID: <Prayer.1.3.5.1303311309490.32733@hermes-1.csi.cam.ac.uk>
In-Reply-To: <20130331022706.93AD4356D4F@www.open-std.org>
References: <20130331022706.93AD4356D4F@www.open-std.org>
X-Mailer: Prayer v1.3.5
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="-1870869256-1804289383-1364731789=:32733"
Sender: owner-sc22wg5@open-std.org
Precedence: bulk

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---1870869256-1804289383-1364731789=:32733
Content-Type: text/plain; format=flowed; charset=ISO-8859-1

I shouldn't really have spent the time on this, but I have.  This is an
attempt to (a) explain Fortran's concepts to C++ people and (b) map the
proven C++ design into Fortran, so that there is a chance of getting
assistance from the C++ people who understand formal validation.  I do
not program in (or fully understand) HOL, and do NOT have time to learn
before June!

Please howl me down where I have got things wrong!

As far as formalities go, I am NOT proposing this for inclusion in
the TS, but I am absolutely certain that we need a clean and explicit
data consistency model if we are to avoid introducing inconsistencies
into the standard.  And, worse, any such mistake is likely to be very,
very hard to clean up later.  At MOST, its last section might be an
informative annex, with a comment that the intent is to make it
rigorous and normative before the TS is incorporated into the main
standard.  Or it might just be a paper, designed to focus discussion.

The main language extension I have assumed is that there are both
inconsistent atomic definition and reference (as at present) and
consistent forms.  I have used new names for the latter, but there
would be no problem in using the current names for them, and using
new names for the inconsistent forms.

Any feedback on that semaphore question would be very helpful,
because I have assumed that events can be cleanly defined in terms
of a DAG on the segments (i.e. as at present), but I have little
idea of how that could be done except by simplifying them to simple
Boolean semaphores.


Regards,
Nick Maclaren.

---1870869256-1804289383-1364731789=:32733
Content-Type: text/plain; name=Atomic_ordering.txt
Content-Disposition: attachment; filename=Atomic_ordering.txt
Content-Description: Atomic_ordering.txt
Content-Transfer-Encoding: BASE64

MS4gRm9yIG5vbi1Gb3J0cmFuIHJlYWRlcnMKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KClZlcnkgbGl0dGxlIG9mIHRoZSB0ZXJtaW5vbG9neSBtYXRj
aGVzIHRoYXQgdXNlZCBpbiBlaXRoZXIgdHJhZGl0aW9uYWwKb3IgbW9kZXJu
IGNvbXB1dGVyIHNjaWVuY2UsIHdoZXRoZXIgb2YgdGhlIEFsZ29sIGVyYSwg
dGhlIEMvQysrIG9uZSBvcgphbnkgaW50ZXJtZWRpYXRlIG9uZS4gIFNvbWUg
b2YgdGhlIGNvbmNlcHRzIGRvLCB1bmRlciBkaWZmZXJlbnQgbmFtZXMsCmJ1
dCBvdGhlcnMgYXJlIHdpbGRseSBkaWZmZXJlbnQsIGFuZCBhdHRlbXB0aW5n
IHRvIG1hdGNoIEZvcnRyYW4KY29uY2VwdHMgdG8gdGhlaXIgYXBwYXJlbnQg
ZXF1aXZhbGVudCBpbiBvdGhlciBsYW5ndWFnZXMgaXMgb2Z0ZW4gYQpzZXJp
b3VzIG1pc3Rha2UuICBUaGlzIGNhbiBjYXVzZSBhIGxvdCBvZiBjb25mdXNp
b24gYW5kIGNyb3NzLXB1cnBvc2VzCmFyZ3VtZW50LgoKSXQgdXNlcyBhIFBH
QVMgbWVtb3J5IG1vZGVsIHdpdGggZWFjaCBpbWFnZSAoc2VlIGJlbG93KSBi
ZWluZyBhYmxlIHRvCmFjY2VzcyBvdGhlciBpbWFnZSdzIGRhdGEsIGFuZCBh
IGNvbnZlbnRpb25hbCBTUE1EIGV4ZWN1dGlvbiBtb2RlbC4KCldoYXQgaXMg
dHJhZGl0aW9uYWxseSBjYWxsZWQgYSB0aHJlYWQgb3IgcHJvY2VzcyBpcyBj
YWxsZWQgYW4gaW1hZ2UsIGFuZAp0aGVyZSBpcyBub3RoaW5nIHRoYXQgY29u
c3RyYWlucyBob3cgaW1hZ2VzIGFyZSBpbXBsZW1lbnRlZC4gIFRoZXkgY2Fu
CmJlIFBPU0lYLWxpa2UgcHJvY2Vzc2VzIG9uIHNlcGFyYXRlIHN5c3RlbXMg
KG9yIHRoZSBzYW1lIHN5c3RlbSksClBPU0lYLWxpa2UgdGhyZWFkcyBvciBT
eXN0ZW0vMzcwIE1WUyB0YXNrcyAod2hpY2ggYXJlIHVubGlrZSBhbnl0aGlu
ZwppbiBQT1NJWCkuCgpXaGF0IGlzIG5vd2FkYXlzIHVzdWFsbHkgY2FsbGVk
IGFuIGltcGxlbWVudGF0aW9uIGlzIGNhbGxlZCBhIHByb2Nlc3Nvci4KVGhp
cyBoYXMgbm90aGluZyB0byBkbyB3aXRoIGEgQ1BVLCBhbmQgcmVmZXJzIGEg
Rm9ydHJhbiBjb21waWxlciBhbmQKaXRzIGVudmlyb25tZW50LgoKRm9yIHRo
ZSBwdXJwb3NlcyBvZiB0aGlzIGRvY3VtZW50LCB0aGUgdGVybSAiYmVjb21l
cyBkZWZpbmVkIiBtYXkgYmUKcmVnYXJkZWQgYXMgZXF1aXZhbGVudCBtb2Rp
ZnlpbmcgYSB2YXJpYWJsZSwgYW5kIHJlZmVyZW5jaW5nIGEgdmFyaWFibGUK
bWF5IGJlIHJlZ2FyZGVkIGFzIGFjY2Vzc2luZyBpdHMgdmFsdWUsIHRob3Vn
aCBuZWl0aGVyIGlzIHRoYXQgc2ltcGxlLgoKCjEuMSBUaGUgY3VycmVudCBz
dGFuZGFyZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZXJlIGlzIGEg
ZGVmaW5lZCBzZXJpYWwgZXhlY3V0aW9uIG9yZGVyIG9mIHN0YXRlbWVudHMg
aW4gYSBzaW5nbGUKaW1hZ2UsIGJ1dCBlZmZlY3RpdmVseSBub25lIGZvciBl
eHByZXNzaW9uIGV2YWx1YXRpb24uICBUaGVyZSBhcmUgYm90aApzdGF0ZW1l
bnQtIGxpa2UgcHJvY2VkdXJlcyAoc3Vicm91dGluZXMpIGFuZCBleHByZXNz
aW9uLWxpa2Ugb25lcwooZnVuY3Rpb25zKS4gIE9uIHRoZSBvdGhlciBoYW5k
LCBhbGwgYXNzaWdubWVudCBhbmQgKGZ1bGx5IGRlZmluZWQpCndyaXRpbmcg
dG8gdmFyaWFibGVzIGlzIGRvbmUgYnkgY29tcGxldGUgc3RhdGVtZW50cyBv
ciBzdWJyb3V0aW5lcywgYXMKaXMgYWxsIGFjY2VzcyB0byBhdG9taWMgdmFy
aWFibGVzLiAgSW4gdGhlIG1vc3QgbW9kZXJuIHN0eWxlLCBhbGwKZXhwcmVz
c2lvbiBldmFsdWF0aW9uIChpbmNsdWRpbmcgZnVuY3Rpb24gY2FsbCkgaXMg
cHVyZSwgYXMgaW4KZnVuY3Rpb25hbCBsYW5ndWFnZXMuICBUaGVyZSBhcmUg
dW5vcmRlcmVkIHN0YXRlbWVudC1saWtlIGNvbnN0cnVjdHMsCmJ1dCBhbnkg
YXR0ZW1wdCB0byBleHBvc2UgdGhlIG9yZGVyaW5nIGlzIGZvcmJpZGRlbi4K
CldlIGNhbiB0aGVyZWZvcmUgYXNzdW1lIHRoYXQgdGhlcmUgaXMgYSB3ZWxs
LWRlZmluZWQgc2VyaWFsIGV4ZWN1dGlvbgpvcmRlciBmb3IgYWxsIGF0b21p
YyBhY2Nlc3NlcyB3aXRoaW4gYSBzaW5nbGUgaW1hZ2UsIGFuZCBpZ25vcmUg
dGhlCmxhcmdlbHkgaGlzdG9yaWNhbCBtdXJrIG9mIHRoZSB2ZXJ5IGZldyB3
YXlzIGluIHdoaWNoIHRoYXQgaXMgbm90IHNvLgoKSW50ZXItaW1hZ2Ugb3Jk
ZXJpbmcgaXMgYmFzZWQgb24gdGhlIGV4cGxpY2l0IG9yZGVyaW5nIG9mIHNl
Z21lbnRzCihzZWN0aW9ucyBvZiBhIHNpbmdsZSBpbWFnZSdzIGV4ZWN1dGlv
biwgc2VwYXJhdGVkIGJ5IGltYWdlIGNvbnRyb2wKc3RhdGVtZW50cywgd2hp
Y2ggYXJlIGVmZmVjdGl2ZWx5IGZlbmNlcy4gIERhdGEgcmFjZXMgYmV0d2Vl
biBub3JtYWwKYWNjZXNzZXMgaW4gdW5vcmRlcmVkIHNlZ21lbnRzIGlzIHVu
ZGVmaW5lZCBiZWhhdmlvdXIuICBUaGVyZSBpcyBhbgpleHBsaWNpdCwgdW5v
cmRlcmVkIGZlbmNlIChTWU5DIE1FTU9SWSksIGFuZCBhIHZhcmlldHkgb2Yg
YmFycmllci1saWtlCnN0YXRlbWVudHMsIG9uIGVpdGhlciBhbGwgaW1hZ2Vz
IG9yIGEgd2VsbC1kZWZpbmVkIHN1YnNldC4KClRoZXJlIGlzIGEgQ1JJVElD
QUwgY29uc3RydWN0LCB3aGljaCBkZWZpbmVzIGEgc2VnbWVudCB0aGF0IHdp
bGwgaGFwcGVuCnNlcXVlbnRpYWxseSBpbiBhbiB1bnNwZWNpZmllZCBvcmRl
ciwgcmVsYXRpdmUgdG8gYW55IHNlZ21lbnRzIGNyZWF0ZWQKYnkgdGhlIHNh
bWUgQ1JJVElDQUwgY29uc3RydWN0IChpLmUuIGluIHRoZSBTUE1EIG1vZGVs
KSBvbiBvdGhlciBpbWFnZXMuCkl0IGRlZmluZXMgbm8gb3RoZXIgc3luY2hy
b25pc2F0aW9uIHdoYXRzb2V2ZXIuCgpUaGVyZSBhcmUgYWxzbyBsb2Nrcywg
d2hpY2ggYXJlIGZlbmNlcyBldmVuIG9uIGZhaWx1cmUsIGFuZCBjYW4gYmUK
dW5sb2NrZWQgb25seSBieSB0aGUgaW1hZ2UgdGhhdCB0b29rIG91dCB0aGUg
bG9jay4gIFRoZSBvbmx5CnN5bmNocm9uaXNhdGlvbiBpcywgaWYgaW1hZ2Ug
QSB1bmxvY2tzIGEgbG9jayBQIGFuZCBpbWFnZSBCIHN1YnNlcXVlbnRseQps
b2NrcyBQLCB0aGVuIGFsbCBvZiB0aGUgc2VnbWVudHMgb24gQSBiZWZvcmUg
dGhhdCB1bmxvY2sgaGFwcGVuIGJlZm9yZQphbGwgb2YgdGhvc2Ugb24gQiB0
aGF0IGZvbGxvdyB0aGUgdW5sb2NrLiAgRmFpbHVyZSB0byBvYnRhaW4gYSBs
b2NrIGlzCmFuIHVuc3luY2hyb25pc2VkIGZlbmNlLgoKU2VnbWVudCBvcmRl
cmluZyBpcyByZXF1aXJlZCB0byBiZSBhIERBRy4gIEFzIGFsbCBjb25mbGlj
dGluZyBub3JtYWwKYWNjZXNzZXMgaW4gdW5vcmRlcmVkIHNlZ21lbnRzIGFy
ZSBmb3JiaWRkZW4sIGFuZCBGb3J0cmFuIGlzIG5vdCBmaXhhdGVkCm9uIGRl
dGVybWluaXNtLCB0aGF0IGlzIGFsbCB0aGF0IGlzIG5lZWRlZC4gIFRoaXMg
YXBwZWFycyB0byBiZQplcXVpdmFsZW50IHRvIHRoZSBXVyBtb2RlbCBvZiwg
Zm9yIGV4YW1wbGU6CgogICAgaHR0cDovL3N1cGVydGVjaC5jc2FpbC5taXQu
ZWR1L3BhcGVycy9mcmlnby1tcy10aGVzaXMucGRmCgpUaGVyZSBhcmUgYXRv
bWljIHZhcmlhYmxlcywgd2hpY2ggY2FuIGJlIG9ubHkgcmVhZCBhbmQgd3Jp
dHRlbiwgYW5kCmFsbCBiZWhhdmlvdXIgaW4gdW5vcmRlcmVkIHNlZ21lbnRz
IGlzIGltcGxlbWVudGF0aW9uIHNwZWNpZmljLgoKCjEuMiBUaGUgcHJvcG9z
YWxzCi0tLS0tLS0tLS0tLS0tLS0tCgpBbGwgb2YgdGhlIGRldGFpbHMgYXJl
IHN0aWxsIGEgbWF0dGVyIG9mIGRlYmF0ZSwgYnV0IGludGVudCBpcyBsYXJn
ZWx5CmFncmVlZC4KClRoZSBpbnRlbnQgaXMgdG8gc3BlY2lmeSB0ZWFtcyBv
ZiBpbWFnZXMgKHN1YnNldHMgb2YgdGhlbSksIHdoaWNoIHdpbGwKYmUgc3Ry
aWN0bHkgaGllcmFyY2hpY2FsLCBsYXJnZWx5IGZvbGxvd2luZyBNUEkuICBJ
LmUuLCBpbiBhIHN1YnNldCwgdGhlCnN1YnNldCBiZWNvbWVzIHRoZSB1bml2
ZXJzZSwgYW5kIHRoZSBwYXJlbnQgc3Vic2V0IGlzIGVmZmVjdGl2ZWx5CnN1
c3BlbmRlZCB3aGlsZSBhbnkgb2YgaXRzIGNoaWxkcmVuIGFyZSBleGVjdXRp
bmcuICBJZiB0aGF0IGlzIHByb3Blcmx5CnNwZWNpZmllZCwgSSBjYW5ub3Qg
c2VlIHRoYXQgaXQgd2lsbCBjcmVhdGUgYW55IG5ldyBpc3N1ZXMuCgpUaGUg
aW50ZW50IGlzIHRvIHNwZWNpZnkgRVZFTlQgc3RhdGVtZW50cywgd2hpY2gg
YXJlIGdlbmVyYWwgc2VtYXBob3JlcwphbmQgd2lsbCBiZSBmZW5jZXMuICBT
byBmYXIsIEkgaGF2ZSBiZWVuIHVuYWJsZSB0byBmaW5kIGEgcmlnb3JvdXMK
ZGVzY3JpcHRpb24gb2YgdGhlIHN5bmNocm9uaXNhdGlvbiBpbXBsaWVkIGJ5
IGdlbmVyYWwgc2VtYXBob3JlcywKaW5jbHVkaW5nIHdoZW4gZmFpbHVyZSBz
aG91bGQgYmUgcGVybWl0dGVkLCB3aGljaCBJIGZlZWwgaXMgYSBwb3RlbnRp
YWwKaXNzdWUgdGhhdCBuZWVkcyByZXNvbHV0aW9uLiAgSSBjYW5ub3Qgc2Vl
IGFueSBzcGVjaWFsIGludGVyYWN0aW9uIHdpdGgKYXRvbWljcy4KClRoZSBp
bnRlbnQgaXMgdG8gcHJvdmlkZSBjb2xsZWN0aXZlcyAoaW5jbHVkaW5nIHJl
ZHVjdGlvbnMpLCB3aGljaCB3aWxsCk5PVCBiZSBpbWFnZSBjb250cm9sIHN0
YXRlbWVudHMuICBJLmUuIHRoZXkgd2lsbCBwcm92aWRlIGludGVyLWltYWdl
Cm9yZGVyaW5nIG9mIGRhdGEgdHJhbnNmZXIsIGJ1dCBub3Qgb2YgdGhlbXNl
bHZlcyBjb25zdGl0dXRlIGZlbmNlcy4KClRoZSBpbnRlbnQgaXMgdG8gZXh0
ZW5kIGF0b21pY3MsIHRvIGluY2x1ZGUgQ0FTIGFuZCBmZXRjaC1hbmQtb3Bl
cmF0ZQooZS5nLiByZXR1cm4gdGhlIGV4aXN0aW5nIHZhbHVlIGFuZCBhdG9t
aWNhbGx5IGFkZCB0byBpdCkuICAKCkkgY2FuIHNlZSBtYXNzaXZlIHBvdGVu
dGlhbCBmb3IgY29uZnVzaW9uIGFuZCBldmVuIGNoYW9zIHVubGVzcyB3ZQpz
cGVjaWZ5IGFuIGFwcHJvcHJpYXRlIG1lbW9yeSBtb2RlbCBmb3IgY29sbGVj
dGl2ZXMgYW5kIGF0b21pY3MuCgoKCjIuIEEgcXVlc3Rpb24gb24gZ2VuZXJh
bCBzZW1hcGhvcmVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCgpUbyBzYXZlIG1lIGEgbG9uZyBsaXRlcmF0dXJlIHNlYXJjaCwgZG9l
cyBhbnlvbmUga25vdyBvZiBhIGNvbnZlbmllbnQKcmVmZXJlbmNlIHRvIGEg
cmlnb3JvdXMgc3RhdGVtZW50IG9mIHRoZSBzeW5jaHJvbmlzYXRpb24gdGhl
eSBpbXBseSwKcHJlZmVyYWJseSBpbmNsdWRpbmcgYW4gYW5hbHlzaXMgb2Yg
d2hhdCBmb3JtcyBvZiBhcHBhcmVudGx5IHNwdXJpb3VzCmZhaWx1cmUgdGhl
eSBuZWVkIHRvIGFsbG93PwoKQXMgSSBwb3N0ZWQgZWFybGllciwgbXkgaW5j
bGluYXRpb24gaXMgdG8gYWJhbmRvbiB0aGUgYXR0ZW1wdCB0bwpwcm92aWRl
IGdlbmVyYWwgc2VtYXBob3JlcywgYW5kIHByb3ZpZGUgb25seSBzaW1wbGUg
Ym9vbGVhbiBvbmVzLAp3aGljaCBoYXZlIG9idmlvdXMgc3luY2hyb25pc2F0
aW9uIHJ1bGVzLgoKCgozLiBTcGVjaWZ5aW5nIEZvcnRyYW4ncyBkYXRhIGNv
bnNpc3RlbmN5IG1vZGVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KCjMuMSBTZWdtZW50IG9yZGVyaW5nCi0tLS0t
LS0tLS0tLS0tLS0tLS0tCgpJIHRoaW5rIHRoYXQgYWxsIHdlIG5lZWQgdG8g
ZG8gaXMgdG8gc3BlbGwgb3V0IHRoYXQgYSBwcm9jZXNzb3Igc2hhbGwKZW5z
dXJlIHRoYXQgdGhlIG9yZGVyaW5nIG9mIGFsbCBpbWFnZSBjb250cm9sIHN0
YXRlbWVudHMgaXMgYSBEQUcgdGhhdAppcyBjb25zaXN0ZW50IHdpdGggdGhl
IHN0YW5kYXJkJ3MgcmVxdWlyZW1lbnRzLiAgSSBiZWxpZXZlIHRoYXQgdGhl
CmN1cnJlbnQgc3RhbmRhcmQgc3BlY2lmaWVzIHByZWNpc2VseSB0aGF0LCBi
dXQgSSBhbSBjb25jZXJuZWQgYXQgaG93IHRvCnNwZWNpZnkgZXZlbnRzIHNv
IHRoYXQgdGhpcyBwcm9wZXJ0eSBjb250aW51ZXMgdG8gYmUgZ3VhcmFudGVl
ZC4KCkhvd2V2ZXIsIHdlIGFsc28gbmVlZCB0byBzcGVsbCBvdXQgdGhhdCBh
biBpbXBsZW1lbnRhdGlvbiBtdXN0IGVuc3VyZQp0aGF0IHRoZSBkYXRhIHRy
YW5zZmVyIHZpYSBjb2xsZWN0aXZlcyBhbmQgYXRvbWljcyBpcyBjb25zaXN0
ZW50IHdpdGgKdGhlIHNlZ21lbnQgb3JkZXIuCgpUaGVyZSBpcyBhIHNsaWdo
dCBwcm9ibGVtIHdpdGggdGVhbXMsIGluIHRoYXQgdGhlIGNvbWJpbmF0aW9u
IG9mCmNvbnNpc3RlbnQgYXRvbWljcyBhbmQgU1lOQyBNRU1PUlkgKGkuZS4g
YSBwbGFpbiBmZW5jZSkgcHJvdmlkZXMgYQpjb3ZlcnQgY2hhbm5lbCBiZXR3
ZWVuIGluc2lkZSBhbmQgb3V0c2lkZS4gIEhvd2V2ZXIsIGFzIEkgdW5kZXJz
dGFuZAppdCwgdGVhbXMgaGF2ZSBubyBkaXJlY3QgaW52b2x2ZW1lbnQgd2l0
aCBzZWdtZW50IG9yZGVyaW5nLCBhbmQgc28KdGhpcyBpcyBub3QgYSBwcm9i
bGVtLiAgSXQgZG9lcyBtYWtlIG1lIGEgYml0IG5lcnZvdXMsIGhvd2V2ZXIu
CgoKCjMuIE1hcHBpbmcgdG8gdGhlIEMvQysrIHJlbGVhc2UvYWNxdWlyZSBt
b2RlbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KClRoaXMgaXMgd2hhdCBJIGJlbGlldmUgc2hvdWxkIGJlIHNwZWNp
ZmllZCBmb3IgY29sbGVjdGl2ZXMgYW5kIGF0b21pY3MuCkkgaGF2ZSBmb2xs
b3dlZCB0aGUgbW9kZWwgYW5kIHRlcm1pbm9sb2d5IHVzZWQgaW4gQysrIGFz
IGNsb3NlbHkgYXMgSQp0aGluayBtYWtlcyBzZW5zZSBmb3IgRm9ydHJhbiwg
dGhvdWdoIEkgaGF2ZSBjaGFuZ2VkICJtb2RpZmljYXRpb24Kb3JkZXIiIHRv
ICJkZWZpbmVzIGJlZm9yZSIgYW5kIHJldmVyc2VkIGl0cyBzZW5zZS4gIFRo
ZSBtb3N0IHVzZWZ1bApwYXBlciBvbiB0aGlzIEkgaGF2ZSBmb3VuZCBpczoK
CiAgICBodHRwOi8vd3d3LXVzZXJzLmNzLnlvcmsuYWMudWsvfm1pa2VkL3B1
YmxpY2F0aW9ucy8uLi4KICAgICAgICAuLi4vUE9QTC4xMy5saWJyYXJ5X2Fi
c3RyYWN0aW9uX2NfY3BwLnBkZgoKQW5kLCBvZiBjb3Vyc2UsIDEuMTAgW2lu
dHJvLm11bHRpdGhyZWFkXSBpbjoKCiAgICBodHRwOi8vd3d3Lm9wZW4tc3Rk
Lm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL3BhcGVycy8yMDEyL24zMzc2LnBk
ZgoKQVRPTUlDX1NFVCBhbmQgQVRPTUlDX1ZBTFVFIGFyZSB1c2VkIHRvIHJl
ZmVyIHRvIHZlcnNpb25zIG9mCkFUT01JQ19ERUZJTkUgYW5kIEFUT01JQ19S
RUYgdGhhdCBhcmUgY29uc2lzdGVudCB3aXRoIHRoZSBvdGhlciBhdG9taWNz
CmFuZCB3aXRoIHRoZSBjb2xsZWN0aXZlcy4gIFRoZXJlIGFyZSBhbHNvIHVz
ZXMgZm9yIGluY29uc2lzdGVudCAoaGlnaGx5CnJlbGF4ZWQpIGF0b21pYyBz
dWJyb3V0aW5lcywgYnV0IHRob3NlIGhhdmUgbm8gZGVmaW5lZCBvcmRlcmlu
ZyBvdGhlcgp0aGFuIHRoYXQgaW1wbGllZCBieSB0aGUgKHNlcmlhbCkgZXhl
Y3V0aW9uIG9yZGVyIG9mIGEgc2luZ2xlIGltYWdlIGFuZApzZWdtZW50IG9y
ZGVyaW5nLiAgV2hldGhlciBib3RoIHNob3VsZCBleGlzdCBpcyBhbiBvcnRo
b2dvbmFsIG1hdHRlcgp0byB0aGlzIGRvY3VtZW50LgoKSW4gdGhlIGZvbGxv
d2luZywgb25seSBzdGFuZGFyZC1jb25mb3JtaW5nIHByb2dyYW1zIGFyZSBj
b25zaWRlcmVkLgpUaGVyZSBpcyBubyBpbmRldGVybWluYXRlIG9yZGVyaW5n
IGluIEZvcnRyYW4sIGFuZCB0aGUgZXhlY3V0aW9uCnNlcXVlbmNlIGlzIGEg
dHJ1ZSBwYXJ0aWFsIG9yZGVyLiAgRm9ydHJhbiBkb2VzIG5vdCB1c2UgYSBk
ZXBlbmRlbmN5Cm1vZGVsOyBzdGF0ZW1lbnRzIChpbmNsdWRpbmcgc3Vicm91
dGluZSBjYWxscyBhbmQgYXNzaWdubWVudHMpIGRlZmluZSBhCnBhcnRpYWwg
b3JkZXIsIGFuZCB0aGUgb3JkZXIgb2YgZXhwcmVzc2lvbiBldmFsdWF0aW9u
IChpbmNsdWRpbmcKZnVuY3Rpb24gY2FsbHMpIGlzIGVmZmVjdGl2ZWx5IHVu
c3BlY2lmaWVkLgoKSW50ZXIgYWxpYSwgdGhpcyBtZWFucyB0aGF0IHVuc3lu
Y2hyb25pc2VkIG5vbi1hdG9taWMgYWNjZXNzZXMgYXJlCnVuZGVmaW5lZCBp
ZiBlaXRoZXIgaW52b2x2ZXMgZGVmaW5pdGlvbiwgYW5kIHRoYXQgb25seSBv
cmRlcmVkIGltYWdlCmNvbnRyb2wgc3RhdGVtZW50cyBzcGVjaWZ5IHN1Y2gg
c3luY2hyb25pc2F0aW9uLiAgU2ltaWxhcmx5LAppbmNvbnNpc3RlbnQgYXRv
bWljIGFjY2Vzc2VzIGFyZSBwcm9jZXNzb3ItZGVmaW5lZCB1bmRlciB0aGUg
c2FtZQpjb25kaXRpb25zLiAgVGhlcmUgYXJlIG5vIGV4Y2VwdGlvbnMuCgpU
aGUgZm9sbG93aW5nIHN1bW1hcmlzZXMgdGhlIGV4aXN0aW5nIHNpdHVhdGlv
bjoKCiAgICBBIHN0YXRlbWVudCBBIGlzIG9yZGVyZWQgYmVmb3JlIGEgc3Rh
dGVtZW50IEIgaWYgZWl0aGVyIG9mIHRoZQogICAgZm9sbG93aW5nIGFyZSB0
cnVlOgoKICAgICAgICBTdGF0ZW1lbnRzIEEgYW5kIEIgYXJlIGV4ZWN1dGVk
IG9uIHRoZSBzYW1lIGltYWdlIFAgYW5kIAogICAgICAgIHN0YXRlbWVudCBB
IG9jY3VycyBiZWZvcmUgc3RhdGVtZW50IEIgaW4gdGhlIGV4ZWN1dGlvbiBv
cmRlcgogICAgICAgIG9mIFAKCiAgICBvcjoKCiAgICAgICAgU3RhdGVtZW50
IEEgaXMgaW4gYSBzZWdtZW50IFAsIHN0YXRlbWVudCBCIGlzIGluIGEgc2Vn
bWVudCBRLAogICAgICAgIGFuZCBzZWdtZW50IFAgaXMgb3JkZXJlZCBiZWZv
cmUgc2VnbWVudCBRCgpUaGUgZm9sbG93aW5nIGlzIHdoYXQgSSB0aGluayB0
aGF0IHdlIG5lZWQgdG8gc3RhdGUgZm9yIHRoZSBjb2xsZWN0aXZlcwphbmQg
Y29uc2lzdGVudCBhdG9taWNzOgoKICAgIEEgc3RhdGVtZW50IEEgaW50ZXIt
aW1hZ2UgaGFwcGVucyB0b2dldGhlciB3aXRoIGEgc3RhdGVtZW50IEIKICAg
IGlmIHRoZXkgYXJlIG1hdGNoaW5nIGNvbGxlY3RpdmUgc3Vicm91dGluZSBj
YWxscyBvdGhlciB0aGFuCiAgICBDT19CUk9BRENBU1QsIGFuZCBSRVNVTFRf
SU1BR0UgaXMgbm90IHNwZWNpZmllZC4KCiAgICBBIHN0YXRlbWVudCBBIGlu
dGVyLWltYWdlIGhhcHBlbnMgYmVmb3JlIGEgc3RhdGVtZW50IEIgaWYgYW55
CiAgICBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlOgoKICAgICAgICBTdGF0
ZW1lbnQgQSBpcyBpbiBzZWdtZW50IFAsIHN0YXRlbWVudCBCIGlzIGluIHNl
Z21lbnQgUSwgYW5kCiAgICAgICAgc2VnbWVudCBQIGlzIGhhcHBlbnMgYmVm
b3JlIHNlZ21lbnQgUQoKICAgIG9yOgoKICAgICAgICBTdGF0ZW1lbnQgQSBp
biBpbWFnZSBQIGlzIGEgQ09fQlJPQURDQVNUIGNhbGwgd2hlcmUgU09VUkNF
X0lNQUdFCiAgICAgICAgaXMgUCwgYW5kIHN0YXRlbWVudCBCIGlzIGEgbWF0
Y2hpbmcgQ09fQlJPQURDQVNUIGNhbGwgb24gaW1hZ2UgUQoKICAgIG9yOgoK
ICAgICAgICBTdGF0ZW1lbnQgQSBpbiBpbWFnZSBQIGlzIGEgY29sbGVjdGl2
ZSBzdWJyb3V0aW5lIGNhbGwgb3RoZXIKICAgICAgICB0aGFuIENPX0JST0FE
Q0FTVCB3aXRoIGEgUkVTVUxUX0lNQUdFIG9mIFEsIGFuZCBzdGF0ZW1lbnQg
QiBpcwogICAgICAgIGEgbWF0Y2hpbmcgY29sbGVjdGl2ZSBzdWJyb3V0aW5l
IGNhbGwgb24gaW1hZ2UgUQoKICAgIG9yOgoKICAgICAgICBYIGlzIGFuIGF0
b21pYyB2YXJpYWJsZSwgc3RhdGVtZW50IEEgaXMgYW55IGNvbnNpc3RlbnQg
YXRvbWljCiAgICAgICAgc3Vicm91dGluZSBleGNlcHQgQVRPTUlDX1ZBTFVF
LCBCIGlzIGFueSBjb25zaXN0ZW50IGF0b21pYwogICAgICAgIHN1YnJvdXRp
bmUgZXhjZXB0IEFUT01JQ19TRVQsIFggaXMgdGhlIEFUT00gYXJndW1lbnQg
dG8gYm90aAogICAgICAgIEEgYW5kIEIsIGFuZCBCIHJlZmVyZW5jZXMgdGhl
IHZhbHVlIGRlZmluZWQgYnkgQQoKICAgIG9yOgoKICAgICAgICBTdGF0ZW1l
bnQgQSBpcyBvcmRlcmVkIGJlZm9yZSBzdGF0ZW1lbnQgQyB3aGljaCBpbnRl
ci1pbWFnZQogICAgICAgIGhhcHBlbnMgYmVmb3JlIG9yIHRvZ2V0aGVyIHdp
dGggc3RhdGVtZW50IEIKCiAgICBvcjoKCiAgICAgICAgU3RhdGVtZW50IEEg
aW50ZXItaW1hZ2UgaGFwcGVucyBiZWZvcmUgb3IgdG9nZXRoZXIgd2l0aAog
ICAgICAgIHN0YXRlbWVudCBDIHdoaWNoIGlzIG9yZGVyZWQgYmVmb3JlIHN0
YXRlbWVudCBCCgogICAgb3I6CgogICAgICAgIFN0YXRlbWVudCBBIGludGVy
LWltYWdlIGhhcHBlbnMgYmVmb3JlIHN0YXRlbWVudCBDIHdoaWNoCiAgICAg
ICAgaW50ZXItaW1hZ2UgaGFwcGVucyBiZWZvcmUgc3RhdGVtZW50IEIKClRo
aXMgZGVsaWJlcmF0ZWx5IGRvZXMgbm90IHN0YXRlIHRoYXQgY29sbGVjdGl2
ZXMgd2FpdCB1bmxlc3MgdGhleSBoYXZlCnRvLiAgSW4gdGhpcywgSSBhbSBm
b2xsb3dpbmcgTVBJLiAgSSBoYXZlIHNwZWxsZWQgb3V0IHRoZSBhdG9taWMg
YW5kCmNvbGxlY3RpdmUgYmVoYXZpb3VycyB0byBhdm9pZCB0aGUgbXVyayBj
YXVzZWQgYnkgY2FsbHMgbGlrZQpBVE9NSUNfQU5EKGF0b20sMCksIGFuZCBy
ZWR1Y3Rpb25zIHdoZXJlIHRoZSByZXN1bHQgY2FuIGJlIGRldGVybWluZWQK
YmVmb3JlIGFsbCBkYXRhIGFyZSBpbi4KCiAgICBBIHN0YXRlbWVudCBBIGhh
cHBlbnMgYmVmb3JlIGEgc3RhdGVtZW50IEIgaWYgZWl0aGVyIG9mIHRoZQog
ICAgZm9sbG93aW5nIGFyZSB0cnVlOgoKICAgICAgICBTdGF0ZW1lbnQgQSBp
cyBvcmRlcmVkIGJlZm9yZSBzdGF0ZW1lbnQgQgoKICAgIG9yOgoKICAgICAg
ICBTdGF0ZW1lbnQgQSBpcyBpbnRlci1pbWFnZSBvcmRlcmVkIGJlZm9yZSBz
dGF0ZW1lbnQgQgoKQWxsIHZhcmlhYmxlcyBoYXZlIHRoZSBmb2xsb3dpbmcg
Y29uc3RyYWludHMgb24gdGhlIG9yZGVyIG9mIHRoZWlyCmRlZmluaXRpb25z
OgoKICAgIElmIHN0YXRlbWVudHMgQSBhbmQgQiBhcmUgYW55IGNvbnNpc3Rl
bnQgYXRvbWljIHN1YnJvdXRpbmVzIGV4Y2VwdAogICAgQVRPTUlDX1ZBTFVF
IGFuZCBYIGlzIHRoZSBBVE9NIGFyZ3VtZW50IHRvIGJvdGggQSBhbmQgQiwg
dGhlbiBhCiAgICBwcm9jZXNzb3Igc2hhbGwgZW5zdXJlIHRoYXQgZWl0aGVy
IHN0YXRlbWVudCBBIGRlZmluZXMgWCBiZWZvcmUKICAgIHN0YXRlbWVudCBC
IG9yIHN0YXRlbWVudCBCIGRlZmluZXMgWCBiZWZvcmUgc3RhdGVtZW50IEEK
ICAKICAgIElmIFggaXMgYSB2YXJpYWJsZSwgYW5kIGJvdGggc3RhdGVtZW50
cyBBIGFuZCBCIGRlZmluZSBYLCB0aGVuCiAgICBzdGF0ZW1lbnQgQSBkZWZp
bmVzIFggYmVmb3JlIHN0YXRlbWVudCBCIGRlZmluZXMgWCBpZiBhbnkgb2Yg
dGhlCiAgICBmb2xsb3dpbmcgYXJlIHRydWU6CgogICAgICAgIFN0YXRlbWVu
dCBBIGlzIG9yZGVyZWQgYmVmb3JlIHN0YXRlbWVudCBCCiAgCiAgICBvcjoK
CiAgICAgICAgU3RhdGVtZW50cyBCIGFuZCBDIGFyZSBhbnkgY29uc2lzdGVu
dCBhdG9taWMgc3Vicm91dGluZXMgZXhjZXB0CiAgICAgICAgQVRPTUlDX1ZB
TFVFLCBYIGlzIHRoZSBBVE9NIGFyZ3VtZW50IHRvIGJvdGggb2YgQSBhbmQg
QiwKICAgICAgICBzdGF0ZW1lbnQgQSBpcyBvcmRlcmVkIGJlZm9yZSBzdGF0
ZW1lbnQgQywgYW5kIHN0YXRlbWVudCBDCiAgICAgICAgaGFwcGVucyBiZWZv
cmUgc3RhdGVtZW50IEIKICAKICAgIG9yOgoKICAgICAgICBTdGF0ZW1lbnRz
IEEgYW5kIEIgYXJlIGFueSBjb25zaXN0ZW50IGF0b21pYyBzdWJyb3V0aW5l
cyBleGNlcHQKICAgICAgICBBVE9NSUNfVkFMVUUsIFggaXMgdGhlIEFUT00g
YXJndW1lbnQgdG8gYm90aCBBIGFuZCBCLCBhbmQKICAgICAgICBzdGF0ZW1l
bnQgQSBoYXBwZW5zIGJlZm9yZSBzdGF0ZW1lbnQgQgogIAogICAgb3I6Cgog
ICAgICAgIFN0YXRlbWVudCBBIGRlZmluZXMgWCBiZWZvcmUgYSBzdGF0ZW1l
bnQgQyB0aGF0IGRlZmluZXMgWCBiZWZvcmUKICAgICAgICBzdGF0ZW1lbnQg
QiBkZWZpbmVzIFguCgpJbiBwYXJ0aWN1bGFyLCB0aGlzIGRlZmluZXMgYSB0
b3RhbCBvcmRlciBvbiB0aGVpciBkZWZpbml0aW9ucywgcHJvdmlkZWQKdGhh
dCBhbGwgZGVmaW5pdGlvbnMgYXJlIGVpdGhlciBvcmRlcmVkIGJ5IHRoZSBz
aW5nbGUtaW1hZ2UgYW5kIHNlZ21lbnQKcnVsZXMgb3IgY3JlYXRlZCBieSB0
aGUgY29uc2lzdGVudCBhdG9taWMgc3Vicm91dGluZXMuICBOb3RlIHRoYXQK
ZGVmaW5pbmcgYW4gYXRvbWljIHZhcmlhYmxlIHVzaW5nIGEgY29uc2lzdGVu
dCBhdG9taWMgc3Vicm91dGluZSBlbnN1cmVzCnRoYXQgYWxsIHByZXZpb3Vz
IGRlZmluaXRpb25zIChieSB3aGF0ZXZlciBtZWFucykgaW4gdGhlIHNhbWUg
c2VnbWVudAphcmUgZmx1c2hlZC4gIEJleW9uZCB0aGF0LCBwcm9ncmFtbWVy
cyBhcmUgb24gdGhlaXIgb3duLgoKVGhlcmUgYXJlIGFsc28gc29tZSBjb25z
dHJhaW50cyB0aGF0IG5lZWQgc3BlY2lmeWluZyBvbiBwcm9jZXNzb3JzLCB0
bwpwcmV2ZW50IG92ZXItYWdncmVzc2l2ZSBvcHRpbWlzYXRpb24gY3JlYXRp
bmcgY2F1c2FsIGxvb3BzIGFuZCBvdGhlcgpzdWNoIGJpemFycmUgZWZmZWN0
cy4gIEFsbCBhcHBseSBvbmx5IHRvIHN0YW5kYXJkLWNvbmZvcm1pbmcgcHJv
Z3JhbXMuCgogICAgSWYgWCBpcyBhIHZhcmlhYmxlLCB0aGVuOgoKICAgIFsg
Q29XUiBdCgogICAgSWYgc3RhdGVtZW50IEEgZGVmaW5lcyBYIGJlZm9yZSBz
dGF0ZW1lbnQgQiBkZWZpbmVzIFgsIHN0YXRlbWVudCBDCiAgICByZWZlcmVu
Y2VzIHRoZSB2YWx1ZSBvZiBYLCBhbmQgc3RhdGVtZW50IEIgaGFwcGVucyBi
ZWZvcmUgc3RhdGVtZW50CiAgICBDLCB0aGVuIHN0YXRlbWVudCBDIHNoYWxs
IG5vdCB1c2UgdGhlIHZhbHVlIG9mIFggdGhhdCB3YXMgZGVmaW5lZCBieQog
ICAgc3RhdGVtZW50IEEKCiAgICBbIENvUlcgXQoKICAgIElmIHN0YXRlbWVu
dCBBIGRlZmluZXMgWCBiZWZvcmUgc3RhdGVtZW50IEIgZGVmaW5lcyBYLCBz
dGF0ZW1lbnQgQwogICAgcmVmZXJlbmNlcyB0aGUgdmFsdWUgb2YgWCwgYW5k
IHN0YXRlbWVudCBDIGhhcHBlbnMgYmVmb3JlIHN0YXRlbWVudAogICAgQSwg
dGhlbiBzdGF0ZW1lbnQgQyBzaGFsbCBub3QgdXNlIHRoZSB2YWx1ZSBvZiBY
IHRoYXQgd2FzIGRlZmluZWQgYnkKICAgIHN0YXRlbWVudCBCCgogICAgWyBD
b1JSIF0KCiAgICBJZiBzdGF0ZW1lbnQgQSBkZWZpbmVzIFggYmVmb3JlIHN0
YXRlbWVudCBCIGRlZmluZXMgWCwgc3RhdGVtZW50cyBDCiAgICBhbmQgRCBy
ZWZlcmVuY2UgdGhlIHZhbHVlIG9mIFgsIGFuZCBzdGF0ZW1lbnQgQyBoYXBw
ZW5zIGJlZm9yZQogICAgc3RhdGVtZW50IEQsIHRoZW4gZWl0aGVyIHN0YXRl
bWVudCBDIHNoYWxsIG5vdCB1c2UgdGhlIHZhbHVlIG9mIFgKICAgIHRoYXQg
d2FzIHNldCBieSBCIG9yIHN0YXRlbWVudCBEIHNoYWxsIG5vdCB1c2UgdGhl
IHZhbHVlIG9mIFggdGhhdAogICAgd2FzIHNldCBieSBBCgpUaGVzZSBtYXkg
c2VlbSBvYnZpb3VzIGJ1dCwgcmVncmV0dGFibHksIHRoZXkgbmVlZCBzcGVs
bGluZyBvdXQuCkNvUlcgaXMgdGhlIGFwcGFyZW50bHkgYml6YXJyZSBvbmUs
IGJ1dCBvbmUgbmVlZHMgdG8gdGhpbmsgaW4gdGVybXMgb2YKbm90IHJlb3Jk
ZXJpbmcgYXRvbWljIHJlYWRzIGluIGNhc2Ugb25lIG9mIHRoZW0gZGVmaW5l
cyBhIGhhcHBlbnMKYmVmb3JlIHNlcXVlbmNlLgo=
---1870869256-1804289383-1364731789=:32733--
