From f6e5759be574c2f9d2c2617ad0a5552ed58ec9d6 Mon Sep 17 00:00:00 2001 From: jaseg Date: Fri, 9 Apr 2021 19:02:15 +0200 Subject: Initialize paper tex --- paper/CC-by.eps | 2727 +++++++++++++++++++++++++ paper/CC-by.pdf | Bin 0 -> 4153 bytes paper/Makefile | 32 + paper/iacrdoc.pdf | Bin 0 -> 328793 bytes paper/iacrtrans-tches/iacrtrans/CC-by.eps | 2727 +++++++++++++++++++++++++ paper/iacrtrans-tches/iacrtrans/CC-by.pdf | Bin 0 -> 4153 bytes paper/iacrtrans-tches/iacrtrans/COPYING | 121 ++ paper/iacrtrans-tches/iacrtrans/iacrdoc.pdf | Bin 0 -> 328793 bytes paper/iacrtrans-tches/iacrtrans/iacrdoc.tex | 371 ++++ paper/iacrtrans-tches/iacrtrans/iacrtrans.cls | 448 ++++ paper/iacrtrans.cls | 448 ++++ paper/safety-reset-paper.tex | 140 ++ paper/safety-reset.bib | 1741 ++++++++++++++++ thesis/Makefile | 2 +- 14 files changed, 8756 insertions(+), 1 deletion(-) create mode 100644 paper/CC-by.eps create mode 100644 paper/CC-by.pdf create mode 100644 paper/Makefile create mode 100644 paper/iacrdoc.pdf create mode 100644 paper/iacrtrans-tches/iacrtrans/CC-by.eps create mode 100644 paper/iacrtrans-tches/iacrtrans/CC-by.pdf create mode 100644 paper/iacrtrans-tches/iacrtrans/COPYING create mode 100644 paper/iacrtrans-tches/iacrtrans/iacrdoc.pdf create mode 100644 paper/iacrtrans-tches/iacrtrans/iacrdoc.tex create mode 100644 paper/iacrtrans-tches/iacrtrans/iacrtrans.cls create mode 100644 paper/iacrtrans.cls create mode 100644 paper/safety-reset-paper.tex create mode 100644 paper/safety-reset.bib diff --git a/paper/CC-by.eps b/paper/CC-by.eps new file mode 100644 index 0000000..ae05c8b --- /dev/null +++ b/paper/CC-by.eps @@ -0,0 +1,2727 @@ +%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 8.0 %%AI8_CreatorVersion: 13.0.1 %%For: (Alex Roberts) () %%Title: (by.eps) %%CreationDate: 3/27/08 4:25 PM %%BoundingBox: 360 291 441 307 %%HiResBoundingBox: 360.4727 291.9463 440.5146 306.9878 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 4.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%CMYKProcessColor: 0.74902 0.678431 0.670588 0.901961 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 1 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 () %AI3_Cropmarks: 360.5 292 440.5 307 %AI3_TemplateBox: 400.5 299.5 400.5 299.5 %AI3_TileBox: 112 -56 688 678 %AI3_DocumentPreview: Macintosh_ColorPic %AI5_ArtSize: 800 600 %AI5_RulerUnits: 6 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI8_OpenToView: -381 756 1 1566 923 26 0 0 73 75 0 0 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 48 8 48 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %AI7_Thumbnail: 128 24 8 %%BeginData: 3634 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C4527FD80F82752522752525227FD07522752525227FD075227525252 %27FD5D52F8F8F852FD7CFF52F8F852FFFD087D52F8F8F852A8FD07FF5227 %F8F827FD077DFD58F827FF27F8F852FF7D7D7D83FD047DF8F8F8A8FD0AFF %A852F8F827A87D7D7D837D52FD57F827FF52F8F852FFFD077DF8F8F8A8FD %0DFF52F8F827A77D7D7D837DFD58F8FF52F8F852FF7D837D7D7DA827F8F8 %A8FD0FFF52F8F852A87D7D7DA852FD56F827FF52F8F852FFFD057D52F8F8 %52FD08FFA8FD07FFA8F8F827FD067DFD04F8277D527D525227F8277D5227 %F8F8F8525252FD41F8FF52F8F852FF7D837D837D52F827FD04FF7D52527D %FFFFFF7D27527DFFFFFF52F8F87D7D837DA77D27F8F8F852FD06FF7D27FF %FFA8F8F852FFFF7DFD40F827FF52F8F852FFFD057DF8F852FFFFFF27FD04 %F852A827FD04F827FFFFA8F8F852837D7D7DA82DF8F8F852FFFF52F87DFF %FFF852FFFF52F8A8FF7DFD42F8FF52F8F852FF7D7D7DA77DF8F87DFFFF52 %F8F8A8A827527DF827A8FF2752FFFFFF27F8527D837D7D7D58F8F8F852FF %FF27F87DFFFF27F8A8FFFFA8FFFF27FD41F827FF52F8F852FFFD057DF8F8 %7DFFFF27F87DFD04FF27F852FD07FFF8F82783FD047D52F8F8F827FD06FF %52F8F8F8FD04FF52FD43F8FF27F8F852FF7D837DA858F8F8A8FFFF27F852 %FD04FF52F87DFD07FF27F8527D837D837D7DF8F8F852FFFF7DA8A8FFA827 %F8F827FFFFA8FD43F827FF52F8F852FFFD057DF8F87DFFFF52F827A8FF27 %5252F8F8A8A82727FFFFFFF8F82783FD047D52F8F8F827FFFF27F827FFFF %7DF8F827A8FF52FD44F8FF52F8F852FF7D837D7D7D27F852FFFFA827FD04 %F827FF27FD04F827FFFFA8F8F8587D7D7D837D52F8F8F852FFFF522752FF %FF7DF8F827FFFF7DFD43F827FF52F8F852FFFD057D27F8F8FFFFFFA85227 %527DFFFFFF5227277DFFFFFF7DF8F852FD047D8327F8F8F852FD07FFF8F8 %F827FFFF52FD44F8FF52F8F852FF7D837D837D7DF8F852FD11FFF8F827A8 %7D837DA87D27F8F8F827FD067DFD05F87D7D52FD43F827FF52F8F852FFFD %067D27F8F87DFD0FFF27F8F858FD057D52FD57F8FF52F8F852FF7D7D7D83 %7D8358F8F827A8FD0DFF52F8F8527D7D7D837D7DFD57F827FF52F8F852FF %FD077D52F8F8F87DFD0AFFA827F8F827FD057D8327FD58F8FF27F8F852FF %7D837DA87D837DA85227F8F852A8FD07FF7DF8F8F8277DA87D837DA85827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827FF52 %F8F852FD0CFFA8FFA8FD07FFA8FFA8FD63FF52F8F827FD7C5227FD80F8F8 %%EndData %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 +%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) +%%Version: 1.2 0 +%%CreationDate: (04/10/93) () +%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) +userdict /Adobe_level2_AI5 26 dict dup begin + put + /packedarray where not + { + userdict begin + /packedarray + { + array astore readonly + } bind def + /setpacking /pop load def + /currentpacking false def + end + 0 + } if + pop + userdict /defaultpacking currentpacking put true setpacking + /initialize + { + Adobe_level2_AI5 begin + } bind def + /terminate + { + currentdict Adobe_level2_AI5 eq + { + end + } if + } bind def + mark + /setcustomcolor where not + { + /findcmykcustomcolor + { + (AI8_CMYK_CustomColor) + 6 packedarray + } bind def + /findrgbcustomcolor + { + (AI8_RGB_CustomColor) + 5 packedarray + } bind def + /setcustomcolor + { + exch + aload pop dup + (AI8_CMYK_CustomColor) eq + { + pop pop + 4 + { + 4 index mul + 4 1 roll + } repeat + 5 -1 roll pop + setcmykcolor + } + { + dup (AI8_RGB_CustomColor) eq + { + pop pop + 3 + { + 1 exch sub + 3 index mul + 1 exch sub + 3 1 roll + } repeat + 4 -1 roll pop + setrgbcolor + } + { + pop + 4 + { + 4 index mul 4 1 roll + } repeat + 5 -1 roll pop + setcmykcolor + } ifelse + } ifelse + } + def + } if + /setAIseparationgray + { + false setoverprint + 0 setgray + /setseparationgray where{ + pop setseparationgray + }{ + /setcolorspace where{ + pop + [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace + 1 exch sub setcolor + }{ + setgray + }ifelse + }ifelse + } def + + /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def + userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put + userdict /level2? + systemdict /languagelevel known dup + { + pop systemdict /languagelevel get 2 ge + } if + put +/level2ScreenFreq +{ + begin + 60 + HalftoneType 1 eq + { + pop Frequency + } if + HalftoneType 2 eq + { + pop GrayFrequency + } if + HalftoneType 5 eq + { + pop Default level2ScreenFreq + } if + end +} bind def +userdict /currentScreenFreq + level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put +level2? not + { + /setcmykcolor where not + { + /setcmykcolor + { + exch .11 mul add exch .59 mul add exch .3 mul add + 1 exch sub setgray + } def + } if + /currentcmykcolor where not + { + /currentcmykcolor + { + 0 0 0 1 currentgray sub + } def + } if + /setoverprint where not + { + /setoverprint /pop load def + } if + /selectfont where not + { + /selectfont + { + exch findfont exch + dup type /arraytype eq + { + makefont + } + { + scalefont + } ifelse + setfont + } bind def + } if + /cshow where not + { + /cshow + { + [ + 0 0 5 -1 roll aload pop + ] cvx bind forall + } bind def + } if + } if + cleartomark + /anyColor? + { + add add add 0 ne + } bind def + /testColor + { + gsave + setcmykcolor currentcmykcolor + grestore + } bind def + /testCMYKColorThrough + { + testColor anyColor? + } bind def + userdict /composite? + 1 0 0 0 testCMYKColorThrough + 0 1 0 0 testCMYKColorThrough + 0 0 1 0 testCMYKColorThrough + 0 0 0 1 testCMYKColorThrough + and and and + put + composite? not + { + userdict begin + gsave + /cyan? 1 0 0 0 testCMYKColorThrough def + /magenta? 0 1 0 0 testCMYKColorThrough def + /yellow? 0 0 1 0 testCMYKColorThrough def + /black? 0 0 0 1 testCMYKColorThrough def + grestore + /isCMYKSep? cyan? magenta? yellow? black? or or or def + /customColor? isCMYKSep? not def + end + } if + end defaultpacking setpacking +%%EndResource +%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0 +userdict /Adobe_ColorImage_AI6 known not +{ + userdict /Adobe_ColorImage_AI6 53 dict put +} if +userdict /Adobe_ColorImage_AI6 get begin +/initialize { + Adobe_ColorImage_AI6 begin + Adobe_ColorImage_AI6 { + dup type /arraytype eq { + dup xcheck { + bind + } if + } if + pop pop + } forall +} def +/terminate { end } def +currentdict /Adobe_ColorImage_AI6_Vars known not { + /Adobe_ColorImage_AI6_Vars 41 dict def +} if +Adobe_ColorImage_AI6_Vars begin + /plateindex -1 def + /_newproc null def + /_proc1 null def + /_proc2 null def + /sourcearray 4 array def + /_ptispace null def + /_ptiname null def + /_pti0 0 def + /_pti1 0 def + /_ptiproc null def + /_ptiscale 0 def + /_pticomps 0 def + /_ptibuf 0 string def + /_gtigray 0 def + /_cticmyk null def + /_rtirgb null def + /XIEnable true def + /XIType 0 def + /XIEncoding 0 def + /XICompression 0 def + /XIChannelCount 0 def + /XIBitsPerPixel 0 def + /XIImageHeight 0 def + /XIImageWidth 0 def + /XIImageMatrix null def + /XIRowBytes 0 def + /XIFile null def + /XIBuffer1 null def + /XIBuffer2 null def + /XIBuffer3 null def + /XIDataProc null def + /XIColorSpace /DeviceGray def + /XIColorValues 0 def + /XIPlateList false def +end +/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def +/ci6image systemdict /image get def +/ci6curtransfer systemdict /currenttransfer get def +/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def +/ci6foureq { + 4 index ne { + pop pop pop false + }{ + 4 index ne { + pop pop false + }{ + 4 index ne { + pop false + }{ + 4 index eq + } ifelse + } ifelse + } ifelse +} def +/ci6testplate { + Adobe_ColorImage_AI6_Vars begin + /plateindex -1 def + /setcmykcolor where { + pop + gsave + 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub + 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub + 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub + 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub + grestore + 1 0 0 0 ci6foureq { + /plateindex 0 def + }{ + 0 1 0 0 ci6foureq { + /plateindex 1 def + }{ + 0 0 1 0 ci6foureq { + /plateindex 2 def + }{ + 0 0 0 1 ci6foureq { + /plateindex 3 def + }{ + 0 0 0 0 ci6foureq { + /plateindex 5 def + } if + } ifelse + } ifelse + } ifelse + } ifelse + pop pop pop pop + } if + plateindex + end +} def +/ci6concatprocs { + /packedarray where { + pop dup type /packedarraytype eq 2 index type + /packedarraytype eq or + }{ + false + } ifelse + { + /_proc2 exch cvlit def + /_proc1 exch cvlit def + _proc1 aload pop + _proc2 aload pop + _proc1 length + _proc2 length add + packedarray cvx + }{ + /_proc2 exch cvlit def + /_proc1 exch cvlit def + /_newproc _proc1 length _proc2 length add array def + _newproc 0 _proc1 putinterval + _newproc _proc1 length _proc2 putinterval + _newproc cvx + } ifelse +} def +/ci6istint { + type /arraytype eq +} def +/ci6isspot { + dup type /arraytype eq { + dup length 1 sub get /Separation eq + }{ + pop false + } ifelse +} def +/ci6spotname { + dup ci6isspot {dup length 2 sub get}{pop ()} ifelse +} def +/ci6altspace { + aload pop pop pop ci6colormake +} def +/ci6numcomps { + dup /DeviceGray eq { + pop 1 + }{ + dup /DeviceRGB eq { + pop 3 + }{ + /DeviceCMYK eq { + 4 + }{ + 1 + } ifelse + } ifelse + } ifelse +} def +/ci6marksplate { + dup /DeviceGray eq { + pop plateindex 3 eq + }{ + dup /DeviceRGB eq { + pop plateindex 5 ne + }{ + dup /DeviceCMYK eq { + pop plateindex 5 ne + }{ + dup ci6isspot { + /findcmykcustomcolor where { + pop + dup length 2 sub get + 0.1 0.1 0.1 0.1 5 -1 roll + findcmykcustomcolor 1 setcustomcolor + systemdict /currentgray get exec + 1 ne + }{ + pop plateindex 5 ne + } ifelse + }{ + pop plateindex 5 ne + } ifelse + } ifelse + } ifelse + } ifelse +} def +/ci6colormake { + dup ci6numcomps + exch 1 index 2 add 1 roll + dup 1 eq {pop}{array astore} ifelse + exch +} def +/ci6colorexpand { + dup ci6spotname exch + dup ci6istint { + ci6altspace + exch 4 1 roll + }{ + 1 3 1 roll + } ifelse +} def +/ci6colortint { + dup /DeviceGray eq { + 3 1 roll 1 exch sub mul 1 exch sub exch + }{ + dup /DeviceRGB eq { + 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch + }{ + dup /DeviceCMYK eq { + 3 1 roll {1 index mul exch} forall pop 4 array astore exch + }{ + 3 1 roll mul exch + } ifelse + } ifelse + } ifelse +} def +/ci6colortocmyk { + dup /DeviceGray eq { + pop 1 exch sub 0 0 0 4 -1 roll 4 array astore + }{ + dup /DeviceRGB eq { + pop aload pop _rgbtocmyk 4 array astore + }{ + dup /DeviceCMYK eq { + pop + }{ + ci6altspace ci6colortint ci6colortocmyk + } ifelse + } ifelse + } ifelse +} def +/ci6makeimagedict { + 7 dict begin + /ImageType 1 def + /Decode exch def + /DataSource exch def + /ImageMatrix exch def + /BitsPerComponent exch def + /Height exch def + /Width exch def + currentdict end +} def +/ci6stringinvert { + 0 1 2 index length 1 sub { + dup 2 index exch get 255 exch sub 2 index 3 1 roll put + } for +} def +/ci6stringknockout { + 0 1 2 index length 1 sub { + 255 2 index 3 1 roll put + } for +} def +/ci6stringapply { + 0 1 4 index length 1 sub { + dup + 4 index exch get + 3 index 3 1 roll + 3 index exec + } for + pop exch pop +} def +/ci6walkrgbstring { + 0 3 index + dup length 1 sub 0 3 3 -1 roll { + 3 getinterval {} forall + 5 index exec + 3 index + } for + + 5 {pop} repeat +} def +/ci6walkcmykstring +{ + 0 3 index + dup length 1 sub 0 4 3 -1 roll { + 4 getinterval {} forall + + 6 index exec + + 3 index + + } for + + 5 { pop } repeat + +} def +/ci6putrgbtograystr +{ + .11 mul exch + + .59 mul add exch + + .3 mul add + + cvi 3 copy put + + pop 1 add +} def +/ci6putcmyktograystr +{ + exch .11 mul add + + exch .59 mul add + + exch .3 mul add + + dup 255 gt { pop 255 } if + + 255 exch sub cvi 3 copy put + + pop 1 add +} def +/ci6rgbtograyproc { + Adobe_ColorImage_AI6_Vars begin + sourcearray 0 get exec + XIBuffer3 + dup 3 1 roll + + /ci6putrgbtograystr load exch + ci6walkrgbstring + end +} def +/ci6cmyktograyproc { + Adobe_ColorImage_AI6_Vars begin + sourcearray 0 get exec + XIBuffer3 + dup 3 1 roll + + /ci6putcmyktograystr load exch + ci6walkcmykstring + end +} def +/ci6separatecmykproc { + Adobe_ColorImage_AI6_Vars begin + sourcearray 0 get exec + + XIBuffer3 + + 0 2 index + + plateindex 4 2 index length 1 sub { + get 255 exch sub + + 3 copy put pop 1 add + + 2 index + } for + pop pop exch pop + end +} def + +/ci6compositeimage { + dup 1 eq { + pop pop image + }{ + /ci6colorimage load null ne { + ci6colorimage + }{ + 3 1 roll pop + sourcearray 0 3 -1 roll put + 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load + image + } ifelse + } ifelse +} def +/ci6knockoutimage { + gsave + 0 ci6curtransfer exec 1 ci6curtransfer exec + eq { + 0 ci6curtransfer exec 0.5 lt + }{ + 0 ci6curtransfer exec 1 ci6curtransfer exec gt + } ifelse + {{pop 0}}{{pop 1}} ifelse + systemdict /settransfer get exec + ci6compositeimage + grestore +} def +/ci6drawimage { + ci6testplate -1 eq { + pop ci6compositeimage + }{ + dup type /arraytype eq { + dup length plateindex gt {plateindex get}{pop false} ifelse + }{ + { + true + }{ + dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse + } ifelse + } ifelse + { + dup 1 eq { + pop pop ci6image + }{ + dup 3 eq { + ci6compositeimage + }{ + pop pop + sourcearray 0 3 -1 roll put + /ci6separatecmykproc load + ci6image + } ifelse + } ifelse + }{ + ci6curoverprint { + 7 {pop} repeat + }{ + ci6knockoutimage + } ifelse + } ifelse + } ifelse +} def +/ci6proctintimage { + /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store + /_pticomps _ptispace ci6numcomps store + /_ptiscale _pti1 _pti0 sub store + level2? { + _ptiname length 0 gt version cvr 2012 ge and { + [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace + [_pti0 _pti1] ci6makeimagedict ci6image + }{ + [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace + [0 255] ci6makeimagedict ci6image + } ifelse + }{ + _pticomps 1 eq { + { + dup + { + 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put + } ci6stringapply + } ci6concatprocs ci6image + }{ + { + dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse + _ptibuf { + exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc + _pticomps 2 add -2 roll + _pticomps 1 sub -1 0 { + 1 index add 2 index exch + 5 -1 roll + 255 mul cvi put + } for + pop pop + } ci6stringapply + } ci6concatprocs false _pticomps + /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse + } ifelse + } ifelse +} def +/ci6graytintimage { + /_gtigray 5 -1 roll store + {1 _gtigray sub mul 1 exch sub} 4 1 roll + /DeviceGray ci6proctintimage +} def +/ci6cmyktintimage { + /_cticmyk 5 -1 roll store + {_cticmyk {1 index mul exch} forall pop} 4 1 roll + /DeviceCMYK ci6proctintimage +} def +/ci6rgbtintimage { + /_rtirgb 5 -1 roll store + {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll + /DeviceRGB ci6proctintimage +} def +/ci6tintimage { + ci6testplate -1 eq { + ci6colorexpand + 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll + dup /DeviceGray eq { + pop ci6graytintimage + }{ + dup /DeviceRGB eq { + pop ci6rgbtintimage + }{ + pop ci6cmyktintimage + } ifelse + } ifelse + }{ + dup ci6marksplate { + plateindex 5 lt { + ci6colortocmyk plateindex get + dup 0 eq ci6curoverprint and { + 7 {pop} repeat + }{ + 1 exch sub + exch {1 0}{0 1} ifelse () ci6graytintimage + } ifelse + }{ + pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage + } ifelse + }{ + ci6curoverprint { + 8 {pop} repeat + }{ + pop pop pop + {pop 1} 0 1 () /DeviceGray ci6proctintimage + } ifelse + } ifelse + } ifelse +} def +/XINullImage { +} def +/XIImageMask { + XIImageWidth XIImageHeight false + [XIImageWidth 0 0 XIImageHeight neg 0 0] + /XIDataProc load + imagemask +} def +/XIImageTint { + XIImageWidth XIImageHeight XIBitsPerPixel + [XIImageWidth 0 0 XIImageHeight neg 0 0] + /XIDataProc load + XIType 3 eq XIColorValues XIColorSpace ci6tintimage +} def +/XIImage { + XIImageWidth XIImageHeight XIBitsPerPixel + [XIImageWidth 0 0 XIImageHeight neg 0 0] + /XIDataProc load + false XIChannelCount XIPlateList ci6drawimage +} def +/XG { + pop pop +} def +/XF { + 13 {pop} repeat +} def +/Xh { + Adobe_ColorImage_AI6_Vars begin + gsave + /XIType exch def + /XIImageHeight exch def + /XIImageWidth exch def + /XIImageMatrix exch def + 0 0 moveto + XIImageMatrix concat + XIImageWidth XIImageHeight scale + + /_lp /null ddef + _fc + /_lp /imagemask ddef + end +} def +/XH { + Adobe_ColorImage_AI6_Vars begin + grestore + end +} def +/XIEnable { + Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put +} def +/XC { + Adobe_ColorImage_AI6_Vars begin + ci6colormake + /XIColorSpace exch def + /XIColorValues exch def + end +} def +/XIPlates { + Adobe_ColorImage_AI6_Vars begin + /XIPlateList exch def + end +} def +/XI +{ + Adobe_ColorImage_AI6_Vars begin + gsave + /XIType exch def + cvi dup + 256 idiv /XICompression exch store + 256 mod /XIEncoding exch store + pop pop + /XIChannelCount exch def + /XIBitsPerPixel exch def + /XIImageHeight exch def + /XIImageWidth exch def + pop pop pop pop + /XIImageMatrix exch def + XIBitsPerPixel 1 eq { + XIImageWidth 8 div ceiling cvi + }{ + XIImageWidth XIChannelCount mul + } ifelse + /XIRowBytes exch def + XIEnable { + /XIBuffer3 XIImageWidth string def + XICompression 0 eq { + /XIBuffer1 XIRowBytes string def + XIEncoding 0 eq { + {currentfile XIBuffer1 readhexstring pop} + }{ + {currentfile XIBuffer1 readstring pop} + } ifelse + }{ + /XIBuffer1 256 string def + /XIBuffer2 XIRowBytes string def + {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} + /ASCII85Decode filter /DCTDecode filter + /XIFile exch def + {XIFile XIBuffer2 readstring pop} + } ifelse + /XIDataProc exch def + + XIType 1 ne { + 0 setgray + } if + XIType 1 eq { + XIImageMask + }{ + XIType 2 eq XIType 3 eq or { + XIImageTint + }{ + XIImage + } ifelse + } ifelse + }{ + XINullImage + } ifelse + /XIPlateList false def + grestore + end +} def +end +%%EndProcSet +%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0 +%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog) +%%Version: 1.3 0 +%%CreationDate: (3/7/1994) () +%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin +put +/_?cmyk false def +/_eo false def +/_lp /none def +/_pf +{ +} def +/_ps +{ +} def +/_psf +{ +} def +/_pss +{ +} def +/_pjsf +{ +} def +/_pjss +{ +} def +/_pola 0 def +/_doClip 0 def +/cf currentflat def +/_lineorientation 0 def +/_charorientation 0 def +/_yokoorientation 0 def +/_tm matrix def +/_renderStart +[ +/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 +] def +/_renderEnd +[ +null null null null /i1 /i1 /i1 /i1 +] def +/_render -1 def +/_shift [0 0] def +/_ax 0 def +/_ay 0 def +/_cx 0 def +/_cy 0 def +/_leading +[ +0 0 +] def +/_ctm matrix def +/_mtx matrix def +/_sp 16#020 def +/_hyphen (-) def +/_fontSize 0 def +/_fontAscent 0 def +/_fontDescent 0 def +/_fontHeight 0 def +/_fontRotateAdjust 0 def +/Ss 256 string def +Ss 0 (fonts/) putinterval +/_cnt 0 def +/_scale [1 1] def +/_nativeEncoding 0 def +/_useNativeEncoding 0 def +/_tempEncode 0 def +/_pntr 0 def +/_tDict 2 dict def +/_hfname 100 string def +/_hffound false def +/Tx +{ +} def +/Tj +{ +} def +/CRender +{ +} def +/_AI3_savepage +{ +} def +/_gf null def +/_cf 4 array def +/_rgbf 3 array def +/_if null def +/_of false def +/_fc +{ +} def +/_gs null def +/_cs 4 array def +/_rgbs 3 array def +/_is null def +/_os false def +/_sc +{ +} def +/_pd 1 dict def +/_ed 15 dict def +/_pm matrix def +/_fm null def +/_fd null def +/_fdd null def +/_sm null def +/_sd null def +/_sdd null def +/_i null def +/_lobyte 0 def +/_hibyte 0 def +/_cproc null def +/_cscript 0 def +/_hvax 0 def +/_hvay 0 def +/_hvwb 0 def +/_hvcx 0 def +/_hvcy 0 def +/_bitfont null def +/_bitlobyte 0 def +/_bithibyte 0 def +/_bitkey null def +/_bitdata null def +/_bitindex 0 def +/discardSave null def +/buffer 256 string def +/beginString null def +/endString null def +/endStringLength null def +/layerCnt 1 def +/layerCount 1 def +/perCent (%) 0 get def +/perCentSeen? false def +/newBuff null def +/newBuffButFirst null def +/newBuffLast null def +/clipForward? false def +end +userdict /Adobe_Illustrator_AI5 known not { + userdict /Adobe_Illustrator_AI5 100 dict put +} if +userdict /Adobe_Illustrator_AI5 get begin +/initialize +{ + Adobe_Illustrator_AI5 dup begin + Adobe_Illustrator_AI5_vars begin + /_aicmykps where {pop /_?cmyk _aicmykps def}if + discardDict + { + bind pop pop + } forall + dup /nc get begin + { + dup xcheck 1 index type /operatortype ne and + { + bind + } if + pop pop + } forall + end + newpath +} def +/terminate +{ + end + end +} def +/_ +null def +/ddef +{ + Adobe_Illustrator_AI5_vars 3 1 roll put +} def +/xput +{ + dup load dup length exch maxlength eq + { + dup dup load dup + length 2 mul dict copy def + } if + load begin + def + end +} def +/npop +{ + { + pop + } repeat +} def +/hswj +{ + dup stringwidth 3 2 roll + { + _hvwb eq { exch _hvcx add exch _hvcy add } if + exch _hvax add exch _hvay add + } cforall +} def +/vswj +{ + 0 0 3 -1 roll + { + dup 255 le + _charorientation 1 eq + and + { + dup cstring stringwidth 5 2 roll + _hvwb eq { exch _hvcy sub exch _hvcx sub } if + exch _hvay sub exch _hvax sub + 4 -1 roll sub exch + 3 -1 roll sub exch + } + { + _hvwb eq { exch _hvcy sub exch _hvcx sub } if + exch _hvay sub exch _hvax sub + _fontHeight sub + } ifelse + } cforall +} def +/swj +{ + 6 1 roll + /_hvay exch ddef + /_hvax exch ddef + /_hvwb exch ddef + /_hvcy exch ddef + /_hvcx exch ddef + _lineorientation 0 eq { hswj } { vswj } ifelse +} def +/sw +{ + 0 0 0 6 3 roll swj +} def +/vjss +{ + 4 1 roll + { + dup cstring + dup length 1 eq + _charorientation 1 eq + and + { + -90 rotate + currentpoint + _fontRotateAdjust add + moveto + gsave + false charpath currentpoint + 5 index setmatrix stroke + grestore + _fontRotateAdjust sub + moveto + _sp eq + { + 5 index 5 index rmoveto + } if + 2 copy rmoveto + 90 rotate + } + { + currentpoint + _fontHeight sub + 5 index sub + 3 index _sp eq + { + 9 index sub + } if + + currentpoint + exch 4 index stringwidth pop 2 div sub + exch _fontAscent sub + moveto + + gsave + 2 index false charpath + 6 index setmatrix stroke + grestore + + moveto pop pop + } ifelse + } cforall + 6 npop +} def +/hjss +{ + 4 1 roll + { + dup cstring + gsave + false charpath currentpoint + 5 index setmatrix stroke + grestore + moveto + _sp eq + { + 5 index 5 index rmoveto + } if + 2 copy rmoveto + } cforall + 6 npop +} def +/jss +{ + _lineorientation 0 eq { hjss } { vjss } ifelse +} def +/ss +{ + 0 0 0 7 3 roll jss +} def +/vjsp +{ + 4 1 roll + { + dup cstring + dup length 1 eq + _charorientation 1 eq + and + { + -90 rotate + currentpoint + _fontRotateAdjust add + moveto + false charpath + currentpoint + _fontRotateAdjust sub + moveto + _sp eq + { + 5 index 5 index rmoveto + } if + 2 copy rmoveto + 90 rotate + } + { + currentpoint + _fontHeight sub + 5 index sub + 3 index _sp eq + { + 9 index sub + } if + + currentpoint + exch 4 index stringwidth pop 2 div sub + exch _fontAscent sub + moveto + + 2 index false charpath + + moveto pop pop + } ifelse + } cforall + 6 npop +} def +/hjsp +{ + 4 1 roll + { + dup cstring + false charpath + _sp eq + { + 5 index 5 index rmoveto + } if + 2 copy rmoveto + } cforall + 6 npop +} def +/jsp +{ + matrix currentmatrix + _lineorientation 0 eq {hjsp} {vjsp} ifelse +} def +/sp +{ + matrix currentmatrix + 0 0 0 7 3 roll + _lineorientation 0 eq {hjsp} {vjsp} ifelse +} def +/pl +{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform +} def +/setstrokeadjust where +{ + pop true setstrokeadjust + /c + { + curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll curveto + } def + /V + /v load def + /y + { + 2 copy curveto + } def + /Y + /y load def + /l + { + lineto + } def + /L + /l load def + /m + { + moveto + } def +} +{ + /c + { + pl curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll pl curveto + } def + /V + /v load def + /y + { + pl 2 copy curveto + } def + /Y + /y load def + /l + { + pl lineto + } def + /L + /l load def + /m + { + pl moveto + } def +} ifelse +/d +{ + setdash +} def +/cf +{ +} def +/i +{ + dup 0 eq + { + pop cf + } if + setflat +} def +/j +{ + setlinejoin +} def +/J +{ + setlinecap +} def +/M +{ + setmiterlimit +} def +/w +{ + setlinewidth +} def +/XR +{ + 0 ne + /_eo exch ddef +} def +/H +{ +} def +/h +{ + closepath +} def +/N +{ + _pola 0 eq + { + _doClip 1 eq + { + _eo {eoclip} {clip} ifelse /_doClip 0 ddef + } if + newpath + } + { + /CRender + { + N + } ddef + } ifelse +} def +/n +{ + N +} def +/F +{ + _pola 0 eq + { + _doClip 1 eq + { + gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc + /_doClip 0 ddef + } + { + _pf + } ifelse + } + { + /CRender + { + F + } ddef + } ifelse +} def +/f +{ + closepath + F +} def +/S +{ + _pola 0 eq + { + _doClip 1 eq + { + gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + _ps + } ifelse + } + { + /CRender + { + S + } ddef + } ifelse +} def +/s +{ + closepath + S +} def +/B +{ + _pola 0 eq + { + _doClip 1 eq + gsave F grestore + { + gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + S + } ifelse + } + { + /CRender + { + B + } ddef + } ifelse +} def +/b +{ + closepath + B +} def +/W +{ + /_doClip 1 ddef +} def +/* +{ + count 0 ne + { + dup type /stringtype eq + { + pop + } if + } if + newpath +} def +/u +{ +} def +/U +{ +} def +/q +{ + _pola 0 eq + { + gsave + } if +} def +/Q +{ + _pola 0 eq + { + grestore + } if +} def +/*u +{ + _pola 1 add /_pola exch ddef +} def +/*U +{ + _pola 1 sub /_pola exch ddef + _pola 0 eq + { + CRender + } if +} def +/D +{ + pop +} def +/*w +{ +} def +/*W +{ +} def +/` +{ + /_i save ddef + clipForward? + { + nulldevice + } if + 6 1 roll 4 npop + concat pop + userdict begin + /showpage + { + } def + 0 setgray + 0 setlinecap + 1 setlinewidth + 0 setlinejoin + 10 setmiterlimit + [] 0 setdash + /setstrokeadjust where {pop false setstrokeadjust} if + newpath + 0 setgray + false setoverprint +} def +/~ +{ + end + _i restore +} def +/_rgbtocmyk +{ + 3 + { + 1 exch sub 3 1 roll + } repeat + 3 copy 1 4 1 roll + 3 + { + 3 index 2 copy gt + { + exch + } if + pop 4 1 roll + } repeat + pop pop pop + 4 1 roll + 3 + { + 3 index sub + 3 1 roll + } repeat + 4 -1 roll +} def +/setrgbfill +{ + _rgbf astore pop + /_fc + { + _lp /fill ne + { + _of setoverprint + _rgbf aload pop setrgbcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/setrgbstroke +{ + _rgbs astore pop + /_sc + { + _lp /stroke ne + { + _os setoverprint + _rgbs aload pop setrgbcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/O +{ + 0 ne + /_of exch ddef + /_lp /none ddef +} def +/R +{ + 0 ne + /_os exch ddef + /_lp /none ddef +} def +/g +{ + /_gf exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _gf setgray + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/G +{ + /_gs exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _gs setgray + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/k +{ + _cf astore pop + /_fc + { + _lp /fill ne + { + _of setoverprint + _cf aload pop setcmykcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/K +{ + _cs astore pop + /_sc + { + _lp /stroke ne + { + _os setoverprint + _cs aload pop setcmykcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/Xa +{ + _?cmyk { + 3 npop k + }{ + setrgbfill 4 npop + } ifelse +} def +/XA +{ + _?cmyk { + 3 npop K + }{ + setrgbstroke 4 npop + } ifelse +} def +/Xs +{ + /_gf exch ddef + 5 npop + /_fc + { + _lp /fill ne + { + _of setoverprint + _gf setAIseparationgray + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/XS +{ + /_gs exch ddef + 5 npop + /_sc + { + _lp /stroke ne + { + _os setoverprint + _gs setAIseparationgray + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/Xx +{ + exch + /_gf exch ddef + 0 eq { + findcmykcustomcolor + }{ + _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse + { + 4 1 roll 3 npop + findcmykcustomcolor + }{ + 8 -4 roll 4 npop + findrgbcustomcolor + } ifelse + } ifelse + /_if exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _if _gf 1 exch sub setcustomcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/XX +{ + exch + /_gs exch ddef + 0 eq { + findcmykcustomcolor + }{ + _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse + { + 4 1 roll 3 npop + findcmykcustomcolor + }{ + 8 -4 roll 4 npop + findrgbcustomcolor + } ifelse + } ifelse + /_is exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _is _gs 1 exch sub setcustomcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/x +{ + /_gf exch ddef + findcmykcustomcolor + /_if exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _if _gf 1 exch sub setcustomcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/X +{ + /_gs exch ddef + findcmykcustomcolor + /_is exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _is _gs 1 exch sub setcustomcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/XK +{ + 3 -1 roll pop + 0 eq + { + 1 exch sub + 3 {dup 3 1 roll mul 5 1 roll} repeat + mul 4 1 roll + K + } + { + 1 exch sub 4 1 roll + 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat + 4 -1 roll pop + XA + } ifelse +} def +/Xk +{ + 3 -1 roll pop + 0 eq + { + 1 exch sub + 3 {dup 3 1 roll mul 5 1 roll} repeat + mul 4 1 roll + k + } + { + 1 exch sub 4 1 roll + 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat + 4 -1 roll pop + Xa + } ifelse +} def +/A +{ + pop +} def +/annotatepage +{ +userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse +} def +/XT { + pop pop +} def +/Xt { + pop +} def +/discard +{ + save /discardSave exch store + discardDict begin + /endString exch store + gt38? + { + 2 add + } if + load + stopped + pop + end + discardSave restore +} bind def +userdict /discardDict 7 dict dup begin +put +/pre38Initialize +{ + /endStringLength endString length store + /newBuff buffer 0 endStringLength getinterval store + /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store + /newBuffLast newBuff endStringLength 1 sub 1 getinterval store +} def +/shiftBuffer +{ + newBuff 0 newBuffButFirst putinterval + newBuffLast 0 + currentfile read not + { + stop + } if + put +} def +0 +{ + pre38Initialize + mark + currentfile newBuff readstring exch pop + { + { + newBuff endString eq + { + cleartomark stop + } if + shiftBuffer + } loop + } + { + stop + } ifelse +} def +1 +{ + pre38Initialize + /beginString exch store + mark + currentfile newBuff readstring exch pop + { + { + newBuff beginString eq + { + /layerCount dup load 1 add store + } + { + newBuff endString eq + { + /layerCount dup load 1 sub store + layerCount 0 eq + { + cleartomark stop + } if + } if + } ifelse + shiftBuffer + } loop + } if +} def +2 +{ + mark + { + currentfile buffer {readline} stopped { + % assume error was due to overfilling the buffer + }{ + not + { + stop + } if + endString eq { + cleartomark stop + } if + }ifelse + } loop +} def +3 +{ + /beginString exch store + /layerCnt 1 store + mark + { + currentfile buffer {readline} stopped { + % assume error was due to overfilling the buffer + }{ + not + { + stop + } if + dup beginString eq + { + pop /layerCnt dup load 1 add store + } + { + endString eq + { + layerCnt 1 eq + { + cleartomark stop + } + { + /layerCnt dup load 1 sub store + } ifelse + } if + } ifelse + }ifelse + } loop +} def +end +userdict /clipRenderOff 15 dict dup begin +put +{ + /n /N /s /S /f /F /b /B +} +{ + { + _doClip 1 eq + { + /_doClip 0 ddef _eo {eoclip} {clip} ifelse + } if + newpath + } def +} forall +/Tr /pop load def +/Bb {} def +/BB /pop load def +/Bg {12 npop} def +/Bm {6 npop} def +/Bc /Bm load def +/Bh {4 npop} def +end +/Lb +{ + 6 npop + 7 2 roll + 5 npop + 0 eq + { + 0 eq + { + (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard + } + { + + /clipForward? true def + + /Tx /pop load def + /Tj /pop load def + + currentdict end clipRenderOff begin begin + } ifelse + } + { + 0 eq + { + save /discardSave exch store + } if + } ifelse +} bind def +/LB +{ + discardSave dup null ne + { + restore + } + { + pop + clipForward? + { + currentdict + end + end + begin + + /clipForward? false ddef + } if + } ifelse +} bind def +/Pb +{ + pop pop + 0 (%AI5_EndPalette) discard +} bind def +/Np +{ + 0 (%AI5_End_NonPrinting--) discard +} bind def +/Ln /pop load def +/Ap +/pop load def +/Ar +{ + 72 exch div + 0 dtransform dup mul exch dup mul add sqrt + dup 1 lt + { + pop 1 + } if + setflat +} def +/Mb +{ + q +} def +/Md +{ +} def +/MB +{ + Q +} def +/nc 4 dict def +nc begin +/setgray +{ + pop +} bind def +/setcmykcolor +{ + 4 npop +} bind def +/setrgbcolor +{ + 3 npop +} bind def +/setcustomcolor +{ + 2 npop +} bind def +currentdict readonly pop +end +/XP +{ + 4 npop +} bind def +/XD +{ + pop +} bind def +end +setpacking +%%EndResource +%%BeginResource: procset Adobe_cshow 2.0 8 +%%Title: (Writing System Operators) +%%Version: 2.0 8 +%%CreationDate: (1/23/89) () +%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_cshow 14 dict dup begin put +/initialize +{ + Adobe_cshow begin + Adobe_cshow + { + dup xcheck + { + bind + } if + pop pop + } forall + end + Adobe_cshow begin +} def +/terminate +{ +currentdict Adobe_cshow eq + { + end + } if +} def +/cforall +{ + /_lobyte 0 ddef + /_hibyte 0 ddef + /_cproc exch ddef + /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef + { + /_lobyte exch ddef + _hibyte 0 eq + _cscript 1 eq + _lobyte 129 ge _lobyte 159 le and + _lobyte 224 ge _lobyte 252 le and or and + _cscript 2 eq + _lobyte 161 ge _lobyte 254 le and and + _cscript 3 eq + _lobyte 161 ge _lobyte 254 le and and + _cscript 25 eq + _lobyte 161 ge _lobyte 254 le and and + _cscript -1 eq + or or or or and + { + /_hibyte _lobyte ddef + } + { + _hibyte 256 mul _lobyte add + _cproc + /_hibyte 0 ddef + } ifelse + } forall +} def +/cstring +{ + dup 256 lt + { + (s) dup 0 4 3 roll put + } + { + dup 256 idiv exch 256 mod + (hl) dup dup 0 6 5 roll put 1 4 3 roll put + } ifelse +} def +/clength +{ + 0 exch + { 256 lt { 1 } { 2 } ifelse add } cforall +} def +/hawidthshow +{ + { + dup cstring + show + _hvax _hvay rmoveto + _hvwb eq { _hvcx _hvcy rmoveto } if + } cforall +} def +/vawidthshow +{ + { + dup 255 le + _charorientation 1 eq + and + { + -90 rotate + 0 _fontRotateAdjust rmoveto + cstring + _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow + 0 _fontRotateAdjust neg rmoveto + 90 rotate + } + { + currentpoint + _fontHeight sub + exch _hvay sub exch _hvax sub + 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if + 3 2 roll + cstring + dup stringwidth pop 2 div neg _fontAscent neg rmoveto + show + moveto + } ifelse + } cforall +} def +/hvawidthshow +{ + 6 1 roll + /_hvay exch ddef + /_hvax exch ddef + /_hvwb exch ddef + /_hvcy exch ddef + /_hvcx exch ddef + _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse +} def +/hvwidthshow +{ + 0 0 3 -1 roll hvawidthshow +} def +/hvashow +{ + 0 0 0 6 -3 roll hvawidthshow +} def +/hvshow +{ + 0 0 0 0 0 6 -1 roll hvawidthshow +} def +currentdict readonly pop end +setpacking +%%EndResource +%%BeginResource: procset Adobe_shading_AI8 1.0 0 +%%Title: (Adobe Illustrator 8 Shading Procset) +%%Version: 1.0 0 +%%CreationDate: (12/17/97) () +%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved) +userdict /defaultpacking currentpacking put true setpacking +userdict /Adobe_shading_AI8 10 dict dup begin put +/initialize { + Adobe_shading_AI8 begin + Adobe_shading_AI8 bdprocs + Mesh /initialize get exec +} def +/terminate { + currentdict Adobe_shading_AI8 eq { + end + } if +} def +/bdprocs { + { + dup xcheck 1 index type /arraytype eq and { + bind + } if + pop pop + } forall +} def +/X! {pop} def +/X# {pop pop} def +/Mesh 40 dict def +Mesh begin +/initialize { + Mesh bdprocs + Mesh begin + /emulate? /AI8MeshEmulation where { + pop AI8MeshEmulation + }{ + systemdict /shfill known not + } ifelse def + end +} def +/bd { + shadingdict begin +} def +/paint { + emulate? { + end + }{ + /_lp /none ddef _fc /_lp /none ddef + + /AIColorSpace AIColorSpace tocolorspace store + /ColorSpace AIColorSpace topsspace store + + version_ge_3010.106 not systemdict /setsmoothness known and { + 0.0001 setsmoothness + } if + + composite? { + /DataSource getdatasrc def + Matrix concat + currentdict end + shfill + }{ + AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and { + end + }{ + /ColorSpace /DeviceGray store + /Decode [0 1 0 1 0 1] store + /DataSource getplatesrc def + Matrix concat + currentdict end + shfill + } ifelse + } ifelse + } ifelse +} def +/shadingdict 12 dict def +shadingdict begin + /ShadingType 6 def + /BitsPerCoordinate 16 def + /BitsPerComponent 8 def + /BitsPerFlag 8 def +end +/datafile null def +/databuf 256 string def +/dataptr 0 def +/srcspace null def +/srcchannels 0 def +/dstchannels 0 def +/dstplate 0 def +/srctodstcolor null def +/getplatesrc { + /srcspace AIColorSpace store + /srcchannels AIColorSpace getnchannels store + /dstchannels 1 store + /dstplate getplateindex store + /srctodstcolor srcspace makesmarks { + dstplate 4 eq { + {1 exch sub} + }{ + {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat} + } ifelse + }{ + {srcchannels {pop} repeat 1} + } ifelse store + /datafile getdatasrc store + /rdpatch168 load DataLength () /SubFileDecode filter +} def +/getdatasrc { + /rdcmntline load /ASCII85Decode filter +} def +/rdpatch168 { + /dataptr 0 store + 49 rdcount + 4 { + dup {pop srcchannels getint8} if + dup {pop srctodstcolor dstchannels putint8 true} if + } repeat + {databuf 0 dataptr getinterval}{()} ifelse +} def +/rdpatch3216 { + /dataptr 0 store + 97 rdcount + 4 { + dup {pop srcchannels getint16} if + dup {pop srctodstcolor dstchannels putint16 true} if + } repeat + {databuf 0 dataptr getinterval}{()} ifelse +} def +/rdcount { + dup 0 gt { + datafile databuf dataptr 4 -1 roll getinterval readstring + exch length dataptr add /dataptr exch store + }{ + true + } ifelse +} def +/getint8 { + mark true 3 -1 roll + { + dup {pop datafile read} if + dup {pop 255 div true} if + } repeat + { + counttomark 1 add -1 roll pop true + }{ + cleartomark false + } ifelse +} def +/putint8 { + dup dataptr add /dataptr exch store + dataptr exch + { + 1 sub exch + 255 mul cvi + databuf 2 index + 3 -1 roll put + } repeat + pop +} def +/getint16 { + mark true 3 -1 roll + { + dup {pop datafile read} if + dup {pop 256 mul datafile read} if + dup {pop add 65535 div true} if + } repeat + { + counttomark 1 add -1 roll pop true + }{ + cleartomark false + } ifelse +} def +/putint16 { + dup 2 mul dataptr add /dataptr exch store + dataptr exch + { + 2 sub exch + 65535 mul cvi dup + 256 idiv databuf 3 index 3 -1 roll put + 256 mod databuf 2 index 1 add 3 -1 roll put + } repeat + pop +} def +/srcbuf 256 string def +/rdcmntline { + currentfile srcbuf readline pop + (%) anchorsearch {pop} if +} def +/getplateindex { + 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall +} def +/aicsarray 4 array def +/aicsaltvals 4 array def +/aicsaltcolr aicsaltvals def +/tocolorspace { + dup type /arraytype eq { + mark exch aload pop + aicsarray 0 3 -1 roll put + aicsarray 1 3 -1 roll put + dup aicsarray 2 3 -1 roll put + gettintxform aicsarray 3 3 -1 roll put + counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store + aicsaltcolr astore pop pop + aicsarray + } if +} def +/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def +/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def +/gettintxform { + /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load +} def +/getnchannels { + dup type /arraytype eq {0 get} if + colorspacedict exch get begin Channels end +} def +/makesmarks { + composite? { + pop true + }{ + dup dup type /arraytype eq {0 get} if + colorspacedict exch get begin MarksPlate end + } ifelse +} def +/markingplate { + composite? { + pop true + }{ + dup type /arraytype eq { + dup length getplateindex gt {getplateindex get}{pop false} ifelse + } if + } ifelse +} def +/tocmyk { + dup dup type /arraytype eq {0 get} if + colorspacedict exch get begin ToCMYK end +} def +/topsspace { + dup dup type /arraytype eq {0 get} if + colorspacedict exch get begin ToPSSpace end +} def +/colorspacedict 5 dict dup begin + /DeviceGray 4 dict dup begin + /Channels 1 def + /MarksPlate {pop black?} def + /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def + /ToPSSpace {} def + end def + /DeviceRGB 4 dict dup begin + /Channels 3 def + /MarksPlate {pop isCMYKSep?} def + /ToCMYK {pop _rgbtocmyk} def + /ToPSSpace {} def + end def + /DeviceCMYK 4 dict dup begin + /Channels 4 def + /MarksPlate {pop isCMYKSep?} def + /ToCMYK {pop} def + /ToPSSpace {} def + end def + /Separation 4 dict dup begin + /Channels 1 def + /MarksPlate { + /findcmykcustomcolor where { + pop dup 1 exch ToCMYK 5 -1 roll 1 get + findcmykcustomcolor 1 setcustomcolor + systemdict /currentgray get exec + 1 ne + }{ + pop false + } ifelse + } def + /ToCMYK { + dup 2 get mark exch 4 2 roll + 3 get exec + counttomark -1 roll tocmyk + 5 -1 roll pop + } def + /ToPSSpace {} def + end def + /Process 4 dict dup begin + /Channels 1 def + /MarksPlate { + isCMYKSep? { + 1 exch ToCMYK 4 array astore getplateindex get 0 ne + }{ + pop false + } ifelse + } def + /ToCMYK { + dup 2 get mark exch 4 2 roll + 3 get exec + counttomark -1 roll tocmyk + 5 -1 roll pop + } def + /ToPSSpace { + 4 array copy dup 0 /Separation put + } def + end def +end def +/isoverprint { + /currentoverprint where {pop currentoverprint}{_of} ifelse +} def +/version_ge_3010.106 { + version {cvr} stopped { + pop + false + }{ + 3010.106 ge + } ifelse +} def +end +end +defaultpacking setpacking +%%EndResource +%%EndProlog %%BeginSetup userdict /_useSmoothShade false put userdict /_aicmykps true put userdict /_forceToCMYK true put Adobe_level2_AI5 /initialize get exec +Adobe_cshow /initialize get exec +Adobe_ColorImage_AI6 /initialize get exec +Adobe_shading_AI8 /initialize get exec +Adobe_Illustrator_AI5 /initialize get exec +%AI3_BeginRider currentpacking true setpacking setpacking %AI3_EndRider %AI5_Begin_NonPrinting Np %AI8_PluginGroupInfo (Adobe Path Blends) (Adobe Blends Plugin) (LiveBlends.aip) %AI8_PluginGroupInfo (Adobe Tracing Object) (Tracing) (TracingSuite.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (CalligBrushTool.aip) %AI8_PluginGroupInfo (Adobe Flare Plugin) (Flare) (Flare.aip) %AI8_PluginGroupInfo (Adobe Symbolism) (Adobe Symbolism) (ParticleSystem.aip) %AI8_PluginGroupInfo (Adobe Deform Plugin) (Adobe Envelope Plugin) (Envelope and Warp.aip) %AI8_PluginGroupInfo (Pathfinder Suite) (Adobe Compound Shape) (PathFinderS.aip) %AI8_PluginGroupInfo (Adobe Planar Group) (Adobe Live Paint Plugin) (Live Paint.aip) %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 0.74902 0.678431 0.670588 0.901961 ([Registration]) 0 Xs ([Registration]) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 1 0 79 128 255 0 50 Lb (svg2279) Ln 0 A u U u u u 0 O 0 0 0 0 1 1 1 Xa 0 R 0.74902 0.678431 0.670588 0.901961 0 0 0 XA 0 J 0 j 1.04162 w 4 M []0 d 0 XR 360.9937 306.4668 m 439.9941 306.4668 L 439.9941 292.4668 L 360.9937 292.4668 L 360.9937 306.4668 L b 0.74902 0.678431 0.670588 0.901961 0 0 0 Xa 1 w 362.4751 305.0669 m 438.5127 305.0669 L 438.5127 293.8672 L 362.4751 293.8672 L 362.4751 305.0669 L f 1 D 0.345098 0.239216 0.309804 0 0.670588 0.694118 0.666667 Xa 362.4751 305.0547 m 362.4751 293.8545 L 382.5557 293.8545 L 383.8477 295.4883 384.7197 297.3867 384.7197 299.4546 c 384.7197 301.5088 383.8628 303.4282 382.5864 305.0547 C 362.4751 305.0547 L f q 0 D 362.6411 305.0669 m 382.2085 305.0669 L 382.2085 293.8672 L 362.6411 293.8672 L 362.6411 305.0669 L h W n u 0 O 0 0 0 0 1 1 1 Xa 379.79 299.4668 m 379.792 295.9746 376.7988 293.1426 373.1045 293.1406 c 369.4106 293.1387 366.4136 295.9668 366.4116 299.459 c 366.4116 299.4614 366.4116 299.4639 366.4116 299.4668 c 366.4092 302.9585 369.4023 305.791 373.0967 305.793 C 376.791 305.7949 379.7876 302.9658 379.79 299.4741 c 379.79 299.4717 379.79 299.4692 379.79 299.4668 c f *u 0.74902 0.678431 0.670588 0.901961 0 0 0 Xa 378.5386 304.6162 m 380.0215 303.2144 380.7637 301.4976 380.7637 299.4668 c 380.7637 297.4355 380.0347 295.7373 378.5767 294.3711 C 377.0293 292.9326 375.2012 292.2129 373.0913 292.2129 c 371.0068 292.2129 369.21 292.9268 367.7012 294.3535 C 366.1919 295.7793 365.4375 297.4844 365.4375 299.4668 c 365.4375 301.4492 366.1919 303.166 367.7012 304.6162 C 369.1714 306.019 370.9683 306.7202 373.0913 306.7202 c 375.2397 306.7202 377.0552 306.019 378.5386 304.6162 C f 1 D 368.6997 303.6733 m 367.4453 302.4761 366.8188 301.0737 366.8188 299.4648 c 366.8188 297.8564 367.4395 296.4658 368.6802 295.293 C 369.9214 294.1201 371.3994 293.5332 373.1138 293.5332 c 374.8281 293.5332 376.3184 294.126 377.585 295.3105 C 378.7876 296.4121 379.3892 297.7959 379.3892 299.4648 c 379.3892 301.1211 378.7778 302.5273 377.5562 303.6821 C 376.3345 304.8369 374.8535 305.4146 373.1138 305.4146 c 371.3735 305.4146 369.9019 304.834 368.6997 303.6733 C f 0 D 372 300.1724 m 371.8081 300.5674 371.5215 300.7646 371.1387 300.7646 c 370.4624 300.7646 370.1245 300.3345 370.1245 299.4741 c 370.1245 298.6133 370.4624 298.1836 371.1387 298.1836 c 371.5854 298.1836 371.9043 298.3926 372.0957 298.8125 C 373.0332 298.3408 L 372.5864 297.5898 371.916 297.2148 371.022 297.2148 c 370.3325 297.2148 369.7803 297.415 369.3657 297.8145 C 368.9502 298.2139 368.7432 298.7646 368.7432 299.4668 c 368.7432 300.1567 368.957 300.7041 369.3848 301.1099 C 369.8125 301.5156 370.3452 301.7183 370.9839 301.7183 c 371.9287 301.7183 372.6055 301.3662 373.0146 300.6631 C 372 300.1724 L f 376.4102 300.1724 m 376.2183 300.5674 375.9375 300.7646 375.5669 300.7646 c 374.877 300.7646 374.5317 300.3345 374.5317 299.4741 c 374.5317 298.6133 374.877 298.1836 375.5669 298.1836 c 376.0142 298.1836 376.3271 298.3926 376.5059 298.8125 C 377.4644 298.3408 L 377.0186 297.5898 376.3491 297.2148 375.4565 297.2148 c 374.7681 297.2148 374.2173 297.415 373.8027 297.8145 C 373.3887 298.2139 373.1816 298.7646 373.1816 299.4668 c 373.1816 300.1567 373.3921 300.7041 373.8125 301.1099 C 374.2329 301.5156 374.7681 301.7183 375.4185 301.7183 c 376.3618 301.7183 377.0376 301.3662 377.4448 300.6631 C 376.4102 300.1724 L f *U U /AdobeObjectMatrix (0.961253 0.000000 0.000000 0.961253 6.834157 9.506999) XT Q U /AdobeObjectMatrix (1.000000 0.000000 0.000000 1.000000 158.000000 54.000000) XT 0 A *u 1 D 0 O 0 0 0 0 1 1 1 Xa 0 J 0 j 1 w 4 M []0 d 0 XR 389.5518 300.0986 m 389.7944 300.0986 389.978 300.1484 390.1035 300.2485 c 390.2285 300.3486 390.291 300.4961 390.291 300.6914 c 390.291 300.8838 390.2285 301.0303 390.1035 301.1304 C 389.978 301.2324 389.7944 301.2842 389.5518 301.2842 C 388.7007 301.2842 L 388.7007 300.0986 L 389.5518 300.0986 L F 389.604 297.6494 m 389.9131 297.6494 390.1445 297.7109 390.2993 297.833 C 390.4565 297.9551 390.5352 298.1406 390.5352 298.3887 c 390.5352 298.6309 390.4575 298.8125 390.3032 298.9316 C 390.1489 299.0547 389.9155 299.1162 389.604 299.1162 C 388.7007 299.1162 L 388.7007 297.6494 L 389.604 297.6494 L F 0 D 391.0347 299.6636 m 391.3647 299.5737 391.6206 299.4072 391.8018 299.1646 c 391.9829 298.9219 392.0732 298.625 392.0732 298.2715 c 392.0732 297.7324 391.8789 297.3291 391.4897 297.0645 c 391.1011 296.7988 390.5098 296.666 389.7158 296.666 C 387.1626 296.666 L 387.1626 302.2666 L 389.4722 302.2666 L 390.3008 302.2666 390.8999 302.1494 391.27 301.9141 C 391.6431 301.6792 391.8296 301.3027 391.8296 300.7852 c 391.8296 300.5127 391.7617 300.2798 391.626 300.0874 C 391.4897 299.8975 391.293 299.7559 391.0347 299.6636 C F 391.9395 302.2666 m 393.6216 302.2666 L 394.9805 300.2715 L 396.3389 302.2666 L 398.0249 302.2666 L 395.7515 299.0259 L 395.7515 296.666 L 394.2129 296.666 L 394.2129 299.0259 L 391.9395 302.2666 L F *U U /AdobeObjectMatrix (0.987502 0.000000 0.000000 0.933352 -323.900635 -271.876892) XT U LB %AI5_EndLayer-- %AI3_BeginCrops userdict /AI3_noCropMarks known not { 0 A u u 0 R 0 G 0 J 0 j 0.5 w 4 M []0 d 0 XR 351.5 292 m 324.5 292 L S 360.5 283 m 360.5 256 L S U u 351.5 307 m 324.5 307 L S 360.5 316 m 360.5 343 L S U u 449.5 307 m 476.5 307 L S 440.5 316 m 440.5 343 L S U u 449.5 292 m 476.5 292 L S 440.5 283 m 440.5 256 L S U U } if %AI3_EndCrops %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec +Adobe_shading_AI8 /terminate get exec +Adobe_ColorImage_AI6 /terminate get exec +Adobe_cshow /terminate get exec +Adobe_level2_AI5 /terminate get exec +%%EOF \ No newline at end of file diff --git a/paper/CC-by.pdf b/paper/CC-by.pdf new file mode 100644 index 0000000..7b790d0 Binary files /dev/null and b/paper/CC-by.pdf differ diff --git a/paper/Makefile b/paper/Makefile new file mode 100644 index 0000000..43a49c5 --- /dev/null +++ b/paper/Makefile @@ -0,0 +1,32 @@ + +LAB_PATH ?= ../lab-windows + +SHELL := bash +.ONESHELL: +.SHELLFLAGS := -eu -o pipefail -c +.DELETE_ON_ERROR: +MAKEFLAGS += --warn-undefined-variables +MAKEFLAGS += --no-builtin-rules + +main_tex ?= safety-reset-paper + +VERSION_STRING := $(shell git describe --tags --long --dirty) + +all: ${main_tex}.pdf + +%.pdf: %.tex safety-reset.bib version.tex + pdflatex -shell-escape $< + biber $* + pdflatex -shell-escape $< + +version.tex: ${main_tex}.tex safety-reset.bib + echo "${VERSION_STRING}" > $@ + +resources/%.pdf: $(LAB_PATH)/%.ipynb + jupyter-nbconvert --to=pdf --output-dir=resources --output=$* --LatexExporter.template_file=resources/nbexport.tplx $^ + +.PHONY: clean +clean: + rm -f ${main_tex}.aux ${main_tex}.bbl ${main_tex}.bcf ${main_tex}.log ${main_tex}.blg + rm -f ${main_tex}.out ${main_tex}.run.xml texput.log + diff --git a/paper/iacrdoc.pdf b/paper/iacrdoc.pdf new file mode 100644 index 0000000..fda518b Binary files /dev/null and b/paper/iacrdoc.pdf differ diff --git a/paper/iacrtrans-tches/iacrtrans/CC-by.eps b/paper/iacrtrans-tches/iacrtrans/CC-by.eps new file mode 100644 index 0000000..ae05c8b --- /dev/null +++ b/paper/iacrtrans-tches/iacrtrans/CC-by.eps @@ -0,0 +1,2727 @@ +%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 8.0 %%AI8_CreatorVersion: 13.0.1 %%For: (Alex Roberts) () %%Title: (by.eps) %%CreationDate: 3/27/08 4:25 PM %%BoundingBox: 360 291 441 307 %%HiResBoundingBox: 360.4727 291.9463 440.5146 306.9878 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 4.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%CMYKProcessColor: 0.74902 0.678431 0.670588 0.901961 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 1 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 () %AI3_Cropmarks: 360.5 292 440.5 307 %AI3_TemplateBox: 400.5 299.5 400.5 299.5 %AI3_TileBox: 112 -56 688 678 %AI3_DocumentPreview: Macintosh_ColorPic %AI5_ArtSize: 800 600 %AI5_RulerUnits: 6 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI8_OpenToView: -381 756 1 1566 923 26 0 0 73 75 0 0 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 48 8 48 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %AI7_Thumbnail: 128 24 8 %%BeginData: 3634 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C4527FD80F82752522752525227FD07522752525227FD075227525252 %27FD5D52F8F8F852FD7CFF52F8F852FFFD087D52F8F8F852A8FD07FF5227 %F8F827FD077DFD58F827FF27F8F852FF7D7D7D83FD047DF8F8F8A8FD0AFF %A852F8F827A87D7D7D837D52FD57F827FF52F8F852FFFD077DF8F8F8A8FD %0DFF52F8F827A77D7D7D837DFD58F8FF52F8F852FF7D837D7D7DA827F8F8 %A8FD0FFF52F8F852A87D7D7DA852FD56F827FF52F8F852FFFD057D52F8F8 %52FD08FFA8FD07FFA8F8F827FD067DFD04F8277D527D525227F8277D5227 %F8F8F8525252FD41F8FF52F8F852FF7D837D837D52F827FD04FF7D52527D %FFFFFF7D27527DFFFFFF52F8F87D7D837DA77D27F8F8F852FD06FF7D27FF %FFA8F8F852FFFF7DFD40F827FF52F8F852FFFD057DF8F852FFFFFF27FD04 %F852A827FD04F827FFFFA8F8F852837D7D7DA82DF8F8F852FFFF52F87DFF %FFF852FFFF52F8A8FF7DFD42F8FF52F8F852FF7D7D7DA77DF8F87DFFFF52 %F8F8A8A827527DF827A8FF2752FFFFFF27F8527D837D7D7D58F8F8F852FF %FF27F87DFFFF27F8A8FFFFA8FFFF27FD41F827FF52F8F852FFFD057DF8F8 %7DFFFF27F87DFD04FF27F852FD07FFF8F82783FD047D52F8F8F827FD06FF %52F8F8F8FD04FF52FD43F8FF27F8F852FF7D837DA858F8F8A8FFFF27F852 %FD04FF52F87DFD07FF27F8527D837D837D7DF8F8F852FFFF7DA8A8FFA827 %F8F827FFFFA8FD43F827FF52F8F852FFFD057DF8F87DFFFF52F827A8FF27 %5252F8F8A8A82727FFFFFFF8F82783FD047D52F8F8F827FFFF27F827FFFF %7DF8F827A8FF52FD44F8FF52F8F852FF7D837D7D7D27F852FFFFA827FD04 %F827FF27FD04F827FFFFA8F8F8587D7D7D837D52F8F8F852FFFF522752FF %FF7DF8F827FFFF7DFD43F827FF52F8F852FFFD057D27F8F8FFFFFFA85227 %527DFFFFFF5227277DFFFFFF7DF8F852FD047D8327F8F8F852FD07FFF8F8 %F827FFFF52FD44F8FF52F8F852FF7D837D837D7DF8F852FD11FFF8F827A8 %7D837DA87D27F8F8F827FD067DFD05F87D7D52FD43F827FF52F8F852FFFD %067D27F8F87DFD0FFF27F8F858FD057D52FD57F8FF52F8F852FF7D7D7D83 %7D8358F8F827A8FD0DFF52F8F8527D7D7D837D7DFD57F827FF52F8F852FF %FD077D52F8F8F87DFD0AFFA827F8F827FD057D8327FD58F8FF27F8F852FF %7D837DA87D837DA85227F8F852A8FD07FF7DF8F8F8277DA87D837DA85827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827FF52 %F8F852FD0CFFA8FFA8FD07FFA8FFA8FD63FF52F8F827FD7C5227FD80F8F8 %%EndData %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 +%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) +%%Version: 1.2 0 +%%CreationDate: (04/10/93) () +%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) +userdict /Adobe_level2_AI5 26 dict dup begin + put + /packedarray where not + { + userdict begin + /packedarray + { + array astore readonly + } bind def + /setpacking /pop load def + /currentpacking false def + end + 0 + } if + pop + userdict /defaultpacking currentpacking put true setpacking + /initialize + { + Adobe_level2_AI5 begin + } bind def + /terminate + { + currentdict Adobe_level2_AI5 eq + { + end + } if + } bind def + mark + /setcustomcolor where not + { + /findcmykcustomcolor + { + (AI8_CMYK_CustomColor) + 6 packedarray + } bind def + /findrgbcustomcolor + { + (AI8_RGB_CustomColor) + 5 packedarray + } bind def + /setcustomcolor + { + exch + aload pop dup + (AI8_CMYK_CustomColor) eq + { + pop pop + 4 + { + 4 index mul + 4 1 roll + } repeat + 5 -1 roll pop + setcmykcolor + } + { + dup (AI8_RGB_CustomColor) eq + { + pop pop + 3 + { + 1 exch sub + 3 index mul + 1 exch sub + 3 1 roll + } repeat + 4 -1 roll pop + setrgbcolor + } + { + pop + 4 + { + 4 index mul 4 1 roll + } repeat + 5 -1 roll pop + setcmykcolor + } ifelse + } ifelse + } + def + } if + /setAIseparationgray + { + false setoverprint + 0 setgray + /setseparationgray where{ + pop setseparationgray + }{ + /setcolorspace where{ + pop + [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace + 1 exch sub setcolor + }{ + setgray + }ifelse + }ifelse + } def + + /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def + userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put + userdict /level2? + systemdict /languagelevel known dup + { + pop systemdict /languagelevel get 2 ge + } if + put +/level2ScreenFreq +{ + begin + 60 + HalftoneType 1 eq + { + pop Frequency + } if + HalftoneType 2 eq + { + pop GrayFrequency + } if + HalftoneType 5 eq + { + pop Default level2ScreenFreq + } if + end +} bind def +userdict /currentScreenFreq + level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put +level2? not + { + /setcmykcolor where not + { + /setcmykcolor + { + exch .11 mul add exch .59 mul add exch .3 mul add + 1 exch sub setgray + } def + } if + /currentcmykcolor where not + { + /currentcmykcolor + { + 0 0 0 1 currentgray sub + } def + } if + /setoverprint where not + { + /setoverprint /pop load def + } if + /selectfont where not + { + /selectfont + { + exch findfont exch + dup type /arraytype eq + { + makefont + } + { + scalefont + } ifelse + setfont + } bind def + } if + /cshow where not + { + /cshow + { + [ + 0 0 5 -1 roll aload pop + ] cvx bind forall + } bind def + } if + } if + cleartomark + /anyColor? + { + add add add 0 ne + } bind def + /testColor + { + gsave + setcmykcolor currentcmykcolor + grestore + } bind def + /testCMYKColorThrough + { + testColor anyColor? + } bind def + userdict /composite? + 1 0 0 0 testCMYKColorThrough + 0 1 0 0 testCMYKColorThrough + 0 0 1 0 testCMYKColorThrough + 0 0 0 1 testCMYKColorThrough + and and and + put + composite? not + { + userdict begin + gsave + /cyan? 1 0 0 0 testCMYKColorThrough def + /magenta? 0 1 0 0 testCMYKColorThrough def + /yellow? 0 0 1 0 testCMYKColorThrough def + /black? 0 0 0 1 testCMYKColorThrough def + grestore + /isCMYKSep? cyan? magenta? yellow? black? or or or def + /customColor? isCMYKSep? not def + end + } if + end defaultpacking setpacking +%%EndResource +%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0 +userdict /Adobe_ColorImage_AI6 known not +{ + userdict /Adobe_ColorImage_AI6 53 dict put +} if +userdict /Adobe_ColorImage_AI6 get begin +/initialize { + Adobe_ColorImage_AI6 begin + Adobe_ColorImage_AI6 { + dup type /arraytype eq { + dup xcheck { + bind + } if + } if + pop pop + } forall +} def +/terminate { end } def +currentdict /Adobe_ColorImage_AI6_Vars known not { + /Adobe_ColorImage_AI6_Vars 41 dict def +} if +Adobe_ColorImage_AI6_Vars begin + /plateindex -1 def + /_newproc null def + /_proc1 null def + /_proc2 null def + /sourcearray 4 array def + /_ptispace null def + /_ptiname null def + /_pti0 0 def + /_pti1 0 def + /_ptiproc null def + /_ptiscale 0 def + /_pticomps 0 def + /_ptibuf 0 string def + /_gtigray 0 def + /_cticmyk null def + /_rtirgb null def + /XIEnable true def + /XIType 0 def + /XIEncoding 0 def + /XICompression 0 def + /XIChannelCount 0 def + /XIBitsPerPixel 0 def + /XIImageHeight 0 def + /XIImageWidth 0 def + /XIImageMatrix null def + /XIRowBytes 0 def + /XIFile null def + /XIBuffer1 null def + /XIBuffer2 null def + /XIBuffer3 null def + /XIDataProc null def + /XIColorSpace /DeviceGray def + /XIColorValues 0 def + /XIPlateList false def +end +/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def +/ci6image systemdict /image get def +/ci6curtransfer systemdict /currenttransfer get def +/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def +/ci6foureq { + 4 index ne { + pop pop pop false + }{ + 4 index ne { + pop pop false + }{ + 4 index ne { + pop false + }{ + 4 index eq + } ifelse + } ifelse + } ifelse +} def +/ci6testplate { + Adobe_ColorImage_AI6_Vars begin + /plateindex -1 def + /setcmykcolor where { + pop + gsave + 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub + 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub + 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub + 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub + grestore + 1 0 0 0 ci6foureq { + /plateindex 0 def + }{ + 0 1 0 0 ci6foureq { + /plateindex 1 def + }{ + 0 0 1 0 ci6foureq { + /plateindex 2 def + }{ + 0 0 0 1 ci6foureq { + /plateindex 3 def + }{ + 0 0 0 0 ci6foureq { + /plateindex 5 def + } if + } ifelse + } ifelse + } ifelse + } ifelse + pop pop pop pop + } if + plateindex + end +} def +/ci6concatprocs { + /packedarray where { + pop dup type /packedarraytype eq 2 index type + /packedarraytype eq or + }{ + false + } ifelse + { + /_proc2 exch cvlit def + /_proc1 exch cvlit def + _proc1 aload pop + _proc2 aload pop + _proc1 length + _proc2 length add + packedarray cvx + }{ + /_proc2 exch cvlit def + /_proc1 exch cvlit def + /_newproc _proc1 length _proc2 length add array def + _newproc 0 _proc1 putinterval + _newproc _proc1 length _proc2 putinterval + _newproc cvx + } ifelse +} def +/ci6istint { + type /arraytype eq +} def +/ci6isspot { + dup type /arraytype eq { + dup length 1 sub get /Separation eq + }{ + pop false + } ifelse +} def +/ci6spotname { + dup ci6isspot {dup length 2 sub get}{pop ()} ifelse +} def +/ci6altspace { + aload pop pop pop ci6colormake +} def +/ci6numcomps { + dup /DeviceGray eq { + pop 1 + }{ + dup /DeviceRGB eq { + pop 3 + }{ + /DeviceCMYK eq { + 4 + }{ + 1 + } ifelse + } ifelse + } ifelse +} def +/ci6marksplate { + dup /DeviceGray eq { + pop plateindex 3 eq + }{ + dup /DeviceRGB eq { + pop plateindex 5 ne + }{ + dup /DeviceCMYK eq { + pop plateindex 5 ne + }{ + dup ci6isspot { + /findcmykcustomcolor where { + pop + dup length 2 sub get + 0.1 0.1 0.1 0.1 5 -1 roll + findcmykcustomcolor 1 setcustomcolor + systemdict /currentgray get exec + 1 ne + }{ + pop plateindex 5 ne + } ifelse + }{ + pop plateindex 5 ne + } ifelse + } ifelse + } ifelse + } ifelse +} def +/ci6colormake { + dup ci6numcomps + exch 1 index 2 add 1 roll + dup 1 eq {pop}{array astore} ifelse + exch +} def +/ci6colorexpand { + dup ci6spotname exch + dup ci6istint { + ci6altspace + exch 4 1 roll + }{ + 1 3 1 roll + } ifelse +} def +/ci6colortint { + dup /DeviceGray eq { + 3 1 roll 1 exch sub mul 1 exch sub exch + }{ + dup /DeviceRGB eq { + 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch + }{ + dup /DeviceCMYK eq { + 3 1 roll {1 index mul exch} forall pop 4 array astore exch + }{ + 3 1 roll mul exch + } ifelse + } ifelse + } ifelse +} def +/ci6colortocmyk { + dup /DeviceGray eq { + pop 1 exch sub 0 0 0 4 -1 roll 4 array astore + }{ + dup /DeviceRGB eq { + pop aload pop _rgbtocmyk 4 array astore + }{ + dup /DeviceCMYK eq { + pop + }{ + ci6altspace ci6colortint ci6colortocmyk + } ifelse + } ifelse + } ifelse +} def +/ci6makeimagedict { + 7 dict begin + /ImageType 1 def + /Decode exch def + /DataSource exch def + /ImageMatrix exch def + /BitsPerComponent exch def + /Height exch def + /Width exch def + currentdict end +} def +/ci6stringinvert { + 0 1 2 index length 1 sub { + dup 2 index exch get 255 exch sub 2 index 3 1 roll put + } for +} def +/ci6stringknockout { + 0 1 2 index length 1 sub { + 255 2 index 3 1 roll put + } for +} def +/ci6stringapply { + 0 1 4 index length 1 sub { + dup + 4 index exch get + 3 index 3 1 roll + 3 index exec + } for + pop exch pop +} def +/ci6walkrgbstring { + 0 3 index + dup length 1 sub 0 3 3 -1 roll { + 3 getinterval {} forall + 5 index exec + 3 index + } for + + 5 {pop} repeat +} def +/ci6walkcmykstring +{ + 0 3 index + dup length 1 sub 0 4 3 -1 roll { + 4 getinterval {} forall + + 6 index exec + + 3 index + + } for + + 5 { pop } repeat + +} def +/ci6putrgbtograystr +{ + .11 mul exch + + .59 mul add exch + + .3 mul add + + cvi 3 copy put + + pop 1 add +} def +/ci6putcmyktograystr +{ + exch .11 mul add + + exch .59 mul add + + exch .3 mul add + + dup 255 gt { pop 255 } if + + 255 exch sub cvi 3 copy put + + pop 1 add +} def +/ci6rgbtograyproc { + Adobe_ColorImage_AI6_Vars begin + sourcearray 0 get exec + XIBuffer3 + dup 3 1 roll + + /ci6putrgbtograystr load exch + ci6walkrgbstring + end +} def +/ci6cmyktograyproc { + Adobe_ColorImage_AI6_Vars begin + sourcearray 0 get exec + XIBuffer3 + dup 3 1 roll + + /ci6putcmyktograystr load exch + ci6walkcmykstring + end +} def +/ci6separatecmykproc { + Adobe_ColorImage_AI6_Vars begin + sourcearray 0 get exec + + XIBuffer3 + + 0 2 index + + plateindex 4 2 index length 1 sub { + get 255 exch sub + + 3 copy put pop 1 add + + 2 index + } for + pop pop exch pop + end +} def + +/ci6compositeimage { + dup 1 eq { + pop pop image + }{ + /ci6colorimage load null ne { + ci6colorimage + }{ + 3 1 roll pop + sourcearray 0 3 -1 roll put + 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load + image + } ifelse + } ifelse +} def +/ci6knockoutimage { + gsave + 0 ci6curtransfer exec 1 ci6curtransfer exec + eq { + 0 ci6curtransfer exec 0.5 lt + }{ + 0 ci6curtransfer exec 1 ci6curtransfer exec gt + } ifelse + {{pop 0}}{{pop 1}} ifelse + systemdict /settransfer get exec + ci6compositeimage + grestore +} def +/ci6drawimage { + ci6testplate -1 eq { + pop ci6compositeimage + }{ + dup type /arraytype eq { + dup length plateindex gt {plateindex get}{pop false} ifelse + }{ + { + true + }{ + dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse + } ifelse + } ifelse + { + dup 1 eq { + pop pop ci6image + }{ + dup 3 eq { + ci6compositeimage + }{ + pop pop + sourcearray 0 3 -1 roll put + /ci6separatecmykproc load + ci6image + } ifelse + } ifelse + }{ + ci6curoverprint { + 7 {pop} repeat + }{ + ci6knockoutimage + } ifelse + } ifelse + } ifelse +} def +/ci6proctintimage { + /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store + /_pticomps _ptispace ci6numcomps store + /_ptiscale _pti1 _pti0 sub store + level2? { + _ptiname length 0 gt version cvr 2012 ge and { + [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace + [_pti0 _pti1] ci6makeimagedict ci6image + }{ + [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace + [0 255] ci6makeimagedict ci6image + } ifelse + }{ + _pticomps 1 eq { + { + dup + { + 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put + } ci6stringapply + } ci6concatprocs ci6image + }{ + { + dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse + _ptibuf { + exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc + _pticomps 2 add -2 roll + _pticomps 1 sub -1 0 { + 1 index add 2 index exch + 5 -1 roll + 255 mul cvi put + } for + pop pop + } ci6stringapply + } ci6concatprocs false _pticomps + /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse + } ifelse + } ifelse +} def +/ci6graytintimage { + /_gtigray 5 -1 roll store + {1 _gtigray sub mul 1 exch sub} 4 1 roll + /DeviceGray ci6proctintimage +} def +/ci6cmyktintimage { + /_cticmyk 5 -1 roll store + {_cticmyk {1 index mul exch} forall pop} 4 1 roll + /DeviceCMYK ci6proctintimage +} def +/ci6rgbtintimage { + /_rtirgb 5 -1 roll store + {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll + /DeviceRGB ci6proctintimage +} def +/ci6tintimage { + ci6testplate -1 eq { + ci6colorexpand + 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll + dup /DeviceGray eq { + pop ci6graytintimage + }{ + dup /DeviceRGB eq { + pop ci6rgbtintimage + }{ + pop ci6cmyktintimage + } ifelse + } ifelse + }{ + dup ci6marksplate { + plateindex 5 lt { + ci6colortocmyk plateindex get + dup 0 eq ci6curoverprint and { + 7 {pop} repeat + }{ + 1 exch sub + exch {1 0}{0 1} ifelse () ci6graytintimage + } ifelse + }{ + pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage + } ifelse + }{ + ci6curoverprint { + 8 {pop} repeat + }{ + pop pop pop + {pop 1} 0 1 () /DeviceGray ci6proctintimage + } ifelse + } ifelse + } ifelse +} def +/XINullImage { +} def +/XIImageMask { + XIImageWidth XIImageHeight false + [XIImageWidth 0 0 XIImageHeight neg 0 0] + /XIDataProc load + imagemask +} def +/XIImageTint { + XIImageWidth XIImageHeight XIBitsPerPixel + [XIImageWidth 0 0 XIImageHeight neg 0 0] + /XIDataProc load + XIType 3 eq XIColorValues XIColorSpace ci6tintimage +} def +/XIImage { + XIImageWidth XIImageHeight XIBitsPerPixel + [XIImageWidth 0 0 XIImageHeight neg 0 0] + /XIDataProc load + false XIChannelCount XIPlateList ci6drawimage +} def +/XG { + pop pop +} def +/XF { + 13 {pop} repeat +} def +/Xh { + Adobe_ColorImage_AI6_Vars begin + gsave + /XIType exch def + /XIImageHeight exch def + /XIImageWidth exch def + /XIImageMatrix exch def + 0 0 moveto + XIImageMatrix concat + XIImageWidth XIImageHeight scale + + /_lp /null ddef + _fc + /_lp /imagemask ddef + end +} def +/XH { + Adobe_ColorImage_AI6_Vars begin + grestore + end +} def +/XIEnable { + Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put +} def +/XC { + Adobe_ColorImage_AI6_Vars begin + ci6colormake + /XIColorSpace exch def + /XIColorValues exch def + end +} def +/XIPlates { + Adobe_ColorImage_AI6_Vars begin + /XIPlateList exch def + end +} def +/XI +{ + Adobe_ColorImage_AI6_Vars begin + gsave + /XIType exch def + cvi dup + 256 idiv /XICompression exch store + 256 mod /XIEncoding exch store + pop pop + /XIChannelCount exch def + /XIBitsPerPixel exch def + /XIImageHeight exch def + /XIImageWidth exch def + pop pop pop pop + /XIImageMatrix exch def + XIBitsPerPixel 1 eq { + XIImageWidth 8 div ceiling cvi + }{ + XIImageWidth XIChannelCount mul + } ifelse + /XIRowBytes exch def + XIEnable { + /XIBuffer3 XIImageWidth string def + XICompression 0 eq { + /XIBuffer1 XIRowBytes string def + XIEncoding 0 eq { + {currentfile XIBuffer1 readhexstring pop} + }{ + {currentfile XIBuffer1 readstring pop} + } ifelse + }{ + /XIBuffer1 256 string def + /XIBuffer2 XIRowBytes string def + {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} + /ASCII85Decode filter /DCTDecode filter + /XIFile exch def + {XIFile XIBuffer2 readstring pop} + } ifelse + /XIDataProc exch def + + XIType 1 ne { + 0 setgray + } if + XIType 1 eq { + XIImageMask + }{ + XIType 2 eq XIType 3 eq or { + XIImageTint + }{ + XIImage + } ifelse + } ifelse + }{ + XINullImage + } ifelse + /XIPlateList false def + grestore + end +} def +end +%%EndProcSet +%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0 +%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog) +%%Version: 1.3 0 +%%CreationDate: (3/7/1994) () +%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin +put +/_?cmyk false def +/_eo false def +/_lp /none def +/_pf +{ +} def +/_ps +{ +} def +/_psf +{ +} def +/_pss +{ +} def +/_pjsf +{ +} def +/_pjss +{ +} def +/_pola 0 def +/_doClip 0 def +/cf currentflat def +/_lineorientation 0 def +/_charorientation 0 def +/_yokoorientation 0 def +/_tm matrix def +/_renderStart +[ +/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 +] def +/_renderEnd +[ +null null null null /i1 /i1 /i1 /i1 +] def +/_render -1 def +/_shift [0 0] def +/_ax 0 def +/_ay 0 def +/_cx 0 def +/_cy 0 def +/_leading +[ +0 0 +] def +/_ctm matrix def +/_mtx matrix def +/_sp 16#020 def +/_hyphen (-) def +/_fontSize 0 def +/_fontAscent 0 def +/_fontDescent 0 def +/_fontHeight 0 def +/_fontRotateAdjust 0 def +/Ss 256 string def +Ss 0 (fonts/) putinterval +/_cnt 0 def +/_scale [1 1] def +/_nativeEncoding 0 def +/_useNativeEncoding 0 def +/_tempEncode 0 def +/_pntr 0 def +/_tDict 2 dict def +/_hfname 100 string def +/_hffound false def +/Tx +{ +} def +/Tj +{ +} def +/CRender +{ +} def +/_AI3_savepage +{ +} def +/_gf null def +/_cf 4 array def +/_rgbf 3 array def +/_if null def +/_of false def +/_fc +{ +} def +/_gs null def +/_cs 4 array def +/_rgbs 3 array def +/_is null def +/_os false def +/_sc +{ +} def +/_pd 1 dict def +/_ed 15 dict def +/_pm matrix def +/_fm null def +/_fd null def +/_fdd null def +/_sm null def +/_sd null def +/_sdd null def +/_i null def +/_lobyte 0 def +/_hibyte 0 def +/_cproc null def +/_cscript 0 def +/_hvax 0 def +/_hvay 0 def +/_hvwb 0 def +/_hvcx 0 def +/_hvcy 0 def +/_bitfont null def +/_bitlobyte 0 def +/_bithibyte 0 def +/_bitkey null def +/_bitdata null def +/_bitindex 0 def +/discardSave null def +/buffer 256 string def +/beginString null def +/endString null def +/endStringLength null def +/layerCnt 1 def +/layerCount 1 def +/perCent (%) 0 get def +/perCentSeen? false def +/newBuff null def +/newBuffButFirst null def +/newBuffLast null def +/clipForward? false def +end +userdict /Adobe_Illustrator_AI5 known not { + userdict /Adobe_Illustrator_AI5 100 dict put +} if +userdict /Adobe_Illustrator_AI5 get begin +/initialize +{ + Adobe_Illustrator_AI5 dup begin + Adobe_Illustrator_AI5_vars begin + /_aicmykps where {pop /_?cmyk _aicmykps def}if + discardDict + { + bind pop pop + } forall + dup /nc get begin + { + dup xcheck 1 index type /operatortype ne and + { + bind + } if + pop pop + } forall + end + newpath +} def +/terminate +{ + end + end +} def +/_ +null def +/ddef +{ + Adobe_Illustrator_AI5_vars 3 1 roll put +} def +/xput +{ + dup load dup length exch maxlength eq + { + dup dup load dup + length 2 mul dict copy def + } if + load begin + def + end +} def +/npop +{ + { + pop + } repeat +} def +/hswj +{ + dup stringwidth 3 2 roll + { + _hvwb eq { exch _hvcx add exch _hvcy add } if + exch _hvax add exch _hvay add + } cforall +} def +/vswj +{ + 0 0 3 -1 roll + { + dup 255 le + _charorientation 1 eq + and + { + dup cstring stringwidth 5 2 roll + _hvwb eq { exch _hvcy sub exch _hvcx sub } if + exch _hvay sub exch _hvax sub + 4 -1 roll sub exch + 3 -1 roll sub exch + } + { + _hvwb eq { exch _hvcy sub exch _hvcx sub } if + exch _hvay sub exch _hvax sub + _fontHeight sub + } ifelse + } cforall +} def +/swj +{ + 6 1 roll + /_hvay exch ddef + /_hvax exch ddef + /_hvwb exch ddef + /_hvcy exch ddef + /_hvcx exch ddef + _lineorientation 0 eq { hswj } { vswj } ifelse +} def +/sw +{ + 0 0 0 6 3 roll swj +} def +/vjss +{ + 4 1 roll + { + dup cstring + dup length 1 eq + _charorientation 1 eq + and + { + -90 rotate + currentpoint + _fontRotateAdjust add + moveto + gsave + false charpath currentpoint + 5 index setmatrix stroke + grestore + _fontRotateAdjust sub + moveto + _sp eq + { + 5 index 5 index rmoveto + } if + 2 copy rmoveto + 90 rotate + } + { + currentpoint + _fontHeight sub + 5 index sub + 3 index _sp eq + { + 9 index sub + } if + + currentpoint + exch 4 index stringwidth pop 2 div sub + exch _fontAscent sub + moveto + + gsave + 2 index false charpath + 6 index setmatrix stroke + grestore + + moveto pop pop + } ifelse + } cforall + 6 npop +} def +/hjss +{ + 4 1 roll + { + dup cstring + gsave + false charpath currentpoint + 5 index setmatrix stroke + grestore + moveto + _sp eq + { + 5 index 5 index rmoveto + } if + 2 copy rmoveto + } cforall + 6 npop +} def +/jss +{ + _lineorientation 0 eq { hjss } { vjss } ifelse +} def +/ss +{ + 0 0 0 7 3 roll jss +} def +/vjsp +{ + 4 1 roll + { + dup cstring + dup length 1 eq + _charorientation 1 eq + and + { + -90 rotate + currentpoint + _fontRotateAdjust add + moveto + false charpath + currentpoint + _fontRotateAdjust sub + moveto + _sp eq + { + 5 index 5 index rmoveto + } if + 2 copy rmoveto + 90 rotate + } + { + currentpoint + _fontHeight sub + 5 index sub + 3 index _sp eq + { + 9 index sub + } if + + currentpoint + exch 4 index stringwidth pop 2 div sub + exch _fontAscent sub + moveto + + 2 index false charpath + + moveto pop pop + } ifelse + } cforall + 6 npop +} def +/hjsp +{ + 4 1 roll + { + dup cstring + false charpath + _sp eq + { + 5 index 5 index rmoveto + } if + 2 copy rmoveto + } cforall + 6 npop +} def +/jsp +{ + matrix currentmatrix + _lineorientation 0 eq {hjsp} {vjsp} ifelse +} def +/sp +{ + matrix currentmatrix + 0 0 0 7 3 roll + _lineorientation 0 eq {hjsp} {vjsp} ifelse +} def +/pl +{ + transform + 0.25 sub round 0.25 add exch + 0.25 sub round 0.25 add exch + itransform +} def +/setstrokeadjust where +{ + pop true setstrokeadjust + /c + { + curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll curveto + } def + /V + /v load def + /y + { + 2 copy curveto + } def + /Y + /y load def + /l + { + lineto + } def + /L + /l load def + /m + { + moveto + } def +} +{ + /c + { + pl curveto + } def + /C + /c load def + /v + { + currentpoint 6 2 roll pl curveto + } def + /V + /v load def + /y + { + pl 2 copy curveto + } def + /Y + /y load def + /l + { + pl lineto + } def + /L + /l load def + /m + { + pl moveto + } def +} ifelse +/d +{ + setdash +} def +/cf +{ +} def +/i +{ + dup 0 eq + { + pop cf + } if + setflat +} def +/j +{ + setlinejoin +} def +/J +{ + setlinecap +} def +/M +{ + setmiterlimit +} def +/w +{ + setlinewidth +} def +/XR +{ + 0 ne + /_eo exch ddef +} def +/H +{ +} def +/h +{ + closepath +} def +/N +{ + _pola 0 eq + { + _doClip 1 eq + { + _eo {eoclip} {clip} ifelse /_doClip 0 ddef + } if + newpath + } + { + /CRender + { + N + } ddef + } ifelse +} def +/n +{ + N +} def +/F +{ + _pola 0 eq + { + _doClip 1 eq + { + gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc + /_doClip 0 ddef + } + { + _pf + } ifelse + } + { + /CRender + { + F + } ddef + } ifelse +} def +/f +{ + closepath + F +} def +/S +{ + _pola 0 eq + { + _doClip 1 eq + { + gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + _ps + } ifelse + } + { + /CRender + { + S + } ddef + } ifelse +} def +/s +{ + closepath + S +} def +/B +{ + _pola 0 eq + { + _doClip 1 eq + gsave F grestore + { + gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc + /_doClip 0 ddef + } + { + S + } ifelse + } + { + /CRender + { + B + } ddef + } ifelse +} def +/b +{ + closepath + B +} def +/W +{ + /_doClip 1 ddef +} def +/* +{ + count 0 ne + { + dup type /stringtype eq + { + pop + } if + } if + newpath +} def +/u +{ +} def +/U +{ +} def +/q +{ + _pola 0 eq + { + gsave + } if +} def +/Q +{ + _pola 0 eq + { + grestore + } if +} def +/*u +{ + _pola 1 add /_pola exch ddef +} def +/*U +{ + _pola 1 sub /_pola exch ddef + _pola 0 eq + { + CRender + } if +} def +/D +{ + pop +} def +/*w +{ +} def +/*W +{ +} def +/` +{ + /_i save ddef + clipForward? + { + nulldevice + } if + 6 1 roll 4 npop + concat pop + userdict begin + /showpage + { + } def + 0 setgray + 0 setlinecap + 1 setlinewidth + 0 setlinejoin + 10 setmiterlimit + [] 0 setdash + /setstrokeadjust where {pop false setstrokeadjust} if + newpath + 0 setgray + false setoverprint +} def +/~ +{ + end + _i restore +} def +/_rgbtocmyk +{ + 3 + { + 1 exch sub 3 1 roll + } repeat + 3 copy 1 4 1 roll + 3 + { + 3 index 2 copy gt + { + exch + } if + pop 4 1 roll + } repeat + pop pop pop + 4 1 roll + 3 + { + 3 index sub + 3 1 roll + } repeat + 4 -1 roll +} def +/setrgbfill +{ + _rgbf astore pop + /_fc + { + _lp /fill ne + { + _of setoverprint + _rgbf aload pop setrgbcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/setrgbstroke +{ + _rgbs astore pop + /_sc + { + _lp /stroke ne + { + _os setoverprint + _rgbs aload pop setrgbcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/O +{ + 0 ne + /_of exch ddef + /_lp /none ddef +} def +/R +{ + 0 ne + /_os exch ddef + /_lp /none ddef +} def +/g +{ + /_gf exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _gf setgray + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/G +{ + /_gs exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _gs setgray + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/k +{ + _cf astore pop + /_fc + { + _lp /fill ne + { + _of setoverprint + _cf aload pop setcmykcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/K +{ + _cs astore pop + /_sc + { + _lp /stroke ne + { + _os setoverprint + _cs aload pop setcmykcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/Xa +{ + _?cmyk { + 3 npop k + }{ + setrgbfill 4 npop + } ifelse +} def +/XA +{ + _?cmyk { + 3 npop K + }{ + setrgbstroke 4 npop + } ifelse +} def +/Xs +{ + /_gf exch ddef + 5 npop + /_fc + { + _lp /fill ne + { + _of setoverprint + _gf setAIseparationgray + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/XS +{ + /_gs exch ddef + 5 npop + /_sc + { + _lp /stroke ne + { + _os setoverprint + _gs setAIseparationgray + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/Xx +{ + exch + /_gf exch ddef + 0 eq { + findcmykcustomcolor + }{ + _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse + { + 4 1 roll 3 npop + findcmykcustomcolor + }{ + 8 -4 roll 4 npop + findrgbcustomcolor + } ifelse + } ifelse + /_if exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _if _gf 1 exch sub setcustomcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/XX +{ + exch + /_gs exch ddef + 0 eq { + findcmykcustomcolor + }{ + _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse + { + 4 1 roll 3 npop + findcmykcustomcolor + }{ + 8 -4 roll 4 npop + findrgbcustomcolor + } ifelse + } ifelse + /_is exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _is _gs 1 exch sub setcustomcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/x +{ + /_gf exch ddef + findcmykcustomcolor + /_if exch ddef + /_fc + { + _lp /fill ne + { + _of setoverprint + _if _gf 1 exch sub setcustomcolor + /_lp /fill ddef + } if + } ddef + /_pf + { + _fc + _eo {eofill} {fill} ifelse + } ddef + /_psf + { + _fc + hvashow + } ddef + /_pjsf + { + _fc + hvawidthshow + } ddef + /_lp /none ddef +} def +/X +{ + /_gs exch ddef + findcmykcustomcolor + /_is exch ddef + /_sc + { + _lp /stroke ne + { + _os setoverprint + _is _gs 1 exch sub setcustomcolor + /_lp /stroke ddef + } if + } ddef + /_ps + { + _sc + stroke + } ddef + /_pss + { + _sc + ss + } ddef + /_pjss + { + _sc + jss + } ddef + /_lp /none ddef +} def +/XK +{ + 3 -1 roll pop + 0 eq + { + 1 exch sub + 3 {dup 3 1 roll mul 5 1 roll} repeat + mul 4 1 roll + K + } + { + 1 exch sub 4 1 roll + 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat + 4 -1 roll pop + XA + } ifelse +} def +/Xk +{ + 3 -1 roll pop + 0 eq + { + 1 exch sub + 3 {dup 3 1 roll mul 5 1 roll} repeat + mul 4 1 roll + k + } + { + 1 exch sub 4 1 roll + 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat + 4 -1 roll pop + Xa + } ifelse +} def +/A +{ + pop +} def +/annotatepage +{ +userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse +} def +/XT { + pop pop +} def +/Xt { + pop +} def +/discard +{ + save /discardSave exch store + discardDict begin + /endString exch store + gt38? + { + 2 add + } if + load + stopped + pop + end + discardSave restore +} bind def +userdict /discardDict 7 dict dup begin +put +/pre38Initialize +{ + /endStringLength endString length store + /newBuff buffer 0 endStringLength getinterval store + /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store + /newBuffLast newBuff endStringLength 1 sub 1 getinterval store +} def +/shiftBuffer +{ + newBuff 0 newBuffButFirst putinterval + newBuffLast 0 + currentfile read not + { + stop + } if + put +} def +0 +{ + pre38Initialize + mark + currentfile newBuff readstring exch pop + { + { + newBuff endString eq + { + cleartomark stop + } if + shiftBuffer + } loop + } + { + stop + } ifelse +} def +1 +{ + pre38Initialize + /beginString exch store + mark + currentfile newBuff readstring exch pop + { + { + newBuff beginString eq + { + /layerCount dup load 1 add store + } + { + newBuff endString eq + { + /layerCount dup load 1 sub store + layerCount 0 eq + { + cleartomark stop + } if + } if + } ifelse + shiftBuffer + } loop + } if +} def +2 +{ + mark + { + currentfile buffer {readline} stopped { + % assume error was due to overfilling the buffer + }{ + not + { + stop + } if + endString eq { + cleartomark stop + } if + }ifelse + } loop +} def +3 +{ + /beginString exch store + /layerCnt 1 store + mark + { + currentfile buffer {readline} stopped { + % assume error was due to overfilling the buffer + }{ + not + { + stop + } if + dup beginString eq + { + pop /layerCnt dup load 1 add store + } + { + endString eq + { + layerCnt 1 eq + { + cleartomark stop + } + { + /layerCnt dup load 1 sub store + } ifelse + } if + } ifelse + }ifelse + } loop +} def +end +userdict /clipRenderOff 15 dict dup begin +put +{ + /n /N /s /S /f /F /b /B +} +{ + { + _doClip 1 eq + { + /_doClip 0 ddef _eo {eoclip} {clip} ifelse + } if + newpath + } def +} forall +/Tr /pop load def +/Bb {} def +/BB /pop load def +/Bg {12 npop} def +/Bm {6 npop} def +/Bc /Bm load def +/Bh {4 npop} def +end +/Lb +{ + 6 npop + 7 2 roll + 5 npop + 0 eq + { + 0 eq + { + (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard + } + { + + /clipForward? true def + + /Tx /pop load def + /Tj /pop load def + + currentdict end clipRenderOff begin begin + } ifelse + } + { + 0 eq + { + save /discardSave exch store + } if + } ifelse +} bind def +/LB +{ + discardSave dup null ne + { + restore + } + { + pop + clipForward? + { + currentdict + end + end + begin + + /clipForward? false ddef + } if + } ifelse +} bind def +/Pb +{ + pop pop + 0 (%AI5_EndPalette) discard +} bind def +/Np +{ + 0 (%AI5_End_NonPrinting--) discard +} bind def +/Ln /pop load def +/Ap +/pop load def +/Ar +{ + 72 exch div + 0 dtransform dup mul exch dup mul add sqrt + dup 1 lt + { + pop 1 + } if + setflat +} def +/Mb +{ + q +} def +/Md +{ +} def +/MB +{ + Q +} def +/nc 4 dict def +nc begin +/setgray +{ + pop +} bind def +/setcmykcolor +{ + 4 npop +} bind def +/setrgbcolor +{ + 3 npop +} bind def +/setcustomcolor +{ + 2 npop +} bind def +currentdict readonly pop +end +/XP +{ + 4 npop +} bind def +/XD +{ + pop +} bind def +end +setpacking +%%EndResource +%%BeginResource: procset Adobe_cshow 2.0 8 +%%Title: (Writing System Operators) +%%Version: 2.0 8 +%%CreationDate: (1/23/89) () +%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) +currentpacking true setpacking +userdict /Adobe_cshow 14 dict dup begin put +/initialize +{ + Adobe_cshow begin + Adobe_cshow + { + dup xcheck + { + bind + } if + pop pop + } forall + end + Adobe_cshow begin +} def +/terminate +{ +currentdict Adobe_cshow eq + { + end + } if +} def +/cforall +{ + /_lobyte 0 ddef + /_hibyte 0 ddef + /_cproc exch ddef + /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef + { + /_lobyte exch ddef + _hibyte 0 eq + _cscript 1 eq + _lobyte 129 ge _lobyte 159 le and + _lobyte 224 ge _lobyte 252 le and or and + _cscript 2 eq + _lobyte 161 ge _lobyte 254 le and and + _cscript 3 eq + _lobyte 161 ge _lobyte 254 le and and + _cscript 25 eq + _lobyte 161 ge _lobyte 254 le and and + _cscript -1 eq + or or or or and + { + /_hibyte _lobyte ddef + } + { + _hibyte 256 mul _lobyte add + _cproc + /_hibyte 0 ddef + } ifelse + } forall +} def +/cstring +{ + dup 256 lt + { + (s) dup 0 4 3 roll put + } + { + dup 256 idiv exch 256 mod + (hl) dup dup 0 6 5 roll put 1 4 3 roll put + } ifelse +} def +/clength +{ + 0 exch + { 256 lt { 1 } { 2 } ifelse add } cforall +} def +/hawidthshow +{ + { + dup cstring + show + _hvax _hvay rmoveto + _hvwb eq { _hvcx _hvcy rmoveto } if + } cforall +} def +/vawidthshow +{ + { + dup 255 le + _charorientation 1 eq + and + { + -90 rotate + 0 _fontRotateAdjust rmoveto + cstring + _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow + 0 _fontRotateAdjust neg rmoveto + 90 rotate + } + { + currentpoint + _fontHeight sub + exch _hvay sub exch _hvax sub + 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if + 3 2 roll + cstring + dup stringwidth pop 2 div neg _fontAscent neg rmoveto + show + moveto + } ifelse + } cforall +} def +/hvawidthshow +{ + 6 1 roll + /_hvay exch ddef + /_hvax exch ddef + /_hvwb exch ddef + /_hvcy exch ddef + /_hvcx exch ddef + _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse +} def +/hvwidthshow +{ + 0 0 3 -1 roll hvawidthshow +} def +/hvashow +{ + 0 0 0 6 -3 roll hvawidthshow +} def +/hvshow +{ + 0 0 0 0 0 6 -1 roll hvawidthshow +} def +currentdict readonly pop end +setpacking +%%EndResource +%%BeginResource: procset Adobe_shading_AI8 1.0 0 +%%Title: (Adobe Illustrator 8 Shading Procset) +%%Version: 1.0 0 +%%CreationDate: (12/17/97) () +%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved) +userdict /defaultpacking currentpacking put true setpacking +userdict /Adobe_shading_AI8 10 dict dup begin put +/initialize { + Adobe_shading_AI8 begin + Adobe_shading_AI8 bdprocs + Mesh /initialize get exec +} def +/terminate { + currentdict Adobe_shading_AI8 eq { + end + } if +} def +/bdprocs { + { + dup xcheck 1 index type /arraytype eq and { + bind + } if + pop pop + } forall +} def +/X! {pop} def +/X# {pop pop} def +/Mesh 40 dict def +Mesh begin +/initialize { + Mesh bdprocs + Mesh begin + /emulate? /AI8MeshEmulation where { + pop AI8MeshEmulation + }{ + systemdict /shfill known not + } ifelse def + end +} def +/bd { + shadingdict begin +} def +/paint { + emulate? { + end + }{ + /_lp /none ddef _fc /_lp /none ddef + + /AIColorSpace AIColorSpace tocolorspace store + /ColorSpace AIColorSpace topsspace store + + version_ge_3010.106 not systemdict /setsmoothness known and { + 0.0001 setsmoothness + } if + + composite? { + /DataSource getdatasrc def + Matrix concat + currentdict end + shfill + }{ + AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and { + end + }{ + /ColorSpace /DeviceGray store + /Decode [0 1 0 1 0 1] store + /DataSource getplatesrc def + Matrix concat + currentdict end + shfill + } ifelse + } ifelse + } ifelse +} def +/shadingdict 12 dict def +shadingdict begin + /ShadingType 6 def + /BitsPerCoordinate 16 def + /BitsPerComponent 8 def + /BitsPerFlag 8 def +end +/datafile null def +/databuf 256 string def +/dataptr 0 def +/srcspace null def +/srcchannels 0 def +/dstchannels 0 def +/dstplate 0 def +/srctodstcolor null def +/getplatesrc { + /srcspace AIColorSpace store + /srcchannels AIColorSpace getnchannels store + /dstchannels 1 store + /dstplate getplateindex store + /srctodstcolor srcspace makesmarks { + dstplate 4 eq { + {1 exch sub} + }{ + {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat} + } ifelse + }{ + {srcchannels {pop} repeat 1} + } ifelse store + /datafile getdatasrc store + /rdpatch168 load DataLength () /SubFileDecode filter +} def +/getdatasrc { + /rdcmntline load /ASCII85Decode filter +} def +/rdpatch168 { + /dataptr 0 store + 49 rdcount + 4 { + dup {pop srcchannels getint8} if + dup {pop srctodstcolor dstchannels putint8 true} if + } repeat + {databuf 0 dataptr getinterval}{()} ifelse +} def +/rdpatch3216 { + /dataptr 0 store + 97 rdcount + 4 { + dup {pop srcchannels getint16} if + dup {pop srctodstcolor dstchannels putint16 true} if + } repeat + {databuf 0 dataptr getinterval}{()} ifelse +} def +/rdcount { + dup 0 gt { + datafile databuf dataptr 4 -1 roll getinterval readstring + exch length dataptr add /dataptr exch store + }{ + true + } ifelse +} def +/getint8 { + mark true 3 -1 roll + { + dup {pop datafile read} if + dup {pop 255 div true} if + } repeat + { + counttomark 1 add -1 roll pop true + }{ + cleartomark false + } ifelse +} def +/putint8 { + dup dataptr add /dataptr exch store + dataptr exch + { + 1 sub exch + 255 mul cvi + databuf 2 index + 3 -1 roll put + } repeat + pop +} def +/getint16 { + mark true 3 -1 roll + { + dup {pop datafile read} if + dup {pop 256 mul datafile read} if + dup {pop add 65535 div true} if + } repeat + { + counttomark 1 add -1 roll pop true + }{ + cleartomark false + } ifelse +} def +/putint16 { + dup 2 mul dataptr add /dataptr exch store + dataptr exch + { + 2 sub exch + 65535 mul cvi dup + 256 idiv databuf 3 index 3 -1 roll put + 256 mod databuf 2 index 1 add 3 -1 roll put + } repeat + pop +} def +/srcbuf 256 string def +/rdcmntline { + currentfile srcbuf readline pop + (%) anchorsearch {pop} if +} def +/getplateindex { + 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall +} def +/aicsarray 4 array def +/aicsaltvals 4 array def +/aicsaltcolr aicsaltvals def +/tocolorspace { + dup type /arraytype eq { + mark exch aload pop + aicsarray 0 3 -1 roll put + aicsarray 1 3 -1 roll put + dup aicsarray 2 3 -1 roll put + gettintxform aicsarray 3 3 -1 roll put + counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store + aicsaltcolr astore pop pop + aicsarray + } if +} def +/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def +/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def +/gettintxform { + /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load +} def +/getnchannels { + dup type /arraytype eq {0 get} if + colorspacedict exch get begin Channels end +} def +/makesmarks { + composite? { + pop true + }{ + dup dup type /arraytype eq {0 get} if + colorspacedict exch get begin MarksPlate end + } ifelse +} def +/markingplate { + composite? { + pop true + }{ + dup type /arraytype eq { + dup length getplateindex gt {getplateindex get}{pop false} ifelse + } if + } ifelse +} def +/tocmyk { + dup dup type /arraytype eq {0 get} if + colorspacedict exch get begin ToCMYK end +} def +/topsspace { + dup dup type /arraytype eq {0 get} if + colorspacedict exch get begin ToPSSpace end +} def +/colorspacedict 5 dict dup begin + /DeviceGray 4 dict dup begin + /Channels 1 def + /MarksPlate {pop black?} def + /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def + /ToPSSpace {} def + end def + /DeviceRGB 4 dict dup begin + /Channels 3 def + /MarksPlate {pop isCMYKSep?} def + /ToCMYK {pop _rgbtocmyk} def + /ToPSSpace {} def + end def + /DeviceCMYK 4 dict dup begin + /Channels 4 def + /MarksPlate {pop isCMYKSep?} def + /ToCMYK {pop} def + /ToPSSpace {} def + end def + /Separation 4 dict dup begin + /Channels 1 def + /MarksPlate { + /findcmykcustomcolor where { + pop dup 1 exch ToCMYK 5 -1 roll 1 get + findcmykcustomcolor 1 setcustomcolor + systemdict /currentgray get exec + 1 ne + }{ + pop false + } ifelse + } def + /ToCMYK { + dup 2 get mark exch 4 2 roll + 3 get exec + counttomark -1 roll tocmyk + 5 -1 roll pop + } def + /ToPSSpace {} def + end def + /Process 4 dict dup begin + /Channels 1 def + /MarksPlate { + isCMYKSep? { + 1 exch ToCMYK 4 array astore getplateindex get 0 ne + }{ + pop false + } ifelse + } def + /ToCMYK { + dup 2 get mark exch 4 2 roll + 3 get exec + counttomark -1 roll tocmyk + 5 -1 roll pop + } def + /ToPSSpace { + 4 array copy dup 0 /Separation put + } def + end def +end def +/isoverprint { + /currentoverprint where {pop currentoverprint}{_of} ifelse +} def +/version_ge_3010.106 { + version {cvr} stopped { + pop + false + }{ + 3010.106 ge + } ifelse +} def +end +end +defaultpacking setpacking +%%EndResource +%%EndProlog %%BeginSetup userdict /_useSmoothShade false put userdict /_aicmykps true put userdict /_forceToCMYK true put Adobe_level2_AI5 /initialize get exec +Adobe_cshow /initialize get exec +Adobe_ColorImage_AI6 /initialize get exec +Adobe_shading_AI8 /initialize get exec +Adobe_Illustrator_AI5 /initialize get exec +%AI3_BeginRider currentpacking true setpacking setpacking %AI3_EndRider %AI5_Begin_NonPrinting Np %AI8_PluginGroupInfo (Adobe Path Blends) (Adobe Blends Plugin) (LiveBlends.aip) %AI8_PluginGroupInfo (Adobe Tracing Object) (Tracing) (TracingSuite.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip) %AI8_PluginGroupInfo (Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (CalligBrushTool.aip) %AI8_PluginGroupInfo (Adobe Flare Plugin) (Flare) (Flare.aip) %AI8_PluginGroupInfo (Adobe Symbolism) (Adobe Symbolism) (ParticleSystem.aip) %AI8_PluginGroupInfo (Adobe Deform Plugin) (Adobe Envelope Plugin) (Envelope and Warp.aip) %AI8_PluginGroupInfo (Pathfinder Suite) (Adobe Compound Shape) (PathFinderS.aip) %AI8_PluginGroupInfo (Adobe Planar Group) (Adobe Live Paint Plugin) (Live Paint.aip) %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 0.74902 0.678431 0.670588 0.901961 ([Registration]) 0 Xs ([Registration]) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 1 0 79 128 255 0 50 Lb (svg2279) Ln 0 A u U u u u 0 O 0 0 0 0 1 1 1 Xa 0 R 0.74902 0.678431 0.670588 0.901961 0 0 0 XA 0 J 0 j 1.04162 w 4 M []0 d 0 XR 360.9937 306.4668 m 439.9941 306.4668 L 439.9941 292.4668 L 360.9937 292.4668 L 360.9937 306.4668 L b 0.74902 0.678431 0.670588 0.901961 0 0 0 Xa 1 w 362.4751 305.0669 m 438.5127 305.0669 L 438.5127 293.8672 L 362.4751 293.8672 L 362.4751 305.0669 L f 1 D 0.345098 0.239216 0.309804 0 0.670588 0.694118 0.666667 Xa 362.4751 305.0547 m 362.4751 293.8545 L 382.5557 293.8545 L 383.8477 295.4883 384.7197 297.3867 384.7197 299.4546 c 384.7197 301.5088 383.8628 303.4282 382.5864 305.0547 C 362.4751 305.0547 L f q 0 D 362.6411 305.0669 m 382.2085 305.0669 L 382.2085 293.8672 L 362.6411 293.8672 L 362.6411 305.0669 L h W n u 0 O 0 0 0 0 1 1 1 Xa 379.79 299.4668 m 379.792 295.9746 376.7988 293.1426 373.1045 293.1406 c 369.4106 293.1387 366.4136 295.9668 366.4116 299.459 c 366.4116 299.4614 366.4116 299.4639 366.4116 299.4668 c 366.4092 302.9585 369.4023 305.791 373.0967 305.793 C 376.791 305.7949 379.7876 302.9658 379.79 299.4741 c 379.79 299.4717 379.79 299.4692 379.79 299.4668 c f *u 0.74902 0.678431 0.670588 0.901961 0 0 0 Xa 378.5386 304.6162 m 380.0215 303.2144 380.7637 301.4976 380.7637 299.4668 c 380.7637 297.4355 380.0347 295.7373 378.5767 294.3711 C 377.0293 292.9326 375.2012 292.2129 373.0913 292.2129 c 371.0068 292.2129 369.21 292.9268 367.7012 294.3535 C 366.1919 295.7793 365.4375 297.4844 365.4375 299.4668 c 365.4375 301.4492 366.1919 303.166 367.7012 304.6162 C 369.1714 306.019 370.9683 306.7202 373.0913 306.7202 c 375.2397 306.7202 377.0552 306.019 378.5386 304.6162 C f 1 D 368.6997 303.6733 m 367.4453 302.4761 366.8188 301.0737 366.8188 299.4648 c 366.8188 297.8564 367.4395 296.4658 368.6802 295.293 C 369.9214 294.1201 371.3994 293.5332 373.1138 293.5332 c 374.8281 293.5332 376.3184 294.126 377.585 295.3105 C 378.7876 296.4121 379.3892 297.7959 379.3892 299.4648 c 379.3892 301.1211 378.7778 302.5273 377.5562 303.6821 C 376.3345 304.8369 374.8535 305.4146 373.1138 305.4146 c 371.3735 305.4146 369.9019 304.834 368.6997 303.6733 C f 0 D 372 300.1724 m 371.8081 300.5674 371.5215 300.7646 371.1387 300.7646 c 370.4624 300.7646 370.1245 300.3345 370.1245 299.4741 c 370.1245 298.6133 370.4624 298.1836 371.1387 298.1836 c 371.5854 298.1836 371.9043 298.3926 372.0957 298.8125 C 373.0332 298.3408 L 372.5864 297.5898 371.916 297.2148 371.022 297.2148 c 370.3325 297.2148 369.7803 297.415 369.3657 297.8145 C 368.9502 298.2139 368.7432 298.7646 368.7432 299.4668 c 368.7432 300.1567 368.957 300.7041 369.3848 301.1099 C 369.8125 301.5156 370.3452 301.7183 370.9839 301.7183 c 371.9287 301.7183 372.6055 301.3662 373.0146 300.6631 C 372 300.1724 L f 376.4102 300.1724 m 376.2183 300.5674 375.9375 300.7646 375.5669 300.7646 c 374.877 300.7646 374.5317 300.3345 374.5317 299.4741 c 374.5317 298.6133 374.877 298.1836 375.5669 298.1836 c 376.0142 298.1836 376.3271 298.3926 376.5059 298.8125 C 377.4644 298.3408 L 377.0186 297.5898 376.3491 297.2148 375.4565 297.2148 c 374.7681 297.2148 374.2173 297.415 373.8027 297.8145 C 373.3887 298.2139 373.1816 298.7646 373.1816 299.4668 c 373.1816 300.1567 373.3921 300.7041 373.8125 301.1099 C 374.2329 301.5156 374.7681 301.7183 375.4185 301.7183 c 376.3618 301.7183 377.0376 301.3662 377.4448 300.6631 C 376.4102 300.1724 L f *U U /AdobeObjectMatrix (0.961253 0.000000 0.000000 0.961253 6.834157 9.506999) XT Q U /AdobeObjectMatrix (1.000000 0.000000 0.000000 1.000000 158.000000 54.000000) XT 0 A *u 1 D 0 O 0 0 0 0 1 1 1 Xa 0 J 0 j 1 w 4 M []0 d 0 XR 389.5518 300.0986 m 389.7944 300.0986 389.978 300.1484 390.1035 300.2485 c 390.2285 300.3486 390.291 300.4961 390.291 300.6914 c 390.291 300.8838 390.2285 301.0303 390.1035 301.1304 C 389.978 301.2324 389.7944 301.2842 389.5518 301.2842 C 388.7007 301.2842 L 388.7007 300.0986 L 389.5518 300.0986 L F 389.604 297.6494 m 389.9131 297.6494 390.1445 297.7109 390.2993 297.833 C 390.4565 297.9551 390.5352 298.1406 390.5352 298.3887 c 390.5352 298.6309 390.4575 298.8125 390.3032 298.9316 C 390.1489 299.0547 389.9155 299.1162 389.604 299.1162 C 388.7007 299.1162 L 388.7007 297.6494 L 389.604 297.6494 L F 0 D 391.0347 299.6636 m 391.3647 299.5737 391.6206 299.4072 391.8018 299.1646 c 391.9829 298.9219 392.0732 298.625 392.0732 298.2715 c 392.0732 297.7324 391.8789 297.3291 391.4897 297.0645 c 391.1011 296.7988 390.5098 296.666 389.7158 296.666 C 387.1626 296.666 L 387.1626 302.2666 L 389.4722 302.2666 L 390.3008 302.2666 390.8999 302.1494 391.27 301.9141 C 391.6431 301.6792 391.8296 301.3027 391.8296 300.7852 c 391.8296 300.5127 391.7617 300.2798 391.626 300.0874 C 391.4897 299.8975 391.293 299.7559 391.0347 299.6636 C F 391.9395 302.2666 m 393.6216 302.2666 L 394.9805 300.2715 L 396.3389 302.2666 L 398.0249 302.2666 L 395.7515 299.0259 L 395.7515 296.666 L 394.2129 296.666 L 394.2129 299.0259 L 391.9395 302.2666 L F *U U /AdobeObjectMatrix (0.987502 0.000000 0.000000 0.933352 -323.900635 -271.876892) XT U LB %AI5_EndLayer-- %AI3_BeginCrops userdict /AI3_noCropMarks known not { 0 A u u 0 R 0 G 0 J 0 j 0.5 w 4 M []0 d 0 XR 351.5 292 m 324.5 292 L S 360.5 283 m 360.5 256 L S U u 351.5 307 m 324.5 307 L S 360.5 316 m 360.5 343 L S U u 449.5 307 m 476.5 307 L S 440.5 316 m 440.5 343 L S U u 449.5 292 m 476.5 292 L S 440.5 283 m 440.5 256 L S U U } if %AI3_EndCrops %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec +Adobe_shading_AI8 /terminate get exec +Adobe_ColorImage_AI6 /terminate get exec +Adobe_cshow /terminate get exec +Adobe_level2_AI5 /terminate get exec +%%EOF \ No newline at end of file diff --git a/paper/iacrtrans-tches/iacrtrans/CC-by.pdf b/paper/iacrtrans-tches/iacrtrans/CC-by.pdf new file mode 100644 index 0000000..7b790d0 Binary files /dev/null and b/paper/iacrtrans-tches/iacrtrans/CC-by.pdf differ diff --git a/paper/iacrtrans-tches/iacrtrans/COPYING b/paper/iacrtrans-tches/iacrtrans/COPYING new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/paper/iacrtrans-tches/iacrtrans/COPYING @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/paper/iacrtrans-tches/iacrtrans/iacrdoc.pdf b/paper/iacrtrans-tches/iacrtrans/iacrdoc.pdf new file mode 100644 index 0000000..fda518b Binary files /dev/null and b/paper/iacrtrans-tches/iacrtrans/iacrdoc.pdf differ diff --git a/paper/iacrtrans-tches/iacrtrans/iacrdoc.tex b/paper/iacrtrans-tches/iacrtrans/iacrdoc.tex new file mode 100644 index 0000000..daba3ee --- /dev/null +++ b/paper/iacrtrans-tches/iacrtrans/iacrdoc.tex @@ -0,0 +1,371 @@ +% IACR Transactions CLASS DOCUMENTATION -- version 0.24 (26 August 2016) +% Written by Gaetan Leurent gaetan.leurent@inria.fr (2016) +% +% To the extent possible under law, the author(s) have dedicated all +% copyright and related and neighboring rights to this software to the +% public domain worldwide. This software is distributed without any +% warranty. +% +% You should have received a copy of the CC0 Public Domain Dedication +% along with this software. If not, see +% . + +\documentclass[preprint]{iacrtrans} +\usepackage[utf8]{inputenc} + +\author{Gaëtan Leurent\inst{1} \and Alice\inst{2} \and Bob\inst{2}} +\institute{Inria, France, \email{gaetan.leurent@inria.fr} \and ACME} +\title[\texttt{iacrtans} class documentation]{\publname} +\subtitle{\LaTeX{} Class Documentation (v. 0.24)} + +\begin{document} + +\maketitle + +% use optional argument because the \LaTeX command breaks the PDF keywords +\keywords[\publname, TCHES, LaTeX]{\publname \and TCHES \and \LaTeX} + +\begin{abstract} + This document is a quick introduction to the \LaTeX{} class for the + \publname{}. +\end{abstract} + +\section*{Introduction} + +The \texttt{iacrtans} \LaTeX{} class will be used by the new +``\publname'' journal. The class is based on standard \LaTeX{} +classes and packages (mainly the \texttt{article} class with +\texttt{amsmath}), and should be similar in use to the \texttt{llncs} +class used for Springer's proceedings. The \LaTeX{} source of this +documentation is meant as an example to show basic usage of the class. + +Since we are now preparing the zero-th issue of the journal, the class +is still in development and feedback and comments are welcome. + +\subsection*{\textcolor{red!70!black}{FAQ:} Converting \texttt{llncs} papers to \texttt{iacrtrans}} + +If you have a paper typeset with the \texttt{llncs} class, conversion +should be relatively easy. The following steps should be sufficient +in most cases (for the submission version): +\begin{enumerate} +\item Replace \verb+\documentclass{llncs}+ with\\ \verb+\documentclass[submission,spthm]{iacrtrans}+; +\item Replace \verb+\bibliographystyle{splncs03}+ with + \verb+\bibliographystyle{alpha}+; +\item Add a \verb+\keywords{}+ command before the abstract, with + keywords separated by \verb+\and+; +\item Remove commands that might override the class style, such as + \verb+\pagestyle{...}+ or \verb+\thispagestyle{...}+, + change of margins (\emph{e.g.} with the \texttt{geometry} package), + change of fonts, .... +\item See also \autoref{sec:biblio} for information about how to + typeset the bibliography. +\end{enumerate} + +\section{Main Commands} + +\subsection{Title page} + +The following commands are used to input informations for the title page. + +\paragraph{\texttt{\textbackslash title}} to define the title. + +A shorter running title can be given as optional argument. + +\paragraph{\texttt{\textbackslash subtitle}} to give an optional +subtitle. + +\paragraph{\texttt{\textbackslash author}} to define the author list. + +Author names must be delimited by \verb+\and+ macros. If there is one +different affiliation for each author, authors and affiliations will be +numbered automatically. Otherwise, each author name must be followed by +\verb+\inst{...}+ with the corresponding affiliation(s). + +A shorter list of authors for the running head can be given as +optional argument. + +\paragraph{\texttt{\textbackslash institute}} to give author's affiliation(s). + +If there are several affiliations, they must be separated by +\verb+\and+ macros, and will be numbered automatically. + +\paragraph{\texttt{\textbackslash keywords}} to give a list of +keywords. + +Individual keywords should be separated by the \verb+\and+ macro. + +If there are fragile commands in the keywords, use the optional argument +to give a text-only version of the keywords; this will be used for the +PDF meta-data. + +\paragraph{\texttt{\textbackslash email}} should be used inside the +\verb+\institute+ argument to typeset author's email address(es). An +optional argument can be given for the hyperlink, if different from the +displayed email. For instance, you can group emails as follows:\\ +\verb+\email[alice@foo.com,bob@bob.com]{{alice,bob}@foo.com}+ + +\paragraph{\texttt{\textbackslash thanks}} +can be used inside the \verb+\title+, +\verb+\author+ or \verb+\institute+ argument to generate a footnote with additional +information, if needed. + +\paragraph{\texttt{\textbackslash maketitle}} is used to actually +typeset the title. + +\paragraph{The \texttt{abstract} environment} should be used to typeset the abstract. + +Note that the keywords should be given before starting the abstract environment. + + +\subsection{Theorems} + +The \texttt{iacrtrans} class uses the \AmS{} packages to typeset +math. In particular, it loads the \texttt{amsthm} package, and +predefines the following environments: +\begin{center} + \ttfamily +\begin{tabular}{l@{\hspace{1cm}}l@{\hspace{1cm}}l} +theorem & definition & remark \\ +proposition & example & note \\ +problem & exercise & case \\ +lemma & property & \\ +conjecture & question & \\ +corollary & solution & \\ +claim & & \\ +\end{tabular} +\end{center} + +Note that the \texttt{proof} environment automatically adds a QED +symbol at the end of the proof (unless you give option +\texttt{[spthm]} to the \texttt{iacrtrans} class). If the QED symbol +is typeset at a wrong position, you can force its position with +\verb+\qedhere+. + +\section{Class options} +\label{sec:options} + +\subsection{Publication type} + +The class supports four publication types, selected with the +following class options: + +\begin{description} +\item[\texttt{[final]}] for final papers (default mode) +\item[\texttt{[preprint]}] for preprints (without copyright info) +\item[\texttt{[submission]}] for submissions (anonymous, with line numbers) +\item[\texttt{[draft]}] is similar to preprint, but activates draft + mode for the underlying \texttt{article} class (which shows overfull hboxes), and other packages + (\emph{e.g.} \texttt{graphicx}, \texttt{hyperref}). +\end{description} + +\subsection{Other Options} + +\paragraph{\texttt{[spthm]}} +provides theorem environments that emulates +\texttt{llncs} class's \texttt{sptheorem}: +\begin{itemize} +\item A \texttt{\textbackslash spnewtheorem} wrapper is provided + around \AmS{} \texttt{\textbackslash newtheorem}. Note that the + styling options are ignored; you should use standard + \texttt{amsthm} commands for fine control. +\item The \AmS{} \texttt{proof} environment will not automatically add a + QED symbol at the end of the proof. +\end{itemize} + +\paragraph{\texttt{[floatrow]}} +uses the \texttt{floatrow} package to customize floats rather than the +plain \texttt{float} package. In particular, this allows to typeset +floats side by side as shown in this example: +\begin{verbatim} +\documentclass[floatrow]{iacrtrans} +\usepackage[demo]{graphicx} +\begin{document} + +\begin{figure} + \begin{floatrow} + \ffigbox{\includegraphics[width=0.4\textwidth]{1.png}} + {\caption{This is caption 1.}} + \ffigbox{\includegraphics[width=0.4\textwidth]{2.png}} + {\caption{This is caption 2.}} + \end{floatrow} +\end{figure} + +\end{document} +\end{verbatim} + +The row will be divided equally according to the number of figures, but +you can ask each figure to take its natural space instead with +\verb+\ffigbox[\FBwidth]+. For more advanced use, see the +\texttt{floatrow} documentation. + + +\paragraph{\texttt{[nohyperref]}} +disables the automatic loading of +\texttt{hyperref}. Use this is if your document fails to compile with +\texttt{hyperref} for some reason. + +The \texttt{iacrtrans} class automatically loads \texttt{hyperref} +after all other packages. If you need some packages to be loaded +\emph{after} \texttt{hyperref}, you should load \texttt{hyperref} +explicitly at the correct position, but not use the \texttt{[nohyperref]} option. + +\section{Typesetting the Bibliography} +\label{sec:biblio} + +% Borrowed from btxdoc.tex +\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} + +Having good bibliographic references is very important for the +visibility of the journal. Since we don't have a commercial editor, +authors need to make sure themselves that references are standardized +and clean. We strongly encourage authors to use \BibTeX{} for the +bibliograpy, using bibliographic data +from \url{http://www.dblp.org} or \url{https://cryptobib.di.ens.fr/}. + +We are still working on a good solution for the bibliography, and we +expect to have more specific instructions when producing the final +version of the papers, including a dedicated \BibTeX{} style. + + +\section{Further instructions} + +\paragraph{\LaTeX{} distribution, and worklow.} \LaTeX{} +distributions are available on a variaty of platforms. In particular, +we recommand the \href{https://www.tug.org/texlive/}{TeX Live} +distribution, which is updated regularly, include a large number of +packages, and is available on many platforms. +\begin{description} +\item[Linux:] A LaTeX installation is included in most Linux + distributions. Alternatively, + \href{https://www.tug.org/texlive/}{TeX Live} can be installed + easily without root access. +\item[Windows:] There are also good \LaTeX{} distributions for Windows, + such as \href{http://www.miktex.org/}{MikTeX} and + \href{https://www.tug.org/texlive/}{TeX Live}. +\item[MacOSX:] On MacOSX, TeX Live is available inside + \href{http://www.tug.org/mactex/}{MacTeX}. +\end{description} + + +We recommand the use of \texttt{pdflatex} because it generally +supports more features than \texttt{latex} and \texttt{dvips} +(\texttt{xelatex} and \texttt{lualatex} are also missing some advanced +features from \texttt{pdflatex}). + +\paragraph{Internal references.} + +We recommend the use of \verb+\autoref+ from \texttt{hyperref} +(automatically loaded by the class). For instance, +\verb+\autoref{sec:options}+ links to \autoref{sec:options}. + +\paragraph{Pictures.} + +We recommend the use of the \texttt{tikz} package to render pictures. + +In particular, a large variety of crypto pictures made with +\texttt{tikz} is available at \url{http://www.iacr.org/authors/tikz/}. + +\paragraph{External pictures.} The \texttt{graphicx} is loaded by the +class, and is recommended for external figures. + +If possible, external figures should be in a vector format: you can +use PDF files when compiling with \texttt{pdflatex}, and EPS files +when compiling with \texttt{latex}, and \texttt{dvips}. Note that the +\verb+\includegraphics+ command will automatically select a file with +the right extension, so if you write \verb+\includegraphics{figure}+ +and have two files \texttt{figure.pdf} and \texttt{figure.eps}, it +should work with both workflow. + +\paragraph{Floats.} + +Figure captions should be below the figures, and table captions above +the tables. The \texttt{float} package loaded by the class should +take care of this automatically. If want to have several figures side +by side, see the \texttt{[floatrow]} option. + +\paragraph{Tables.} + +We recommend the \texttt{booktabs} package to typeset tables. + +\paragraph{Algorithms.} + +We recommend the \texttt{algorithm}, \texttt{algorithmcx} packages for +algorithms (in particular, \texttt{algpseudocode} for pseudo-code). + + +\section{For the Editor} + +The following commands should be used by the editor to prepare the final +version: + +\paragraph{\texttt{\textbackslash setfirstpage}} to set the first page number. + +\paragraph{\texttt{\textbackslash setlastpage}} to set the first page +number (optional). + +\paragraph{\texttt{\textbackslash setvolume}} to set the volume number. + +\paragraph{\texttt{\textbackslash setnumber}} to set the edition number. + +\paragraph{\texttt{\textbackslash setDOI}} to set the DOI. + + +\section{Further information} + +More general information can be found in the following documents: +\begin{itemize} +\item General \LaTeX{} documentation, such as the + \href{http://mirrors.ctan.org/info/lshort/english/lshort.pdf}{(not + so) short introduction to \LaTeXe}; +% \item The \texttt{article} class +% \href{http://mirrors.ctan.org/macros/latex/doc/clsguide.pdf}{documentation}; +\item The \AmS-\LaTeX{} + \href{http://mirrors.ctan.org/macros/latex/required/amslatex/math/amsldoc.pdf}{documentation} + and \texttt{amsthm} \href{ftp://ftp.ams.org/pub/tex/doc/amscls/amsthdoc.pdf}{documentation}; +\item Documentation of the \LaTeX{} packages used in the class (see below). +\end{itemize} + +\subsection{Packages used} + +The class is based on the standard \texttt{article} class, and loads +the following packages: +\begin{itemize} +\item \texttt{geometry}, \texttt{secsty}, \texttt{fancyhdr}, \texttt{mathtools}, + \texttt{float}, \texttt{microtype}, \texttt{lastpage} +\item \texttt{amsmath}, \texttt{amssymb}, \texttt{amsthm} +\item \texttt{graphicx} +\item \texttt{hyperref}, \texttt{hyperxmp}, \texttt{etoolbox}, \texttt{xcolor} (unless + the \texttt{[nohyperref]} option is used) +\item \texttt{lineno} (in \texttt{[submission]} mode) +\item \texttt{floatrow,caption} (with option \texttt{[floatrow]}) +\end{itemize} + +\section*{Thanks} + +We would like to thank people who helped design and improve the +class: +Anne Canteaut, +Jérémy Jean, +Bart Preneel, +Christian Rechberger, +Tyge Tiessen, +Friedrich Wiemer. + +\section*{Changes} + +\begin{description} +\item[v 0.21] First public version +\item[v 0.22] Added documentations. Minor tweaks in the class. +\item[v 0.23] More documentation. Removed some extra line-numbers + with AMS environments in submission mode. Make \verb+autoref+ + capitalize sections. Table caption are now above tables. Rewritten + running authors and running title. Added PDF info (title, author, + keyword). Optional argument for \verb+\email+. Added + \texttt{floatrow} option. +\item[v 0.24] Added CC licence text, and added XMP metadata. Fixed some + metadata transformations. +\end{description} + + +\end{document} diff --git a/paper/iacrtrans-tches/iacrtrans/iacrtrans.cls b/paper/iacrtrans-tches/iacrtrans/iacrtrans.cls new file mode 100644 index 0000000..bf42a75 --- /dev/null +++ b/paper/iacrtrans-tches/iacrtrans/iacrtrans.cls @@ -0,0 +1,448 @@ +% IACR Transactions DOCUMENT CLASS -- version 0.24 (26 August 2016) +% Written by Gaetan Leurent gaetan.leurent@inria.fr (2016) +% +% To the extent possible under law, the author(s) have dedicated all +% copyright and related and neighboring rights to this software to the +% public domain worldwide. This software is distributed without any +% warranty. +% +% You should have received a copy of the CC0 Public Domain Dedication +% along with this software. If not, see +% . +% +% +%%% Class options: +% +% [preprint] Preprint (no copyright info) +% [submission] Anonymous submission +% [spthm] Emulate llncs sptheorem and remove automatic \qed in proof +% [nohyperref] Disable automatic loading of hyperref +% [draft] +% +%%% HOWTO use this class +% +%% Title +% \title[short]{Long title} +% +%% Authors/affiliation: +% \author{Alice \and Bob} +% \institute{ABC\\ \email{alice@abc} \and DEF\\ \email{bob@def}} +% +%% Keywords/abstract: +% \keywords{banana \and apple} +% \begin{abstract} +% Lorem ipsum dolor sit amet... +% \end{abstract} +% +%% Warnings +% - please don't use any \pagestyle of \thispagestyle command +% - if you have proof with explicit \qed inside, you should either +% remove \qed symbols, replace them by \qedhere, or add option [spthm] + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{iacrtrans}[2016/08/26 v0.24 IACR Transactions Author Class] + +% Common definitions +\def\publname{IACR Transactions on Cryptographic Hardware and Embedded Systems} +\def\IACR@vol{0} +\def\IACR@no{0} +\def\IACR@fp{1} +\def\IACR@DOI{XXXXXXXX} +\usepackage{lastpage} +\def\IACR@lp{\pageref*{LastPage}} + +\newcommand{\setfirstpage}[1]{\def\IACR@fp{#1}\setcounter{page}{#1}} +\newcommand{\setlastpage}[1]{\def\IACR@lp{#1}} +\newcommand{\setvolume}[1]{\def\IACR@vol{#1}} +\newcommand{\setnumber}[1]{\def\IACR@no{#1}} +\newcommand{\setDOI}[1]{\def\IACR@DOI{#1}} + +% Options +\newif\if@loadhr +\@loadhrtrue +\DeclareOption{nohyperref}{\@loadhrfalse} +\newif\if@floatrow +\@floatrowfalse +\DeclareOption{floatrow}{\@floatrowtrue} +\newif\if@submission +\@submissionfalse +\newif\if@preprint +\@preprintfalse +\DeclareOption{final}{\PassOptionsToClass{\CurrentOption}{article}} % Default +\DeclareOption{preprint}{\@preprinttrue} +\DeclareOption{submission}{\@submissiontrue} +\DeclareOption{draft}{\@preprinttrue\PassOptionsToClass{\CurrentOption}{article}} +\newif\if@spthm +\@spthmfalse +\DeclareOption{spthm}{\@spthmtrue} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions\relax + +% article class with a4paper +\LoadClass[10pt,twoside]{article}[2007/10/19] + +% Geometry +\RequirePackage[a4paper,hscale=0.65,vscale=0.75,marginratio=1:1]{geometry} + +% Title fonts: bf+sf +\RequirePackage{sectsty} +\allsectionsfont{\sffamily\boldmath} +% Also for descrptions +\renewcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries\sffamily #1} + + +% Title/Author/affiliations +\def\@institute{No institute given.} +\newcommand{\institute}[1]{\gdef\@institute{#1}} +\newcommand{\authorrunning}[1]{\gdef\IACR@runningauthors{#1}} +\newcommand{\titlerunning}[1]{\gdef\IACR@runningtitle{#1}} + +\newcounter{IACR@author@cnt} +\newcounter{IACR@inst@cnt} +\newif\if@IACR@autoinst +\@IACR@autoinsttrue +\def\IACR@author@last{0} + +\renewcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \long\def\@makefntext##1{\parindent 1em\noindent + \hb@xt@1.8em{% + \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \thispagestyle{title}\@thanks + \endgroup + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + \global\let\@thanks\@empty +% \global\let\@author\@empty + \global\let\@date\@empty +% \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax +} +\def\@maketitle{% + % Count authors and affiliations + \setcounter{IACR@author@cnt}{1}% + \setcounter{IACR@inst@cnt}{1}% + \setbox0\hbox{\def\thanks##1{\global\@IACR@autoinstfalse}\def\inst##1{\global\@IACR@autoinstfalse}\def\and{\stepcounter{IACR@author@cnt}}\@author}% + \setbox0\hbox{\def\and{\stepcounter{IACR@inst@cnt}}\@institute}% + \xdef\IACR@author@last{\theIACR@author@cnt}% + \edef\IACR@inst@last{\theIACR@inst@cnt}% + \ifnum\IACR@author@last=\IACR@inst@last\else\@IACR@autoinstfalse\fi + \ifnum\IACR@author@last=1 \@IACR@autoinstfalse\fi + \newpage + \null + \vskip 2em% + \begin{center}% + \let \footnote \thanks + {\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% + {\LARGE \bfseries\sffamily\boldmath \@title\par} + \ifdefined\@subtitle\vskip .5em{\large\sffamily\bfseries\@subtitle\par}\fi}% + \vskip 1.5em% + {\large + \lineskip .5em% + \if@submission + Anonymous Submission + \else + \setcounter{IACR@author@cnt}{1}% + \def\and{\if@IACR@autoinst\inst{\theIACR@author@cnt} \fi + \stepcounter{IACR@author@cnt}% + \ifnum\theIACR@author@cnt=\IACR@author@last\unskip\space and \ignorespaces\else\unskip, \ignorespaces\fi} + \@author\if@IACR@autoinst\inst{\theIACR@author@cnt}\fi + \vskip 1em\par + \small + \setcounter{IACR@author@cnt}{1}% + \def\and{\par\stepcounter{IACR@author@cnt}$^\theIACR@author@cnt$~} + \ifnum\IACR@inst@last>1 $^1$~\fi + \@institute + \fi + }% + \end{center}% + \par + \vskip 1.5em} + +\def\IACR@runningauthors{ + \def\thanks##1{}% + \def\inst##1{}% + \def\fnmsep{}% + \def\\{}% + \def\footnote##1{}% + \setcounter{IACR@author@cnt}{1}% + \def\and{\stepcounter{IACR@author@cnt}% + \ifnum\theIACR@author@cnt=\IACR@author@last\unskip\space and \ignorespaces\else\unskip, \ignorespaces\fi} + \@author} + +\def\IACR@runningtitle{% + \def\thanks##1{}% + \def\fnmsep{}% + \def\\{}% + \def\footnote##1{}% + \@title} + +\def\author{\@ifnextchar[{\IACR@@@author}{\IACR@@author}} +\def\IACR@@@author[#1]#2{\authorrunning{#1}\gdef\@author{#2}} +\def\IACR@@author#1{\gdef\@author{#1}} + +\if@submission +\gdef\@author{Anonymous Submission to \publname} +\renewcommand{\author}[2][]{} +\renewcommand{\authorrunning}[1]{} +\renewcommand{\institute}[2][]{} +\fi + + +\def\title{\@ifnextchar[{\IACR@@@title}{\IACR@@title}} +\def\IACR@@@title[#1]#2{\gdef\@title{#2}\titlerunning{#1}} +\def\IACR@@title#1{\gdef\@title{#1}} + +\newcommand{\subtitle}[1]{\gdef\@subtitle{#1}} + +\newcommand{\inst}[1]{\unskip$^{#1}$} +\def\fnmsep{\unskip$^,$} + + +% Head/foot +\RequirePackage{fancyhdr} +\RequirePackage{graphicx} +\fancypagestyle{title}{% +\fancyhf{} % clear all header and footer fields +\if@submission\else\if@preprint\else +\fancyfoot[L]{\small Licensed under \href{http://creativecommons.org/licenses/by/4.0/}{Creative Commons License CC-BY 4.0.}\\ +\publname{} Vol.~\IACR@vol, No.\IACR@no, pp.\IACR@fp---\IACR@lp, \href{https://doi.org/\IACR@DOI}{DOI:\IACR@DOI}} +\fancyfoot[R]{\includegraphics[height=2ex]{CC-by}} +\if@loadhr + \hypersetup{pdfcopyright={Licensed under Creative Commons License CC-BY 4.0.}} + \hypersetup{pdflicenseurl={http://creativecommons.org/licenses/by/4.0/}} + \hypersetup{pdfsubject={IACR Transactions on Symmetric Cryptology}} + \hypersetup{pdflang=en} +\fi +\fi\fi +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt}} +\fancyhf{} % clear all header and footer fields +\fancyhead[RO,LE]{\thepage} +\fancyhead[RE]{\IACR@runningtitle} +\fancyhead[LO]{\IACR@runningauthors} +\renewcommand{\markboth}[2]{} +\pagestyle{fancy} + +\def\subtitle#1{\gdef\@subtitle{#1}} + +%Abstract style, keywords +\def\@IACR@keywords{No keywords given.} + +\def\keywords{\@ifnextchar[{\IACR@@@keywords}{\IACR@@keywords}} +\def\IACR@@@keywords[#1]#2{\gdef\@IACR@PDFkeywords{#1}\gdef\@IACR@keywords{#2}} +\def\IACR@@keywords#1{\gdef\@IACR@keywords{#1}} + +\renewenvironment{abstract}{% + \small\quotation\setlength{\parindent}{0pt}\noindent + \textbf{\textsf{Abstract.}}} + {\smallskip\par\textbf{\textsf{Keywords:}} + \def\and{\unskip\space\textperiodcentered\space\ignorespaces}\@IACR@keywords + \endquotation% + \if@loadhr + %% PDF keywords + \def\and{, }% + \def\thanks##1{}% + \def\footnote##1{}% + \def\inst##1{}% + \def\fnmsep{}% + \def\\{}% + \def\zap@comma@space##1 ,##2{% + ##1% + \ifx##2\@empty\else, \expandafter\zap@comma@space\fi + ##2} + \ifdefined\@IACR@PDFkeywords + \hypersetup{pdfkeywords=\@IACR@PDFkeywords} + \else + \protected@edef\@tmp{\expandafter\@IACR@keywords} + \protected@edef\@tmp{\expandafter\zap@comma@space\@tmp{} ,\@empty} + \hypersetup{pdfkeywords=\@tmp} + \fi + %% PDF author + \def\zap@one,##1{} + \def\zap@last##1,##2{\ifx##1\@empty\else\space and ##1\expandafter\zap@one\fi} + \def\zap@last@comma##1,##2,##3{% + ##1% + \ifx##3\@empty% + \expandafter\zap@last\else + ,\expandafter\zap@last@comma\fi% + ##2,##3} + \def\zap@dbl@space##1 ##2{% + ##1% + \ifx##2\@empty\else\space\expandafter\zap@dbl@space##2\fi} + \protected@edef\@tmp{\expandafter\@author} + % \protected@edef\@tmp{\expandafter\IACR@runningauthors} + \protected@edef\@tmp{\expandafter\zap@last@comma\@tmp,\@empty,\@empty} + \protected@edef\@tmp{\expandafter\zap@comma@space\@tmp{} ,\@empty} + \protected@edef\@tmp{\expandafter\zap@dbl@space\@tmp{} \@empty} + \hypersetup{pdfauthor=\@tmp} + %% PDF title + \hypersetup{pdftitle=\IACR@runningtitle} + \fi +} + + +% Hyperref +\if@loadhr + \RequirePackage{xcolor} + \RequirePackage{etoolbox} + \AtEndPreamble{ + \@ifpackageloaded{hyperref}{}{\usepackage{hyperref}} + \@ifpackageloaded{hyperxmp}{}{\usepackage{hyperxmp}} + \hypersetup{colorlinks=true, + citecolor=black!70!green, + linkcolor=black!70!red} + } + \setcounter{tocdepth}{2} +\fi +% autoref: capitals for Sections, and adding Algorithm +\def\equationautorefname{Equation}% +\def\footnoteautorefname{footnote}% +\def\itemautorefname{item}% +\def\figureautorefname{Figure}% +\def\tableautorefname{Table}% +\def\partautorefname{Part}% +\def\appendixautorefname{Appendix}% +\def\chapterautorefname{Chapter}% +\def\sectionautorefname{Section}% +\def\subsectionautorefname{Subsection}% +\def\subsubsectionautorefname{Subsubsection}% +\def\paragraphautorefname{paragraph}% +\def\subparagraphautorefname{subparagraph}% +\def\FancyVerbLineautorefname{line}% +\def\theoremautorefname{Theorem}% +\def\pageautorefname{page}% +\def\algorithmautorefname{Algorithm} + +% AMS math +\RequirePackage{amsmath,amssymb,amsthm} +\RequirePackage{mathtools} +\theoremstyle{definition} +\newtheorem{definition}{Definition} +\newtheorem{example}{Example} +\newtheorem{exercise}{Exercise} +\newtheorem{property}{Property} +\newtheorem{question}{Question} +\newtheorem{solution}{Solution} + +\theoremstyle{plain} +\newtheorem{theorem}{Theorem} +\newtheorem{proposition}{Proposition} +\newtheorem{problem}{Problem} +\newtheorem{lemma}{Lemma} +\newtheorem{conjecture}{Conjecture} +\newtheorem{corollary}{Corollary} +\newtheorem*{claim}{Claim} + +\theoremstyle{remark} +\newtheorem{remark}{Remark} +\newtheorem{note}{Note} +\newtheorem{case}{Case} + +\theoremstyle{plain} + +%Emulate LLNCS spnewtheorem +\if@spthm +\def\spnewtheorem{\@ifstar{\IACR@spstar}{\IACR@sp}} +\def\IACR@spstar#1#2#3#4{\newtheorem*{#1}{#2}} +\def\IACR@sp#1{\@ifnextchar[{\IACR@sp@b{#1}}{\IACR@sp@a{#1}}} +\def\IACR@sp@a#1#2[#3]#4#5{\newtheorem{#1}{#2}[#3]} +\def\IACR@sp@b#1[#2]#3#4#5{\newtheorem{#1}[#2]{#3}} +\renewcommand{\pushQED}[1]{} +\fi + +% Floats and captions +\if@floatrow +\RequirePackage{floatrow} +\floatsetup[table]{style=Plaintop} +\RequirePackage{caption} +\captionsetup{labelfont={sf,bf}} +\else +\RequirePackage{float} +\newcommand\fs@iacrabove{% + % Swap \abovecaptionskip and \belowcaptionskip + \addtolength\abovecaptionskip{-\belowcaptionskip} + \addtolength\belowcaptionskip{\abovecaptionskip} + \addtolength\abovecaptionskip{-\belowcaptionskip} + \setlength\abovecaptionskip{-\abovecaptionskip} + \fs@plaintop% + \def\@fs@cfont{\sffamily\bfseries}} +\newcommand\fs@iacrbelow{% + \fs@plain% + \def\@fs@cfont{\sffamily\bfseries}} +\floatstyle{iacrabove} +\restylefloat{table} +\floatstyle{iacrbelow} +\restylefloat{figure} +\fi + +% Extra commands +\def\email{\@ifnextchar[{\IACR@@email}{\IACR@email}} +\if@loadhr +\def\IACR@@email[#1]#2{\href{mailto:#1}{\nolinkurl{#2}}} +\def\IACR@email#1{\href{mailto:#1}{\nolinkurl{#1}}} +\else +\RequirePackage{url} +\def\IACR@@email[#1]#2{\url{#2}} +\def\IACR@email#1{\url{#1}} +\fi + +% Line # for submission +\newcommand\linenomathWithnumbersforAMS{% + \ifLineNumbers +%% \ifx\@@par\@@@par\else + \ifnum\interlinepenalty>-\linenopenaltypar + \global\holdinginserts\thr@@ + \advance\interlinepenalty \linenopenalty + \ifhmode % v4.3 + \advance\predisplaypenalty \linenopenalty + \fi +%% \advance\postdisplaypenalty \linenopenalty + \advance\interdisplaylinepenalty \linenopenalty + \fi + \fi + \ignorespaces + } + +\if@submission +\RequirePackage[mathlines]{lineno} +\linenumbers +\def\linenumberfont{\normalfont\tiny\sffamily\color{gray}} + +% Taken from http://phaseportrait.blogspot.fr/2007/08/lineno-and-amsmath-compatibility.html +\newcommand*\patchAmsMathEnvironmentForLineno[1]{% + \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname + \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname + \renewenvironment{#1}% + {\linenomathWithnumbersforAMS\csname old#1\endcsname}% + {\csname oldend#1\endcsname\endlinenomath}}% +\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{% + \patchAmsMathEnvironmentForLineno{#1}% + \patchAmsMathEnvironmentForLineno{#1*}}% +\AtBeginDocument{% +%\patchBothAmsMathEnvironmentsForLineno{equation}% +\patchBothAmsMathEnvironmentsForLineno{align}% +\patchBothAmsMathEnvironmentsForLineno{flalign}% +\patchBothAmsMathEnvironmentsForLineno{alignat}% +\patchBothAmsMathEnvironmentsForLineno{gather}% +\patchBothAmsMathEnvironmentsForLineno{multline}% +} +\fi + +% Microtype +\RequirePackage{microtype} + +% Fonts +\usepackage[T1]{fontenc} +\usepackage{lmodern} diff --git a/paper/iacrtrans.cls b/paper/iacrtrans.cls new file mode 100644 index 0000000..bf42a75 --- /dev/null +++ b/paper/iacrtrans.cls @@ -0,0 +1,448 @@ +% IACR Transactions DOCUMENT CLASS -- version 0.24 (26 August 2016) +% Written by Gaetan Leurent gaetan.leurent@inria.fr (2016) +% +% To the extent possible under law, the author(s) have dedicated all +% copyright and related and neighboring rights to this software to the +% public domain worldwide. This software is distributed without any +% warranty. +% +% You should have received a copy of the CC0 Public Domain Dedication +% along with this software. If not, see +% . +% +% +%%% Class options: +% +% [preprint] Preprint (no copyright info) +% [submission] Anonymous submission +% [spthm] Emulate llncs sptheorem and remove automatic \qed in proof +% [nohyperref] Disable automatic loading of hyperref +% [draft] +% +%%% HOWTO use this class +% +%% Title +% \title[short]{Long title} +% +%% Authors/affiliation: +% \author{Alice \and Bob} +% \institute{ABC\\ \email{alice@abc} \and DEF\\ \email{bob@def}} +% +%% Keywords/abstract: +% \keywords{banana \and apple} +% \begin{abstract} +% Lorem ipsum dolor sit amet... +% \end{abstract} +% +%% Warnings +% - please don't use any \pagestyle of \thispagestyle command +% - if you have proof with explicit \qed inside, you should either +% remove \qed symbols, replace them by \qedhere, or add option [spthm] + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{iacrtrans}[2016/08/26 v0.24 IACR Transactions Author Class] + +% Common definitions +\def\publname{IACR Transactions on Cryptographic Hardware and Embedded Systems} +\def\IACR@vol{0} +\def\IACR@no{0} +\def\IACR@fp{1} +\def\IACR@DOI{XXXXXXXX} +\usepackage{lastpage} +\def\IACR@lp{\pageref*{LastPage}} + +\newcommand{\setfirstpage}[1]{\def\IACR@fp{#1}\setcounter{page}{#1}} +\newcommand{\setlastpage}[1]{\def\IACR@lp{#1}} +\newcommand{\setvolume}[1]{\def\IACR@vol{#1}} +\newcommand{\setnumber}[1]{\def\IACR@no{#1}} +\newcommand{\setDOI}[1]{\def\IACR@DOI{#1}} + +% Options +\newif\if@loadhr +\@loadhrtrue +\DeclareOption{nohyperref}{\@loadhrfalse} +\newif\if@floatrow +\@floatrowfalse +\DeclareOption{floatrow}{\@floatrowtrue} +\newif\if@submission +\@submissionfalse +\newif\if@preprint +\@preprintfalse +\DeclareOption{final}{\PassOptionsToClass{\CurrentOption}{article}} % Default +\DeclareOption{preprint}{\@preprinttrue} +\DeclareOption{submission}{\@submissiontrue} +\DeclareOption{draft}{\@preprinttrue\PassOptionsToClass{\CurrentOption}{article}} +\newif\if@spthm +\@spthmfalse +\DeclareOption{spthm}{\@spthmtrue} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions\relax + +% article class with a4paper +\LoadClass[10pt,twoside]{article}[2007/10/19] + +% Geometry +\RequirePackage[a4paper,hscale=0.65,vscale=0.75,marginratio=1:1]{geometry} + +% Title fonts: bf+sf +\RequirePackage{sectsty} +\allsectionsfont{\sffamily\boldmath} +% Also for descrptions +\renewcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries\sffamily #1} + + +% Title/Author/affiliations +\def\@institute{No institute given.} +\newcommand{\institute}[1]{\gdef\@institute{#1}} +\newcommand{\authorrunning}[1]{\gdef\IACR@runningauthors{#1}} +\newcommand{\titlerunning}[1]{\gdef\IACR@runningtitle{#1}} + +\newcounter{IACR@author@cnt} +\newcounter{IACR@inst@cnt} +\newif\if@IACR@autoinst +\@IACR@autoinsttrue +\def\IACR@author@last{0} + +\renewcommand\maketitle{\par + \begingroup + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \long\def\@makefntext##1{\parindent 1em\noindent + \hb@xt@1.8em{% + \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \thispagestyle{title}\@thanks + \endgroup + \setcounter{footnote}{0}% + \global\let\thanks\relax + \global\let\maketitle\relax + \global\let\@maketitle\relax + \global\let\@thanks\@empty +% \global\let\@author\@empty + \global\let\@date\@empty +% \global\let\@title\@empty + \global\let\title\relax + \global\let\author\relax + \global\let\date\relax + \global\let\and\relax +} +\def\@maketitle{% + % Count authors and affiliations + \setcounter{IACR@author@cnt}{1}% + \setcounter{IACR@inst@cnt}{1}% + \setbox0\hbox{\def\thanks##1{\global\@IACR@autoinstfalse}\def\inst##1{\global\@IACR@autoinstfalse}\def\and{\stepcounter{IACR@author@cnt}}\@author}% + \setbox0\hbox{\def\and{\stepcounter{IACR@inst@cnt}}\@institute}% + \xdef\IACR@author@last{\theIACR@author@cnt}% + \edef\IACR@inst@last{\theIACR@inst@cnt}% + \ifnum\IACR@author@last=\IACR@inst@last\else\@IACR@autoinstfalse\fi + \ifnum\IACR@author@last=1 \@IACR@autoinstfalse\fi + \newpage + \null + \vskip 2em% + \begin{center}% + \let \footnote \thanks + {\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% + {\LARGE \bfseries\sffamily\boldmath \@title\par} + \ifdefined\@subtitle\vskip .5em{\large\sffamily\bfseries\@subtitle\par}\fi}% + \vskip 1.5em% + {\large + \lineskip .5em% + \if@submission + Anonymous Submission + \else + \setcounter{IACR@author@cnt}{1}% + \def\and{\if@IACR@autoinst\inst{\theIACR@author@cnt} \fi + \stepcounter{IACR@author@cnt}% + \ifnum\theIACR@author@cnt=\IACR@author@last\unskip\space and \ignorespaces\else\unskip, \ignorespaces\fi} + \@author\if@IACR@autoinst\inst{\theIACR@author@cnt}\fi + \vskip 1em\par + \small + \setcounter{IACR@author@cnt}{1}% + \def\and{\par\stepcounter{IACR@author@cnt}$^\theIACR@author@cnt$~} + \ifnum\IACR@inst@last>1 $^1$~\fi + \@institute + \fi + }% + \end{center}% + \par + \vskip 1.5em} + +\def\IACR@runningauthors{ + \def\thanks##1{}% + \def\inst##1{}% + \def\fnmsep{}% + \def\\{}% + \def\footnote##1{}% + \setcounter{IACR@author@cnt}{1}% + \def\and{\stepcounter{IACR@author@cnt}% + \ifnum\theIACR@author@cnt=\IACR@author@last\unskip\space and \ignorespaces\else\unskip, \ignorespaces\fi} + \@author} + +\def\IACR@runningtitle{% + \def\thanks##1{}% + \def\fnmsep{}% + \def\\{}% + \def\footnote##1{}% + \@title} + +\def\author{\@ifnextchar[{\IACR@@@author}{\IACR@@author}} +\def\IACR@@@author[#1]#2{\authorrunning{#1}\gdef\@author{#2}} +\def\IACR@@author#1{\gdef\@author{#1}} + +\if@submission +\gdef\@author{Anonymous Submission to \publname} +\renewcommand{\author}[2][]{} +\renewcommand{\authorrunning}[1]{} +\renewcommand{\institute}[2][]{} +\fi + + +\def\title{\@ifnextchar[{\IACR@@@title}{\IACR@@title}} +\def\IACR@@@title[#1]#2{\gdef\@title{#2}\titlerunning{#1}} +\def\IACR@@title#1{\gdef\@title{#1}} + +\newcommand{\subtitle}[1]{\gdef\@subtitle{#1}} + +\newcommand{\inst}[1]{\unskip$^{#1}$} +\def\fnmsep{\unskip$^,$} + + +% Head/foot +\RequirePackage{fancyhdr} +\RequirePackage{graphicx} +\fancypagestyle{title}{% +\fancyhf{} % clear all header and footer fields +\if@submission\else\if@preprint\else +\fancyfoot[L]{\small Licensed under \href{http://creativecommons.org/licenses/by/4.0/}{Creative Commons License CC-BY 4.0.}\\ +\publname{} Vol.~\IACR@vol, No.\IACR@no, pp.\IACR@fp---\IACR@lp, \href{https://doi.org/\IACR@DOI}{DOI:\IACR@DOI}} +\fancyfoot[R]{\includegraphics[height=2ex]{CC-by}} +\if@loadhr + \hypersetup{pdfcopyright={Licensed under Creative Commons License CC-BY 4.0.}} + \hypersetup{pdflicenseurl={http://creativecommons.org/licenses/by/4.0/}} + \hypersetup{pdfsubject={IACR Transactions on Symmetric Cryptology}} + \hypersetup{pdflang=en} +\fi +\fi\fi +\renewcommand{\headrulewidth}{0pt} +\renewcommand{\footrulewidth}{0pt}} +\fancyhf{} % clear all header and footer fields +\fancyhead[RO,LE]{\thepage} +\fancyhead[RE]{\IACR@runningtitle} +\fancyhead[LO]{\IACR@runningauthors} +\renewcommand{\markboth}[2]{} +\pagestyle{fancy} + +\def\subtitle#1{\gdef\@subtitle{#1}} + +%Abstract style, keywords +\def\@IACR@keywords{No keywords given.} + +\def\keywords{\@ifnextchar[{\IACR@@@keywords}{\IACR@@keywords}} +\def\IACR@@@keywords[#1]#2{\gdef\@IACR@PDFkeywords{#1}\gdef\@IACR@keywords{#2}} +\def\IACR@@keywords#1{\gdef\@IACR@keywords{#1}} + +\renewenvironment{abstract}{% + \small\quotation\setlength{\parindent}{0pt}\noindent + \textbf{\textsf{Abstract.}}} + {\smallskip\par\textbf{\textsf{Keywords:}} + \def\and{\unskip\space\textperiodcentered\space\ignorespaces}\@IACR@keywords + \endquotation% + \if@loadhr + %% PDF keywords + \def\and{, }% + \def\thanks##1{}% + \def\footnote##1{}% + \def\inst##1{}% + \def\fnmsep{}% + \def\\{}% + \def\zap@comma@space##1 ,##2{% + ##1% + \ifx##2\@empty\else, \expandafter\zap@comma@space\fi + ##2} + \ifdefined\@IACR@PDFkeywords + \hypersetup{pdfkeywords=\@IACR@PDFkeywords} + \else + \protected@edef\@tmp{\expandafter\@IACR@keywords} + \protected@edef\@tmp{\expandafter\zap@comma@space\@tmp{} ,\@empty} + \hypersetup{pdfkeywords=\@tmp} + \fi + %% PDF author + \def\zap@one,##1{} + \def\zap@last##1,##2{\ifx##1\@empty\else\space and ##1\expandafter\zap@one\fi} + \def\zap@last@comma##1,##2,##3{% + ##1% + \ifx##3\@empty% + \expandafter\zap@last\else + ,\expandafter\zap@last@comma\fi% + ##2,##3} + \def\zap@dbl@space##1 ##2{% + ##1% + \ifx##2\@empty\else\space\expandafter\zap@dbl@space##2\fi} + \protected@edef\@tmp{\expandafter\@author} + % \protected@edef\@tmp{\expandafter\IACR@runningauthors} + \protected@edef\@tmp{\expandafter\zap@last@comma\@tmp,\@empty,\@empty} + \protected@edef\@tmp{\expandafter\zap@comma@space\@tmp{} ,\@empty} + \protected@edef\@tmp{\expandafter\zap@dbl@space\@tmp{} \@empty} + \hypersetup{pdfauthor=\@tmp} + %% PDF title + \hypersetup{pdftitle=\IACR@runningtitle} + \fi +} + + +% Hyperref +\if@loadhr + \RequirePackage{xcolor} + \RequirePackage{etoolbox} + \AtEndPreamble{ + \@ifpackageloaded{hyperref}{}{\usepackage{hyperref}} + \@ifpackageloaded{hyperxmp}{}{\usepackage{hyperxmp}} + \hypersetup{colorlinks=true, + citecolor=black!70!green, + linkcolor=black!70!red} + } + \setcounter{tocdepth}{2} +\fi +% autoref: capitals for Sections, and adding Algorithm +\def\equationautorefname{Equation}% +\def\footnoteautorefname{footnote}% +\def\itemautorefname{item}% +\def\figureautorefname{Figure}% +\def\tableautorefname{Table}% +\def\partautorefname{Part}% +\def\appendixautorefname{Appendix}% +\def\chapterautorefname{Chapter}% +\def\sectionautorefname{Section}% +\def\subsectionautorefname{Subsection}% +\def\subsubsectionautorefname{Subsubsection}% +\def\paragraphautorefname{paragraph}% +\def\subparagraphautorefname{subparagraph}% +\def\FancyVerbLineautorefname{line}% +\def\theoremautorefname{Theorem}% +\def\pageautorefname{page}% +\def\algorithmautorefname{Algorithm} + +% AMS math +\RequirePackage{amsmath,amssymb,amsthm} +\RequirePackage{mathtools} +\theoremstyle{definition} +\newtheorem{definition}{Definition} +\newtheorem{example}{Example} +\newtheorem{exercise}{Exercise} +\newtheorem{property}{Property} +\newtheorem{question}{Question} +\newtheorem{solution}{Solution} + +\theoremstyle{plain} +\newtheorem{theorem}{Theorem} +\newtheorem{proposition}{Proposition} +\newtheorem{problem}{Problem} +\newtheorem{lemma}{Lemma} +\newtheorem{conjecture}{Conjecture} +\newtheorem{corollary}{Corollary} +\newtheorem*{claim}{Claim} + +\theoremstyle{remark} +\newtheorem{remark}{Remark} +\newtheorem{note}{Note} +\newtheorem{case}{Case} + +\theoremstyle{plain} + +%Emulate LLNCS spnewtheorem +\if@spthm +\def\spnewtheorem{\@ifstar{\IACR@spstar}{\IACR@sp}} +\def\IACR@spstar#1#2#3#4{\newtheorem*{#1}{#2}} +\def\IACR@sp#1{\@ifnextchar[{\IACR@sp@b{#1}}{\IACR@sp@a{#1}}} +\def\IACR@sp@a#1#2[#3]#4#5{\newtheorem{#1}{#2}[#3]} +\def\IACR@sp@b#1[#2]#3#4#5{\newtheorem{#1}[#2]{#3}} +\renewcommand{\pushQED}[1]{} +\fi + +% Floats and captions +\if@floatrow +\RequirePackage{floatrow} +\floatsetup[table]{style=Plaintop} +\RequirePackage{caption} +\captionsetup{labelfont={sf,bf}} +\else +\RequirePackage{float} +\newcommand\fs@iacrabove{% + % Swap \abovecaptionskip and \belowcaptionskip + \addtolength\abovecaptionskip{-\belowcaptionskip} + \addtolength\belowcaptionskip{\abovecaptionskip} + \addtolength\abovecaptionskip{-\belowcaptionskip} + \setlength\abovecaptionskip{-\abovecaptionskip} + \fs@plaintop% + \def\@fs@cfont{\sffamily\bfseries}} +\newcommand\fs@iacrbelow{% + \fs@plain% + \def\@fs@cfont{\sffamily\bfseries}} +\floatstyle{iacrabove} +\restylefloat{table} +\floatstyle{iacrbelow} +\restylefloat{figure} +\fi + +% Extra commands +\def\email{\@ifnextchar[{\IACR@@email}{\IACR@email}} +\if@loadhr +\def\IACR@@email[#1]#2{\href{mailto:#1}{\nolinkurl{#2}}} +\def\IACR@email#1{\href{mailto:#1}{\nolinkurl{#1}}} +\else +\RequirePackage{url} +\def\IACR@@email[#1]#2{\url{#2}} +\def\IACR@email#1{\url{#1}} +\fi + +% Line # for submission +\newcommand\linenomathWithnumbersforAMS{% + \ifLineNumbers +%% \ifx\@@par\@@@par\else + \ifnum\interlinepenalty>-\linenopenaltypar + \global\holdinginserts\thr@@ + \advance\interlinepenalty \linenopenalty + \ifhmode % v4.3 + \advance\predisplaypenalty \linenopenalty + \fi +%% \advance\postdisplaypenalty \linenopenalty + \advance\interdisplaylinepenalty \linenopenalty + \fi + \fi + \ignorespaces + } + +\if@submission +\RequirePackage[mathlines]{lineno} +\linenumbers +\def\linenumberfont{\normalfont\tiny\sffamily\color{gray}} + +% Taken from http://phaseportrait.blogspot.fr/2007/08/lineno-and-amsmath-compatibility.html +\newcommand*\patchAmsMathEnvironmentForLineno[1]{% + \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname + \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname + \renewenvironment{#1}% + {\linenomathWithnumbersforAMS\csname old#1\endcsname}% + {\csname oldend#1\endcsname\endlinenomath}}% +\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{% + \patchAmsMathEnvironmentForLineno{#1}% + \patchAmsMathEnvironmentForLineno{#1*}}% +\AtBeginDocument{% +%\patchBothAmsMathEnvironmentsForLineno{equation}% +\patchBothAmsMathEnvironmentsForLineno{align}% +\patchBothAmsMathEnvironmentsForLineno{flalign}% +\patchBothAmsMathEnvironmentsForLineno{alignat}% +\patchBothAmsMathEnvironmentsForLineno{gather}% +\patchBothAmsMathEnvironmentsForLineno{multline}% +} +\fi + +% Microtype +\RequirePackage{microtype} + +% Fonts +\usepackage[T1]{fontenc} +\usepackage{lmodern} diff --git a/paper/safety-reset-paper.tex b/paper/safety-reset-paper.tex new file mode 100644 index 0000000..d7be50c --- /dev/null +++ b/paper/safety-reset-paper.tex @@ -0,0 +1,140 @@ +\documentclass[nohyperref]{iacrtrans} +\usepackage[T1]{fontenc} +\usepackage[ + backend=biber, + style=numeric, + natbib=true, + url=false, + doi=true, + eprint=false + ]{biblatex} +\addbibresource{safety-reset.bib} +\usepackage{amssymb,amsmath} +\usepackage{eurosym} +\usepackage{wasysym} +\usepackage{amsthm} + +\usepackage[binary-units]{siunitx} +\DeclareSIUnit{\baud}{Bd} +\DeclareSIUnit{\year}{a} +\usepackage{commath} +\usepackage{graphicx,color} +\usepackage{subcaption} +\usepackage{array} +\usepackage{hyperref} + +\renewcommand{\floatpagefraction}{.8} +\newcommand{\degree}{\ensuremath{^\circ}} +\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} +\newcommand{\partnum}[1]{\texttt{#1}} + +\begin{document} + +\title[Ripples in a Pond]{Transmitting Information through Grid Frequency Modulation} +\author{Jan Sebastian Götte \and Björn Scheuermann} +\institute{HIIG\\ \email{safetyreset@jaseg.de} \and HU Berlin \\ \email{scheuermann@informatik.hu-berlin.de}} +% FIXME keywords +\keywords{hardware security \and energy systems \and signal theory} +\maketitle + +\begin{abstract} +\end{abstract} + +\section{Introduction} + +In the power grid, as in many other engineered systems, we can observe an ongoing diffusion of information systems into +industrial control systems. Automation of these control systems has already been practiced for the better part of a +century. Throughout the 20th century this automation was mostly limited to core components of the grid. Generators in +power stations are computer-controlled according to electromechanical and economic models. Switching in substations is +automated to allow for fast failure recovery. Human operators are still vital to these systems, but their tasks have +shifted from pure operation to engineering, maintenance and surveillance\cite{crastan03,anderson02}. + +With the turn of the century came a large-scale trend in power systems to move from a model of centralized generation, +built around massive large-scale fossil and nuclear power plants, towards a more heterogenous model of smaller-scale +generators working together. In this new model large-scale fossil power plants still serve a major role, but two new +factors come into play. One is the advance of renewable energies. The large-scale use of wind and solar power in +particular from a current standpoint seems unavoidable for our continued existence on this planet. For the electrical +grid these systems constitute a significant challenge. Fossil-fueled power plants can be controlled in a precise and +quick way to match energy consumption. This tracking of consumption with production is vital to the stability of the +grid. Renewable energies such as wind and solar power do not provide the same degree of controllability, and they +introduce a larger degree of uncertainty due to the unpredictability of the forces of nature\cite{crastan03}. + +Along with this change in dynamic behavior, renewable energies have brought forth the advance of distributed generation. +In distributed generation end-customers that previously only consumed energy have started to feed energy into the grid +from small solar installations on their property. Distributed generation is a chance for customers to gain autonomy and +shift from a purely passive role to being active participants of the electricity market\cite{crastan03}. + +To match this new landscape of decentralized generation and unpredictable renewable resources the utility industry has +had to adapt itself in major ways. One aspect of this adaptation that is particularly visible to ordinary people is the +computerization of end-user energy metering. Despite the widespread use of industrial control systems inside the +electrical grid and the far-reaching diffusion of computers into people's everyday lives the energy meter has long been +one of the last remnants of an offline, analog time. Until the 2010s many households were still served through +electromechanical Ferraris-style meters that have their origin in the late 19th +century\cite{borlase01,ukgov04,bnetza02}. Today under the umbrella term \emph{Smart Metering} the shift towards fully +computerized, often networked meters is well underway. The roll out of these \emph{Smart Meters} has not been very +smooth overall with some countries severely lagging behind. As a safety-critical technology, smart metering technology +is usually standardized on a per-country basis. This leads to an inhomogenous landscape with--in some instances--wildly +incompatible systems. Often vendors only serve a single country or have separate models of a meter for each country. +This complex standardization landscape and market situation has led to a proliferation of highly complex, custom-coded +microcontroller firmware. The complexity and scale of this--often network-connected--firmware makes for a ripe substrate +for bugs to surface. + +A remotely exploitable flaw inside a smart meter's firmware\footnote{ + There are several smart metering architectures that ascribe different roles to the component called \emph{smart + meter}. Not all systems are susceptible to attacks to the same degree, with the German implementation being almost + immune as far as energy availability is concerned. For clarity, we use \emph{smart meter} to describe the entire + system at the customer premises including both the meter and if present a gateway. +} could have consequences ranging from impaired billing functionality to an existential threat to grid +stability\cite{anderson01,anderson02}. In a country where meters commonly include disconnect switches for purposes such +as prepaid tariffs a coördinated attack could at worst cause widespread activation of grid safety systems by repeatedly +connecting and disconnecting megawatts of load capacity in just the wrong moments\cite{wu01}. + +Mitigation of these attacks through firmware security measures is unlikely to yield satisfactory results. The enormous +complexity of smart meter firmware makes firmware security extremely labor-intensive. The diverse standardization +landscape makes a coördinated, comprehensive response unlikely. + +In this paper, instead of focusing on the very hard task of improving firmware security we introduce a pragmatic +solution to the--in our opinion likely--scenario of a large-scale compromise of smart meter firmware. In our proposal +the components of the smart meter that are threatened by remote compromise are equipped with a physically separate +\emph{safety reset controller} that listens for a reset command transmitted through the electrical grid's frequency and +on reception forcibly resets the smart meter's entire firmware to a known-good state. Our safety reset controller +receives commands through Direct Sequence Spread Spectrum (DSSS) modulation carried out on grid frequency through a +large controllable load such as an aluminum smelter. After forward error correction and cryptographic verification it +re-flashes the meter's main microcontroller over the standard JTAG interface. Note that our modulation technique is one +\emph{changing grid frequency itself}. This is fundamentally different in both generation and detection from systems +such as traditional PLC that superimpose a signal on grid voltage, but leave grid frequency itself unaffected. + +In this thesis, starting from a high level architecture we have carried out extensive simulations of our proposal's +performance under real-world conditions. Based on these simulations we implemented an end-to-end prototype of our +proposed safety reset controller as part of a realistic smart meter demonstrator. Finally we experimentally validated +our results and we will conclude with an outline of further steps towards a practical implementation. + +This work contains the following contributions: +\begin{enumerate} + \item We introduce Grid Frequency Modulation (GFM) as a communication primitive. % FIXME done before in that one paper + \item We elaborate the fundamental physics underlying GFM and theorize on the constrains of a practical + implementation. + \item We design a communication system based on GFM. + \item We carry out extensive simulations of our systems to determine its performance characteristics. + \item We show the simple grid voltage recorder design we used to capture data for our simulations. + \item We introduce a new, simplified method to determine grid frequency from a capture of the grid voltage waveform + that is simple to implement on constrained embedded devices. +\end{enumerate} + +\section{Related work} +\label{sec_related_work} + +\section{Conclusion} +\label{sec_conclusion} + +\printbibliography[heading=bibintoc] + +%%% FIXME remove appendix and work into text. + +\center{ + \center{This is version \texttt{\input{version.tex}\unskip} of this paper, generated on \today. The git repository + can be found at:} + + \center{\url{https://git.jaseg.de/safety-reset.git}} +} +\end{document} diff --git a/paper/safety-reset.bib b/paper/safety-reset.bib new file mode 100644 index 0000000..d7b6fbd --- /dev/null +++ b/paper/safety-reset.bib @@ -0,0 +1,1741 @@ +% Encoding: UTF-8 + +@article{pinto01, + author = {Pinto, Sandro and Santos, Nuno}, + title = {Demystifying Arm TrustZone: A Comprehensive Survey}, + year = {2019}, + issue_date = {February 2019}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + volume = {51}, + number = {6}, + issn = {0360-0300}, + url = {https://doi.org/10.1145/3291047}, + doi = {10.1145/3291047}, + journal = {ACM Comput. Surv.}, + month = jan, + articleno = {130}, + numpages = {36}, + keywords = {security, TEE, virtualization, Arm, TrustZone, survey} +} + +@inproceedings{kanonov01, + title={Secure containers in Android: the Samsung KNOX case study}, + author={Kanonov, Uri and Wool, Avishai}, + booktitle={Proceedings of the 6th Workshop on Security and Privacy in Smartphones and Mobile Devices}, + pages={3--12}, + year={2016} +} + +@inproceedings{rosenberg01, + title={Qsee trustzone kernel integer over flow vulnerability}, + author={Rosenberg, Dan}, + booktitle={Black Hat conference}, + year={2014} +} + +@Online{bnetza1, + author = {{German Government Bundesnetzagentur}}, + title = {Smart Meter}, + url = {https://web.archive.org/web/20190919100204/https://www.bundesnetzagentur.de/DE/Sachgebiete/ElektrizitaetundGas/Verbraucher/NetzanschlussUndMessung/SmartMetering/SmartMeter_node.html}, + urldate = {2019-09-19}, + publisher = {Bundesnetzagentur}, + year = {2019}, +} + +@Online{bmwi1, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik} and {Bundesministerium f{\"u}r Wirtschaft und Energie}}, + title = {Standardisierungsstrategie zur sektor{\"u}bergreifenden Digitalisierung nach dem Gesetz zur Digitalisierung der Energiewende}, + url = {https://web.archive.org/web/20190919100713/https://www.bmwi.de/Redaktion/DE/Downloads/S-T/standardisierungsstrategie.pdf}, + urldate = {2019-09-19}, + month = jan, + publisher = {Bundesministerium f{\"u}r Wirtschaft und Energie}, + year = {2019}, +} + +@Misc{bsi-tr-03109, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {Technische Richtlinie BSI TR-03109}, + organization = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + url = {https://web.archive.org/web/20190919102010/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR03109.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=3}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + month = nov, + year = {2015}, +} + +@Misc{bsi-tr-03109-1, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-1: Anforderungen an die Interoperabilit{\"a}t der Kommunikationseinheit eines intelligenten Messsystems}, + organization = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + url = {https://web.archive.org/web/20190919102217/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR03109-1.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=3}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + month = jan, + number = {v1.0.1}, + year = {2019}, +} + +@Misc{bsi-tr-03109-6, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-6: Smart Meter Gateway Administration}, + organization = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + url = {https://web.archive.org/web/20190919102651/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-6-Smart_Meter_Gateway_Administration.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=4}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + month = nov, + number = {v1.0}, + year = {2015}, +} + +@Misc{bsi-tr-03109-4, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-4: Public Key Infrastruktur f{\"u}r Smart Meter Gateways}, + organization = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + url = {https://web.archive.org/web/20190919102649/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-4_PKI.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=3}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + month = aug, + number = {v1.2.1}, + year = {2017}, +} + +@Misc{bsi-tr-03109-2, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-2: Smart Meter Gateway - Anforderungen an die Funktionalit{\"a}t und Interoperabilit{\"a}t des Sicherheitsmoduls}, + organization = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + url = {https://web.archive.org/web/20190919102644/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-2-Anforderungen_an_die_Funktionalitaet.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=3}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + month = dec, + number = {v1.1}, + year = {2014}, +} + +@Misc{bsi-tr-03109-3, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-3: Kryptographische Vorgaben f{\"u}r die Infrastruktur von intelligenten Messsystemen}, + organization = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + url = {https://web.archive.org/web/20190919102648/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-3_Kryptographische_Vorgaben.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=1}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + month = apr, + year = {2014}, +} + +@Misc{bsi-tr-03109-1-I, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-1 Anlage I: CMS-Datenformat f{\"u}r die Inhaltsdatenverschl{\"u}sselung und -signatur}, + organization = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + url = {https://web.archive.org/web/20190919104234/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1\_Anlage\_CMS.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2\_cid351?\_\_blob=publicationFile\&v=2}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.0}, + month = mar, + year = {2013}, +} + +@Misc{bsi-tr-03109-1-II, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-1 Anlage II: COSEM/HTTP Webservices}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919104234/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1\_Anlage\_CMS.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2\_cid351?\_\_blob=publicationFile\&v=2}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.0}, + month = mar, + year = {2012}, +} + +@Misc{bsi-tr-03109-1-IIIb, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-1 Anlage III: Feinspezifikation "Drahtlose LMN-Schnittstelle" Teil b: "OMS Technical Report Security"}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919110101/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1_Anlage_Feinspezifikation_Drahtlose_LMN-Schnittstelle-Teil2.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=2}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.0}, + month = mar, + year = {2013}, +} + +@Misc{bsi-tr-03109-1-IIIa, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-1 Anlage III: Feinspezifikation "Drahtlose LMN-Schnittstelle" Teil a: "OMS Specification Volume 2, Primary Communication"}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919110054/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1_Anlage_Feinspezifikation_Drahtlose_LMN-Schnittstelle.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=2}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.0}, + month = mar, + year = {2013}, +} + +@Misc{bsi-tr-03109-1-IVa, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-1 Anlage IV: Feinspezifikation "Drahtgebundene LMN-Schnittstelle" Teil a: "HDLC f{\"u}r LMN"}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919110101/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1_Anlage_Feinspezifikation_Drahtlose_LMN-Schnittstelle-Teil2.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=2}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.0}, + month = mar, + year = {2013}, +} + +@Misc{bsi-tr-03109-1-IVb, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-1 Anlage IV: Feinspezifikation "Drahtgebundene LMN-Schnittstelle" Teil b: "SML Smart Message Language"}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919110756/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1\_Anlage\_Feinspezifikation\_Drahtgebundene\_LMN-Schnittstelle\_Teilb.pdf jsessionid=BD197BE4CB44C76EE7945640B8703844.2\_cid351?\_\_blob=publicationFile\&v=2}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.0}, + month = mar, + year = {2013}, +} + +@Misc{bsi-tr-03109-1-VI, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-1 Anlage VI: Betriebsprozesse}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919111203/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1_Anlage_Betriebsprozesse.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=1}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.0}, + month = mar, + year = {2013}, +} + +@Misc{bsi-tr-03109-1-VII, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-1 Anlage VII: Interoperabilit{\"a}tsmodell und Ger{\"a}teprofile f{\"u}r Smart-Meter- Gateways}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919111350/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1_Anlage_Interop-Modell-Geraeteprofile.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=2}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.0}, + month = jan, + year = {2019}, +} + +@Misc{bsi-tr-03109-2-a, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-2 Anhang A: Smart Meter Gateway Sicherheitsmodul Use Cases}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919111540/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-2-Sicherheitsmodul_Use_Cases.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=2}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.1}, + month = dec, + year = {2014}, +} + +@Misc{bsi-tr-03109-2-b, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-2 Anhang B: Smart Meter Mini-HSM Anforderungen an die Funktionalit{\"a}t und Interoperabilit{\"a}t des Sicherheitsmoduls}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919111832/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-2_Anhang_B_Smart_Meter_Mini_HSM.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=3}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {v1.0}, + month = jun, + year = {2017}, +} + +@Misc{bsi-tr-03116-3, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03116-3: Intelligente Messsysteme}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919112052/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03116/BSI-TR-03116-3.pdf; jsessionid=CB56FC0D3137C5624CA697AB9E57671F.1_cid360?__blob=publicationFile&v=9}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03116 Kryptographische Vorgaben f{\"u}r Projekte der Bundesregierung}, + month = jan, + year = {2019}, +} + +@Misc{bsi-tr-03109-ts-1, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-03109-TS-1: Testkonzept zu BSI TR-03109-1}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919112310/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-TS-1_Testkonzept.pdf; jsessionid=BD197BE4CB44C76EE7945640B8703844.2_cid351?__blob=publicationFile&v=1}, + urldate = {2019-09-19}, + booktitle = {Technische Richtlinie BSI TR-03109}, + edition = {00.91}, + month = jan, + year = {2015}, +} + +@Misc{bsi-tr-pruefstellen, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {TR-Pr{\"u}fstellen: Anforderungen an Antragsteller zur Anerkennung als Pr{\"u}fstelle im Bereich Technischer Richtlinien}, + organization = {Bundesamt f{\"u}r Sicherheit in der Informationstechnik}, + url = {https://web.archive.org/web/20190919112552/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Zertifizierung/TR-Pruefstellen.pdf; jsessionid=A6B4CB8AD2C038741C656276CE874B61.2_cid369?__blob=publicationFile&v=10}, + urldate = {2019-09-19}, + edition = {v1.5}, + month = jan, + year = {2019}, +} + +@article{mo01, + author = {Yilin Mo and Tiffany Hyun-Jin Kim and Kenneth Brancik and Dona Dickinson and Heejo Lee and Adrian Perrig and Bruno Sinopoli}, + journaltitle = {Proceedings of the IEEE}, + month = jan, + number = {1}, + pages = {195--209}, + publisher = {IEEE}, + title = {Cyber-Physical Security of a Smart Grid Infrastructure}, + url = {http://ieeexplore.ieee.org.sci-hub.tw/abstract/document/6016202; https://ieeexplore.ieee.org/abstract/document/6016202; https://www.researchgate.net/profile/Yilin_Mo/publication/224257991_Cyber-Physical_Security_of_a_Smart_Grid_Infrastructure/links/004635395d2f66a584000000.pdf}, + urldate = 2019-09-19, + volume = {100}, + year = {2012} +} + +@article{gungor01, + author = {Vehbi C. G{\"u}ng{\"o}r and Dilan Sahin and Taskin Kocak and Concettina Buccella and Carlo Cecati and Gerhard P. Hancke and Salih Erg{\"u}t}, + journaltitle = {IEEE Transactions on Industrial Informatics}, + month = nov, + number = {4}, + organization = {IEEE}, + pages = {529--539}, + title = {Smart Grid Technologies: Communication Technologies and Standards}, + url = {https://www.researchgate.net/profile/Salih_Ergut/publication/224257498_Smart_Grid_Technologies_Communication_Technologies_and_Standards/links/56ccb4e508ae85c8233bc062/Smart-Grid-Technologies-Communication-Technologies-and-Standards.pdf}, + volume = {7}, + year = {2011} +} + +@article{yan01, + author = {Ye Yan and Yi Qian and Hamid Sharif and David Tipper}, + doi = {10.1109/SURV.2012.021312.00034}, + journaltitle = {IEEE Communications Surveys \& Tutorials}, + organization = {IEEE}, + title = {A Survey on Smart Grid Communication Infrastructures: Motivations, Requirements and Challenges}, + url = {http://d-scholarship.pitt.edu/12508/1/Smart_Grid_Infrastructure_Final.pdf}, + year = {2012} +} + +@article{kabalci01, + author = {Yasin Kabalci}, + doi = {10.1016/j.rser.2015.12.114}, + journaltitle = {Renewable and Sustainable Energy Reviews}, + pages = {302--318}, + publisher = {Elsevier}, + title = {A survey on smart metering and smart grid communication}, + url = {https://www.researchgate.net/profile/Yasin_Kabalci/publication/289504234_A_survey_on_smart_metering_and_smart_grid_communication/links/5a6105aaaca272a1581745c1/A-survey-on-smart-metering-and-smart-grid-communication.pdf}, + volume = {57}, + year = {2016} +} + +@article{zhou01, + author = {Bin Zhou and Wentao Li and Ka Wing Chan and Yijia Cao and Yonghong Kuang and Xi Liu and Xiong Wang}, + journaltitle = {Renewable and Sustainable Energy Reviews}, + pages = {30--40}, + publisher = {Elsevier}, + title = {Smart home energy management systems: Concept, configurations, and scheduling strategies}, + url = {http://www.sciencedirect.com.sci-hub.tw/science/article/abs/pii/S1364032116002823}, + volume = {61}, + x-color = {#009966}, + year = {2016} +} + +@Article{lloret01, + author = {Jaime Lloret and Jesus Tomas and Alejandro Canovas and Lorena Parra}, + date = {2016}, + journaltitle = {IEEE Communications Magazine}, + title = {An Integrated IoT Architecture for Smart Metering}, + pages = {50--57}, + urldate = {2019-09-19}, + volume = {54}, + organization = {IEEE}, + x-color = {#7a783b}, + year = {2016}, +} + +@article{sharma01, + author = {Konark Sharma and Lalit Mohan Saini}, + doi = {10.1016/j.rser.2015.04.170}, + journaltitle = {Renewable and Sustainable Energy Reviews}, + pages = {720--735}, + publisher = {Elsevier}, + title = {Performance analysis of smart metering for smart grid: An overview}, + url = {http://www.sciencedirect.com.sci-hub.tw/science/article/abs/pii/S1364032115004402}, + urldate = 2019-09-19, + volume = {49}, + x-color = {#7a783b}, + year = {2015} +} + +@article{leiva01, + author = {Javier Leiva and Alfonso Palacios and Jos{\'e} A. Aguado}, + journaltitle = {Renewable and Sustainable Energy Reviews}, + pages = {227--233}, + publisher = {Elsevier}, + title = {Smart metering trends, implications and necessities: A policy review}, + url = {http://kchbi.chtf.stuba.sk/upload_new/file/Miro/Proc%20problemy%20odovzdane%20zadania/Cyprichov%C3%A1/SmartMetering.pdf; http://dx.doi.org/10.1016/j.rser.2015.11.002}, + urldate = 2019-09-19, + volume = {55}, + x-color = {#009966}, + year = {2016} +} + +@article{lopez01, + author = {G. Lopez and J.I. Moreno and H. Amar\'{\i}s and F. Salazar}, + doi = {10.1016/j.epsr.2014.05.006}, + journaltitle = {Electric Power Systems Research}, + publisher = {Elsevier}, + title = {Paving the road toward Smart Grids through large-scale advanced metering infrastructures}, + url = {http://www.sciencedirect.com.sci-hub.tw/science/article/abs/pii/S0378779614001862}, + urldate = 2019-09-19, + x-color = {#009966}, + year = {2014} +} + +@article{alahakoon01, + author = {Damminda Alahakoon and Xinghuo Yu}, + doi = {10.1109/TII.2015.2414355}, + journaltitle = {IEEE Transactions on Industrial Informatics}, + organization = {IEEE}, + title = {Smart Electricity Meter Data Intelligence for Future Energy Systems: A Survey}, + url = {http://ieeexplore.ieee.org.sci-hub.tw/abstract/document/7063262}, + urldate = 2019-09-19, + x-color = {#009966}, + year = {2015} +} + +@book{borlase01, + editor = {Stuart Borlase}, + isbn = {978-1-4987-9955-3}, + publisher = {CRC Press}, + series = {Electric Power and Energy Engineering}, + title = {Smart Grids: Advanced Technologies and Solutions}, + url = {http://libgen.is/book/index.php?md5=54E49C790BF4ABE66857D6A86E60A196}, + urldate = 2019-09-19, + x-color = {#cc3300}, + year = {2017} +} + +@article{amin01, + author = {Saurabh Amin and Galina A. Schwartz and Alvaro A. C{\'a}rdenas and S. Shankar Sastry}, + doi = {10.1109/MCS.2014.2364711}, + journaltitle = {IEEE Control Systems Magazine}, + month = feb, + organization = {IEEE}, + part = {1}, + title = {Game-Theoretic Models of Electricity Theft Detection in Smart Utility Networks}, + url = {https://cloudfront.escholarship.org/dist/prd/content/qt3658w184/qt3658w184.pdf}, + urldate = 2019-09-19, + volume = {35}, + x-color = {#7a783b}, + year = {2015} +} + +@article{mahmood01, + author = {Anzar Mahmood and Nadeem Javaid and Sohail Razzaq}, + doi = {10.1016/j.rser.2014.08.036}, + journaltitle = {Renewable and Sustainable Energy Reviews}, + pages = {248--260}, + publisher = {Elsevier}, + title = {A review of wireless communications for smart grid}, + url = {http://www.sciencedirect.com.sci-hub.tw/science/article/abs/pii/S1364032114007126}, + urldate = 2019-09-19, + volume = {41}, + x-color = {#7a783b}, + year = {2015} +} + +@Online{bsi01, + author = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + title = {Marktanalyse zur Feststellung der technischen M{\"o}glichkeit zum Einbau intelligenter Messsysteme nach {\S} 30 MsbG}, + url = {https://web.archive.org/web/20190919124052/https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/SmartMeter/Marktanalysen/Marktanalyse_nach_Para_30_MsbG.pdf?__blob=publicationFile&v=8}, + organization = {{Bundesamt f{\"u}r Sicherheit in der Informationstechnik}}, + urldate = {2019-09-19}, + edition = {v1.0}, + month = jan, + x-color = {#009966}, + year = {2019}, +} + +@InProceedings{czechowski01, + author = {R. {Czechowski} and A. M. {Kosek}}, + booktitle = {2016 Joint Workshop on Cyber- Physical Security and Resilience in Smart Grids (CPSR-SG)}, + date = {2016}, + title = {The most frequent energy theft techniques and hazards in present power energy consumption}, + doi = {10.1109/CPSRSG.2016.7684098}, + organization = {IEEE}, + pages = {1--7}, + url = {https://project-sparks.eu/wp-content/uploads/2016/04/czechowski-cpsr-sg-paper-four.pdf}, + keywords = {power consumption; power engineering computing; power system measurement; power system security; security of data; smart meters; energy theft techniques; power energy consumption; electric energy distribution; electricity theft detection; energy consumers; cyber security; smart metering; low voltage network; Energy consumption; Security; Energy measurement; Companies; Power systems; Wheels; Smart Grid; energy theft; cyber-physical security; digital data flow; energy hacking}, + month = {April}, + x-color = {#009966}, + year = {2016}, +} + +@Misc{st-db3636, + author = {{ST Microelectronics}}, + title = {STSAFE-J100-BS Data brief}, + organization = {ST Microelectronics}, + subtitle = {Security module of a smart meter gateway as defined by the BSI}, + url = {https://www.st.com/resource/en/data_brief/stsafe-j100-bs.pdf}, + urldate = {2019-09-20}, + edition = {r1}, + month = {jun}, + x-color = {#009966}, + year = {2018}, +} + +@Online{dalheimer01, + author = {Mathias Dalheimer}, + date = {2014}, + title = {Smart Meter-Einf{\"u}hrung Deutschland}, + url = {https://entropia.de/images/2/2c/GPN14-SmartMeterEinf%C3%BChrung.pdf}, + eventtitle = {Gulaschprogrammiernacht 2014}, +} + +@Online{heise01, + author = {Leo Becker}, + editor = {{Heise Online}}, + date = {2019-09-27}, + title = {checkm8: Boot-Exploit soll neuere iPhones knacken}, + url = {https://www.heise.de/mac-and-i/meldung/checkm8-Boot-Exploit-soll-neuere-iPhones-knacken-4542075.html}, +} + +@article{wu01, + author = {Yongdong Wu and Zhuo Wei and Jian Weng and Xin Li and Robert H. Deng}, + doi = {10.1109/TSG.2017.2661307}, + journaltitle = {IEEE Transactions on Smart Grid}, + month = {Sep}, + number = {5}, + pages = {4490--4502}, + title = {Resonance Attacks on Load Frequency Control of Smart Grids}, + volume = {9}, + x-color = {#cc3300}, + year = {2018} +} + +@Misc{entsoe01, + author = {{ENTSO-E System Protection Dynamics and WG}}, + title = {Oscillation Event 03.12.2017}, + url = {https://docstore.entsoe.eu/Documents/SOC%20documents/Regional_Groups_Continental_Europe/OSCILLATION_REPORT_SPD.pdf}, + month = mar, + year = {2018}, +} + +@article{leveson01, + author = {Nancy G. Leveson and Clark S. Turner}, + journaltitle = {IEEE Computer}, + month = jul, + number = {7}, + pages = {18--41}, + title = {An Investigation of the Therac-25 Accidents}, + url = {https://doi.org/10.1109/MC.1993.274940; https://web.archive.org/web/20041128024227/http://www.cs.umd.edu/class/spring2003/cmsc838p/Misc/therac.pdf}, + volume = {26}, + year = {1993} +} + +@article{lamport01, + author = {Leslie Lamport and Robert Shostak and Marshall Pease}, + journaltitle = {ACM Transactions on Programming Languages and Systems}, + month = jul, + number = {3}, + pages = {382--401}, + publisher = {ACM}, + title = {The Byzantine Generals Problem}, + url = {https://www.microsoft.com/en-us/research/publication/byzantine-generals-problem/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Flamport%2Fpubs%2Fbyz.pdf; https://doi.org/10.1145%2F357172.357176}, + volume = {4}, + year = {1982} +} + +@InBook{blaze01, + author = {Matt Blaze and Joan Feigenbaum and John Ioannidis and Angelos D Keromytis}, + booktitle = {Secure Internet Programming}, + date = {1999}, + title = {The role of trust management in distributed systems security}, + pages = {185--210}, + publisher = {Springer}, + year = {1999}, +} + +@article{lee01, + author = {Robert M. Lee and Michael J. Assante and Tim Conway}, + journal = {Electricity Information Sharing and Analysis Center (E-ISAC)}, + title = {Analysis of the cyber attack on the Ukrainian power grid}, + year = {2016} +} + +@article{sun01, + author = {Chih-Che Sun and Adam Hahn and Chen-Ching Liu}, + journal = {International Journal of Electrical Power \& Energy Systems}, + pages = {45--56}, + publisher = {Elsevier}, + title = {Cyber security of a power grid: State-of-the-art}, + volume = {99}, + year = {2018} +} + +@inproceedings{zheng01, + author = {Jixuan Zheng and David Wenzhong Gao and Li Lin}, + booktitle = {2013 IEEE Green Technologies Conference (GreenTech)}, + organization = {IEEE}, + pages = {57--64}, + title = {Smart meters in smart grid: An overview}, + year = {2013} +} + +@Misc{cenelec01, + author = {{The CEN/CENELEC/ETSI Joint Working Group Standards Smart on for Grids}}, + title = {Final report of the CEN/CENELEC/ETSI Joint Working Group on Standards for Smart Grids}, + organization = {CEN/CENELEC/ETSI}, + month = may, + year = {2011}, +} + +@Misc{pariente01, + author = {Dillon Pariente and Emmanuel Ledinot}, + title = {Formal verification of industrial C code using Frama-C: a case study}, + journal = {Formal Verification of Object-Oriented Software}, + pages = {205-219}, + publisher = {KIT University of the State of Baden-Wuerttemberg and National Research Center of the Helmholtz Association}, + year = {2010}, +} + +@inbook{rogers01, + author = {Graham Rogers}, + publisher = {Kluwer}, + title = {Power System Oscillations}, + year = {2000} +} + +@InProceedings{grebe01, + author = {E. Grebe and J. Kabouris and S. L{\'o}pez Barba and W. Sattinger and W. Winter}, + title = {Low Frequency Oscillations in the Interconnected System of Continental Europe}, + doi = {10.1109/PES.2010.5589932 {\textperiodcentered}}, + publisher = {IEEE}, + journaltitle = {IEEE PES General Meeting}, + month = aug, + year = {2010}, +} + +@article{mcdaniel01, + author = {McDaniel Patrick and McLaughlin Stephen}, + journaltitle = {Secure Systems}, + month = may, + organization = {IEEE}, + title = {Security and Privacy Challenges in the Smart Grid}, + year = {2009} +} + +@Article{schafer01, + author = {Benjamin Sch{\"a}fer and Moritz Matthiae and Marc Timme and Dirk Witthaut}, + journaltitle = {New Journal of Physics}, + title = {Decentral Smart Grid Control}, + doi = {doi:10.1088/1367-2630/17/1/015002}, + volume = {17}, + month = jan, + publisher = {IOP/DPG}, + year = {2015}, +} + +@article{kosut01, + author = {Oliver Kosut and Liyan Jia and Robert J. Thomas and Lang Tong}, + journaltitle = {IEEE Transactions on Smart Grid}, + month = nov, + number = {4}, + pages = {645-658}, + publisher = {IEEE}, + title = {Malicious Data Attacks on the Smart Grid}, + volume = {2}, + year = {2011} +} + +@online{schneier01, + author = {Bruce Schneier}, + journaltitle = {Crypto-Gram May 15 2002}, + month = may, + publisher = {Counterplane Internet Security}, + title = {Secrecy, Security, and Obscurity}, + url = {https://www.schneier.com/crypto-gram/archives/2002/0515.html}, + year = {2002} +} + +@article{kim01, + author = {Jinsub Kim and Lang Tong}, + doi = {10.1109/JSAC.2013.130712}, + journaltitle = {IEEE Journal on Selected Areas in Communications}, + month = jul, + number = {7}, + publisher = {IEEE}, + title = {On Topology Attack of a Smart Grid: Undetectable Attacks and Countermeasures}, + volume = {31}, + year = {2013} +} + +@InProceedings{fraunholz01, + author = {Daniel Fraunholz and Simon {Duque Anton} and Hans Dieter Schotten}, + title = {Introducing GAMfIS: A Generic Attacker Model for Information Security}, + publisher = {IEEE}, + url = {https://doi.org/10.23919/SOFTCOM.2017.8115550}, + journaltitle = {2017 25th International Conference on Software, Telecommunications and Computer Networks (SoftCOM)}, + month = nov, + year = {2017}, +} + +@online{nytimes01, + author = {Andrew E. Kramer}, + date = {Dec 30 2016}, + journaltitle = {The New York Times New York edition, Section A, Page 1}, + publisher = {The New York Times}, + title = {How the Kremlin Recruited an Army of Specialists for Cyberwar}, + year = {2016} +} + +@article{perez01, + author = {Noelia Uribe-P{\'e}rez and Luis Hern{\'a}ndez and David de la Vega and Itziar Angulo}, + comment = {Questionable publisher but seems good-quality, well-researched. Maybe not published elsewhere since it's just an industry/legislative review article?}, + doi = {10.3390/app6030068}, + journaltitle = {Applied Sciences}, + month = feb, + number = {3}, + organization = {MDPI}, + pages = {68}, + title = {State of the Art and Trends Review of Smart Metering in Electricity Grids}, + volume = {6}, + x-color = {#cc3300}, + year = {2016} +} + +@article{urtasun01, + author = {Andoni Urtasun and Pablo Sanchis and David Barricarte and Luis Marroyo}, + comment = {has lots of self-citations by urtasun}, + journaltitle = {Renewable Energy}, + month = jan, + pages = {325--336}, + publisher = {Elsevier}, + title = {Energy management strategy for a battery-diesel stand-alone system with distributed PV generation based on grid frequency modulation}, + url = {http://dx.doi.org/10.1016/j.renene.2013.12.020}, + volume = {66}, + year = {2014} +} + +@Article{dzung01, + author = {Dacfey Dzung and Inigo Berganza and Alberto Sendin}, + date = {2011}, + journaltitle = {2011 IEEE International Symposium on Power Line Communications and Its Applications}, + title = {Evolution of powerline communications for smart distribution: From Ripple Control to OFDM}, + doi = {10.1109/ISPLC.2011.5764444}, + url = {https://www.researchgate.net/profile/Inigo_Berganza/publication/224236306_Evolution_of_powerline_communications_for_smart_distribution_From_ripple_control_to_OFDM/links/5c658800299bf1d14cc74cbd/Evolution-of-powerline-communications-for-smart-distribution-From-ripple-control-to-OFDM.pdf}, +} + +@Online{hovi01, + author = {Jochen Fritz and Alexander Hovi}, + date = {2020}, + title = {Transkommando-System}, + url = {http://www.rundsteuerung.de/entwicklung/transkommando.html}, + journaltitle = {Rundsteuertechnik: Übertragung von Steuersignalen über das Energieversorgungsnetz}, +} + +@Book{kundur01, + author = {Kundur, Prabha}, + title = {Power system stability and control}, + isbn = {007035958X}, + language = {eng}, + publisher = {McGraw-Hill}, + series = {The EPRI power system engineering series}, + address = {New York, NY u.a.}, + keywords = {Elektrizitätsversorgungsnetz}, + year = {1994}, +} + +@Book{goiser01, + author = {Alois M. J. Goiser}, + date = {1998}, + title = {Handbuch der Spread-Spectrum Technik}, + isbn = {3-211-83080-4}, + publisher = {Springer}, +} + +@Misc{lamport02, + author = {Lamport, Leslie}, + date = {19}, + title = {Constructing digital signatures from a one-way function}, + institution = {Technical Report CSL-98, SRI International}, + year = {1979}, +} + +@InProceedings{buchmann01, + author = {Buchmann, Johannes and Dahmen, Erik and Ereth, Sarah and H{\"u}lsing, Andreas and R{\"u}ckert, Markus}, + booktitle = {International Conference on Cryptology in Africa}, + date = {2011}, + title = {On the security of the Winternitz one-time signature scheme}, + organization = {Springer}, + pages = {363--378}, + year = {2011}, +} + +@InProceedings{merkle01, + author = {Merkle, Ralph C}, + booktitle = {Conference on the Theory and Application of Cryptology}, + title = {A certified digital signature}, + organization = {Springer}, + pages = {218--238}, + year = {1989}, +} + +@InBook{dods01, + author = {Dods, Chris and Smart, Nigel P and Stam, Martijn}, + booktitle = {Post-Quantum Cryptography}, + date = {2009}, + title = {Hash based digital signature schemes}, + doi = {https://doi.org/10.1007/978-3-540-88702-7_3}, + editor = {Bernstein, D. J. and Buchmann, J. and Dahmen, E.}, + isbn = {978-3-540-88701-0}, + pages = {96--115}, + publisher = {Springer}, + organization = {Springer}, + year = {2005}, +} + +@Misc{gasior01, + author = {Gasior, M and Gonzalez, JL}, + title = {Improving FFT frequency measurement resolution by parabolic and gaussian interpolation}, + institution = {CERN-AB-Note-2004-021}, + year = {2004}, +} + +@InProceedings{giudice01, + author = {Del Giudice, Antonio and Graditi, Giorgio and Pietrosanto, Antonio and Paciello, Vincenzo}, + booktitle = {2015 IEEE International Workshop on Measurements \& Networking (M\&N)}, + title = {Power quality in smart distribution grids}, + organization = {IEEE}, + pages = {1--6}, + year = {2015}, +} + +@Article{virtanen01, + author = {{Virtanen}, Pauli and {Gommers}, Ralf and {Oliphant}, Travis E. and {Haberland}, Matt and {Reddy}, Tyler and {Cournapeau}, David and {Burovski}, Evgeni and {Peterson}, Pearu and {Weckesser}, Warren and {Bright}, Jonathan and {van der Walt}, St{\'e}fan J. and {Brett}, Matthew and {Wilson}, Joshua and {Jarrod Millman}, K. and {Mayorov}, Nikolay and {Nelson}, Andrew R.~J. and {Jones}, Eric and {Kern}, Robert and {Larson}, Eric and {Carey}, CJ and {Polat}, {\.I}lhan and {Feng}, Yu and {Moore}, Eric W. and {Vand erPlas}, Jake and {Laxalde}, Denis and {Perktold}, Josef and {Cimrman}, Robert and {Henriksen}, Ian and {Quintero}, E.~A. and {Harris}, Charles R and {Archibald}, Anne M. and {Ribeiro}, Ant{\^o}nio H. and {Pedregosa}, Fabian and {van Mulbregt}, Paul and {Contributors}, SciPy 1. 0}, + title = {{SciPy 1.0: Fundamental Algorithms for Scientific Computing in Python}}, + doi = {https://doi.org/10.1038/s41592-019-0686-2}, + pages = {261--272}, + volume = {17}, + adsurl = {https://rdcu.be/b08Wh}, + journal = {Nature Methods}, + year = {2020}, +} + +@Article{derviskadic01, + author = {Dervi{\v{s}}kadi{\'c}, Asja and Romano, Paolo and Paolone, Mario}, + title = {Iterative-interpolated DFT for synchrophasor estimation: A single algorithm for P-and M-class compliant PMUs}, + number = {3}, + pages = {547--558}, + volume = {67}, + journal = {IEEE Transactions on Instrumentation and Measurement}, + publisher = {IEEE}, + year = {2017}, +} + +@Article{narduzzi01, + author = {Narduzzi, Claudio and Bertocco, Matteo and Frigo, Guglielmo and Giorgi, Giada}, + title = {Fast-TFM—Multifrequency phasor measurement for distribution networks}, + number = {8}, + pages = {1825--1835}, + volume = {67}, + journal = {IEEE Transactions on Instrumentation and Measurement}, + publisher = {IEEE}, + year = {2018}, +} + +@Article{cheshire01, + author = {Stuart Cheshire and Mary Baker}, + title = {Consistent overhead Byte stuffing}, + doi = {10.1109/90.769765}, + number = {2}, + pages = {159--172}, + volume = {7}, + bibsource = {dblp computer science bibliography, https://dblp.org}, + biburl = {https://dblp.org/rec/journals/ton/CheshireB99.bib}, + journal = {{IEEE/ACM} Trans. Netw.}, + year = {1999}, +} + +@InProceedings{kluyver01, + author = {Thomas Kluyver and Benjamin Ragan{-}Kelley and Fernando P{\'{e}}rez and Brian E. Granger and Matthias Bussonnier and Jonathan Frederic and Kyle Kelley and Jessica B. Hamrick and Jason Grout and Sylvain Corlay and Paul Ivanov and Dami{\'{a}}n Avila and Safia Abdalla and Carol Willing and et al.}, + booktitle = {Positioning and Power in Academic Publishing: Players, Agents and Agendas, 20th International Conference on Electronic Publishing, G{\"{o}}ttingen, Germany, June 7-9, 2016}, + title = {Jupyter Notebooks - a publishing format for reproducible computational workflows}, + doi = {10.3233/978-1-61499-649-1-87}, + editor = {Fernando Loizides and Birgit Schmidt}, + pages = {87--90}, + publisher = {{IOS} Press}, + bibsource = {dblp computer science bibliography, https://dblp.org}, + biburl = {https://dblp.org/rec/conf/elpub/KluyverRPGBFKHG16.bib}, + year = {2016}, +} + +@Article{perrin01, + author = {Perrin, Trevor}, + title = {The Noise protocol framework, 2015}, + journal = {URL http://noiseprotocol. org/noise. pdf}, + year = {2016}, +} + +@Thesis{gasior02, + author = {Gasior, Marek}, + title = {{Improving frequency resolution of discrete spectra: algorithms of three-node interpolation}}, + url = {https://cds.cern.ch/record/1346070}, + year = {2006}, +} + +@Misc{entsoe02, + author = {UCTE/ENTSO-E}, + date = {2009}, + title = {Operation Handbook}, + chapter = {Policy 1: Load-Frequency Control-Final Version (approved by SC on 19 March 2009)}, + publisher = {UCTE/ENTSO-E}, + year = {2009}, +} + +@Misc{entsoe03, + author = {{ENTSO-E Working Group Incident Classification Scale Under System Operations Committee}}, + date = {2014}, + title = {Incidents Classification Methodology}, + institution = {ENTSO-E}, +} + +@Misc{entsoe04, + author = {UCTE/ENTSO-E}, + date = {2004}, + title = {Operation Handbook}, + chapter = {Appendix 1: Load-Frequency Control and Performance}, + publisher = {UCTE/ENTSO-E}, + year = {2009}, +} + +@InBook{eisma01, + author = {David Eisma and Pretesh Patel}, + booktitle = {Essential Readings in Light Metals, Volume 2, Aluminum Reduction Technology}, + date = {2016}, + title = {Challenges in Power Modulation}, + editor = {Geoff Bearne and Marc Dupuis and Gary Tarcy}, + pages = {683-688}, +} + +@InProceedings{duessel01, + author = {Roman Düssel}, + booktitle = {Proceedings of the 36th International ICSOBA Conference}, + date = {2018}, + title = {Paradigm Shift in the Indication of a Stable Cell during Power Modulation}, + journaltitle = {Proceedings of the 36th International ICSOBA Conference}, +} + +@Misc{ec01, + author = {Christian Egenhofer and Felice Simonelli and Andrea Renda and Antonella Zarra and William Schmitt and Aurélie Faure and Eleaonor Drabik and Vasileios Rizos and Thomas Hähl and Michèle Koper and Angelica Afanador and Marian Bons}, + date = {2018}, + title = {Composition and Drivers of Energy Prices and Costs: Case Studies in SelectedEnergy Intensive Industries – 2018}, + doi = {10.2873/937326}, + url = {https://op.europa.eu/en/publication-detail/-/publication/424dac0a-ec77-11e8-b690-01aa75ed71a1/language-en}, + institution = {European Commission, Directorate-General for Internal Market, Industry, Entrepreneurship and SMEs}, +} + +@Misc{oye01, + author = {Harald A. Øye}, + date = {2012}, + title = {Power Failure, Temporary Pot Shut-Down, Restart and Repair}, + eventtitle = {27thInternational Aluminium Conference Metal Bulletin Events}, + institution = {27th International Aluminium Conference Metal Bulletin Events}, +} + +@Misc{ayoub01, + author = {Mohammed W. Ayoub and Francis V. P. Robinson}, + date = {2013}, + title = {A comparative study between diode and thyristor based AC to DC converters for aluminium smelting process}, + doi = {https://doi.org/10.1109/IEEEGCC.2013.6705851}, + url = {https://purehost.bath.ac.uk/ws/files/134381670/a_comparative_study_between_diode_and_thyristor_based_AC_to_DC_converters_for_aluminium_smelting_process.pdf}, + institution = {{Dubai Aluminium}}, +} + +@Misc{wright01, + author = {Paul S. Wright}, + date = {2019}, + title = {Library of ROCOF Test Waveforms – Pseudo Code, V1.0, May 2019.}, + doi = {10.5281/zenodo.3559798}, + institution = {UK National Physical Laboratory}, +} + +@Misc{hp01, + date = {1997}, + title = {Application Note 200-2: Fundamentals of Quartz Oscillators}, + institution = {Hewlett Packard}, +} + +@Online{netze01, + author = {Adrian Cramer}, + date = {2015}, + title = {Bedienhandbuch "Smart Meter"}, + url = {https://www.nbl-badlangensalza.de/fileadmin/Netze/Dokumente/Benutzerhandbuch_NBL-Smart_Meter_V.1.0_.pdf}, + organization = {{NETZE Bad Langensalza GmbH}}, +} + +@Book{steinbach01, + date = {2018}, + title = {MsbG : Kommentar zum Messstellenbetriebsgesetz}, + editor = {Armin Steinbach and Michael Weise}, + isbn = {9783110555882}, + publisher = {De Gruyter}, +} + +@Online{bmwe01, + date = {2019}, + title = {Gutachten Digitalisierung der Energiewende}, + url = {https://www.bmwi.de/Redaktion/DE/Publikationen/Studien/digitalisierung-der-energiewende-thema-1.pdf?__blob=publicationFile&v=4}, + institution = {Bundesministeriums f{\"u}r Wirtschaft und Energie}, +} + +@Misc{easymeter01, + author = {{EasyMeter GmbH}}, + date = {2020}, + title = {Datenblatt Moderne Messeinrichtung Q3A Drehstromzähler}, +} + +@Misc{honeywell01, + author = {{Honeywell Smart Energy}}, + date = {2017}, + title = {Datasheet Honeywell REX2 smart meter}, + url = {https://www.elstersolutions.com/assets/products/products_elster_files/SEADSNAEN001017REX2.pdf}, +} + +@Online{ifixit01, + author = {Miro Djuric}, + date = {2011}, + title = {Elster REX2 Smart Meter Teardown}, + url = {https://www.ifixit.com/News/14306/elster-rex2-smart-meter-teardown}, + organization = {iFixit}, + urldate = {2020-05-06}, +} + +@Misc{ec02, + author = {Frédéric Tounquet and Clément Alaton}, + date = {2019}, + title = {Benchmarking smart meteringdeployment in the EU-28}, + type = {resreport}, + institution = {European Commission, Directorate-General for Energy, Directorate B - Internal Energy Market}, +} + +@Online{destatis01, + editor = {Statistisches Bundesamt DeStatis}, + date = {2020-03-06}, + title = {Erzeugung - Bilanz - Monatsbericht über die Elektrizitätsversorgung}, + url = {https://www.destatis.de/DE/Themen/Branchen-Unternehmen/Energie/Erzeugung/Tabellen/bilanz-elektrizitaetsversorgung.html}, + urldate = {2020-05-07}, +} + +@Book{nelles01, + author = {Dieter Nelles and Christian Tuttas}, + date = {1998}, + title = {Elektrische Energietechnik}, + doi = {10.1007/978-3-663-09902-4}, + isbn = {978-3-663-09902-4}, + year = {1998}, +} + +@Book{crastan01, + author = {Valentin Crastan}, + date = {2015}, + title = {Elektrische Energieversorgung 1}, + doi = {10.1007/978-3-662-45985-0}, + year = {2015}, +} + +@Book{crastan03, + author = {Valentin Crastan}, + date = {2012}, + title = {Elektrische Energieversorgung 3}, + doi = {10.1007/978-3-642-20100-4}, + isbn = {978-3-642-20099-1}, +} + +@Misc{simon01, + editor = {Liviu Constantinescu-Simon}, + date = {1997}, + title = {Handbuch Elektrische Energietechnik}, + doi = {10.1007/978-3-322-85061-4}, + year = {1997}, +} + +@Online{kamstrup01, + author = {{Kamstrup A/S}}, + title = {STS prepayment meter}, + url = {https://www.kamstrup.com/en-en/electricity-solutions/smart-electricity-meters/sts-prepayment-meter}, + urldate = {2020-05-11}, +} + +@Online{itron01, + author = {{Itron Inc}}, + date = {2012}, + title = {Benutzerhandbuch Smart Meter EM 214}, + url = {https://www.ewh.de/fileadmin/user_upload/Stromnetz/Zaehlerstaende/Produktbeschreibung_ITRON_EM214.pdf}, + urldate = {2020-05-11}, +} + +@Online{hager01, + author = {{Hager Group}}, + date = {2017}, + title = {Hager Smart Meter EHZ363 Betriebsanleitung}, + url = {https://bnnetze.de/downloads/kunden/netzkunden/messstellenbetrieb-und-messung/funktionalitaet/hager-ehz363-betriebsanleitung.pdf}, + urldate = {2020-05-11}, +} + +@Misc{vseaes01, + date = {2010}, + title = {Branchenempfehlung Strommarkt Schweiz Handbuch Smart Metering CH}, + url = {https://web.archive.org/web/20130418034458if_/http://www.strom.ch:80/uploads/media/HBSM-CH_1018d_2010.pdf}, + urldate = {2020-05-12}, + institution = {{Verband Schweizerischer Elektrizitätsunternehmen VSE}}, +} + +@Article{geelen01, + author = {Daphne Geelen and Ruth Mugge and Sacha Silvester and Annemieke Bulters}, + date = {2019}, + journaltitle = {Energy Efficiency}, + title = {The use of apps to promote energy saving: a study of smartmeter–related feedback in the Netherlands}, + doi = {https://doi.org/10.1007/s12053-019-09777-z}, + issue = {12}, +} + +@Online{bmwi03, + author = {{Bundesministerium f{\"u}r Wirtschaft und Energie} and {Ernst and Young}}, + date = {2013}, + title = {Kosten-Nutzen-Analyse für einen flächendeckenden Einsatz intelligenter Zähler}, + url = {https://www.bmwi.de/Redaktion/DE/Publikationen/Studien/kosten-nutzen-analyse-fuer-flaechendeckenden-einsatz-intelligenterzaehler.pdf}, + urldate = {2020-05-12}, +} + +@InProceedings{rodden01, + author = {Tom A. Rodden and Joel E. Fischer and Nadia Pantidi and Khaled Bachour and Stuart Moran}, + booktitle = {Proceedings of the SIGCHI Conference on Human Factors in Computing Systems - CHI '13}, + date = {2013}, + title = {At Home with Agents: Exploring Attitudes Towards Future Smart Energy Infrastructures}, + doi = {10.1145/2470654}, + year = {2013}, +} + +@InProceedings{pierce01, + author = {James Pierce and Eric Paulos}, + booktitle = {CHI 2012}, + date = {2012}, + title = {Beyond Energy Monitors: Interaction, Energy, and Emerging Energy Systems}, + doi = {10.1145/2207676.2207771}, + subtitle = {interaction, energy, and emerging energy systems}, + year = {2012}, +} + +@Article{lupton01, + author = {Deborah Lupton}, + date = {2016}, + journaltitle = {Economy and Society}, + title = {The diverse domains of quantified selves: self-tracking modes and dataveillance}, + doi = {10.1080/03085147.2016.1143726}, + issn = {0308-5147}, + pages = {101-122}, + volume = {45}, + year = {2016}, +} + +@InProceedings{costanza01, + author = {Enrico Costanza and Joel E. Fischer and James A. Colley and Tom Rodden and Sarvapali D. Ramchurn and Nicholas R. Jennings}, + booktitle = {CHI 2014, One of a CHInd}, + date = {2014}, + title = {Doing the Laundry with Agents: a Field Trial of a Future SmartEnergy System in the Home}, + doi = {10.1145/2556288.2557167}, + subtitle = {a field trial of a future smart energy system in the home}, + year = {2014}, +} + +@Article{fell01, + author = {Michael J. Fell and David Shipworth and Gesche M. Huebner and Clifford A. Elwell}, + date = {2015}, + journaltitle = {Energy Research and Social Science}, + title = {Public acceptability of domestic demand-side response in Great Britain: The role of automation and direct load control}, + doi = {10.1016/j.erss.2015.08.023}, + issn = {2214-6296}, + pages = {72-84}, + volume = {9}, + year = {2015}, +} + +@Online{silabs01, + author = {Vivek Mohan and {Silicon Labs}}, + date = {2015}, + title = {An Introduction to Wireless M-Bus}, + url = {http://pages.silabs.com/rs/634-SLU-379/images/introduction-to-wireless-mbus.pdf}, +} + +@Article{belega01, + author = {Daniel Belega and Dario Petri}, + date = {2013}, + journaltitle = {IEEE Transactions on Instrumentation and Measurement}, + title = {Accuracy Analysis of the Multicycle Synchrophasor Estimator Provided by the Interpolated DFT Algorithm}, + doi = {10.1109/tim.2012.2236777}, + issn = {0018-9456}, + issue = {5}, + pages = {942-953}, + volume = {62}, + year = {2013}, +} + +@Article{borkowski01, + author = {Jozef Borkowski and Dariusz Kania and Janusz Mroczka}, + date = {2014}, + journaltitle = {IEEE Transactions on Industrial Electronics}, + title = {Interpolated-DFT-Based Fast and Accurate Frequency Estimation for the Control of Power}, + doi = {10.1109/tie.2014.2316225}, + issn = {0278-0046}, + issue = {12}, + pages = {7026-7034}, + volume = {61}, + year = {2014}, +} + +@Misc{semerow01, + author = {Anatoli Semerow and Sebastian Hohn and Matthias Luther and Walter Sattinger and Hans Abildgaard and Agustin Diaz Garcia and Giorgio Giannuzzi}, + date = {2015}, + title = {Dynamic Study Model for the interconnected power system of Continental Europe in different simulation tools}, + doi = {10.1109/ptc.2015.7232578}, + institution = {{University of Erlangen-Nuremberg} and ENTSO-E}, + year = {2015}, +} + +@Online{entsoe05, + author = {ENTSO-E}, + date = {2019}, + title = {ENTSO-E Initial Dynamic Model of Continental Europe}, + url = {https://www.entsoe.eu/publications/system-operations-reports/#entso-e-initial-dynamic-model-of-continental-europe}, + urldate = {2020-05-14}, +} + +@InBook{brown01, + author = {Marilyn A. Brown and Shan Zhou}, + booktitle = {Advances in Energy Systems: The Large-scale Renewable Energy Integration Challenge}, + date = {2019}, + title = {Smart‐Grid Policies: An International Review}, + doi = {10.1002/9781119508311}, + edition = {First Ed.}, + publisher = {Wiley}, + subtitle = {The Large-scale Renewable Energy Integration Challenge}, + comment = {Extremely obvious industry pandering.}, + year = {2019}, +} + +@Online{kamstrup01, + author = {{Kamstrup A/S}}, + date = {2018}, + title = {STS prepayment meter}, + url = {https://www.kamstrup.com/en-en/electricity-solutions/smart-electricity-meters/sts-prepayment-meter}, + urldate = {2020-05-18}, +} + +@Book{sato01, + author = {Takuro Sato and Daniel M. Kammen and Bin Duan and Martin Macuha and Zhenyu Zhou and Jun Wu and Muhammad Tariq and Solomon Abebe Asfaw}, + date = {2015}, + title = {Smart Grid Standards}, + publisher = {Wiley}, + subtitle = {Specifications, Requirements and Technologies}, +} + +@Misc{ec03, + date = {2014}, + title = {Single Market Progress Report: Country Profiles – Italy}, + type = {resreport}, + url = {https://ec.europa.eu/energy/sites/ener/files/documents/2014_countryreports_italy.pdf}, + urldate = {2020-05-18}, + institution = {European Commission}, +} + +@Misc{usitc01, + author = {Lisa Alejandro and Caitlin Blair and Laura Bloodgood and Mahnaz Khan and Martha Lawless and Daniel Meehan and Patrick Schneider and Karl Tsuji}, + date = {2014}, + title = {Global Market for Smart Electricity Meters}, + subtitle = {Government Policies Driving Strong Growth}, + type = {resreport}, + url = {https://www.usitc.gov/publications/332/id-037smart_meters_final.pdf}, + urldate = {2020-05-18}, + institution = {U.S. International Trade Commission}, +} + +@Misc{toshiba01, + author = {Mitsuhide Ishima and Kiyoyuki Terai and Yoshihiro Ogita}, + date = {2018}, + title = {Construction and Operation of Communication System for Smart Meter System of TEPCO Power Grid, Inc.}, + url = {https://www.toshiba.co.jp/tech/review/2018/04/73_04pdf/f02.pdf}, + urldate = {2020-05-18}, + institution = {Toshiba Energy Systems and Solutions}, + issue = {4}, + journaltitle = {Toshiba Review}, + pages = {46-50}, + volume = {73}, +} + +@Misc{ukgov01, + author = {{UK Department for Business, Energy and Industrial Strategy}}, + date = {2018}, + title = {Smart Metering Implementation Programme Progress Report for 2018}, + url = {https://www.gov.uk/government/publications/smart-metering-implementation-programme-progress-report-2018}, + urldate = {2020-05-18}, + institution = {UK Department for Business, Energy and Industrial Strategy}, +} + +@Misc{ukgov02, + author = {{UK Department of Energy and Climate Change}}, + date = {2014}, + title = {Smart Metering Implementation Programme: Smart Metering Equipment Technical Specifications}, + url = {https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/381535/SMIP_E2E_SMETS2.pdf}, + urldate = {2020-05-18}, + version = {1.58}, +} + +@Misc{ukgov03, + author = {{UK Department for Business, Energy and Industrial Strategy}}, + date = {2016}, + title = {Smart Meter Rollout Cost-Benefit Analysis Part I}, + url = {https://ec.europa.eu/growth/tools-databases/tris/cs/index.cfm/search/?trisaction=search.detail&year=2017&num=350&iLang=EN}, + urldate = {2020-05-18}, + institution = {UK Department for Business, Energy and Industrial Strategy}, +} + +@Thesis{mahlknecht01, + author = {Peter Mahlknecht}, + date = {2014}, + institution = {Technische Universität Wien}, + title = {Diplomarbeit Sicherheitsmodul für ein Smart Metering Gateway}, + url = {https://publik.tuwien.ac.at/files/PubDat_233035.pdf}, + urldate = {2020-05-18}, +} + +@Online{delaw01, + date = {2019-03-14}, + title = {Stromgrundversorgungsverordnung StromGVV § 19 Unterbrechung der Versorgung}, + url = {http://www.gesetze-im-internet.de/stromgvv/__19.html}, + urldate = {2020-05-18}, +} + +@Article{cuijpers01, + author = {Colette Cuijpers and Bert-Jaap Koops}, + date = {2012}, + journaltitle = {European data protection}, + title = {Smart metering and privacy in Europe: lessons from the Dutch case}, + doi = {https://doi.org/10.1007/978-94-007-5170-5_12}, + journalsubtitle = {Coming of age}, + pages = {269-293}, +} + +@Online{ec04, + editor = {{The European Commission}}, + date = {2012}, + title = {The Energy Efficiency Directive}, + url = {https://ec.europa.eu/energy/topics/energy-efficiency/targets-directive-and-rules/energy-efficiency-directive_en}, + urldate = {2020-05-18}, +} + +@Article{aubel01, + author = {Pol Van Aubel and Erik Poll}, + date = {2019}, + journaltitle = {International Journal of Electrical Power and Energy Systems}, + title = {Smart metering in the Netherlands: what, how and why}, + doi = {https://doi.org/10.1016/j.ijepes.2019.01.001}, + issn = {0142-0615}, + pages = {719-725}, + volume = {109}, +} + +@Misc{dsmrp3, + date = {2014}, + title = {Dutch Smart Meter Requirements P3 Companion Standard}, + url = {https://www.netbeheernederland.nl/_upload/Files/Slimme_meter_15_1f3c5c9b2c.pdf}, + urldate = {2020-05-18}, + version = {4.0.7}, + institution = {Netbeheer Nederland WG DSMR}, +} + +@Misc{dsmrp1, + date = {2016}, + title = {Dutch Smart Meter Requirements P1 Companion Standard}, + url = {https://smarty.creos.net/wp-content/uploads/DutchSmartMeterRequirements.pdf}, + urldate = {2020-05-18}, + version = {5.0.2}, + institution = {Netbeheer Nederland WG DSMR}, +} + +@InProceedings{anderson01, + author = {Ross Anderson and Shailendra Fuloria}, + booktitle = {2010 First IEEE International Conference on Smart Grid Communications}, + date = {2010}, + title = {Who controls the off switch?}, + doi = {10.1109/SMARTGRID.2010.5622026}, + location = {Gaithersburg, MD}, + pages = {96-101}, + url = {https://www.cl.cam.ac.uk/~rja14/Papers/meters-offswitch.pdf}, + urldate = {2020-05-18}, +} + +@Book{abdallah01, + author = {Asmaa Abdallah}, + title = {Security and Privacy in Smart Grid}, + editor = {Xuemin Shen}, + isbn = {9783319936772}, + pagetotal = {1 Online-Ressource (XIV, 126 p. 30 illus., 23 illus. in color)}, + publisher = {Springer International Publishing}, + series = {SpringerBriefs in Electrical and Computer Engineering}, + url = {http://dx.doi.org/10.1007/978-3-319-93677-2}, + address = {Cham}, + ppn_gvk = {1028034970}, + year = {2018}, +} + +@InBook{kaplan01, + author = {Abraham Kaplan}, + booktitle = {The Conduct of Inquiry: Methodology for Behavioral Science}, + date = {1964}, + title = {The Law of the Instrument}, + isbn = {9781412836296}, + location = {San Francisco}, + pages = {28}, + publisher = {Chandler Publishing Co.}, + url = {https://books.google.com/books?id=OYe6fsXSP3IC&pg=PA28}, +} + +@Book{merz01, + author = {Hermann Merz and Thomas Hansemann and Christof Hübner}, + title = {Building automation}, + isbn = {9783540888284}, + pagetotal = {X, 282}, + publisher = {Springer}, + series = {Springer series on signals and communication technology}, + subtitle = {Communication systems with EIB/KNX, LON, and BACnet}, + address = {Berlin [u.a.]}, + ppn_gvk = {584030762}, + year = {2009}, +} + +@Article{markham01, + author = {Andrés Molina-Markham and Prashant Shenoy and Kevin Fu and Emmanuel Cecchet and David Irwin}, + date = {2010}, + journaltitle = {Proceedings of the 2nd ACM Workshop on Embedded Sensing Systems for Energy-Efficiency in Building}, + title = {Private Memoirs of a Smart Meter}, + note = {Title from The ACM Digital Library}, + url = {https://dl.acm.org/doi/pdf/10.1145/1878431.1878446}, + address = {New York, NY}, + isbn = {9781450304580}, + pagetotal = {Online-Ressource (93 pages)}, + ppn_gvk = {772463654}, + publisher = {ACM}, + year = {2010}, +} + +@Article{greveler01, + author = {Ulrich Greveler and Peter Glösekötter and Benjamin Justus and Dennis Loehr}, + date = {2012}, + journaltitle = {Computers, Privacy and Data Protection}, + title = {Multimedia Content Identification Through SmartMeter Power Usage Profiles}, +} + +@Book{zuboff01, + author = {Shoshana Zuboff}, + date = {2019}, + title = {The Age of Surveillance Capitalism}, +} + +@Online{bmwi04, + author = {{Bundesministerium f{\"u}r Wirtschaft und Energie}}, + date = {2020-04-14}, + title = {Häufig gestellte Fragen rund um Smart Meter}, + url = {https://www.bmwi.de/Redaktion/DE/FAQ/Smart-Meter/faq-smart-meter.html}, + urldate = {2020-05-20}, +} + +@InBook{stuber01, + author = {Michael Stuber}, + booktitle = {Smart Grid Handbook}, + date = {2016}, + title = {Standards, Security, and Smart Meters}, + doi = {10.1002/9781118755471.sgd036}, + pages = {1-14}, +} + +@Thesis{weith01, + author = {Loren Weith}, + date = {2014}, + institution = {Department of Mathematics and Computer Science, Eindhoven University of Technology}, + title = {DLMS / COSEM Protocol Security Evaluation}, + type = {mathesis}, + url = {https://pure.tue.nl/ws/files/46962657/773263-1.pdf}, + urldate = {2020-05-20}, +} + +@Book{salus01, + author = {Peter H. Salus}, + date = {1994}, + title = {A Quarter Century of UNIX}, + isbn = {0201547775, 9780201547771}, + publisher = {Addison-Wesley}, + year = {1994}, +} + +@Article{khurana01, + author = {Himanshu Khurana and Mark Hadley and Ning Lu and Deborah A. Frincke}, + date = {2010}, + journaltitle = {IEEE Security and Privacy Magazine}, + title = {Smart-grid security issues}, + doi = {10.1109/msp.2010.49}, + issn = {1540-7993}, + pages = {81-85}, + volume = {8}, + year = {2010}, +} + +@Online{heise02, + author = {Stefan Krempl}, + editor = {{Heise Online}}, + date = {2019-12-29}, + title = {36C3: Schwere Sicherheitslücken in Kraftwerken}, + url = {https://www.heise.de/newsticker/meldung/36C3-Schwere-Sicherheitsluecken-in-Kraftwerken-4624529.html}, + urldate = {2020-05-22}, + publisher = {{Heise Online}}, +} + +@Article{kerckhoff01, + author = {Auguste Kerckhoff}, + date = {1883}, + journaltitle = {Journal des sciences militaires}, + title = {La cryptographie militaire}, + pages = {5-38}, + volume = {IX}, +} + +@Online{kerckhoff02, + author = {Fabien Petitcolas}, + date = {2020}, + title = {Kerckhoffs' principles from ``La cryptographie militaire''}, + url = {https://www.petitcolas.net/kerckhoffs/index.html}, + language = {English}, + urldate = {2020-05-25}, +} + +@Book{mackay01, + author = {David J. C. MacKay}, + date = {2005}, + title = {Information theory, inference, and learning algorithms}, + edition = {Repr. with corr.}, + isbn = {0521642981}, + note = {Literaturverz. S. 613 - 619}, + pagetotal = {XII, 628}, + publisher = {Univ. Press}, + address = {Cambridge [u.a.]}, + ppn_gvk = {50543234X}, + year = {2005}, +} + +@Book{anderson02, + author = {Ross J. Anderson}, + date = {2020}, + title = {Security engineering}, + edition = {3rd}, + note = {Preview of upcoming edition}, + publisher = {Wiley}, + subtitle = {A guide to building dependable distributed systems}, + url = {https://www.cl.cam.ac.uk/~rja14/book.html}, + urldate = {2020-05-25}, +} + +@Article{anderson03, + author = {R. J. {Anderson} and S. J. {Bezuidenhoudt}}, + title = {On the reliability of electronic payment systems}, + doi = {https://doi.org/10.1109/32.502222}, + number = {5}, + pages = {294-301}, + volume = {22}, + journal = {IEEE Transactions on Software Engineering}, + year = {1996}, +} + +@Misc{ukgov04, + author = {{UK Department for Business Energy and Industrial Strategy}}, + date = {2019}, + title = {Smart Meter Statistics Quarterly Report to end March 2019}, + urldate = {2020-05-26}, + url = {https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/804767/2019_Q1_Smart_Meters_Report.pdf}, +} + +@Misc{bnetza02, + author = {{German Government Bundesnetzagentur}}, + date = {2018}, + title = {Monitoring Report 2018}, + urldate = {2020-05-26}, + url = {https://www.bundesnetzagentur.de/SharedDocs/Downloads/EN/BNetzA/PressSection/ReportsPublications/2019/MonitoringReport2019.pdf}, +} + +@Article{borkar01, + author = {Borkar, Shekhar}, + date = {2005}, + journaltitle = {IEEE Micro}, + title = {Designing reliable systems from unreliable components: the challenges of transistor variability and degradation}, + number = {6}, + pages = {10--16}, + volume = {25}, + journal = {Ieee Micro}, + publisher = {IEEE}, + year = {2005}, +} + +@Article{hahn01, + author = {Adam Hahn and Manimaran Govindarasu}, + date = {2011}, + journaltitle = {IEEE Transactions on Smart Grid}, + title = {Cyber Attack Exposure Evaluation Framework for the Smart Grid}, + doi = {10.1109/TSG.2011.2163829}, + pages = {835-843}, +} + +@InProceedings{temple01, + author = {William G. Temple and Binbin Chen and Nils Ole Tippenhauer}, + booktitle = {2013 IEEE International Conference on Smart Grid Communications}, + date = {2013}, + title = {Delay Makes a Difference: Smart Grid Resilience Under Remote Meter Disconnect Attack}, + doi = {https://doi.org/10.1109/SmartGridComm.2013.6688001}, + journaltitle = {2013 IEEE International Conference on Smart Grid Communications}, +} + +@InProceedings{cleveland01, + author = {Cleveland, Frances M.}, + booktitle = {2008 IEEE Power and Energy Society General Meeting-Conversion and Delivery of Electrical Energy in the 21st Century}, + date = {2008}, + title = {Cyber security issues for advanced metering infrasttructure (AMI)}, + organization = {IEEE}, + pages = {1--5}, + year = {2008}, +} + +@Online{heise03, + author = {Martin Holland}, + editor = {{Heise Online}}, + date = {2018-03-19}, + title = {Cambridge Analytica: Mehrere Untersuchungen angekündigt, mögliche Billionenstrafe für Facebook}, + url = {https://www.heise.de/newsticker/meldung/Cambridge-Analytica-Mehrere-Untersuchungen-angekuendigt-moegliche-Billionenstrafe-fuer-Facebook-3998151.html}, +} + +@Online{bigclive01, + author = {bigclivedotcom}, + date = {2018-10-26}, + title = {Inside a smart meter, and the REAL problem with them.}, + url = {https://www.youtube.com/watch?v=G32NYQpvy8Q}, + urldate = {2020-06-03}, +} + +@Online{eevblog01, + author = {Dave Jones}, + date = {2013-01-08}, + title = {EEVblog 409 - EDMI - Smart Meter Teardown}, + url = {https://www.youtube.com/watch?v=dm-yZ1N3xmc}, + urldate = {2020-06-03}, +} + +@Online{ti01, + author = {{National Semiconductor}}, + date = {2006}, + title = {Clock Conditioner Owner’s Manual}, + url = {http://www.ti.com/lit/ug/snaa103/snaa103.pdf?ts=1591194443306}, +} + +@InProceedings{georgiev01, + author = {Martin Georgiev and Subodh Iyengar and Suman Jana and Rishita Anubhai and Dan Boneh and Vitaly Shmatikov}, + booktitle = {ACM Conference on Computer and Communications Security}, + date = {2012}, + title = {The Most Dangerous Code in the World: Validating SSL Certificates in Non-Browser Software}, + pages = {38-49}, + journaltitle = {CCS’12}, +} + +@Article{anderson04, + author = {Ross Anderson and Francesco Bergadano and Bruno Crispo and Jong-Hyeon Lee and Charalampos Manifavas and Roger Needham}, + date = {1998}, + journaltitle = {ACM SIGOPS Operating Systems Review}, + title = {A New Family of Authentication Protocols}, + doi = {https://doi.org/10.1145/302350.302353}, +} + +@InProceedings{haller01, + author = {Neil M. Haller}, + booktitle = {Symposium on Network and Distributed System Security}, + date = {1994}, + title = {The S/KEY One-Time Password System}, + pages = {151-157}, +} + +@TechReport{rfc1760, + author = {Neil M. Haller}, + date = {1995}, + institution = {RFC Editor}, + title = {The S/KEY One-Time Password System}, + doi = {https://dx.doi.org/10.17487/RFC1760}, + number = {1760}, + type = {RFC}, + url = {https://tools.ietf.org/html/rfc1760}, + urldate = {2020-06-08}, + howpublished = {Internet Requests for Comments}, + publisher = {RFC Editor}, + year = {1995}, +} + +@InProceedings{perrig01, + author = {Adrian Perrig and Ran Canetti and J. D. Tygar and Dawn Song}, + booktitle = {Proceeding 2000 IEEE Symposium on Security and Privacy. S{\&}P 2000}, + date = {2000}, + title = {Efficient Authentication and Signing of Multicast Streams over Lossy Channels}, + doi = {https://doi.org/10.1109/SECPRI.2000.848446}, + isbn = {0-7695-0665-8}, + publisher = {IEEE}, +} + +@Article{diffie01, + author = {Diffie, Whitfield and Hellman, Martin}, + date = {2976}, + journaltitle = {IEEE transactions on Information Theory}, + title = {New directions in cryptography}, + number = {6}, + pages = {644--654}, + volume = {22}, + journal = {IEEE transactions on Information Theory}, + publisher = {IEEE}, + year = {1976}, +} + +@Online{ec05, + author = {Ignacio Fernández Hernández}, + editor = {European Commission}, + date = {2019}, + title = {Increasing Digital Tachograph Resilience: Galileo Open Service Navigation Message Authentication}, + url = {https://ec.europa.eu/transparency/regexpert/?do=groupDetail.groupMeetingDoc&docid=36951}, + urldate = {2020-06-08}, +} + +@Misc{landisgyr01, + author = {{Landis+Gyr Group AG}}, + date = {2020-05-28}, + title = {Landis+Gyr Annual Report 2019}, + url = {https://www.landisgyr.com/webfoo/wp-content/uploads/2020/05/Landis_Gyr_Vol_1_Annual_Report_2019_EN.pdf}, + urldate = {2020-06-29}, +} + +@Misc{landisgyr02, + author = {{Landis+Gyr Group AG}}, + date = {2020-05-06}, + title = {Landis+Gyr Financial Report 2019}, +} + +@Article{shannon01kjkjjkjkjkjk, + author = {Claude E. {Shannon}}, + title = {Communication In The Presence Of Noise}, + number = {2}, + pages = {447-457}, + volume = {86}, + journal = {Proceedings of the IEEE}, + year = {1998}, +} + +@Comment{jabref-meta: databaseType:biblatex;} diff --git a/thesis/Makefile b/thesis/Makefile index 3926de2..f9ced9c 100644 --- a/thesis/Makefile +++ b/thesis/Makefile @@ -1,5 +1,5 @@ -LAB_PATH ?= ../lab-windows +LAB_PATH ?= ../notebooks SHELL := bash .ONESHELL: -- cgit