Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Command-Line Utilities with Swift

Command-Line Utilities with Swift

Although Swift is mainly used for iOS and macOS application development, it can be used for other purposes. The recently released Swift Argument Parser library makes writing command-line utilities much easier thanks to its automatic parsing of the arguments.

In this talk, we will cover the features this library provides, and how we can integrate it with Bow, to make our utilities purely functional.
___

This talk was given by Tomás Ruiz for the 47 Degrees Academy. The full presentation can be viewed here: https://www.youtube.com/watch?v=PnoBgxl6K4g

If you'd like to discuss this presentation, please join us at the 47 Degrees Academy Slack: https://join.slack.com/t/47degreesacademy/shared_invite/zt-eb0cf2r6-LqpdSH2OX6jB8UnRrZwKsQ

More information can be found at https://www.47deg.com/academy/

47 Degrees Academy

June 18, 2020
Tweet

More Decks by 47 Degrees Academy

Other Decks in Programming

Transcript

  1. )COKNKCT NCPIWCIG HQT FGXGNQRGTU KP VJG $RRNG GEQU[UVGO 5VTQPIN[ V[RGF

    UCHGT CPF OQTG TQDWUV EQFG 5YKHV 2CEMCIG /CPCIGT NGXGTCIG [QWT HCXQTKVG NKDTCTKGU
  2. VZLIWWRROVYHUVLRQ LPSRUW3DFNDJH'HVFULSWLRQ  OHWSDFNDJH 3DFNDJH QDPH*LW+XE7RRO SURGXFWV> H[HFXWDEOH QDPHJLWKXEWDUJHWV>*LW+XE@ @

    GHSHQGHQFLHV>@ WDUJHWV> WDUJHW QDPH*LW+XEGHSHQGHQFLHV>@  WHVW7DUJHW QDPH*LW+XE7HVWVGHSHQGHQFLHV>@  @               VZLIWWRROVYHUVLRQ LPSRUW3DFNDJH'HVFULSWLRQ     OHWSDFNDJH 3DFNDJH  QDPH*LW+XE7RRO  SURGXFWV>  H[HFXWDEOH QDPHJLWKXEWDUJHWV>*LW+XE@  @  GHSHQGHQFLHV>@  WDUJHWV>  WDUJHW QDPH*LW+XEGHSHQGHQFLHV>@   WHVW7DUJHW QDPH*LW+XE7HVWVGHSHQGHQFLHV>@   @   QDPH*LW+XE7RRO VZLIWWRROVYHUVLRQ  LPSRUW3DFNDJH'HVFULSWLRQ    OHWSDFNDJH 3DFNDJH   SURGXFWV>  H[HFXWDEOH QDPHJLWKXEWDUJHWV>*LW+XE@  @  GHSHQGHQFLHV>@  WDUJHWV>  WDUJHW QDPH*LW+XEGHSHQGHQFLHV>@   WHVW7DUJHW QDPH*LW+XE7HVWVGHSHQGHQFLHV>@   @   SURGXFWV> H[HFXWDEOH QDPHJLWKXEWDUJHWV>*LW+XE@ @ VZLIWWRROVYHUVLRQ  LPSRUW3DFNDJH'HVFULSWLRQ    OHWSDFNDJH 3DFNDJH  QDPH*LW+XE7RRO     GHSHQGHQFLHV>@  WDUJHWV>  WDUJHW QDPH*LW+XEGHSHQGHQFLHV>@   WHVW7DUJHW QDPH*LW+XE7HVWVGHSHQGHQFLHV>@   @   GHSHQGHQFLHV>@ VZLIWWRROVYHUVLRQ  LPSRUW3DFNDJH'HVFULSWLRQ    OHWSDFNDJH 3DFNDJH  QDPH*LW+XE7RRO  SURGXFWV>  H[HFXWDEOH QDPHJLWKXEWDUJHWV>*LW+XE@  @   WDUJHWV>  WDUJHW QDPH*LW+XEGHSHQGHQFLHV>@   WHVW7DUJHW QDPH*LW+XE7HVWVGHSHQGHQFLHV>@   @   WDUJHWV> WDUJHW QDPH*LW+XEGHSHQGHQFLHV>@  WHVW7DUJHW QDPH*LW+XE7HVWVGHSHQGHQFLHV>@  @ VZLIWWRROVYHUVLRQ  LPSRUW3DFNDJH'HVFULSWLRQ    OHWSDFNDJH 3DFNDJH  QDPH*LW+XE7RRO  SURGXFWV>  H[HFXWDEOH QDPHJLWKXEWDUJHWV>*LW+XE@  @  GHSHQGHQFLHV>@      
  3. #SURSHUW\:UDSSHUVWUXFW7ULPPHG^  SULYDWHYDUYDOXH6WULQJ   SULYDWHOHWFKDUDFWHU6HW&KDUDFWHU6HW    LQLW

    ZUDSSHG9DOXHYDOXH6WULQJ  FKDUDFWHU6HW&KDUDFWHU6HW ZKLWHVSDFHV$QG1HZOLQ  VHOIFKDUDFWHU6HW FKDUDFWHU6HW  VHOIZUDSSHG9DOXH YDOXH  `    YDUZUDSSHG9DOXH6WULQJ^  JHW^YDOXH`  VHW^YDOXH QHZ9DOXH  WULPPLQJ&KDUDFWHUV LQFKDUDFWHU6HW `  `  YDUZUDSSHG9DOXH6WULQJ^ JHW^YDOXH` VHW^YDOXH QHZ9DOXH WULPPLQJ&KDUDFWHUV LQFKDUDFWHU6HW ` ` #SURSHUW\:UDSSHUVWUXFW7ULPPHG^  SULYDWHYDUYDOXH6WULQJ   SULYDWHOHWFKDUDFWHU6HW&KDUDFWHU6HW    LQLW ZUDSSHG9DOXHYDOXH6WULQJ  FKDUDFWHU6HW&KDUDFWHU6HW ZKLWHVSDFHV$QG1HZOLQ  VHOIFKDUDFWHU6HW FKDUDFWHU6HW  VHOIZUDSSHG9DOXH YDOXH  `         LQLW ZUDSSHG9DOXHYDOXH6WULQJ FKDUDFWHU6HW&KDUDFWHU6HW ZKLWHVSDFHV$QG1HZOLQ VHOIFKDUDFWHU6HW FKDUDFWHU6HW VHOIZUDSSHG9DOXH YDOXH ` #SURSHUW\:UDSSHUVWUXFW7ULPPHG^  SULYDWHYDUYDOXH6WULQJ   SULYDWHOHWFKDUDFWHU6HW&KDUDFWHU6HW           YDUZUDSSHG9DOXH6WULQJ^  JHW^YDOXH`  VHW^YDOXH QHZ9DOXH  WULPPLQJ&KDUDFWHUV LQFKDUDFWHU6HW `  ` 
  4. VWUXFW)RUP^  #7ULPPHGYDUQDPH6WULQJ 7RP£V  #7ULPPHG FKDUDFWHU6HWQHZOLQHV YDUELR6WULQJ :LOOQRWUHPRYHWKHVHWUDLOLQJVSDFHV 

    `         #7ULPPHGYDUQDPH6WULQJ 7RP£V VWUXFW)RUP^       #7ULPPHG FKDUDFWHU6HWQHZOLQHV YDUELR6WULQJ  :LOOQRWUHPRYHWKHVHWUDLOLQJVSDFHV    `  #7ULPPHG FKDUDFWHU6HWQHZOLQHV YDUELR6WULQJ :LOOQRWUHPRYHWKHVHWUDLOLQJVSDFHV VWUXFW)RUP^    #7ULPPHGYDUQDPH6WULQJ 7RP£V        ` 
  5. VWUXFW'HVXJDUHG)RUP^ SULYDWHYDUBQDPH 7ULPPHG ZUDSSHG9DOXH7RP£V SULYDWHYDUBELR 7ULPPHG ZUDSSHG9DOXH:LOOQRWUHPRYHWKHVHWUDLOLQJVSDFHV FKDUDFWHU6HWQHZOLQHV  YDUQDPH6WULQJ^

    JHW^BQDPHZUDSSHG9DOXH` VHW^BQDPHZUDSSHG9DOXH QHZ9DOXH` `  YDUELR6WULQJ^ JHW^BELRZUDSSHG9DOXH` VHW^BELRZUDSSHG9DOXH QHZ9DOXH` `                SULYDWHYDUBQDPH 7ULPPHG ZUDSSHG9DOXH7RP£V SULYDWHYDUBELR 7ULPPHG ZUDSSHG9DOXH:LOOQRWUHPRYHWKHVHWUDLOLQJVSDFHV FKDUDFWHU6HWQHZOLQHV VWUXFW'HVXJDUHG)RUP^        YDUQDPH6WULQJ^  JHW^BQDPHZUDSSHG9DOXH`  VHW^BQDPHZUDSSHG9DOXH QHZ9DOXH`  `    YDUELR6WULQJ^  JHW^BELRZUDSSHG9DOXH`  VHW^BELRZUDSSHG9DOXH QHZ9DOXH`  `  YDUQDPH6WULQJ^ JHW^BQDPHZUDSSHG9DOXH` VHW^BQDPHZUDSSHG9DOXH QHZ9DOXH` ` VWUXFW'HVXJDUHG)RUP^  SULYDWHYDUBQDPH 7ULPPHG ZUDSSHG9DOXH7RP£V  SULYDWHYDUBELR 7ULPPHG  ZUDSSHG9DOXH:LOOQRWUHPRYHWKHVHWUDLOLQJVSDFHV  FKDUDFWHU6HWQHZOLQHV          YDUELR6WULQJ^  JHW^BELRZUDSSHG9DOXH`  VHW^BELRZUDSSHG9DOXH QHZ9DOXH`  ` 
  6.  áORNGOGPV 3DUVDEOH&RPPDQG  $FF [QWT EQFG KPVQ UXQ VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^

     IXQFUXQ WKURZV^ SULQW 6HDUFKLQJ  `  `  áPXQMG KP OCKPUYKHV 6HDUFK&RPPDQGPDLQ
  7. 9G ECP WUG VJG $UJXPHQW RTQRGTV[ YTCRRGT #$UJXPHQW YDUTXHU\6WULQJ SULQW

    6HDUFKLQJ? TXHU\  VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^       IXQFUXQ WKURZV^   `    `  !VZLIWUXQJLWKXE%RZ  6HDUFKLQJ%RZ
  8. 9G ECP CNUQ TGEGKXG CTTC[U #$UJXPHQW YDUTXHU\>6WULQJ@ OHWDOO7HUPV TXHU\MRLQHG VHSDUDWRU

    SULQW 6HDUFKLQJ? DOO7HUPV  VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^       IXQFUXQ WKURZV^    `    `  !VZLIWUXQJLWKXE%RZ$UFK  6HDUFKLQJ%RZ$UFK
  9.  7UGTU ECP KPVTQFWEG PQPGZKUVKPI NCPIWCIGU  7UGTU ECP V[RG

    NCPIWCIGU YKVJ FKàGTGPV ECRKVCNK\CVKQPU 4GUVTKEV QRVKQPU YKVJ V[RGU
  10.  áORNGOGPV ([SUHVVLEOH%\$UJXPHQW  $FF QRVKQPCN KPKVKCNK\GT HTQO 6WULQJ HQXP/DQJXDJH([SUHVVLEOH%\$UJXPHQW^

    FDVHVZLIW FDVHREMHFWLYH&  LQLW" DUJXPHQWYDOXH6WULQJ ^ VZLWFKYDOXH^ FDVHVZLIW6ZLIW6:,)7 VHOI VZLIW FDVH2EMHFWLYH&REMHFWLYHFREMFREMF VHOI REMHFWLYH& GHIDXOWUHWXUQQLO ` ` `               HQXP/DQJXDJH([SUHVVLEOH%\$UJXPHQW^  FDVHVZLIW  FDVHREMHFWLYH&    LQLW" DUJXPHQWYDOXH6WULQJ ^  VZLWFKYDOXH^  FDVHVZLIW6ZLIW6:,)7  VHOI VZLIW  FDVH2EMHFWLYH&REMHFWLYHFREMFREMF  VHOI REMHFWLYH&  GHIDXOWUHWXUQQLO  `  `  `  FDVHVZLIW FDVHREMHFWLYH& HQXP/DQJXDJH([SUHVVLEOH%\$UJXPHQW^      LQLW" DUJXPHQWYDOXH6WULQJ ^  VZLWFKYDOXH^  FDVHVZLIW6ZLIW6:,)7  VHOI VZLIW  FDVH2EMHFWLYH&REMHFWLYHFREMFREMF  VHOI REMHFWLYH&  GHIDXOWUHWXUQQLO  `  `  `  LQLW" DUJXPHQWYDOXH6WULQJ ^ HQXP/DQJXDJH([SUHVVLEOH%\$UJXPHQW^  FDVHVZLIW  FDVHREMHFWLYH&     VZLWFKYDOXH^  FDVHVZLIW6ZLIW6:,)7  VHOI VZLIW  FDVH2EMHFWLYH&REMHFWLYHFREMFREMF  VHOI REMHFWLYH&  GHIDXOWUHWXUQQLO  `  `  `  FDVHVZLIW6ZLIW6:,)7 VHOI VZLIW FDVH2EMHFWLYH&REMHFWLYHFREMFREMF VHOI REMHFWLYH& HQXP/DQJXDJH([SUHVVLEOH%\$UJXPHQW^  FDVHVZLIW  FDVHREMHFWLYH&    LQLW" DUJXPHQWYDOXH6WULQJ ^  VZLWFKYDOXH^      GHIDXOWUHWXUQQLO  `  `  `  GHIDXOWUHWXUQQLO HQXP/DQJXDJH([SUHVVLEOH%\$UJXPHQW^  FDVHVZLIW  FDVHREMHFWLYH&    LQLW" DUJXPHQWYDOXH6WULQJ ^  VZLWFKYDOXH^  FDVHVZLIW6ZLIW6:,)7  VHOI VZLIW  FDVH2EMHFWLYH&REMHFWLYHFREMFREMF  VHOI REMHFWLYH&   `  `  ` 
  11. %[ FGHCWNV 5YKHV $TIWOGPV 2CTUGT VCMGU VJG PCOG QH VJG

    XCTKCDNG CU VJG QRVKQP PCOG DWV YG ECP EWUVQOK\G KV OODQJ #2SWLRQ QDPH>VKRUWFXVWRP/RQJ ODQJ @ VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^    YDUODQJXDJH/DQJXDJH"  `  6JKU NGVU WU KPXQMG VJG EQOOCPF CU !VZLIWUXQJLWKXE%RZ !VZLIWUXQJLWKXE%RZO6ZLIW !VZLIWUXQJLWKXE%RZODQJ6ZLIW
  12. 9G ECP EWUVQOK\G JQY VJG PCOG QH VJG ÖCI KU

    WUGF KP VJG PGICVKXG ECUG #)ODJ LQYHUVLRQSUHIL[HG1R YDUYHUERVH%RRO VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^       `  !VZLIWUXQJLWKXE%RZODQJ6ZLIW  !VZLIWUXQJLWKXE%RZODQJ6ZLIWYHUERVH  !VZLIWUXQJLWKXE%RZODQJ6ZLIWQRYHUERVH  !VZLIWUXQJLWKXE%RZODQJ6ZLIWYHUERVH !VZLIWUXQJLWKXE%RZODQJ6ZLIW   !VZLIWUXQJLWKXE%RZODQJ6ZLIWQRYHUERVH  !VZLIWUXQJLWKXE%RZODQJ6ZLIWQRYHUERVH !VZLIWUXQJLWKXE%RZODQJ6ZLIW  !VZLIWUXQJLWKXE%RZODQJ6ZLIWYHUERVH  
  13. 9G ECP ETGCVG EWUVQO UGVU QH ÖCIU YKVJ (QXPHUDEOH)ODJ HQXP5HSRVLWRU\)ODJ(QXPHUDEOH)ODJ^

    FDVHVWDUV FDVHIRUNV FDVHLVVXHV FDVHZDWFKHUV `       #)ODJ YDURSWLRQV>5HSRVLWRU\)ODJ@ VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^       ` 
  14. 9G ECP KORNGOGPV YDOLGDWH KP C 3DUVDEOH&RPPDQG VWUXFW%UDQFKHV&RPPDQG3DUVDEOH&RPPDQG^ #$UJXPHQW YDUUHSRVLWRU\6WULQJ

     #)ODJ LQYHUVLRQSUHIL[HG(QDEOH'LVDEOH YDUSUHWW\3ULQW%RRO  IXQFYDOLGDWH WKURZV^ JXDUGUHSRVLWRU\FRQWDLQV  HOVH^ WKURZ9DOLGDWLRQ(UURU 7KHUHSRVLWRU\VKRXOG KDYHWKHIRUP RZQHUUHSRVLWRU\  ` ` `              #$UJXPHQW YDUUHSRVLWRU\6WULQJ VWUXFW%UDQFKHV&RPPDQG3DUVDEOH&RPPDQG^     #)ODJ LQYHUVLRQSUHIL[HG(QDEOH'LVDEOH  YDUSUHWW\3ULQW%RRO    IXQFYDOLGDWH WKURZV^  JXDUGUHSRVLWRU\FRQWDLQV  HOVH^  WKURZ9DOLGDWLRQ(UURU 7KHUHSRVLWRU\VKRXOG  KDYHWKHIRUP RZQHUUHSRVLWRU\   `  `  `  #)ODJ LQYHUVLRQSUHIL[HG(QDEOH'LVDEOH YDUSUHWW\3ULQW%RRO VWUXFW%UDQFKHV&RPPDQG3DUVDEOH&RPPDQG^  #$UJXPHQW YDUUHSRVLWRU\6WULQJ        IXQFYDOLGDWH WKURZV^  JXDUGUHSRVLWRU\FRQWDLQV  HOVH^  WKURZ9DOLGDWLRQ(UURU 7KHUHSRVLWRU\VKRXOG  KDYHWKHIRUP RZQHUUHSRVLWRU\   `  `  `  IXQFYDOLGDWH WKURZV^ JXDUGUHSRVLWRU\FRQWDLQV  HOVH^ WKURZ9DOLGDWLRQ(UURU 7KHUHSRVLWRU\VKRXOG KDYHWKHIRUP RZQHUUHSRVLWRU\  ` ` VWUXFW%UDQFKHV&RPPDQG3DUVDEOH&RPPDQG^  #$UJXPHQW YDUUHSRVLWRU\6WULQJ    #)ODJ LQYHUVLRQSUHIL[HG(QDEOH'LVDEOH  YDUSUHWW\3ULQW%RRO          ` 
  15. 9G ECP TGWUG ITQWRU QH RCTCOGVGTU CETQUU FKàGTGPV EQOOCPFU VQIGVJGT

    YKVJ XCNKFCVKQP VWUXFW5HSRVLWRU\$UJXPHQWV3DUVDEOH$UJXPHQWV^ #$UJXPHQW YDUUHSRVLWRU\6WULQJ  #)ODJ LQYHUVLRQSUHIL[HG(QDEOH'LVDEOH YDUSUHWW\3ULQW%RRO  IXQFYDOLGDWH WKURZV^ JXDUGUHSRVLWRU\FRQWDLQV  HOVH^ WKURZ9DOLGDWLRQ(UURU 7KHUHSRVLWRU\VKRXOG KDYHWKHIRUP RZQHUUHSRVLWRU\  ` ` `              VWUXFW5HSRVLWRU\$UJXPHQWV3DUVDEOH$UJXPHQWV^  #$UJXPHQW YDUUHSRVLWRU\6WULQJ    #)ODJ LQYHUVLRQSUHIL[HG(QDEOH'LVDEOH  YDUSUHWW\3ULQW%RRO    IXQFYDOLGDWH WKURZV^  JXDUGUHSRVLWRU\FRQWDLQV  HOVH^  WKURZ9DOLGDWLRQ(UURU 7KHUHSRVLWRU\VKRXOG  KDYHWKHIRUP RZQHUUHSRVLWRU\   `  `  `  #$UJXPHQW YDUUHSRVLWRU\6WULQJ  #)ODJ LQYHUVLRQSUHIL[HG(QDEOH'LVDEOH YDUSUHWW\3ULQW%RRO VWUXFW5HSRVLWRU\$UJXPHQWV3DUVDEOH$UJXPHQWV^        IXQFYDOLGDWH WKURZV^  JXDUGUHSRVLWRU\FRQWDLQV  HOVH^  WKURZ9DOLGDWLRQ(UURU 7KHUHSRVLWRU\VKRXOG  KDYHWKHIRUP RZQHUUHSRVLWRU\   `  `  `  IXQFYDOLGDWH WKURZV^ JXDUGUHSRVLWRU\FRQWDLQV  HOVH^ WKURZ9DOLGDWLRQ(UURU 7KHUHSRVLWRU\VKRXOG KDYHWKHIRUP RZQHUUHSRVLWRU\  ` ` VWUXFW5HSRVLWRU\$UJXPHQWV3DUVDEOH$UJXPHQWV^  #$UJXPHQW YDUUHSRVLWRU\6WULQJ    #)ODJ LQYHUVLRQSUHIL[HG(QDEOH'LVDEOH  YDUSUHWW\3ULQW%RRO          ` 
  16. 9G ECP KPENWFG VJG GZVTCEVGF RCTCOGVGTU WUKPI 2SWLRQ*URXS #2SWLRQ*URXS YDUDUJXPHQWV5HSRVLWRU\$UJXPHQWV

    VWUXFW%UDQFKHV&RPPDQG3DUVDEOH&RPPDQG^   `  #2SWLRQ*URXS YDUDUJXPHQWV5HSRVLWRU\$UJXPHQWV VWUXFW7DJV&RPPDQG3DUVDEOH&RPPDQG^   ` 
  17. 9G JCXG ETGCVGF VJTGG 3DUVDEOH&RPPDQG UVTWEVWTGU  5GCTEJ&QOOCPF  %TCPEJGU&QOOCPF

     6CIU&QOOCPF 9G YQWNF NKMG VQ KPXQMG VJGO WUKPI VJG UCOG JLWKXE EQOOCPF
  18. 5YKHV $TIWOGPV 2CTUGT UWRRQTVU VJG PQVKQP QH UWDEQOOCPFU VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ

    FRPPDQG1DPHVHDUFK VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ FRPPDQG1DPHEUDQFKHV VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ FRPPDQG1DPHWDJV VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^    `    VWUXFW%UDQFKHV&RPPDQG3DUVDEOH&RPPDQG^    `    VWUXFW7DJV&RPPDQG3DUVDEOH&RPPDQG^    ` 
  19. 9G PGGF VQ ETGCVG C RCTGPV EQOOCPF VQ ITQWR VJGO

    9G ECP GXGP JCXG UGXGTCN PGUVGF NGXGNU YKVJ UWDEQOOCPFU VWUXFW0DLQ&RPPDQG3DUVDEOH&RPPDQG^ VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ FRPPDQG1DPHJLWKXE VXEFRPPDQGV> 6HDUFK&RPPDQGVHOI %UDQFKHV&RPPDQGVHOI 7DJV&RPPDQGVHOI @ `          FRPPDQG1DPHJLWKXE VWUXFW0DLQ&RPPDQG3DUVDEOH&RPPDQG^  VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ   VXEFRPPDQGV>  6HDUFK&RPPDQGVHOI  %UDQFKHV&RPPDQGVHOI  7DJV&RPPDQGVHOI  @  `  VXEFRPPDQGV> 6HDUFK&RPPDQGVHOI %UDQFKHV&RPPDQGVHOI 7DJV&RPPDQGVHOI @ VWUXFW0DLQ&RPPDQG3DUVDEOH&RPPDQG^  VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ  FRPPDQG1DPHJLWKXE       ` 
  20. 5YKHV $TIWOGPV 2CTUGT NGVU WU RTQXKFG JGNR CV FKàGTGPV NGXGNU

     'GUETKRVKQP QH VJG RWTRQUG QH C EQOOCPF  UWDEQOOCPF  'GUETKRVKQP QH CP CTIWOGPV QT CP QRVKQP  'GUETKRVKQP QH VJG XCNWGU C EWUVQO ÖCI ECP VCMG
  21. 9G ECP CFF CP DEVWUDFW CPF C OQTG FGVCKNGF GLVFXVVLRQ

    VQ VJG &RPPDQG&RQILJXUDWLRQ VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^ VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ FRPPDQG1DPHVHDUFK DEVWUDFW6HDUFKIRUUHSRVLWRULHVLQ*LW+XE GLVFXVVLRQ7KLVFRPPDQGSHUIRUPVDVHDUFKRQ*LW+XE <RXQHHGWRKDYH,QWHUQHWFRQQHFWLRQIRUWKLV FRPPDQGWRZRUN `         DEVWUDFW6HDUFKIRUUHSRVLWRULHVLQ*LW+XE VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^  VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ  FRPPDQG1DPHVHDUFK   GLVFXVVLRQ7KLVFRPPDQGSHUIRUPVDVHDUFKRQ*LW+XE  <RXQHHGWRKDYH,QWHUQHWFRQQHFWLRQIRUWKLV  FRPPDQGWRZRUN  `  GLVFXVVLRQ7KLVFRPPDQGSHUIRUPVDVHDUFKRQ*LW+XE <RXQHHGWRKDYH,QWHUQHWFRQQHFWLRQIRUWKLV FRPPDQGWRZRUN VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^  VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ  FRPPDQG1DPHVHDUFK  DEVWUDFW6HDUFKIRUUHSRVLWRULHVLQ*LW+XE     ` 
  22. !VZLIW UXQJLWKXE  29(59,(:3HUIRUPVGLIIHUHQW RSHUDWLRQVXVLQJWKH*LW+XE$3,  86$*(JLWKXEVXEFRPPDQG!  237,216 KKHOS6KRZ

    KHOSLQIRUPDWLRQ  68%&200$1'6 VHDUFK6HDUFKHVIRUUHSRVLWRULHVLQ*LW+XE EUDQFKHV 6KRZV WKHUHPRWHEUDQFKHV RIDUHSRVLWRU\ WDJV6KRZV WKHSXEOLVKHGWDJVRIDUHSRVLWRU\
  23. 9G ECP CFF FGUETKRVKQP QH CP $UJXPHQW 2SWLRQ QT )ODJ

    WUKPI $UJXPHQW+HOS #$UJXPHQW KHOS$UJXPHQW+HOS 7HUPVRIWKHTXHU\\RXZDQWWRVHDUFKIRU YDOXH1DPHTXHU\WHUPV VWUXFW6HDUFK&RPPDQG3DUVDEOH&RPPDQG^        YDUTXHU\>6WULQJ@    ` 
  24. 9G ECP CNUQ WUG $UJXPHQW+HOS VQ FGUETKDG VJG XCNWGU QH

    C EWUVQO ÖCI VWDWLFIXQFKHOS IRUYDOXH5HSRVLWRU\)ODJ !$UJXPHQW+HOS"^ HQXP5HSRVLWRU\)ODJ(QXPHUDEOH)ODJ^    VZLWFKYDOXH^  FDVHVWDUV  UHWXUQ$UJXPHQW+HOS 6KRZVWKHQXPEHURIVWDUV  FDVHIRUNV  UHWXUQ$UJXPHQW+HOS 6KRZVWKHQXPEHURIIRUNV  FDVHLVVXHV  UHWXUQ$UJXPHQW+HOS 6KRZVWKHQXPEHURIRSHQLVVXH  FDVHZDWFKHUV  UHWXUQ$UJXPHQW+HOS 6KRZVWKHQXPEHURIZDWFKHUV  `  FDVHVWDUV UHWXUQ$UJXPHQW+HOS 6KRZVWKHQXPEHURIVWDUV HQXP5HSRVLWRU\)ODJ(QXPHUDEOH)ODJ^  VWDWLFIXQFKHOS IRUYDOXH5HSRVLWRU\)ODJ  !$UJXPHQW+HOS"^  VZLWFKYDOXH^    FDVHIRUNV  UHWXUQ$UJXPHQW+HOS 6KRZVWKHQXPEHURIIRUNV  FDVHLVVXHV  UHWXUQ$UJXPHQW+HOS 6KRZVWKHQXPEHURIRSHQLVVXH  FDVHZDWFKHUV  UHWXUQ$UJXPHQW+HOS 6KRZVWKHQXPEHURIZDWFKHUV  ` 
  25. &RPPDQG&RQILJXUDWLRQ JCU CP QRVKQP VQ QXGTTKFG VJG JGNR QRVKQP PCOGU

    VWUXFW0DLQ&RPPDQG3DUVDEOH&RPPDQG^ VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ FRPPDQG1DPHJLWKXE DEVWUDFW3HUIRUPVGLIIHUHQWRSHUDWLRQVXVLQJWKH *LW+XE$3, VXEFRPPDQGV> 6HDUFK&RPPDQGVHOI %UDQFKHV&RPPDQGVHOI 7DJV&RPPDQGVHOI @  " KHOS1DPHV>FXVWRP6KRUW " @ `              " KHOS1DPHV>FXVWRP6KRUW " @ VWUXFW0DLQ&RPPDQG3DUVDEOH&RPPDQG^  VWDWLFYDUFRQILJXUDWLRQ &RPPDQG&RQILJXUDWLRQ  FRPPDQG1DPHJLWKXE  DEVWUDFW3HUIRUPVGLIIHUHQWRSHUDWLRQVXVLQJWKH  *LW+XE$3,  VXEFRPPDQGV>  6HDUFK&RPPDQGVHOI  %UDQFKHV&RPPDQGVHOI  7DJV&RPPDQGVHOI  @     ` 
  26. 1PEG YG CTG FQPG YG ECP WUG 5YKHV 2CEMCIG /CPCIGT

    VQ DWKNF CP GZGEWVCDNG ÕNG YKVJ QWT EQOOCPFNKPG VQQN !VZLIWEXLOGFUHOHDVH    !FSEXLOGUHOHDVHJLWKXEXVUORFDOELQJLWKXE    !JLWKXEVHDUFK%RZODQJ6ZLIWVWDUV  !FSEXLOGUHOHDVHJLWKXEXVUORFDOELQJLWKXE !VZLIWEXLOGFUHOHDVH       !JLWKXEVHDUFK%RZODQJ6ZLIWVWDUV  !JLWKXEVHDUFK%RZODQJ6ZLIWVWDUV !VZLIWEXLOGFUHOHDVH    !FSEXLOGUHOHDVHJLWKXEXVUORFDOELQJLWKXE    
  27. 5YKHV KU C XGT[ RQYGTHWN NCPIWCIG PQV QPN[ VQ DWKNF

    K15  OCE15  YCVEJ15  VX15 CRRNKECVKQPU 5QOG PGY HGCVWTGU NKMG RTQRGTV[ YTCRRGTU GPCDNG VJG ETGCVKQP QH GZRTGUUKXG NKDTCTKGU CPF '5.U 6JGTG KU OWEJ OQTG VQ 5YKHV $TIWOGPV 2CTUGT